ETH Price: $2,617.59 (+0.79%)

Token

PURPLE PALACE (PPX)
 

Overview

Max Total Supply

1,000,000,000 PPX

Holders

77

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PurplePalace

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-31
*/

// Purple Palace
// Pay for Pleasure With Crypto !
// Accelerator Launchpad, Bridge to Pay for Adult Content Anonymously, Nightclub Metaverse

//TG: @PurplePalacETH
//Website: https://purple-palace.com/
//Twitter: twitter.com/PurplePalaceETH

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.7;

library Address {
    /**
     * 
     */
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract PurplePalace is IERC20, Ownable {
    using Address for address;
    
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "PURPLE PALACE";
    string constant _symbol = "PPX";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 _maxBuyTxAmount = (_totalSupply * 2) / 100;
    uint256 _maxSellTxAmount = (_totalSupply * 2) / 100;
    uint256 _maxWalletSize = (_totalSupply * 2) / 100;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => uint256) public lastSell;
    mapping (address => uint256) public lastBuy;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) liquidityCreator;

    uint256 marketingFee = 400;
    uint256 liquidityFee = 200;
    uint256 totalFee = marketingFee + liquidityFee;
    uint256 sellBias = 0;
    uint256 feeDenominator = 10000;

    address payable public liquidityFeeReceiver = payable(0x97D35DD7db65a4a95E5feC93701F89F92BA10165);
    address payable public marketingFeeReceiver = payable(0x97D35DD7db65a4a95E5feC93701F89F92BA10165);

    IDEXRouter public router;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    mapping (address => bool) liquidityPools;
    mapping (address => uint256) public protected;
    bool protectionEnabled = true;
    bool protectionDisabled = false;
    uint256 protectionLimit;
    uint256 public protectionCount;
    uint256 protectionTimer;

    address public pair;

    uint256 public launchedAt;
    uint256 public launchedTime;
    uint256 public deadBlocks;
    bool startBullRun = false;
    bool pauseDisabled = false;
    uint256 public rateLimit = 2;

    bool public swapEnabled = false;
    bool processEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000;
    uint256 public swapMinimum = _totalSupply / 10000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    mapping (address => bool) teamMember;
    
    modifier onlyTeam() {
        require(teamMember[_msgSender()] || msg.sender == owner(), "Caller is not a team member");
        _;
    }
    
    event ProtectedWallet(address, address, uint256, uint8);

    constructor () {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        liquidityPools[pair] = true;
        _allowances[owner()][routerAddress] = type(uint256).max;
        _allowances[address(this)][routerAddress] = type(uint256).max;

        isFeeExempt[owner()] = true;
        liquidityCreator[owner()] = true;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[routerAddress] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[owner()] = _totalSupply;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function name() external pure returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function maxBuyTxTokens() external view returns (uint256) { return _maxBuyTxAmount / (10 ** _decimals); }
    function maxSellTxTokens() external view returns (uint256) { return _maxSellTxAmount / (10 ** _decimals); }
    function maxWalletTokens() external view returns (uint256) { return _maxWalletSize / (10 ** _decimals); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }
    
    function setTeamMember(address _team, bool _enabled) external onlyOwner {
        teamMember[_team] = _enabled;
    }
    
    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner {
        require(addresses.length > 0 && amounts.length == addresses.length);
        address from = msg.sender;

        for (uint i = 0; i < addresses.length; i++) {
            if(!liquidityPools[addresses[i]] && !liquidityCreator[addresses[i]]) {
                _basicTransfer(from, addresses[i], amounts[i] * (10 ** _decimals));
            }
        }
    }
    
    function clearStuckBalance(uint256 amountPercentage, address adr) external onlyTeam {
        uint256 amountETH = address(this).balance;
        payable(adr).transfer((amountETH * amountPercentage) / 100);
    }
    
    function openTrading(uint256 _deadBlocks, uint256 _protection, uint256 _limit) external onlyTeam {
        require(!startBullRun && _deadBlocks < 10);
        deadBlocks = _deadBlocks;
        startBullRun = true;
        launchedAt = block.number;
        protectionTimer = block.timestamp + _protection;
        protectionLimit = _limit * (10 ** _decimals);
    }
    
    function pauseTrading() external onlyTeam {
        require(!pauseDisabled);
        startBullRun = false;
    }
    
    function disablePause() external onlyTeam {
        pauseDisabled = true;
        startBullRun = true;
    }
    
    function setProtection(bool _protect, uint256 _addTime) external onlyTeam {
        require(!protectionDisabled);
        protectionEnabled = _protect;
        require(_addTime < 1 days);
        protectionTimer += _addTime;
    }
    
    function disableProtection() external onlyTeam {
        protectionDisabled = true;
        protectionEnabled = false;
    }
    
    function protectWallet(address[] calldata _wallets, bool _protect) external onlyTeam {
        if (_protect) {
            require(protectionEnabled);
        }
        
        for (uint i = 0; i < _wallets.length; i++) {
            
            if (_protect) {
                protectionCount++;
                emit ProtectedWallet(tx.origin, _wallets[i], block.number, 2);
            }
            else {
                if (protected[_wallets[i]] != 0)
                    protectionCount--;      
            }
            protected[_wallets[i]] = _protect ? block.number : 0;
        }
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "BEP20: transfer from 0x0");
        require(recipient != address(0), "BEP20: transfer to 0x0");
        require(amount > 0, "Amount must be > zero");
        require(_balances[sender] >= amount, "Insufficient balance");
        if(!launched() && liquidityPools[recipient]){ require(liquidityCreator[sender], "Liquidity not added yet."); launch(); }
        if(!startBullRun){ require(liquidityCreator[sender] || liquidityCreator[recipient], "Trading not open yet."); }

        checkTxLimit(sender, recipient, amount);
        
        if (!liquidityPools[recipient] && recipient != DEAD) {
            if (!isTxLimitExempt[recipient]) {
                checkWalletLimit(recipient, amount);
            }
        }
        
        if(protectionEnabled && protectionTimer > block.timestamp) {
            if(liquidityPools[sender] && tx.origin != recipient && protected[recipient] == 0) {
                protected[recipient] = block.number;
                protectionCount++;
                emit ProtectedWallet(tx.origin, recipient, block.number, 0);
            }
        }
        
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        _balances[sender] = _balances[sender] - amount;

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(recipient, amount) : amount;
        
        if(shouldSwapBack(recipient)){ if (amount > 0) swapBack(amount); }
        
        _balances[recipient] = _balances[recipient] + amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
        launchedTime = block.timestamp;
        swapEnabled = true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function checkWalletLimit(address recipient, uint256 amount) internal view {
        uint256 walletLimit = _maxWalletSize;
        require(_balances[recipient] + amount <= walletLimit, "Transfer amount exceeds the bag size.");
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal {
        require(isTxLimitExempt[sender] || amount <= (liquidityPools[sender] ? _maxBuyTxAmount : _maxSellTxAmount), "TX Limit Exceeded");
        require(isTxLimitExempt[sender] || lastBuy[recipient] + rateLimit <= block.number, "Transfer rate limit exceeded.");
        
        if (protected[sender] != 0){
            require(amount <= protectionLimit * (10 ** _decimals) && lastSell[sender] == 0 && protectionTimer > block.timestamp, "Wallet protected, please contact support.");
            lastSell[sender] = block.number;
        }
        
        if (liquidityPools[recipient]) {
            lastSell[sender] = block.number;
        } else if (shouldTakeFee(sender)) {
            if (protectionEnabled && protectionTimer > block.timestamp && lastBuy[tx.origin] == block.number && protected[recipient] == 0) {
                protected[recipient] = block.number;
                emit ProtectedWallet(tx.origin, recipient, block.number, 1);
            }
            lastBuy[recipient] = block.number;
            if (tx.origin != recipient)
                lastBuy[tx.origin] = block.number;
        }
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + deadBlocks >= block.number){ return feeDenominator - 1; }
        if (selling) return totalFee + sellBias;
        return totalFee - sellBias;
    }

    function takeFee(address recipient, uint256 amount) internal returns (uint256) {
        bool selling = liquidityPools[recipient];
        uint256 feeAmount = (amount * getTotalFee(selling)) / feeDenominator;
        
        _balances[address(this)] += feeAmount;
    
        return amount - feeAmount;
    }

    function shouldSwapBack(address recipient) internal view returns (bool) {
        return !liquidityPools[msg.sender]
        && !inSwap
        && swapEnabled
        && liquidityPools[recipient]
        && _balances[address(this)] >= swapMinimum;
    }

    function swapBack(uint256 amount) internal swapping {
        uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold;
        if (_balances[address(this)] < amountToSwap) amountToSwap = _balances[address(this)];
        
        uint256 amountToLiquify = (amountToSwap * liquidityFee / 2) / totalFee;
        amountToSwap -= amountToLiquify;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        
        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance - balanceBefore;
        uint256 totalBNBFee = totalFee - (liquidityFee / 2);

        uint256 amountBNBLiquidity = (amountBNB * liquidityFee / 2) / totalBNBFee;
        uint256 amountBNBMarketing = amountBNB - amountBNBLiquidity;
        
        if (amountBNBMarketing > 0)
            marketingFeeReceiver.transfer(amountBNBMarketing);
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityFeeReceiver,
                block.timestamp
            );
        }

        emit FundsDistributed(amountBNBMarketing, amountBNBLiquidity, amountToLiquify);
    }
    
    function addLiquidityPool(address lp, bool isPool) external onlyOwner {
        require(lp != pair, "Can't alter current liquidity pair");
        liquidityPools[lp] = isPool;
    }

    function setRateLimit(uint256 rate) external onlyOwner {
        require(rate <= 60 seconds);
        rateLimit = rate;
    }

    function setTxLimit(uint256 buyNumerator, uint256 sellNumerator, uint256 divisor) external onlyOwner {
        require(buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000);
        _maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
        _maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
    }
    
    function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner() {
        require(numerator > 0 && divisor > 0 && divisor <= 10000);
        _maxWalletSize = (_totalSupply * numerator) / divisor;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _sellBias, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        totalFee = _marketingFee + _liquidityFee;
        sellBias = _sellBias;
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 2);
    }

    function setFeeReceivers(address _liquidityFeeReceiver, address _marketingFeeReceiver) external onlyOwner {
        liquidityFeeReceiver = payable(_liquidityFeeReceiver);
        marketingFeeReceiver = payable(_marketingFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, bool _processEnabled, uint256 _denominator, uint256 _swapMinimum) external onlyOwner {
        require(_denominator > 0);
        swapEnabled = _enabled;
        processEnabled = _processEnabled;
        swapThreshold = _totalSupply / _denominator;
        swapMinimum = _swapMinimum * (10 ** _decimals);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - (balanceOf(DEAD) + balanceOf(ZERO));
    }

    function withdrawETH (address payable recipient, uint256 amount) public onlyOwner {
        (bool succeed, bytes memory data) = recipient.call{value: amount}("");
        require(succeed, "Failed to withdraw ETH");
    }

    event FundsDistributed(uint256 marketingBNB, uint256 liquidityBNB, uint256 liquidityTokens);
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"}],"name":"FundsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"","type":"uint8"}],"name":"ProtectedWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"adr","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disablePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"},{"internalType":"uint256","name":"_protection","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_protect","type":"bool"}],"name":"protectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"protected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityFeeReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellBias","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_protect","type":"bool"},{"internalType":"uint256","name":"_addTime","type":"uint256"}],"name":"setProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setRateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_processEnabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_swapMinimum","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyNumerator","type":"uint256"},{"internalType":"uint256","name":"sellNumerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000d82565b633b9aca00620000aa919062000ebf565b60035560646002600354620000c0919062000ebf565b620000cc919062000cef565b60045560646002600354620000e2919062000ebf565b620000ee919062000cef565b6005556064600260035462000104919062000ebf565b62000110919062000cef565b600655610190600e5560c8600f55600f54600e5462000130919062000c92565b60105560006011556127106012557397d35dd7db65a4a95e5fec93701f89f92ba10165601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507397d35dd7db65a4a95e5fec93701f89f92ba10165601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601960006101000a81548160ff0219169083151502179055506000601960016101000a81548160ff0219169083151502179055506000602160006101000a81548160ff0219169083151502179055506000602160016101000a81548160ff02191690831515021790555060026022556000602360006101000a81548160ff0219169083151502179055506001602360016101000a81548160ff0219169083151502179055506103e8600354620002f6919062000cef565b6024556127106003546200030b919062000cef565b6025553480156200031b57600080fd5b5060006200032e62000bac60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200049857600080fd5b505afa158015620004ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d3919062000bf4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200055757600080fd5b505afa1580156200056c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000592919062000bf4565b306040518363ffffffff1660e01b8152600401620005b292919062000c48565b602060405180830381600087803b158015620005cd57600080fd5b505af1158015620005e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000608919062000bf4565b601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160176000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60086000620006f762000bb460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600b60006200086d62000bb460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000620008d462000bb460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60006200099362000bb460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003546007600062000aef62000bb460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b3d62000bb460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000b9e919062000c75565b60405180910390a362000ff5565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008151905062000bee8162000fdb565b92915050565b60006020828403121562000c0d5762000c0c62000fc9565b5b600062000c1d8482850162000bdd565b91505092915050565b62000c318162000f20565b82525050565b62000c428162000f54565b82525050565b600060408201905062000c5f600083018562000c26565b62000c6e602083018462000c26565b9392505050565b600060208201905062000c8c600083018462000c37565b92915050565b600062000c9f8262000f54565b915062000cac8362000f54565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ce45762000ce362000f6b565b5b828201905092915050565b600062000cfc8262000f54565b915062000d098362000f54565b92508262000d1c5762000d1b62000f9a565b5b828204905092915050565b6000808291508390505b600185111562000d795780860481111562000d515762000d5062000f6b565b5b600185161562000d615780820291505b808102905062000d718562000fce565b945062000d31565b94509492505050565b600062000d8f8262000f54565b915062000d9c8362000f5e565b925062000dcb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000dd3565b905092915050565b60008262000de5576001905062000eb8565b8162000df5576000905062000eb8565b816001811462000e0e576002811462000e195762000e4f565b600191505062000eb8565b60ff84111562000e2e5762000e2d62000f6b565b5b8360020a91508482111562000e485762000e4762000f6b565b5b5062000eb8565b5060208310610133831016604e8410600b841016171562000e895782820a90508381111562000e835762000e8262000f6b565b5b62000eb8565b62000e98848484600162000d27565b9250905081840481111562000eb25762000eb162000f6b565b5b81810290505b9392505050565b600062000ecc8262000f54565b915062000ed98362000f54565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f155762000f1462000f6b565b5b828202905092915050565b600062000f2d8262000f34565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000fe68162000f20565b811462000ff257600080fd5b50565b615c9f80620010056000396000f3fe60806040526004361061031e5760003560e01c80636ddd1713116101ab578063bafe446b116100f7578063e96fada211610095578063f84ba65d1161006f578063f84ba65d14610ba9578063f8821a6214610bd2578063f887ea4014610bfd578063fabb0b4f14610c2857610325565b8063e96fada214610b18578063f1f3bca314610b43578063f2fde38b14610b8057610325565b8063c1adf7bc116100d1578063c1adf7bc14610a4c578063c287184e14610a89578063d686014214610ab2578063dd62ed3e14610adb57610325565b8063bafe446b146109cb578063bf56b371146109f6578063bfa21d6a14610a2157610325565b80638da5cb5b11610164578063a4b45c001161013e578063a4b45c0014610911578063a8aa1b311461093a578063a9059cbb14610965578063abe57e70146109a257610325565b80638da5cb5b1461089057806395d89b41146108bb5780639b02c402146108e657610325565b80636ddd1713146107805780636f4ce428146107ab5780636fcba377146107e857806370a0823114610811578063715018a61461084e578063893d20e81461086557610325565b80634782f7791161026a5780635804f1e41161022357806361e08e72116101fd57806361e08e72146106d857806363a803e114610703578063658d4b7f1461072e578063672434821461075757610325565b80635804f1e41461066d578063584f969a1461069857806360bba03d146106af57610325565b80634782f77914610563578063492a937b1461058c57806350713935146105b557806354a1dfc9146105de57806356a227f214610607578063571ac8b01461063057610325565b8063234e9494116102d7578063313ce567116102b1578063313ce567146104bb57806334848b9a146104e6578063421dd7c71461050f57806346d7edaa1461052657610325565b8063234e94941461042857806323b872dd146104535780632b112e491461049057610325565b80630445b6671461032a57806306fdde0314610355578063095db78f14610380578063095ea7b3146103a95780631031e36e146103e657806318160ddd146103fd57610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c53565b60405161034c91906152ce565b60405180910390f35b34801561036157600080fd5b5061036a610c59565b60405161037791906150cc565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a2919061489a565b610c96565b005b3480156103b557600080fd5b506103d060048036038101906103cb91906147d9565b610f35565b6040516103dd9190615096565b60405180910390f35b3480156103f257600080fd5b506103fb611027565b005b34801561040957600080fd5b5061041261112e565b60405161041f91906152ce565b60405180910390f35b34801561043457600080fd5b5061043d611138565b60405161044a91906152ce565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190614746565b61115a565b6040516104879190615096565b60405180910390f35b34801561049c57600080fd5b506104a561131c565b6040516104b291906152ce565b60405180910390f35b3480156104c757600080fd5b506104d0611390565b6040516104dd919061537a565b60405180910390f35b3480156104f257600080fd5b5061050d60048036038101906105089190614a7b565b611399565b005b34801561051b57600080fd5b506105246114ee565b005b34801561053257600080fd5b5061054d6004803603810190610548919061466c565b6115f6565b60405161055a91906152ce565b60405180910390f35b34801561056f57600080fd5b5061058a600480360381019061058591906146c6565b61160e565b005b34801561059857600080fd5b506105b360048036038101906105ae9190614799565b611757565b005b3480156105c157600080fd5b506105dc60048036038101906105d79190614a7b565b6118d8565b005b3480156105ea57600080fd5b5061060560048036038101906106009190614927565b6119e3565b005b34801561061357600080fd5b5061062e600480360381019061062991906149fb565b611af2565b005b34801561063c57600080fd5b506106576004803603810190610652919061466c565b611c2a565b6040516106649190615096565b60405180910390f35b34801561067957600080fd5b50610682611c5d565b60405161068f91906152ce565b60405180910390f35b3480156106a457600080fd5b506106ad611c63565b005b3480156106bb57600080fd5b506106d660048036038101906106d19190614799565b611d6b565b005b3480156106e457600080fd5b506106ed611e5b565b6040516106fa91906152ce565b60405180910390f35b34801561070f57600080fd5b50610718611e61565b60405161072591906152ce565b60405180910390f35b34801561073a57600080fd5b5061075560048036038101906107509190614799565b611e83565b005b34801561076357600080fd5b5061077e60048036038101906107799190614819565b611f73565b005b34801561078c57600080fd5b506107956121b3565b6040516107a29190615096565b60405180910390f35b3480156107b757600080fd5b506107d260048036038101906107cd919061466c565b6121c6565b6040516107df91906152ce565b60405180910390f35b3480156107f457600080fd5b5061080f600480360381019061080a9190614b21565b6121de565b005b34801561081d57600080fd5b506108386004803603810190610833919061466c565b6122c3565b60405161084591906152ce565b60405180910390f35b34801561085a57600080fd5b5061086361230c565b005b34801561087157600080fd5b5061087a61245f565b6040516108879190614f30565b60405180910390f35b34801561089c57600080fd5b506108a561246e565b6040516108b29190614f30565b60405180910390f35b3480156108c757600080fd5b506108d0612497565b6040516108dd91906150cc565b60405180910390f35b3480156108f257600080fd5b506108fb6124d4565b60405161090891906152ce565b60405180910390f35b34801561091d57600080fd5b5061093860048036038101906109339190614706565b6124da565b005b34801561094657600080fd5b5061094f6125f5565b60405161095c9190614f30565b60405180910390f35b34801561097157600080fd5b5061098c600480360381019061098791906147d9565b61261b565b6040516109999190615096565b60405180910390f35b3480156109ae57600080fd5b506109c960048036038101906109c49190614a3b565b612630565b005b3480156109d757600080fd5b506109e061270f565b6040516109ed91906152ce565b60405180910390f35b348015610a0257600080fd5b50610a0b612731565b604051610a1891906152ce565b60405180910390f35b348015610a2d57600080fd5b50610a36612737565b604051610a439190614f4b565b60405180910390f35b348015610a5857600080fd5b50610a736004803603810190610a6e919061466c565b61275d565b604051610a8091906152ce565b60405180910390f35b348015610a9557600080fd5b50610ab06004803603810190610aab91906149ce565b612775565b005b348015610abe57600080fd5b50610ad96004803603810190610ad4919061498e565b612822565b005b348015610ae757600080fd5b50610b026004803603810190610afd9190614706565b612952565b604051610b0f91906152ce565b60405180910390f35b348015610b2457600080fd5b50610b2d6129d9565b604051610b3a9190614f4b565b60405180910390f35b348015610b4f57600080fd5b50610b6a6004803603810190610b6591906148fa565b6129ff565b604051610b7791906152ce565b60405180910390f35b348015610b8c57600080fd5b50610ba76004803603810190610ba2919061466c565b612a62565b005b348015610bb557600080fd5b50610bd06004803603810190610bcb9190614799565b612c24565b005b348015610bde57600080fd5b50610be7612d14565b604051610bf491906152ce565b60405180910390f35b348015610c0957600080fd5b50610c12612d1a565b604051610c1f91906150b1565b60405180910390f35b348015610c3457600080fd5b50610c3d612d40565b604051610c4a91906152ce565b60405180910390f35b60245481565b60606040518060400160405280600d81526020017f505552504c452050414c41434500000000000000000000000000000000000000815250905090565b60276000610ca2612d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610d275750610cf861246e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d906151ee565b60405180910390fd5b8015610d8657601960009054906101000a900460ff16610d8557600080fd5b5b60005b83839050811015610f2f578115610e1c57601b6000815480929190610dad906157cf565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610de757610de6615876565b5b9050602002016020810190610dfc919061466c565b436002604051610e0f9493929190614ff0565b60405180910390a1610ea4565b600060186000868685818110610e3557610e34615876565b5b9050602002016020810190610e4a919061466c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ea357601b6000815480929190610e9d906157a5565b91905055505b5b81610eb0576000610eb2565b435b60186000868685818110610ec957610ec8615876565b5b9050602002016020810190610ede919061466c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610f27906157cf565b915050610d89565b50505050565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161101591906152ce565b60405180910390a36001905092915050565b60276000611033612d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806110b8575061108961246e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee906151ee565b60405180910390fd5b602160019054906101000a900460ff161561111157600080fd5b6000602160006101000a81548160ff021916908315150217905550565b6000600354905090565b60006009600a61114891906154cf565b600554611155919061544b565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113085781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112879190615647565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611313848484612d4e565b90509392505050565b6000611349600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166122c3565b611374600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166122c3565b61137e91906153f5565b60035461138b9190615647565b905090565b60006009905090565b602760006113a5612d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061142a57506113fb61246e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611469576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611460906151ee565b60405180910390fd5b602160009054906101000a900460ff161580156114865750600a83105b61148f57600080fd5b826020819055506001602160006101000a81548160ff02191690831515021790555043601e8190555081426114c491906153f5565b601c819055506009600a6114d891906154cf565b816114e391906155ed565b601a81905550505050565b602760006114fa612d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061157f575061155061246e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6115be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b5906151ee565b60405180910390fd5b6001601960016101000a81548160ff0219169083151502179055506000601960006101000a81548160ff021916908315150217905550565b60186020528060005260406000206000915090505481565b611616612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169a9061526e565b60405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff16836040516116ca90614f1b565b60006040518083038185875af1925050503d8060008114611707576040519150601f19603f3d011682016040523d82523d6000602084013e61170c565b606091505b509150915081611751576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611748906151ce565b60405180910390fd5b50505050565b61175f612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e39061526e565b60405180910390fd5b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906152ae565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6118e0612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461196d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119649061526e565b60405180910390fd5b60008311801561197d5750600082115b80156119895750600081115b801561199757506127108111155b6119a057600080fd5b80836003546119af91906155ed565b6119b9919061544b565b60048190555080826003546119ce91906155ed565b6119d8919061544b565b600581905550505050565b6119eb612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f9061526e565b60405180910390fd5b60008211611a8557600080fd5b83602360006101000a81548160ff02191690831515021790555082602360016101000a81548160ff02191690831515021790555081600354611ac7919061544b565b6024819055506009600a611adb91906154cf565b81611ae691906155ed565b60258190555050505050565b60276000611afe612d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b835750611b5461246e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb9906151ee565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc60648584611bef91906155ed565b611bf9919061544b565b9081150290604051600060405180830381858888f19350505050158015611c24573d6000803e3d6000fd5b50505050565b6000611c56827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f35565b9050919050565b601f5481565b60276000611c6f612d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cf45750611cc561246e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a906151ee565b60405180910390fd5b6001602160016101000a81548160ff0219169083151502179055506001602160006101000a81548160ff021916908315150217905550565b611d73612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df79061526e565b60405180910390fd5b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60225481565b60006009600a611e7191906154cf565b600654611e7e919061544b565b905090565b611e8b612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0f9061526e565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611f7b612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff9061526e565b60405180910390fd5b60008484905011801561202057508383905082829050145b61202957600080fd5b600033905060005b858590508110156121ab576017600087878481811061205357612052615876565b5b9050602002016020810190612068919061466c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561212e5750600d60008787848181106120cf576120ce615876565b5b90506020020160208101906120e4919061466c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612198576121968287878481811061214a57612149615876565b5b905060200201602081019061215f919061466c565b6009600a61216d91906154cf565b8787868181106121805761217f615876565b5b9050602002013561219191906155ed565b613582565b505b80806121a3906157cf565b915050612031565b505050505050565b602360009054906101000a900460ff1681565b60096020528060005260406000206000915090505481565b6121e6612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a9061526e565b60405180910390fd5b83600f8190555082600e81905550838361228d91906153f5565b601081905550816011819055508060128190555060026012546122b0919061544b565b601054106122bd57600080fd5b50505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612314612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123989061526e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061246961246e565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5050580000000000000000000000000000000000000000000000000000000000815250905090565b601b5481565b6124e2612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461256f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125669061526e565b60405180910390fd5b81601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612628338484612d4e565b905092915050565b612638612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bc9061526e565b60405180910390fd5b6000821180156126d55750600081115b80156126e357506127108111155b6126ec57600080fd5b80826003546126fb91906155ed565b612705919061544b565b6006819055505050565b60006009600a61271f91906154cf565b60045461272c919061544b565b905090565b601e5481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090505481565b61277d612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461280a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128019061526e565b60405180910390fd5b603c81111561281857600080fd5b8060228190555050565b6027600061282e612d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128b3575061288461246e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6128f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e9906151ee565b60405180910390fd5b601960019054906101000a900460ff161561290c57600080fd5b81601960006101000a81548160ff02191690831515021790555062015180811061293557600080fd5b80601c600082825461294791906153f5565b925050819055505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600043602054601e54612a1291906153f5565b10612a2d576001601254612a269190615647565b9050612a5d565b8115612a4a57601154601054612a4391906153f5565b9050612a5d565b601154601054612a5a9190615647565b90505b919050565b612a6a612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aee9061526e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5e9061516e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612c2c612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb09061526e565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60255481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60205481565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db69061514e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e269061518e565b60405180910390fd5b60008211612e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e69906150ee565b60405180910390fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eeb906151ae565b60405180910390fd5b612efc613710565b158015612f525750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612fec57600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fda9061522e565b60405180910390fd5b612feb61371d565b5b602160009054906101000a900460ff166130e157600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130a15750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d79061528e565b60405180910390fd5b5b6130ec848484613748565b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131945750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156131f657600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131f5576131f48383613d05565b5b5b601960009054906101000a900460ff168015613213575042601c54115b1561338957601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561329d57508273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b80156132e857506000601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156133885743601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601b6000815480929190613344906157cf565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea328443600060405161337f9493929190614f66565b60405180910390a15b5b602660009054906101000a900460ff16156133b0576133a9848484613582565b905061357b565b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133fb9190615647565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061344985613d9e565b613453578261345e565b61345d8484613df5565b5b905061346984613ed8565b156134825760008311156134815761348083614002565b5b5b80600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134cd91906153f5565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161356d91906152ce565b60405180910390a360019150505b9392505050565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135cf9190615647565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461365d91906153f5565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136fd91906152ce565b60405180910390a3600190509392505050565b600080601e541415905090565b43601e8190555042601f819055506001602360006101000a81548160ff021916908315150217905550565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806137fc5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166137f4576005546137f8565b6004545b8111155b61383b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138329061512e565b60405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138df575043602254600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138dc91906153f5565b11155b61391e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139159061520e565b60405180910390fd5b6000601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414613a5f576009600a61397391906154cf565b601a5461398091906155ed565b81111580156139ce57506000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b80156139db575042601c54115b613a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a119061524e565b60405180910390fd5b43600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613afa5743600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d00565b613b0383613d9e565b15613cff57601960009054906101000a900460ff168015613b25575042601c54115b8015613b6f575043600a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b8015613bba57506000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15613c425743601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3283436001604051613c399493929190614fab565b60405180910390a15b43600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614613cfe5743600a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b505050565b600060065490508082600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5891906153f5565b1115613d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d909061510e565b60405180910390fd5b505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000601254613e55836129ff565b85613e6091906155ed565b613e6a919061544b565b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613ebb91906153f5565b925050819055508084613ece9190615647565b9250505092915050565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613f415750602660009054906101000a900460ff16155b8015613f595750602360009054906101000a900460ff165b8015613fae5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015613ffb5750602554600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b9050919050565b6001602660006101000a81548160ff0219169083151502179055506000602454821061403057602454614032565b815b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156140be57600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60006010546002600f54846140d391906155ed565b6140dd919061544b565b6140e7919061544b565b905080826140f59190615647565b91506000600267ffffffffffffffff811115614114576141136158a5565b5b6040519080825280602002602001820160405280156141425781602001602082028036833780820191505090505b509050308160008151811061415a57614159615876565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156141fc57600080fd5b505afa158015614210573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142349190614699565b8160018151811061424857614247615876565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008530426040518663ffffffff1660e01b81526004016142eb9594939291906152e9565b600060405180830381600087803b15801561430557600080fd5b505af1158015614319573d6000803e3d6000fd5b505050506000814761432b9190615647565b905060006002600f5461433e919061544b565b60105461434b9190615647565b90506000816002600f548561436091906155ed565b61436a919061544b565b614374919061544b565b9050600081846143849190615647565b905060008111156143f957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156143f7573d6000803e3d6000fd5b505b60008711156144e157601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161448b96959493929190615035565b6060604051808303818588803b1580156144a457600080fd5b505af11580156144b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906144dd9190614ace565b5050505b7fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df981838960405161451493929190615343565b60405180910390a150505050505050506000602660006101000a81548160ff02191690831515021790555050565b60008135905061455181615c0d565b92915050565b60008151905061456681615c0d565b92915050565b60008135905061457b81615c24565b92915050565b60008083601f840112614597576145966158d9565b5b8235905067ffffffffffffffff8111156145b4576145b36158d4565b5b6020830191508360208202830111156145d0576145cf6158de565b5b9250929050565b60008083601f8401126145ed576145ec6158d9565b5b8235905067ffffffffffffffff81111561460a576146096158d4565b5b602083019150836020820283011115614626576146256158de565b5b9250929050565b60008135905061463c81615c3b565b92915050565b60008135905061465181615c52565b92915050565b60008151905061466681615c52565b92915050565b600060208284031215614682576146816158e8565b5b600061469084828501614542565b91505092915050565b6000602082840312156146af576146ae6158e8565b5b60006146bd84828501614557565b91505092915050565b600080604083850312156146dd576146dc6158e8565b5b60006146eb8582860161456c565b92505060206146fc85828601614642565b9150509250929050565b6000806040838503121561471d5761471c6158e8565b5b600061472b85828601614542565b925050602061473c85828601614542565b9150509250929050565b60008060006060848603121561475f5761475e6158e8565b5b600061476d86828701614542565b935050602061477e86828701614542565b925050604061478f86828701614642565b9150509250925092565b600080604083850312156147b0576147af6158e8565b5b60006147be85828601614542565b92505060206147cf8582860161462d565b9150509250929050565b600080604083850312156147f0576147ef6158e8565b5b60006147fe85828601614542565b925050602061480f85828601614642565b9150509250929050565b60008060008060408587031215614833576148326158e8565b5b600085013567ffffffffffffffff811115614851576148506158e3565b5b61485d87828801614581565b9450945050602085013567ffffffffffffffff8111156148805761487f6158e3565b5b61488c878288016145d7565b925092505092959194509250565b6000806000604084860312156148b3576148b26158e8565b5b600084013567ffffffffffffffff8111156148d1576148d06158e3565b5b6148dd86828701614581565b935093505060206148f08682870161462d565b9150509250925092565b6000602082840312156149105761490f6158e8565b5b600061491e8482850161462d565b91505092915050565b60008060008060808587031215614941576149406158e8565b5b600061494f8782880161462d565b94505060206149608782880161462d565b935050604061497187828801614642565b925050606061498287828801614642565b91505092959194509250565b600080604083850312156149a5576149a46158e8565b5b60006149b38582860161462d565b92505060206149c485828601614642565b9150509250929050565b6000602082840312156149e4576149e36158e8565b5b60006149f284828501614642565b91505092915050565b60008060408385031215614a1257614a116158e8565b5b6000614a2085828601614642565b9250506020614a3185828601614542565b9150509250929050565b60008060408385031215614a5257614a516158e8565b5b6000614a6085828601614642565b9250506020614a7185828601614642565b9150509250929050565b600080600060608486031215614a9457614a936158e8565b5b6000614aa286828701614642565b9350506020614ab386828701614642565b9250506040614ac486828701614642565b9150509250925092565b600080600060608486031215614ae757614ae66158e8565b5b6000614af586828701614657565b9350506020614b0686828701614657565b9250506040614b1786828701614657565b9150509250925092565b60008060008060808587031215614b3b57614b3a6158e8565b5b6000614b4987828801614642565b9450506020614b5a87828801614642565b9350506040614b6b87828801614642565b9250506060614b7c87828801614642565b91505092959194509250565b6000614b948383614bbe565b60208301905092915050565b614ba9816156e2565b82525050565b614bb88161568d565b82525050565b614bc78161567b565b82525050565b614bd68161567b565b82525050565b6000614be7826153a5565b614bf181856153c8565b9350614bfc83615395565b8060005b83811015614c2d578151614c148882614b88565b9750614c1f836153bb565b925050600181019050614c00565b5085935050505092915050565b614c438161569f565b82525050565b614c52816156f4565b82525050565b614c6181615706565b82525050565b614c7081615718565b82525050565b614c7f8161572a565b82525050565b614c8e8161573c565b82525050565b6000614c9f826153b0565b614ca981856153e4565b9350614cb9818560208601615772565b614cc2816158ed565b840191505092915050565b6000614cda6015836153e4565b9150614ce58261590b565b602082019050919050565b6000614cfd6025836153e4565b9150614d0882615934565b604082019050919050565b6000614d206011836153e4565b9150614d2b82615983565b602082019050919050565b6000614d436018836153e4565b9150614d4e826159ac565b602082019050919050565b6000614d666026836153e4565b9150614d71826159d5565b604082019050919050565b6000614d896016836153e4565b9150614d9482615a24565b602082019050919050565b6000614dac6014836153e4565b9150614db782615a4d565b602082019050919050565b6000614dcf6016836153e4565b9150614dda82615a76565b602082019050919050565b6000614df2601b836153e4565b9150614dfd82615a9f565b602082019050919050565b6000614e15601d836153e4565b9150614e2082615ac8565b602082019050919050565b6000614e386018836153e4565b9150614e4382615af1565b602082019050919050565b6000614e5b6029836153e4565b9150614e6682615b1a565b604082019050919050565b6000614e7e6020836153e4565b9150614e8982615b69565b602082019050919050565b6000614ea16000836153d9565b9150614eac82615b92565b600082019050919050565b6000614ec46015836153e4565b9150614ecf82615b95565b602082019050919050565b6000614ee76022836153e4565b9150614ef282615bbe565b604082019050919050565b614f06816156cb565b82525050565b614f15816156d5565b82525050565b6000614f2682614e94565b9150819050919050565b6000602082019050614f456000830184614bcd565b92915050565b6000602082019050614f606000830184614baf565b92915050565b6000608082019050614f7b6000830187614bcd565b614f886020830186614bcd565b614f956040830185614efd565b614fa26060830184614c67565b95945050505050565b6000608082019050614fc06000830187614bcd565b614fcd6020830186614bcd565b614fda6040830185614efd565b614fe76060830184614c76565b95945050505050565b60006080820190506150056000830187614bcd565b6150126020830186614bcd565b61501f6040830185614efd565b61502c6060830184614c85565b95945050505050565b600060c08201905061504a6000830189614bcd565b6150576020830188614efd565b6150646040830187614c58565b6150716060830186614c58565b61507e6080830185614ba0565b61508b60a0830184614efd565b979650505050505050565b60006020820190506150ab6000830184614c3a565b92915050565b60006020820190506150c66000830184614c49565b92915050565b600060208201905081810360008301526150e68184614c94565b905092915050565b6000602082019050818103600083015261510781614ccd565b9050919050565b6000602082019050818103600083015261512781614cf0565b9050919050565b6000602082019050818103600083015261514781614d13565b9050919050565b6000602082019050818103600083015261516781614d36565b9050919050565b6000602082019050818103600083015261518781614d59565b9050919050565b600060208201905081810360008301526151a781614d7c565b9050919050565b600060208201905081810360008301526151c781614d9f565b9050919050565b600060208201905081810360008301526151e781614dc2565b9050919050565b6000602082019050818103600083015261520781614de5565b9050919050565b6000602082019050818103600083015261522781614e08565b9050919050565b6000602082019050818103600083015261524781614e2b565b9050919050565b6000602082019050818103600083015261526781614e4e565b9050919050565b6000602082019050818103600083015261528781614e71565b9050919050565b600060208201905081810360008301526152a781614eb7565b9050919050565b600060208201905081810360008301526152c781614eda565b9050919050565b60006020820190506152e36000830184614efd565b92915050565b600060a0820190506152fe6000830188614efd565b61530b6020830187614c58565b818103604083015261531d8186614bdc565b905061532c6060830185614bcd565b6153396080830184614efd565b9695505050505050565b60006060820190506153586000830186614efd565b6153656020830185614efd565b6153726040830184614efd565b949350505050565b600060208201905061538f6000830184614f0c565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615400826156cb565b915061540b836156cb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156154405761543f615818565b5b828201905092915050565b6000615456826156cb565b9150615461836156cb565b92508261547157615470615847565b5b828204905092915050565b6000808291508390505b60018511156154c6578086048111156154a2576154a1615818565b5b60018516156154b15780820291505b80810290506154bf856158fe565b9450615486565b94509492505050565b60006154da826156cb565b91506154e5836156d5565b92506155127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461551a565b905092915050565b60008261552a57600190506155e6565b8161553857600090506155e6565b816001811461554e576002811461555857615587565b60019150506155e6565b60ff84111561556a57615569615818565b5b8360020a91508482111561558157615580615818565b5b506155e6565b5060208310610133831016604e8410600b84101617156155bc5782820a9050838111156155b7576155b6615818565b5b6155e6565b6155c9848484600161547c565b925090508184048111156155e0576155df615818565b5b81810290505b9392505050565b60006155f8826156cb565b9150615603836156cb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561563c5761563b615818565b5b828202905092915050565b6000615652826156cb565b915061565d836156cb565b9250828210156156705761566f615818565b5b828203905092915050565b6000615686826156ab565b9050919050565b6000615698826156ab565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006156ed8261574e565b9050919050565b60006156ff8261574e565b9050919050565b6000615711826156cb565b9050919050565b6000615723826156d5565b9050919050565b6000615735826156d5565b9050919050565b6000615747826156d5565b9050919050565b600061575982615760565b9050919050565b600061576b826156ab565b9050919050565b60005b83811015615790578082015181840152602081019050615775565b8381111561579f576000848401525b50505050565b60006157b0826156cb565b915060008214156157c4576157c3615818565b5b600182039050919050565b60006157da826156cb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561580d5761580c615818565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f416d6f756e74206d757374206265203e207a65726f0000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f42455032303a207472616e736665722066726f6d203078300000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220746f2030783000000000000000000000600082015250565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b7f4661696c656420746f2077697468647261772045544800000000000000000000600082015250565b7f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000600082015250565b7f5472616e736665722072617465206c696d69742065786365656465642e000000600082015250565b7f4c6971756964697479206e6f74206164646564207965742e0000000000000000600082015250565b7f57616c6c65742070726f7465637465642c20706c6561736520636f6e7461637460008201527f20737570706f72742e0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f54726164696e67206e6f74206f70656e207965742e0000000000000000000000600082015250565b7f43616e277420616c7465722063757272656e74206c697175696469747920706160008201527f6972000000000000000000000000000000000000000000000000000000000000602082015250565b615c168161567b565b8114615c2157600080fd5b50565b615c2d8161568d565b8114615c3857600080fd5b50565b615c448161569f565b8114615c4f57600080fd5b50565b615c5b816156cb565b8114615c6657600080fd5b5056fea26469706673582212203af7b0d062daa83022c3d3402384708779f10983f6280059ba158011f87d489f64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061031e5760003560e01c80636ddd1713116101ab578063bafe446b116100f7578063e96fada211610095578063f84ba65d1161006f578063f84ba65d14610ba9578063f8821a6214610bd2578063f887ea4014610bfd578063fabb0b4f14610c2857610325565b8063e96fada214610b18578063f1f3bca314610b43578063f2fde38b14610b8057610325565b8063c1adf7bc116100d1578063c1adf7bc14610a4c578063c287184e14610a89578063d686014214610ab2578063dd62ed3e14610adb57610325565b8063bafe446b146109cb578063bf56b371146109f6578063bfa21d6a14610a2157610325565b80638da5cb5b11610164578063a4b45c001161013e578063a4b45c0014610911578063a8aa1b311461093a578063a9059cbb14610965578063abe57e70146109a257610325565b80638da5cb5b1461089057806395d89b41146108bb5780639b02c402146108e657610325565b80636ddd1713146107805780636f4ce428146107ab5780636fcba377146107e857806370a0823114610811578063715018a61461084e578063893d20e81461086557610325565b80634782f7791161026a5780635804f1e41161022357806361e08e72116101fd57806361e08e72146106d857806363a803e114610703578063658d4b7f1461072e578063672434821461075757610325565b80635804f1e41461066d578063584f969a1461069857806360bba03d146106af57610325565b80634782f77914610563578063492a937b1461058c57806350713935146105b557806354a1dfc9146105de57806356a227f214610607578063571ac8b01461063057610325565b8063234e9494116102d7578063313ce567116102b1578063313ce567146104bb57806334848b9a146104e6578063421dd7c71461050f57806346d7edaa1461052657610325565b8063234e94941461042857806323b872dd146104535780632b112e491461049057610325565b80630445b6671461032a57806306fdde0314610355578063095db78f14610380578063095ea7b3146103a95780631031e36e146103e657806318160ddd146103fd57610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c53565b60405161034c91906152ce565b60405180910390f35b34801561036157600080fd5b5061036a610c59565b60405161037791906150cc565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a2919061489a565b610c96565b005b3480156103b557600080fd5b506103d060048036038101906103cb91906147d9565b610f35565b6040516103dd9190615096565b60405180910390f35b3480156103f257600080fd5b506103fb611027565b005b34801561040957600080fd5b5061041261112e565b60405161041f91906152ce565b60405180910390f35b34801561043457600080fd5b5061043d611138565b60405161044a91906152ce565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190614746565b61115a565b6040516104879190615096565b60405180910390f35b34801561049c57600080fd5b506104a561131c565b6040516104b291906152ce565b60405180910390f35b3480156104c757600080fd5b506104d0611390565b6040516104dd919061537a565b60405180910390f35b3480156104f257600080fd5b5061050d60048036038101906105089190614a7b565b611399565b005b34801561051b57600080fd5b506105246114ee565b005b34801561053257600080fd5b5061054d6004803603810190610548919061466c565b6115f6565b60405161055a91906152ce565b60405180910390f35b34801561056f57600080fd5b5061058a600480360381019061058591906146c6565b61160e565b005b34801561059857600080fd5b506105b360048036038101906105ae9190614799565b611757565b005b3480156105c157600080fd5b506105dc60048036038101906105d79190614a7b565b6118d8565b005b3480156105ea57600080fd5b5061060560048036038101906106009190614927565b6119e3565b005b34801561061357600080fd5b5061062e600480360381019061062991906149fb565b611af2565b005b34801561063c57600080fd5b506106576004803603810190610652919061466c565b611c2a565b6040516106649190615096565b60405180910390f35b34801561067957600080fd5b50610682611c5d565b60405161068f91906152ce565b60405180910390f35b3480156106a457600080fd5b506106ad611c63565b005b3480156106bb57600080fd5b506106d660048036038101906106d19190614799565b611d6b565b005b3480156106e457600080fd5b506106ed611e5b565b6040516106fa91906152ce565b60405180910390f35b34801561070f57600080fd5b50610718611e61565b60405161072591906152ce565b60405180910390f35b34801561073a57600080fd5b5061075560048036038101906107509190614799565b611e83565b005b34801561076357600080fd5b5061077e60048036038101906107799190614819565b611f73565b005b34801561078c57600080fd5b506107956121b3565b6040516107a29190615096565b60405180910390f35b3480156107b757600080fd5b506107d260048036038101906107cd919061466c565b6121c6565b6040516107df91906152ce565b60405180910390f35b3480156107f457600080fd5b5061080f600480360381019061080a9190614b21565b6121de565b005b34801561081d57600080fd5b506108386004803603810190610833919061466c565b6122c3565b60405161084591906152ce565b60405180910390f35b34801561085a57600080fd5b5061086361230c565b005b34801561087157600080fd5b5061087a61245f565b6040516108879190614f30565b60405180910390f35b34801561089c57600080fd5b506108a561246e565b6040516108b29190614f30565b60405180910390f35b3480156108c757600080fd5b506108d0612497565b6040516108dd91906150cc565b60405180910390f35b3480156108f257600080fd5b506108fb6124d4565b60405161090891906152ce565b60405180910390f35b34801561091d57600080fd5b5061093860048036038101906109339190614706565b6124da565b005b34801561094657600080fd5b5061094f6125f5565b60405161095c9190614f30565b60405180910390f35b34801561097157600080fd5b5061098c600480360381019061098791906147d9565b61261b565b6040516109999190615096565b60405180910390f35b3480156109ae57600080fd5b506109c960048036038101906109c49190614a3b565b612630565b005b3480156109d757600080fd5b506109e061270f565b6040516109ed91906152ce565b60405180910390f35b348015610a0257600080fd5b50610a0b612731565b604051610a1891906152ce565b60405180910390f35b348015610a2d57600080fd5b50610a36612737565b604051610a439190614f4b565b60405180910390f35b348015610a5857600080fd5b50610a736004803603810190610a6e919061466c565b61275d565b604051610a8091906152ce565b60405180910390f35b348015610a9557600080fd5b50610ab06004803603810190610aab91906149ce565b612775565b005b348015610abe57600080fd5b50610ad96004803603810190610ad4919061498e565b612822565b005b348015610ae757600080fd5b50610b026004803603810190610afd9190614706565b612952565b604051610b0f91906152ce565b60405180910390f35b348015610b2457600080fd5b50610b2d6129d9565b604051610b3a9190614f4b565b60405180910390f35b348015610b4f57600080fd5b50610b6a6004803603810190610b6591906148fa565b6129ff565b604051610b7791906152ce565b60405180910390f35b348015610b8c57600080fd5b50610ba76004803603810190610ba2919061466c565b612a62565b005b348015610bb557600080fd5b50610bd06004803603810190610bcb9190614799565b612c24565b005b348015610bde57600080fd5b50610be7612d14565b604051610bf491906152ce565b60405180910390f35b348015610c0957600080fd5b50610c12612d1a565b604051610c1f91906150b1565b60405180910390f35b348015610c3457600080fd5b50610c3d612d40565b604051610c4a91906152ce565b60405180910390f35b60245481565b60606040518060400160405280600d81526020017f505552504c452050414c41434500000000000000000000000000000000000000815250905090565b60276000610ca2612d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610d275750610cf861246e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d906151ee565b60405180910390fd5b8015610d8657601960009054906101000a900460ff16610d8557600080fd5b5b60005b83839050811015610f2f578115610e1c57601b6000815480929190610dad906157cf565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610de757610de6615876565b5b9050602002016020810190610dfc919061466c565b436002604051610e0f9493929190614ff0565b60405180910390a1610ea4565b600060186000868685818110610e3557610e34615876565b5b9050602002016020810190610e4a919061466c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ea357601b6000815480929190610e9d906157a5565b91905055505b5b81610eb0576000610eb2565b435b60186000868685818110610ec957610ec8615876565b5b9050602002016020810190610ede919061466c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610f27906157cf565b915050610d89565b50505050565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161101591906152ce565b60405180910390a36001905092915050565b60276000611033612d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806110b8575061108961246e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee906151ee565b60405180910390fd5b602160019054906101000a900460ff161561111157600080fd5b6000602160006101000a81548160ff021916908315150217905550565b6000600354905090565b60006009600a61114891906154cf565b600554611155919061544b565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113085781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112879190615647565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611313848484612d4e565b90509392505050565b6000611349600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166122c3565b611374600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166122c3565b61137e91906153f5565b60035461138b9190615647565b905090565b60006009905090565b602760006113a5612d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061142a57506113fb61246e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611469576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611460906151ee565b60405180910390fd5b602160009054906101000a900460ff161580156114865750600a83105b61148f57600080fd5b826020819055506001602160006101000a81548160ff02191690831515021790555043601e8190555081426114c491906153f5565b601c819055506009600a6114d891906154cf565b816114e391906155ed565b601a81905550505050565b602760006114fa612d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061157f575061155061246e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6115be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b5906151ee565b60405180910390fd5b6001601960016101000a81548160ff0219169083151502179055506000601960006101000a81548160ff021916908315150217905550565b60186020528060005260406000206000915090505481565b611616612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169a9061526e565b60405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff16836040516116ca90614f1b565b60006040518083038185875af1925050503d8060008114611707576040519150601f19603f3d011682016040523d82523d6000602084013e61170c565b606091505b509150915081611751576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611748906151ce565b60405180910390fd5b50505050565b61175f612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e39061526e565b60405180910390fd5b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906152ae565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6118e0612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461196d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119649061526e565b60405180910390fd5b60008311801561197d5750600082115b80156119895750600081115b801561199757506127108111155b6119a057600080fd5b80836003546119af91906155ed565b6119b9919061544b565b60048190555080826003546119ce91906155ed565b6119d8919061544b565b600581905550505050565b6119eb612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f9061526e565b60405180910390fd5b60008211611a8557600080fd5b83602360006101000a81548160ff02191690831515021790555082602360016101000a81548160ff02191690831515021790555081600354611ac7919061544b565b6024819055506009600a611adb91906154cf565b81611ae691906155ed565b60258190555050505050565b60276000611afe612d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b835750611b5461246e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb9906151ee565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc60648584611bef91906155ed565b611bf9919061544b565b9081150290604051600060405180830381858888f19350505050158015611c24573d6000803e3d6000fd5b50505050565b6000611c56827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f35565b9050919050565b601f5481565b60276000611c6f612d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cf45750611cc561246e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a906151ee565b60405180910390fd5b6001602160016101000a81548160ff0219169083151502179055506001602160006101000a81548160ff021916908315150217905550565b611d73612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df79061526e565b60405180910390fd5b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60225481565b60006009600a611e7191906154cf565b600654611e7e919061544b565b905090565b611e8b612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0f9061526e565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611f7b612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff9061526e565b60405180910390fd5b60008484905011801561202057508383905082829050145b61202957600080fd5b600033905060005b858590508110156121ab576017600087878481811061205357612052615876565b5b9050602002016020810190612068919061466c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561212e5750600d60008787848181106120cf576120ce615876565b5b90506020020160208101906120e4919061466c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612198576121968287878481811061214a57612149615876565b5b905060200201602081019061215f919061466c565b6009600a61216d91906154cf565b8787868181106121805761217f615876565b5b9050602002013561219191906155ed565b613582565b505b80806121a3906157cf565b915050612031565b505050505050565b602360009054906101000a900460ff1681565b60096020528060005260406000206000915090505481565b6121e6612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a9061526e565b60405180910390fd5b83600f8190555082600e81905550838361228d91906153f5565b601081905550816011819055508060128190555060026012546122b0919061544b565b601054106122bd57600080fd5b50505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612314612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123989061526e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061246961246e565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5050580000000000000000000000000000000000000000000000000000000000815250905090565b601b5481565b6124e2612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461256f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125669061526e565b60405180910390fd5b81601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612628338484612d4e565b905092915050565b612638612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bc9061526e565b60405180910390fd5b6000821180156126d55750600081115b80156126e357506127108111155b6126ec57600080fd5b80826003546126fb91906155ed565b612705919061544b565b6006819055505050565b60006009600a61271f91906154cf565b60045461272c919061544b565b905090565b601e5481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090505481565b61277d612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461280a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128019061526e565b60405180910390fd5b603c81111561281857600080fd5b8060228190555050565b6027600061282e612d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128b3575061288461246e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6128f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e9906151ee565b60405180910390fd5b601960019054906101000a900460ff161561290c57600080fd5b81601960006101000a81548160ff02191690831515021790555062015180811061293557600080fd5b80601c600082825461294791906153f5565b925050819055505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600043602054601e54612a1291906153f5565b10612a2d576001601254612a269190615647565b9050612a5d565b8115612a4a57601154601054612a4391906153f5565b9050612a5d565b601154601054612a5a9190615647565b90505b919050565b612a6a612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aee9061526e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5e9061516e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612c2c612d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb09061526e565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60255481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60205481565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db69061514e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e269061518e565b60405180910390fd5b60008211612e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e69906150ee565b60405180910390fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eeb906151ae565b60405180910390fd5b612efc613710565b158015612f525750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612fec57600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fda9061522e565b60405180910390fd5b612feb61371d565b5b602160009054906101000a900460ff166130e157600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130a15750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d79061528e565b60405180910390fd5b5b6130ec848484613748565b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131945750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156131f657600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131f5576131f48383613d05565b5b5b601960009054906101000a900460ff168015613213575042601c54115b1561338957601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561329d57508273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b80156132e857506000601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156133885743601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601b6000815480929190613344906157cf565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea328443600060405161337f9493929190614f66565b60405180910390a15b5b602660009054906101000a900460ff16156133b0576133a9848484613582565b905061357b565b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133fb9190615647565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061344985613d9e565b613453578261345e565b61345d8484613df5565b5b905061346984613ed8565b156134825760008311156134815761348083614002565b5b5b80600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134cd91906153f5565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161356d91906152ce565b60405180910390a360019150505b9392505050565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135cf9190615647565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461365d91906153f5565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136fd91906152ce565b60405180910390a3600190509392505050565b600080601e541415905090565b43601e8190555042601f819055506001602360006101000a81548160ff021916908315150217905550565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806137fc5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166137f4576005546137f8565b6004545b8111155b61383b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138329061512e565b60405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138df575043602254600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138dc91906153f5565b11155b61391e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139159061520e565b60405180910390fd5b6000601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414613a5f576009600a61397391906154cf565b601a5461398091906155ed565b81111580156139ce57506000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b80156139db575042601c54115b613a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a119061524e565b60405180910390fd5b43600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613afa5743600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d00565b613b0383613d9e565b15613cff57601960009054906101000a900460ff168015613b25575042601c54115b8015613b6f575043600a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b8015613bba57506000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15613c425743601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3283436001604051613c399493929190614fab565b60405180910390a15b43600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614613cfe5743600a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b505050565b600060065490508082600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5891906153f5565b1115613d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d909061510e565b60405180910390fd5b505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000601254613e55836129ff565b85613e6091906155ed565b613e6a919061544b565b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613ebb91906153f5565b925050819055508084613ece9190615647565b9250505092915050565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613f415750602660009054906101000a900460ff16155b8015613f595750602360009054906101000a900460ff165b8015613fae5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015613ffb5750602554600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b9050919050565b6001602660006101000a81548160ff0219169083151502179055506000602454821061403057602454614032565b815b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156140be57600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60006010546002600f54846140d391906155ed565b6140dd919061544b565b6140e7919061544b565b905080826140f59190615647565b91506000600267ffffffffffffffff811115614114576141136158a5565b5b6040519080825280602002602001820160405280156141425781602001602082028036833780820191505090505b509050308160008151811061415a57614159615876565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156141fc57600080fd5b505afa158015614210573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142349190614699565b8160018151811061424857614247615876565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008530426040518663ffffffff1660e01b81526004016142eb9594939291906152e9565b600060405180830381600087803b15801561430557600080fd5b505af1158015614319573d6000803e3d6000fd5b505050506000814761432b9190615647565b905060006002600f5461433e919061544b565b60105461434b9190615647565b90506000816002600f548561436091906155ed565b61436a919061544b565b614374919061544b565b9050600081846143849190615647565b905060008111156143f957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156143f7573d6000803e3d6000fd5b505b60008711156144e157601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161448b96959493929190615035565b6060604051808303818588803b1580156144a457600080fd5b505af11580156144b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906144dd9190614ace565b5050505b7fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df981838960405161451493929190615343565b60405180910390a150505050505050506000602660006101000a81548160ff02191690831515021790555050565b60008135905061455181615c0d565b92915050565b60008151905061456681615c0d565b92915050565b60008135905061457b81615c24565b92915050565b60008083601f840112614597576145966158d9565b5b8235905067ffffffffffffffff8111156145b4576145b36158d4565b5b6020830191508360208202830111156145d0576145cf6158de565b5b9250929050565b60008083601f8401126145ed576145ec6158d9565b5b8235905067ffffffffffffffff81111561460a576146096158d4565b5b602083019150836020820283011115614626576146256158de565b5b9250929050565b60008135905061463c81615c3b565b92915050565b60008135905061465181615c52565b92915050565b60008151905061466681615c52565b92915050565b600060208284031215614682576146816158e8565b5b600061469084828501614542565b91505092915050565b6000602082840312156146af576146ae6158e8565b5b60006146bd84828501614557565b91505092915050565b600080604083850312156146dd576146dc6158e8565b5b60006146eb8582860161456c565b92505060206146fc85828601614642565b9150509250929050565b6000806040838503121561471d5761471c6158e8565b5b600061472b85828601614542565b925050602061473c85828601614542565b9150509250929050565b60008060006060848603121561475f5761475e6158e8565b5b600061476d86828701614542565b935050602061477e86828701614542565b925050604061478f86828701614642565b9150509250925092565b600080604083850312156147b0576147af6158e8565b5b60006147be85828601614542565b92505060206147cf8582860161462d565b9150509250929050565b600080604083850312156147f0576147ef6158e8565b5b60006147fe85828601614542565b925050602061480f85828601614642565b9150509250929050565b60008060008060408587031215614833576148326158e8565b5b600085013567ffffffffffffffff811115614851576148506158e3565b5b61485d87828801614581565b9450945050602085013567ffffffffffffffff8111156148805761487f6158e3565b5b61488c878288016145d7565b925092505092959194509250565b6000806000604084860312156148b3576148b26158e8565b5b600084013567ffffffffffffffff8111156148d1576148d06158e3565b5b6148dd86828701614581565b935093505060206148f08682870161462d565b9150509250925092565b6000602082840312156149105761490f6158e8565b5b600061491e8482850161462d565b91505092915050565b60008060008060808587031215614941576149406158e8565b5b600061494f8782880161462d565b94505060206149608782880161462d565b935050604061497187828801614642565b925050606061498287828801614642565b91505092959194509250565b600080604083850312156149a5576149a46158e8565b5b60006149b38582860161462d565b92505060206149c485828601614642565b9150509250929050565b6000602082840312156149e4576149e36158e8565b5b60006149f284828501614642565b91505092915050565b60008060408385031215614a1257614a116158e8565b5b6000614a2085828601614642565b9250506020614a3185828601614542565b9150509250929050565b60008060408385031215614a5257614a516158e8565b5b6000614a6085828601614642565b9250506020614a7185828601614642565b9150509250929050565b600080600060608486031215614a9457614a936158e8565b5b6000614aa286828701614642565b9350506020614ab386828701614642565b9250506040614ac486828701614642565b9150509250925092565b600080600060608486031215614ae757614ae66158e8565b5b6000614af586828701614657565b9350506020614b0686828701614657565b9250506040614b1786828701614657565b9150509250925092565b60008060008060808587031215614b3b57614b3a6158e8565b5b6000614b4987828801614642565b9450506020614b5a87828801614642565b9350506040614b6b87828801614642565b9250506060614b7c87828801614642565b91505092959194509250565b6000614b948383614bbe565b60208301905092915050565b614ba9816156e2565b82525050565b614bb88161568d565b82525050565b614bc78161567b565b82525050565b614bd68161567b565b82525050565b6000614be7826153a5565b614bf181856153c8565b9350614bfc83615395565b8060005b83811015614c2d578151614c148882614b88565b9750614c1f836153bb565b925050600181019050614c00565b5085935050505092915050565b614c438161569f565b82525050565b614c52816156f4565b82525050565b614c6181615706565b82525050565b614c7081615718565b82525050565b614c7f8161572a565b82525050565b614c8e8161573c565b82525050565b6000614c9f826153b0565b614ca981856153e4565b9350614cb9818560208601615772565b614cc2816158ed565b840191505092915050565b6000614cda6015836153e4565b9150614ce58261590b565b602082019050919050565b6000614cfd6025836153e4565b9150614d0882615934565b604082019050919050565b6000614d206011836153e4565b9150614d2b82615983565b602082019050919050565b6000614d436018836153e4565b9150614d4e826159ac565b602082019050919050565b6000614d666026836153e4565b9150614d71826159d5565b604082019050919050565b6000614d896016836153e4565b9150614d9482615a24565b602082019050919050565b6000614dac6014836153e4565b9150614db782615a4d565b602082019050919050565b6000614dcf6016836153e4565b9150614dda82615a76565b602082019050919050565b6000614df2601b836153e4565b9150614dfd82615a9f565b602082019050919050565b6000614e15601d836153e4565b9150614e2082615ac8565b602082019050919050565b6000614e386018836153e4565b9150614e4382615af1565b602082019050919050565b6000614e5b6029836153e4565b9150614e6682615b1a565b604082019050919050565b6000614e7e6020836153e4565b9150614e8982615b69565b602082019050919050565b6000614ea16000836153d9565b9150614eac82615b92565b600082019050919050565b6000614ec46015836153e4565b9150614ecf82615b95565b602082019050919050565b6000614ee76022836153e4565b9150614ef282615bbe565b604082019050919050565b614f06816156cb565b82525050565b614f15816156d5565b82525050565b6000614f2682614e94565b9150819050919050565b6000602082019050614f456000830184614bcd565b92915050565b6000602082019050614f606000830184614baf565b92915050565b6000608082019050614f7b6000830187614bcd565b614f886020830186614bcd565b614f956040830185614efd565b614fa26060830184614c67565b95945050505050565b6000608082019050614fc06000830187614bcd565b614fcd6020830186614bcd565b614fda6040830185614efd565b614fe76060830184614c76565b95945050505050565b60006080820190506150056000830187614bcd565b6150126020830186614bcd565b61501f6040830185614efd565b61502c6060830184614c85565b95945050505050565b600060c08201905061504a6000830189614bcd565b6150576020830188614efd565b6150646040830187614c58565b6150716060830186614c58565b61507e6080830185614ba0565b61508b60a0830184614efd565b979650505050505050565b60006020820190506150ab6000830184614c3a565b92915050565b60006020820190506150c66000830184614c49565b92915050565b600060208201905081810360008301526150e68184614c94565b905092915050565b6000602082019050818103600083015261510781614ccd565b9050919050565b6000602082019050818103600083015261512781614cf0565b9050919050565b6000602082019050818103600083015261514781614d13565b9050919050565b6000602082019050818103600083015261516781614d36565b9050919050565b6000602082019050818103600083015261518781614d59565b9050919050565b600060208201905081810360008301526151a781614d7c565b9050919050565b600060208201905081810360008301526151c781614d9f565b9050919050565b600060208201905081810360008301526151e781614dc2565b9050919050565b6000602082019050818103600083015261520781614de5565b9050919050565b6000602082019050818103600083015261522781614e08565b9050919050565b6000602082019050818103600083015261524781614e2b565b9050919050565b6000602082019050818103600083015261526781614e4e565b9050919050565b6000602082019050818103600083015261528781614e71565b9050919050565b600060208201905081810360008301526152a781614eb7565b9050919050565b600060208201905081810360008301526152c781614eda565b9050919050565b60006020820190506152e36000830184614efd565b92915050565b600060a0820190506152fe6000830188614efd565b61530b6020830187614c58565b818103604083015261531d8186614bdc565b905061532c6060830185614bcd565b6153396080830184614efd565b9695505050505050565b60006060820190506153586000830186614efd565b6153656020830185614efd565b6153726040830184614efd565b949350505050565b600060208201905061538f6000830184614f0c565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615400826156cb565b915061540b836156cb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156154405761543f615818565b5b828201905092915050565b6000615456826156cb565b9150615461836156cb565b92508261547157615470615847565b5b828204905092915050565b6000808291508390505b60018511156154c6578086048111156154a2576154a1615818565b5b60018516156154b15780820291505b80810290506154bf856158fe565b9450615486565b94509492505050565b60006154da826156cb565b91506154e5836156d5565b92506155127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461551a565b905092915050565b60008261552a57600190506155e6565b8161553857600090506155e6565b816001811461554e576002811461555857615587565b60019150506155e6565b60ff84111561556a57615569615818565b5b8360020a91508482111561558157615580615818565b5b506155e6565b5060208310610133831016604e8410600b84101617156155bc5782820a9050838111156155b7576155b6615818565b5b6155e6565b6155c9848484600161547c565b925090508184048111156155e0576155df615818565b5b81810290505b9392505050565b60006155f8826156cb565b9150615603836156cb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561563c5761563b615818565b5b828202905092915050565b6000615652826156cb565b915061565d836156cb565b9250828210156156705761566f615818565b5b828203905092915050565b6000615686826156ab565b9050919050565b6000615698826156ab565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006156ed8261574e565b9050919050565b60006156ff8261574e565b9050919050565b6000615711826156cb565b9050919050565b6000615723826156d5565b9050919050565b6000615735826156d5565b9050919050565b6000615747826156d5565b9050919050565b600061575982615760565b9050919050565b600061576b826156ab565b9050919050565b60005b83811015615790578082015181840152602081019050615775565b8381111561579f576000848401525b50505050565b60006157b0826156cb565b915060008214156157c4576157c3615818565b5b600182039050919050565b60006157da826156cb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561580d5761580c615818565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f416d6f756e74206d757374206265203e207a65726f0000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f42455032303a207472616e736665722066726f6d203078300000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220746f2030783000000000000000000000600082015250565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b7f4661696c656420746f2077697468647261772045544800000000000000000000600082015250565b7f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000600082015250565b7f5472616e736665722072617465206c696d69742065786365656465642e000000600082015250565b7f4c6971756964697479206e6f74206164646564207965742e0000000000000000600082015250565b7f57616c6c65742070726f7465637465642c20706c6561736520636f6e7461637460008201527f20737570706f72742e0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f54726164696e67206e6f74206f70656e207965742e0000000000000000000000600082015250565b7f43616e277420616c7465722063757272656e74206c697175696469747920706160008201527f6972000000000000000000000000000000000000000000000000000000000000602082015250565b615c168161567b565b8114615c2157600080fd5b50565b615c2d8161568d565b8114615c3857600080fd5b50565b615c448161569f565b8114615c4f57600080fd5b50565b615c5b816156cb565b8114615c6657600080fd5b5056fea26469706673582212203af7b0d062daa83022c3d3402384708779f10983f6280059ba158011f87d489f64736f6c63430008070033

Deployed Bytecode Sourcemap

5271:16531:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7273:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8737:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11693:617;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9478:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11057:115;;;;;;;;;;;;;:::i;:::-;;8485:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9002:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12482:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21324:138;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8579:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10673:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11554:127;;;;;;;;;;;;;:::i;:::-;;6749:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21470:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19144:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19472:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20956:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10447:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9702:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7034:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11184:111;;;;;;;;;;;;;:::i;:::-;;9836:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7165:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9115:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20050:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9967:468;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7202:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5957:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20312:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9226:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4866:148;;;;;;;;;;;;;:::i;:::-;;8814:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4656:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8656:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6905:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20706:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6974:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12318:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19823:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8891:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7002:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6388:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6008:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19336:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11307:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9337:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6492:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16729:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5020:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20177:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7330:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6598:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7068:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7273:50;;;;:::o;8737:71::-;8776:13;8800:5;;;;;;;;;;;;;;;;;8793:12;;8737:71;:::o;11693:617::-;7561:10;:24;7572:12;:10;:12::i;:::-;7561:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7603:7;:5;:7::i;:::-;7589:21;;:10;:21;;;7561:49;7553:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11793:8:::1;11789:67;;;11826:17;;;;;;;;;;;11818:26;;;::::0;::::1;;11789:67;11881:6;11876:427;11897:8;;:15;;11893:1;:19;11876:427;;;11952:8;11948:277;;;11981:15;;:17;;;;;;;;;:::i;:::-;;;;;;12022:56;12038:9;12049:8;;12058:1;12049:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12062:12;12076:1;12022:56;;;;;;;;;:::i;:::-;;;;;;;;11948:277;;;12162:1;12136:9;:22;12146:8;;12155:1;12146:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12136:22;;;;;;;;;;;;;;;;:27;12132:71;;12186:15;;:17;;;;;;;;;:::i;:::-;;;;;;12132:71;11948:277;12264:8;:27;;12290:1;12264:27;;;12275:12;12264:27;12239:9;:22;12249:8;;12258:1;12249:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12239:22;;;;;;;;;;;;;;;:52;;;;11914:3;;;;;:::i;:::-;;;;11876:427;;;;11693:617:::0;;;:::o;9478:216::-;9553:4;9605:6;9570:11;:23;9582:10;9570:23;;;;;;;;;;;;;;;:32;9594:7;9570:32;;;;;;;;;;;;;;;:41;;;;9648:7;9627:37;;9636:10;9627:37;;;9657:6;9627:37;;;;;;:::i;:::-;;;;;;;;9682:4;9675:11;;9478:216;;;;:::o;11057:115::-;7561:10;:24;7572:12;:10;:12::i;:::-;7561:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7603:7;:5;:7::i;:::-;7589:21;;:10;:21;;;7561:49;7553:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11119:13:::1;;;;;;;;;;;11118:14;11110:23;;;::::0;::::1;;11159:5;11144:12;;:20;;;;;;;;;;;;;;;;;;11057:115::o:0;8485:88::-;8540:7;8558:12;;8551:19;;8485:88;:::o;9002:107::-;9052:7;5598:1;9090:2;:15;;;;:::i;:::-;9070:16;;:36;;;;:::i;:::-;9063:43;;9002:107;:::o;12482:341::-;12582:4;12637:17;12602:11;:19;12614:6;12602:19;;;;;;;;;;;;;;;:31;12622:10;12602:31;;;;;;;;;;;;;;;;:52;12599:157;;12738:6;12704:11;:19;12716:6;12704:19;;;;;;;;;;;;;;;:31;12724:10;12704:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;12670:11;:19;12682:6;12670:19;;;;;;;;;;;;;;;:31;12690:10;12670:31;;;;;;;;;;;;;;;:74;;;;12599:157;12775:40;12789:6;12797:9;12808:6;12775:13;:40::i;:::-;12768:47;;12482:341;;;;;:::o;21324:138::-;21377:7;21438:15;21448:4;;;;;;;;;;;21438:9;:15::i;:::-;21420;21430:4;;;;;;;;;;;21420:9;:15::i;:::-;:33;;;;:::i;:::-;21404:12;;:50;;;;:::i;:::-;21397:57;;21324:138;:::o;8579:71::-;8622:5;5598:1;8631:16;;8579:71;:::o;10673:372::-;7561:10;:24;7572:12;:10;:12::i;:::-;7561:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7603:7;:5;:7::i;:::-;7589:21;;:10;:21;;;7561:49;7553:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;10790:12:::1;;;;;;;;;;;10789:13;:33;;;;;10820:2;10806:11;:16;10789:33;10781:42;;;::::0;::::1;;10847:11;10834:10;:24;;;;10884:4;10869:12;;:19;;;;;;;;;;;;;;;;;;10912:12;10899:10;:25;;;;10971:11;10953:15;:29;;;;:::i;:::-;10935:15;:47;;;;5598:1;11021:2;:15;;;;:::i;:::-;11011:6;:26;;;;:::i;:::-;10993:15;:44;;;;10673:372:::0;;;:::o;11554:127::-;7561:10;:24;7572:12;:10;:12::i;:::-;7561:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7603:7;:5;:7::i;:::-;7589:21;;:10;:21;;;7561:49;7553:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11633:4:::1;11612:18;;:25;;;;;;;;;;;;;;;;;;11668:5;11648:17;;:25;;;;;;;;;;;;;;;;;;11554:127::o:0;6749:45::-;;;;;;;;;;;;;;;;;:::o;21470:223::-;4791:12;:10;:12::i;:::-;4781:22;;:6;;;;;;;;;;:22;;;4773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21564:12:::1;21578:17:::0;21599:9:::1;:14;;21621:6;21599:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21563:69;;;;21651:7;21643:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;21552:141;;21470:223:::0;;:::o;19144:184::-;4791:12;:10;:12::i;:::-;4781:22;;:6;;;;;;;;;;:22;;;4773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19239:4:::1;;;;;;;;;;;19233:10;;:2;:10;;;;19225:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;19314:6;19293:14;:18;19308:2;19293:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;19144:184:::0;;:::o;19472:339::-;4791:12;:10;:12::i;:::-;4781:22;;:6;;;;;;;;;;:22;;;4773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19607:1:::1;19592:12;:16;:37;;;;;19628:1;19612:13;:17;19592:37;:52;;;;;19643:1;19633:7;:11;19592:52;:72;;;;;19659:5;19648:7;:16;;19592:72;19584:81;;;::::0;::::1;;19726:7;19710:12;19695;;:27;;;;:::i;:::-;19694:39;;;;:::i;:::-;19676:15;:57;;;;19796:7;19779:13;19764:12;;:28;;;;:::i;:::-;19763:40;;;;:::i;:::-;19744:16;:59;;;;19472:339:::0;;;:::o;20956:360::-;4791:12;:10;:12::i;:::-;4781:22;;:6;;;;;;;;;;:22;;;4773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21119:1:::1;21104:12;:16;21096:25;;;::::0;::::1;;21146:8;21132:11;;:22;;;;;;;;;;;;;;;;;;21182:15;21165:14;;:32;;;;;;;;;;;;;;;;;;21239:12;21224;;:27;;;;:::i;:::-;21208:13;:43;;;;5598:1;21292:2;:15;;;;:::i;:::-;21276:12;:32;;;;:::i;:::-;21262:11;:46;;;;20956:360:::0;;;;:::o;10447:214::-;7561:10;:24;7572:12;:10;:12::i;:::-;7561:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7603:7;:5;:7::i;:::-;7589:21;;:10;:21;;;7561:49;7553:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;10542:17:::1;10562:21;10542:41;;10602:3;10594:21;;:59;10649:3;10629:16;10617:9;:28;;;;:::i;:::-;10616:36;;;;:::i;:::-;10594:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10531:130;10447:214:::0;;:::o;9702:122::-;9757:4;9781:35;9789:7;9798:17;9781:7;:35::i;:::-;9774:42;;9702:122;;;:::o;7034:27::-;;;;:::o;11184:111::-;7561:10;:24;7572:12;:10;:12::i;:::-;7561:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7603:7;:5;:7::i;:::-;7589:21;;:10;:21;;;7561:49;7553:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11253:4:::1;11237:13;;:20;;;;;;;;;;;;;;;;;;11283:4;11268:12;;:19;;;;;;;;;;;;;;;;;;11184:111::o:0;9836:119::-;4791:12;:10;:12::i;:::-;4781:22;;:6;;;;;;;;;;:22;;;4773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9939:8:::1;9919:10;:17;9930:5;9919:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;9836:119:::0;;:::o;7165:28::-;;;;:::o;9115:105::-;9165:7;5598:1;9201:2;:15;;;;:::i;:::-;9183:14;;:34;;;;:::i;:::-;9176:41;;9115:105;:::o;20050:119::-;4791:12;:10;:12::i;:::-;4781:22;;:6;;;;;;;;;;:22;;;4773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20155:6:::1;20133:11;:19;20145:6;20133:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;20050:119:::0;;:::o;9967:468::-;4791:12;:10;:12::i;:::-;4781:22;;:6;;;;;;;;;;:22;;;4773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10099:1:::1;10080:9;;:16;;:20;:58;;;;;10122:9;;:16;;10104:7;;:14;;:34;10080:58;10072:67;;;::::0;::::1;;10150:12;10165:10;10150:25;;10193:6;10188:240;10209:9;;:16;;10205:1;:20;10188:240;;;10251:14;:28;10266:9;;10276:1;10266:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10251:28;;;;;;;;;;;;;;;;;;;;;;;;;10250:29;:64;;;;;10284:16;:30;10301:9;;10311:1;10301:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10284:30;;;;;;;;;;;;;;;;;;;;;;;;;10283:31;10250:64;10247:170;;;10335:66;10350:4;10356:9;;10366:1;10356:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;5598:1;10384:2;:15;;;;:::i;:::-;10370:7;;10378:1;10370:10;;;;;;;:::i;:::-;;;;;;;;:30;;;;:::i;:::-;10335:14;:66::i;:::-;;10247:170;10227:3;;;;;:::i;:::-;;;;10188:240;;;;10061:374;9967:468:::0;;;;:::o;7202:31::-;;;;;;;;;;;;;:::o;5957:44::-;;;;;;;;;;;;;;;;;:::o;20312:386::-;4791:12;:10;:12::i;:::-;4781:22;;:6;;;;;;;;;;:22;;;4773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20464:13:::1;20449:12;:28;;;;20503:13;20488:12;:28;;;;20554:13;20538;:29;;;;:::i;:::-;20527:8;:40;;;;20589:9;20578:8;:20;;;;20626:15;20609:14;:32;;;;20688:1;20671:14;;:18;;;;:::i;:::-;20660:8;;:29;20652:38;;;::::0;::::1;;20312:386:::0;;;;:::o;9226:105::-;9292:7;9310:9;:18;9320:7;9310:18;;;;;;;;;;;;;;;;9303:25;;9226:105;;;:::o;4866:148::-;4791:12;:10;:12::i;:::-;4781:22;;:6;;;;;;;;;;:22;;;4773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4973:1:::1;4936:40;;4957:6;::::0;::::1;;;;;;;;4936:40;;;;;;;;;;;;5004:1;4987:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4866:148::o:0;8814:71::-;8857:7;8875;:5;:7::i;:::-;8868:14;;8814:71;:::o;4656:79::-;4694:7;4721:6;;;;;;;;;;;4714:13;;4656:79;:::o;8656:75::-;8697:13;8721:7;;;;;;;;;;;;;;;;;8714:14;;8656:75;:::o;6905:30::-;;;;:::o;20706:242::-;4791:12;:10;:12::i;:::-;4781:22;;:6;;;;;;;;;;:22;;;4773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20854:21:::1;20823:20;;:53;;;;;;;;;;;;;;;;;;20918:21;20887:20;;:53;;;;;;;;;;;;;;;;;;20706:242:::0;;:::o;6974:19::-;;;;;;;;;;;;;:::o;12318:156::-;12398:4;12422:44;12436:10;12448:9;12459:6;12422:13;:44::i;:::-;12415:51;;12318:156;;;;:::o;19823:219::-;4791:12;:10;:12::i;:::-;4781:22;;:6;;;;;;;;;;:22;;;4773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19933:1:::1;19921:9;:13;:28;;;;;19948:1;19938:7;:11;19921:28;:48;;;;;19964:5;19953:7;:16;;19921:48;19913:57;;;::::0;::::1;;20027:7;20014:9;19999:12;;:24;;;;:::i;:::-;19998:36;;;;:::i;:::-;19981:14;:53;;;;19823:219:::0;;:::o;8891:105::-;8940:7;5598:1;8977:2;:15;;;;:::i;:::-;8958;;:35;;;;:::i;:::-;8951:42;;8891:105;:::o;7002:25::-;;;;:::o;6388:97::-;;;;;;;;;;;;;:::o;6008:43::-;;;;;;;;;;;;;;;;;:::o;19336:128::-;4791:12;:10;:12::i;:::-;4781:22;;:6;;;;;;;;;;:22;;;4773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19418:10:::1;19410:4;:18;;19402:27;;;::::0;::::1;;19452:4;19440:9;:16;;;;19336:128:::0;:::o;11307:235::-;7561:10;:24;7572:12;:10;:12::i;:::-;7561:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7603:7;:5;:7::i;:::-;7589:21;;:10;:21;;;7561:49;7553:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11401:18:::1;;;;;;;;;;;11400:19;11392:28;;;::::0;::::1;;11451:8;11431:17;;:28;;;;;;;;;;;;;;;;;;11489:6;11478:8;:17;11470:26;;;::::0;::::1;;11526:8;11507:15;;:27;;;;;;;:::i;:::-;;;;;;;;11307:235:::0;;:::o;9337:133::-;9421:7;9439:11;:19;9451:6;9439:19;;;;;;;;;;;;;;;:28;9459:7;9439:28;;;;;;;;;;;;;;;;9432:35;;9337:133;;;;:::o;6492:97::-;;;;;;;;;;;;;:::o;16729:243::-;16785:7;16835:12;16821:10;;16808;;:23;;;;:::i;:::-;:39;16805:73;;16874:1;16857:14;;:18;;;;:::i;:::-;16850:25;;;;16805:73;16892:7;16888:39;;;16919:8;;16908;;:19;;;;:::i;:::-;16901:26;;;;16888:39;16956:8;;16945;;:19;;;;:::i;:::-;16938:26;;16729:243;;;;:::o;5020:244::-;4791:12;:10;:12::i;:::-;4781:22;;:6;;;;;;;;;;:22;;;4773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5129:1:::1;5109:22;;:8;:22;;;;5101:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5219:8;5190:38;;5211:6;::::0;::::1;;;;;;;;5190:38;;;;;;;;;;;;5248:8;5239:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5020:244:::0;:::o;20177:127::-;4791:12;:10;:12::i;:::-;4781:22;;:6;;;;;;;;;;:22;;;4773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20290:6:::1;20264:15;:23;20280:6;20264:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20177:127:::0;;:::o;7330:49::-;;;;:::o;6598:24::-;;;;;;;;;;;;;:::o;7068:25::-;;;;:::o;2683:107::-;2728:15;2771:10;2756:26;;2683:107;:::o;12831:1734::-;12923:4;12966:1;12948:20;;:6;:20;;;;12940:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13037:1;13016:23;;:9;:23;;;;13008:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13094:1;13085:6;:10;13077:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;13161:6;13140:9;:17;13150:6;13140:17;;;;;;;;;;;;;;;;:27;;13132:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13207:10;:8;:10::i;:::-;13206:11;:40;;;;;13221:14;:25;13236:9;13221:25;;;;;;;;;;;;;;;;;;;;;;;;;13206:40;13203:120;;;13257:16;:24;13274:6;13257:24;;;;;;;;;;;;;;;;;;;;;;;;;13249:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13312:8;:6;:8::i;:::-;13203:120;13337:12;;;;;;;;;;;13333:111;;13360:16;:24;13377:6;13360:24;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;13388:16;:27;13405:9;13388:27;;;;;;;;;;;;;;;;;;;;;;;;;13360:55;13352:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;13333:111;13456:39;13469:6;13477:9;13488:6;13456:12;:39::i;:::-;13521:14;:25;13536:9;13521:25;;;;;;;;;;;;;;;;;;;;;;;;;13520:26;:47;;;;;13563:4;;;;;;;;;;;13550:17;;:9;:17;;;;13520:47;13516:182;;;13589:15;:26;13605:9;13589:26;;;;;;;;;;;;;;;;;;;;;;;;;13584:103;;13636:35;13653:9;13664:6;13636:16;:35::i;:::-;13584:103;13516:182;13721:17;;;;;;;;;;;:54;;;;;13760:15;13742;;:33;13721:54;13718:351;;;13795:14;:22;13810:6;13795:22;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;13834:9;13821:22;;:9;:22;;;;13795:48;:77;;;;;13871:1;13847:9;:20;13857:9;13847:20;;;;;;;;;;;;;;;;:25;13795:77;13792:266;;;13916:12;13893:9;:20;13903:9;13893:20;;;;;;;;;;;;;;;:35;;;;13947:15;;:17;;;;;;;;;:::i;:::-;;;;;;13988:54;14004:9;14015;14026:12;14040:1;13988:54;;;;;;;;;:::i;:::-;;;;;;;;13792:266;13718:351;14092:6;;;;;;;;;;;14089:63;;;14108:41;14123:6;14131:9;14142:6;14108:14;:41::i;:::-;14101:48;;;;14089:63;14204:6;14184:9;:17;14194:6;14184:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;14164:9;:17;14174:6;14164:17;;;;;;;;;;;;;;;:46;;;;14223:22;14248:21;14262:6;14248:13;:21::i;:::-;:59;;14301:6;14248:59;;;14272:26;14280:9;14291:6;14272:7;:26::i;:::-;14248:59;14223:84;;14331:25;14346:9;14331:14;:25::i;:::-;14328:66;;;14372:1;14363:6;:10;14359:32;;;14375:16;14384:6;14375:8;:16::i;:::-;14359:32;14328:66;14460:14;14437:9;:20;14447:9;14437:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;14414:9;:20;14424:9;14414:20;;;;;;;;;;;;;;;:60;;;;14509:9;14492:43;;14501:6;14492:43;;;14520:14;14492:43;;;;;;:::i;:::-;;;;;;;;14553:4;14546:11;;;12831:1734;;;;;;:::o;14824:300::-;14917:4;14974:6;14954:9;:17;14964:6;14954:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;14934:9;:17;14944:6;14934:17;;;;;;;;;;;;;;;:46;;;;15037:6;15014:9;:20;15024:9;15014:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;14991:9;:20;15001:9;14991:20;;;;;;;;;;;;;;;:52;;;;15076:9;15059:35;;15068:6;15059:35;;;15087:6;15059:35;;;;;;:::i;:::-;;;;;;;;15112:4;15105:11;;14824:300;;;;;:::o;14577:90::-;14620:4;14658:1;14644:10;;:15;;14637:22;;14577:90;:::o;14675:141::-;14726:12;14713:10;:25;;;;14764:15;14749:12;:30;;;;14804:4;14790:11;;:18;;;;;;;;;;;;;;;;;;14675:141::o;15379:1220::-;15480:15;:23;15496:6;15480:23;;;;;;;;;;;;;;;;;;;;;;;;;:98;;;;15518:14;:22;15533:6;15518:22;;;;;;;;;;;;;;;;;;;;;;;;;:59;;15561:16;;15518:59;;;15543:15;;15518:59;15507:6;:71;;15480:98;15472:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;15619:15;:23;15635:6;15619:23;;;;;;;;;;;;;;;;;;;;;;;;;:73;;;;15680:12;15667:9;;15646:7;:18;15654:9;15646:18;;;;;;;;;;;;;;;;:30;;;;:::i;:::-;:46;;15619:73;15611:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;15772:1;15751:9;:17;15761:6;15751:17;;;;;;;;;;;;;;;;:22;15747:261;;5598:1;15826:2;:15;;;;:::i;:::-;15807;;:35;;;;:::i;:::-;15797:6;:45;;:70;;;;;15866:1;15846:8;:16;15855:6;15846:16;;;;;;;;;;;;;;;;:21;15797:70;:107;;;;;15889:15;15871;;:33;15797:107;15789:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;15984:12;15965:8;:16;15974:6;15965:16;;;;;;;;;;;;;;;:31;;;;15747:261;16032:14;:25;16047:9;16032:25;;;;;;;;;;;;;;;;;;;;;;;;;16028:564;;;16093:12;16074:8;:16;16083:6;16074:16;;;;;;;;;;;;;;;:31;;;;16028:564;;;16127:21;16141:6;16127:13;:21::i;:::-;16123:469;;;16169:17;;;;;;;;;;;:54;;;;;16208:15;16190;;:33;16169:54;:92;;;;;16249:12;16227:7;:18;16235:9;16227:18;;;;;;;;;;;;;;;;:34;16169:92;:121;;;;;16289:1;16265:9;:20;16275:9;16265:20;;;;;;;;;;;;;;;;:25;16169:121;16165:275;;;16334:12;16311:9;:20;16321:9;16311:20;;;;;;;;;;;;;;;:35;;;;16370:54;16386:9;16397;16408:12;16422:1;16370:54;;;;;;;;;:::i;:::-;;;;;;;;16165:275;16475:12;16454:7;:18;16462:9;16454:18;;;;;;;;;;;;;;;:33;;;;16519:9;16506:22;;:9;:22;;;16502:78;;16568:12;16547:7;:18;16555:9;16547:18;;;;;;;;;;;;;;;:33;;;;16502:78;16123:469;16028:564;15379:1220;;;:::o;15136:235::-;15222:19;15244:14;;15222:36;;15310:11;15300:6;15277:9;:20;15287:9;15277:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:44;;15269:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;15211:160;15136:235;;:::o;16607:114::-;16669:4;16694:11;:19;16706:6;16694:19;;;;;;;;;;;;;;;;;;;;;;;;;16693:20;16686:27;;16607:114;;;:::o;16980:317::-;17050:7;17070:12;17085:14;:25;17100:9;17085:25;;;;;;;;;;;;;;;;;;;;;;;;;17070:40;;17121:17;17175:14;;17151:20;17163:7;17151:11;:20::i;:::-;17142:6;:29;;;;:::i;:::-;17141:48;;;;:::i;:::-;17121:68;;17238:9;17210;:24;17228:4;17210:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;17280:9;17271:6;:18;;;;:::i;:::-;17264:25;;;;16980:317;;;;:::o;17305:259::-;17371:4;17396:14;:26;17411:10;17396:26;;;;;;;;;;;;;;;;;;;;;;;;;17395:27;:47;;;;;17436:6;;;;;;;;;;;17435:7;17395:47;:71;;;;;17455:11;;;;;;;;;;;17395:71;:109;;;;;17479:14;:25;17494:9;17479:25;;;;;;;;;;;;;;;;;;;;;;;;;17395:109;:161;;;;;17545:11;;17517:9;:24;17535:4;17517:24;;;;;;;;;;;;;;;;:39;;17395:161;17388:168;;17305:259;;;:::o;17572:1560::-;7435:4;7426:6;;:13;;;;;;;;;;;;;;;;;;17635:20:::1;17667:13;;17658:6;:22;:47;;17692:13;;17658:47;;;17683:6;17658:47;17635:70;;17747:12;17720:9;:24;17738:4;17720:24;;;;;;;;;;;;;;;;:39;17716:84;;;17776:9;:24;17794:4;17776:24;;;;;;;;;;;;;;;;17761:39;;17716:84;17821:23;17883:8;;17878:1;17863:12;;17848;:27;;;;:::i;:::-;:31;;;;:::i;:::-;17847:44;;;;:::i;:::-;17821:70;;17918:15;17902:31;;;;;:::i;:::-;;;17946:21;17984:1;17970:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17946:40;;18015:4;17997;18002:1;17997:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;18041:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18031:4;18036:1;18031:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;18075:21;18099;18075:45;;18133:6;;;;;;;;;;;:57;;;18205:12;18232:1;18248:4;18275;18295:15;18133:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18334:17;18378:13;18354:21;:37;;;;:::i;:::-;18334:57;;18402:19;18451:1;18436:12;;:16;;;;:::i;:::-;18424:8;;:29;;;;:::i;:::-;18402:51;;18466:26;18528:11;18523:1;18508:12;;18496:9;:24;;;;:::i;:::-;:28;;;;:::i;:::-;18495:44;;;;:::i;:::-;18466:73;;18550:26;18591:18;18579:9;:30;;;;:::i;:::-;18550:59;;18655:1;18634:18;:22;18630:90;;;18671:20;;;;;;;;;;;:29;;:49;18701:18;18671:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18630:90;18762:1;18744:15;:19;18741:293;;;18779:6;;;;;;;;;;;:22;;;18809:18;18855:4;18879:15;18913:1;18933::::0;18953:20:::1;;;;;;;;;;;18992:15;18779:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18741:293;19051:73;19068:18;19088;19108:15;19051:73;;;;;;;;:::i;:::-;;;;;;;;17624:1508;;;;;;;;7453:5:::0;7444:6;;:14;;;;;;;;;;;;;;;;;;17572:1560;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;479:568::-;552:8;562:6;612:3;605:4;597:6;593:17;589:27;579:122;;620:79;;:::i;:::-;579:122;733:6;720:20;710:30;;763:18;755:6;752:30;749:117;;;785:79;;:::i;:::-;749:117;899:4;891:6;887:17;875:29;;953:3;945:4;937:6;933:17;923:8;919:32;916:41;913:128;;;960:79;;:::i;:::-;913:128;479:568;;;;;:::o;1070:::-;1143:8;1153:6;1203:3;1196:4;1188:6;1184:17;1180:27;1170:122;;1211:79;;:::i;:::-;1170:122;1324:6;1311:20;1301:30;;1354:18;1346:6;1343:30;1340:117;;;1376:79;;:::i;:::-;1340:117;1490:4;1482:6;1478:17;1466:29;;1544:3;1536:4;1528:6;1524:17;1514:8;1510:32;1507:41;1504:128;;;1551:79;;:::i;:::-;1504:128;1070:568;;;;;:::o;1644:133::-;1687:5;1725:6;1712:20;1703:29;;1741:30;1765:5;1741:30;:::i;:::-;1644:133;;;;:::o;1783:139::-;1829:5;1867:6;1854:20;1845:29;;1883:33;1910:5;1883:33;:::i;:::-;1783:139;;;;:::o;1928:143::-;1985:5;2016:6;2010:13;2001:22;;2032:33;2059:5;2032:33;:::i;:::-;1928:143;;;;:::o;2077:329::-;2136:6;2185:2;2173:9;2164:7;2160:23;2156:32;2153:119;;;2191:79;;:::i;:::-;2153:119;2311:1;2336:53;2381:7;2372:6;2361:9;2357:22;2336:53;:::i;:::-;2326:63;;2282:117;2077:329;;;;:::o;2412:351::-;2482:6;2531:2;2519:9;2510:7;2506:23;2502:32;2499:119;;;2537:79;;:::i;:::-;2499:119;2657:1;2682:64;2738:7;2729:6;2718:9;2714:22;2682:64;:::i;:::-;2672:74;;2628:128;2412:351;;;;:::o;2769:490::-;2845:6;2853;2902:2;2890:9;2881:7;2877:23;2873:32;2870:119;;;2908:79;;:::i;:::-;2870:119;3028:1;3053:61;3106:7;3097:6;3086:9;3082:22;3053:61;:::i;:::-;3043:71;;2999:125;3163:2;3189:53;3234:7;3225:6;3214:9;3210:22;3189:53;:::i;:::-;3179:63;;3134:118;2769:490;;;;;:::o;3265:474::-;3333:6;3341;3390:2;3378:9;3369:7;3365:23;3361:32;3358:119;;;3396:79;;:::i;:::-;3358:119;3516:1;3541:53;3586:7;3577:6;3566:9;3562:22;3541:53;:::i;:::-;3531:63;;3487:117;3643:2;3669:53;3714:7;3705:6;3694:9;3690:22;3669:53;:::i;:::-;3659:63;;3614:118;3265:474;;;;;:::o;3745:619::-;3822:6;3830;3838;3887:2;3875:9;3866:7;3862:23;3858:32;3855:119;;;3893:79;;:::i;:::-;3855:119;4013:1;4038:53;4083:7;4074:6;4063:9;4059:22;4038:53;:::i;:::-;4028:63;;3984:117;4140:2;4166:53;4211:7;4202:6;4191:9;4187:22;4166:53;:::i;:::-;4156:63;;4111:118;4268:2;4294:53;4339:7;4330:6;4319:9;4315:22;4294:53;:::i;:::-;4284:63;;4239:118;3745:619;;;;;:::o;4370:468::-;4435:6;4443;4492:2;4480:9;4471:7;4467:23;4463:32;4460:119;;;4498:79;;:::i;:::-;4460:119;4618:1;4643:53;4688:7;4679:6;4668:9;4664:22;4643:53;:::i;:::-;4633:63;;4589:117;4745:2;4771:50;4813:7;4804:6;4793:9;4789:22;4771:50;:::i;:::-;4761:60;;4716:115;4370:468;;;;;:::o;4844:474::-;4912:6;4920;4969:2;4957:9;4948:7;4944:23;4940:32;4937:119;;;4975:79;;:::i;:::-;4937:119;5095:1;5120:53;5165:7;5156:6;5145:9;5141:22;5120:53;:::i;:::-;5110:63;;5066:117;5222:2;5248:53;5293:7;5284:6;5273:9;5269:22;5248:53;:::i;:::-;5238:63;;5193:118;4844:474;;;;;:::o;5324:934::-;5446:6;5454;5462;5470;5519:2;5507:9;5498:7;5494:23;5490:32;5487:119;;;5525:79;;:::i;:::-;5487:119;5673:1;5662:9;5658:17;5645:31;5703:18;5695:6;5692:30;5689:117;;;5725:79;;:::i;:::-;5689:117;5838:80;5910:7;5901:6;5890:9;5886:22;5838:80;:::i;:::-;5820:98;;;;5616:312;5995:2;5984:9;5980:18;5967:32;6026:18;6018:6;6015:30;6012:117;;;6048:79;;:::i;:::-;6012:117;6161:80;6233:7;6224:6;6213:9;6209:22;6161:80;:::i;:::-;6143:98;;;;5938:313;5324:934;;;;;;;:::o;6264:698::-;6356:6;6364;6372;6421:2;6409:9;6400:7;6396:23;6392:32;6389:119;;;6427:79;;:::i;:::-;6389:119;6575:1;6564:9;6560:17;6547:31;6605:18;6597:6;6594:30;6591:117;;;6627:79;;:::i;:::-;6591:117;6740:80;6812:7;6803:6;6792:9;6788:22;6740:80;:::i;:::-;6722:98;;;;6518:312;6869:2;6895:50;6937:7;6928:6;6917:9;6913:22;6895:50;:::i;:::-;6885:60;;6840:115;6264:698;;;;;:::o;6968:323::-;7024:6;7073:2;7061:9;7052:7;7048:23;7044:32;7041:119;;;7079:79;;:::i;:::-;7041:119;7199:1;7224:50;7266:7;7257:6;7246:9;7242:22;7224:50;:::i;:::-;7214:60;;7170:114;6968:323;;;;:::o;7297:753::-;7377:6;7385;7393;7401;7450:3;7438:9;7429:7;7425:23;7421:33;7418:120;;;7457:79;;:::i;:::-;7418:120;7577:1;7602:50;7644:7;7635:6;7624:9;7620:22;7602:50;:::i;:::-;7592:60;;7548:114;7701:2;7727:50;7769:7;7760:6;7749:9;7745:22;7727:50;:::i;:::-;7717:60;;7672:115;7826:2;7852:53;7897:7;7888:6;7877:9;7873:22;7852:53;:::i;:::-;7842:63;;7797:118;7954:2;7980:53;8025:7;8016:6;8005:9;8001:22;7980:53;:::i;:::-;7970:63;;7925:118;7297:753;;;;;;;:::o;8056:468::-;8121:6;8129;8178:2;8166:9;8157:7;8153:23;8149:32;8146:119;;;8184:79;;:::i;:::-;8146:119;8304:1;8329:50;8371:7;8362:6;8351:9;8347:22;8329:50;:::i;:::-;8319:60;;8275:114;8428:2;8454:53;8499:7;8490:6;8479:9;8475:22;8454:53;:::i;:::-;8444:63;;8399:118;8056:468;;;;;:::o;8530:329::-;8589:6;8638:2;8626:9;8617:7;8613:23;8609:32;8606:119;;;8644:79;;:::i;:::-;8606:119;8764:1;8789:53;8834:7;8825:6;8814:9;8810:22;8789:53;:::i;:::-;8779:63;;8735:117;8530:329;;;;:::o;8865:474::-;8933:6;8941;8990:2;8978:9;8969:7;8965:23;8961:32;8958:119;;;8996:79;;:::i;:::-;8958:119;9116:1;9141:53;9186:7;9177:6;9166:9;9162:22;9141:53;:::i;:::-;9131:63;;9087:117;9243:2;9269:53;9314:7;9305:6;9294:9;9290:22;9269:53;:::i;:::-;9259:63;;9214:118;8865:474;;;;;:::o;9345:::-;9413:6;9421;9470:2;9458:9;9449:7;9445:23;9441:32;9438:119;;;9476:79;;:::i;:::-;9438:119;9596:1;9621:53;9666:7;9657:6;9646:9;9642:22;9621:53;:::i;:::-;9611:63;;9567:117;9723:2;9749:53;9794:7;9785:6;9774:9;9770:22;9749:53;:::i;:::-;9739:63;;9694:118;9345:474;;;;;:::o;9825:619::-;9902:6;9910;9918;9967:2;9955:9;9946:7;9942:23;9938:32;9935:119;;;9973:79;;:::i;:::-;9935:119;10093:1;10118:53;10163:7;10154:6;10143:9;10139:22;10118:53;:::i;:::-;10108:63;;10064:117;10220:2;10246:53;10291:7;10282:6;10271:9;10267:22;10246:53;:::i;:::-;10236:63;;10191:118;10348:2;10374:53;10419:7;10410:6;10399:9;10395:22;10374:53;:::i;:::-;10364:63;;10319:118;9825:619;;;;;:::o;10450:663::-;10538:6;10546;10554;10603:2;10591:9;10582:7;10578:23;10574:32;10571:119;;;10609:79;;:::i;:::-;10571:119;10729:1;10754:64;10810:7;10801:6;10790:9;10786:22;10754:64;:::i;:::-;10744:74;;10700:128;10867:2;10893:64;10949:7;10940:6;10929:9;10925:22;10893:64;:::i;:::-;10883:74;;10838:129;11006:2;11032:64;11088:7;11079:6;11068:9;11064:22;11032:64;:::i;:::-;11022:74;;10977:129;10450:663;;;;;:::o;11119:765::-;11205:6;11213;11221;11229;11278:3;11266:9;11257:7;11253:23;11249:33;11246:120;;;11285:79;;:::i;:::-;11246:120;11405:1;11430:53;11475:7;11466:6;11455:9;11451:22;11430:53;:::i;:::-;11420:63;;11376:117;11532:2;11558:53;11603:7;11594:6;11583:9;11579:22;11558:53;:::i;:::-;11548:63;;11503:118;11660:2;11686:53;11731:7;11722:6;11711:9;11707:22;11686:53;:::i;:::-;11676:63;;11631:118;11788:2;11814:53;11859:7;11850:6;11839:9;11835:22;11814:53;:::i;:::-;11804:63;;11759:118;11119:765;;;;;;;:::o;11890:179::-;11959:10;11980:46;12022:3;12014:6;11980:46;:::i;:::-;12058:4;12053:3;12049:14;12035:28;;11890:179;;;;:::o;12075:147::-;12170:45;12209:5;12170:45;:::i;:::-;12165:3;12158:58;12075:147;;:::o;12228:142::-;12331:32;12357:5;12331:32;:::i;:::-;12326:3;12319:45;12228:142;;:::o;12376:108::-;12453:24;12471:5;12453:24;:::i;:::-;12448:3;12441:37;12376:108;;:::o;12490:118::-;12577:24;12595:5;12577:24;:::i;:::-;12572:3;12565:37;12490:118;;:::o;12644:732::-;12763:3;12792:54;12840:5;12792:54;:::i;:::-;12862:86;12941:6;12936:3;12862:86;:::i;:::-;12855:93;;12972:56;13022:5;12972:56;:::i;:::-;13051:7;13082:1;13067:284;13092:6;13089:1;13086:13;13067:284;;;13168:6;13162:13;13195:63;13254:3;13239:13;13195:63;:::i;:::-;13188:70;;13281:60;13334:6;13281:60;:::i;:::-;13271:70;;13127:224;13114:1;13111;13107:9;13102:14;;13067:284;;;13071:14;13367:3;13360:10;;12768:608;;;12644:732;;;;:::o;13382:109::-;13463:21;13478:5;13463:21;:::i;:::-;13458:3;13451:34;13382:109;;:::o;13497:167::-;13602:55;13651:5;13602:55;:::i;:::-;13597:3;13590:68;13497:167;;:::o;13670:147::-;13765:45;13804:5;13765:45;:::i;:::-;13760:3;13753:58;13670:147;;:::o;13823:143::-;13916:43;13953:5;13916:43;:::i;:::-;13911:3;13904:56;13823:143;;:::o;13972:::-;14065:43;14102:5;14065:43;:::i;:::-;14060:3;14053:56;13972:143;;:::o;14121:::-;14214:43;14251:5;14214:43;:::i;:::-;14209:3;14202:56;14121:143;;:::o;14270:364::-;14358:3;14386:39;14419:5;14386:39;:::i;:::-;14441:71;14505:6;14500:3;14441:71;:::i;:::-;14434:78;;14521:52;14566:6;14561:3;14554:4;14547:5;14543:16;14521:52;:::i;:::-;14598:29;14620:6;14598:29;:::i;:::-;14593:3;14589:39;14582:46;;14362:272;14270:364;;;;:::o;14640:366::-;14782:3;14803:67;14867:2;14862:3;14803:67;:::i;:::-;14796:74;;14879:93;14968:3;14879:93;:::i;:::-;14997:2;14992:3;14988:12;14981:19;;14640:366;;;:::o;15012:::-;15154:3;15175:67;15239:2;15234:3;15175:67;:::i;:::-;15168:74;;15251:93;15340:3;15251:93;:::i;:::-;15369:2;15364:3;15360:12;15353:19;;15012:366;;;:::o;15384:::-;15526:3;15547:67;15611:2;15606:3;15547:67;:::i;:::-;15540:74;;15623:93;15712:3;15623:93;:::i;:::-;15741:2;15736:3;15732:12;15725:19;;15384:366;;;:::o;15756:::-;15898:3;15919:67;15983:2;15978:3;15919:67;:::i;:::-;15912:74;;15995:93;16084:3;15995:93;:::i;:::-;16113:2;16108:3;16104:12;16097:19;;15756:366;;;:::o;16128:::-;16270:3;16291:67;16355:2;16350:3;16291:67;:::i;:::-;16284:74;;16367:93;16456:3;16367:93;:::i;:::-;16485:2;16480:3;16476:12;16469:19;;16128:366;;;:::o;16500:::-;16642:3;16663:67;16727:2;16722:3;16663:67;:::i;:::-;16656:74;;16739:93;16828:3;16739:93;:::i;:::-;16857:2;16852:3;16848:12;16841:19;;16500:366;;;:::o;16872:::-;17014:3;17035:67;17099:2;17094:3;17035:67;:::i;:::-;17028:74;;17111:93;17200:3;17111:93;:::i;:::-;17229:2;17224:3;17220:12;17213:19;;16872:366;;;:::o;17244:::-;17386:3;17407:67;17471:2;17466:3;17407:67;:::i;:::-;17400:74;;17483:93;17572:3;17483:93;:::i;:::-;17601:2;17596:3;17592:12;17585:19;;17244:366;;;:::o;17616:::-;17758:3;17779:67;17843:2;17838:3;17779:67;:::i;:::-;17772:74;;17855:93;17944:3;17855:93;:::i;:::-;17973:2;17968:3;17964:12;17957:19;;17616:366;;;:::o;17988:::-;18130:3;18151:67;18215:2;18210:3;18151:67;:::i;:::-;18144:74;;18227:93;18316:3;18227:93;:::i;:::-;18345:2;18340:3;18336:12;18329:19;;17988:366;;;:::o;18360:::-;18502:3;18523:67;18587:2;18582:3;18523:67;:::i;:::-;18516:74;;18599:93;18688:3;18599:93;:::i;:::-;18717:2;18712:3;18708:12;18701:19;;18360:366;;;:::o;18732:::-;18874:3;18895:67;18959:2;18954:3;18895:67;:::i;:::-;18888:74;;18971:93;19060:3;18971:93;:::i;:::-;19089:2;19084:3;19080:12;19073:19;;18732:366;;;:::o;19104:::-;19246:3;19267:67;19331:2;19326:3;19267:67;:::i;:::-;19260:74;;19343:93;19432:3;19343:93;:::i;:::-;19461:2;19456:3;19452:12;19445:19;;19104:366;;;:::o;19476:398::-;19635:3;19656:83;19737:1;19732:3;19656:83;:::i;:::-;19649:90;;19748:93;19837:3;19748:93;:::i;:::-;19866:1;19861:3;19857:11;19850:18;;19476:398;;;:::o;19880:366::-;20022:3;20043:67;20107:2;20102:3;20043:67;:::i;:::-;20036:74;;20119:93;20208:3;20119:93;:::i;:::-;20237:2;20232:3;20228:12;20221:19;;19880:366;;;:::o;20252:::-;20394:3;20415:67;20479:2;20474:3;20415:67;:::i;:::-;20408:74;;20491:93;20580:3;20491:93;:::i;:::-;20609:2;20604:3;20600:12;20593:19;;20252:366;;;:::o;20624:118::-;20711:24;20729:5;20711:24;:::i;:::-;20706:3;20699:37;20624:118;;:::o;20748:112::-;20831:22;20847:5;20831:22;:::i;:::-;20826:3;20819:35;20748:112;;:::o;20866:379::-;21050:3;21072:147;21215:3;21072:147;:::i;:::-;21065:154;;21236:3;21229:10;;20866:379;;;:::o;21251:222::-;21344:4;21382:2;21371:9;21367:18;21359:26;;21395:71;21463:1;21452:9;21448:17;21439:6;21395:71;:::i;:::-;21251:222;;;;:::o;21479:254::-;21588:4;21626:2;21615:9;21611:18;21603:26;;21639:87;21723:1;21712:9;21708:17;21699:6;21639:87;:::i;:::-;21479:254;;;;:::o;21739:565::-;21922:4;21960:3;21949:9;21945:19;21937:27;;21974:71;22042:1;22031:9;22027:17;22018:6;21974:71;:::i;:::-;22055:72;22123:2;22112:9;22108:18;22099:6;22055:72;:::i;:::-;22137;22205:2;22194:9;22190:18;22181:6;22137:72;:::i;:::-;22219:78;22293:2;22282:9;22278:18;22269:6;22219:78;:::i;:::-;21739:565;;;;;;;:::o;22310:::-;22493:4;22531:3;22520:9;22516:19;22508:27;;22545:71;22613:1;22602:9;22598:17;22589:6;22545:71;:::i;:::-;22626:72;22694:2;22683:9;22679:18;22670:6;22626:72;:::i;:::-;22708;22776:2;22765:9;22761:18;22752:6;22708:72;:::i;:::-;22790:78;22864:2;22853:9;22849:18;22840:6;22790:78;:::i;:::-;22310:565;;;;;;;:::o;22881:::-;23064:4;23102:3;23091:9;23087:19;23079:27;;23116:71;23184:1;23173:9;23169:17;23160:6;23116:71;:::i;:::-;23197:72;23265:2;23254:9;23250:18;23241:6;23197:72;:::i;:::-;23279;23347:2;23336:9;23332:18;23323:6;23279:72;:::i;:::-;23361:78;23435:2;23424:9;23420:18;23411:6;23361:78;:::i;:::-;22881:565;;;;;;;:::o;23452:823::-;23709:4;23747:3;23736:9;23732:19;23724:27;;23761:71;23829:1;23818:9;23814:17;23805:6;23761:71;:::i;:::-;23842:72;23910:2;23899:9;23895:18;23886:6;23842:72;:::i;:::-;23924:80;24000:2;23989:9;23985:18;23976:6;23924:80;:::i;:::-;24014;24090:2;24079:9;24075:18;24066:6;24014:80;:::i;:::-;24104:81;24180:3;24169:9;24165:19;24156:6;24104:81;:::i;:::-;24195:73;24263:3;24252:9;24248:19;24239:6;24195:73;:::i;:::-;23452:823;;;;;;;;;:::o;24281:210::-;24368:4;24406:2;24395:9;24391:18;24383:26;;24419:65;24481:1;24470:9;24466:17;24457:6;24419:65;:::i;:::-;24281:210;;;;:::o;24497:258::-;24608:4;24646:2;24635:9;24631:18;24623:26;;24659:89;24745:1;24734:9;24730:17;24721:6;24659:89;:::i;:::-;24497:258;;;;:::o;24761:313::-;24874:4;24912:2;24901:9;24897:18;24889:26;;24961:9;24955:4;24951:20;24947:1;24936:9;24932:17;24925:47;24989:78;25062:4;25053:6;24989:78;:::i;:::-;24981:86;;24761:313;;;;:::o;25080:419::-;25246:4;25284:2;25273:9;25269:18;25261:26;;25333:9;25327:4;25323:20;25319:1;25308:9;25304:17;25297:47;25361:131;25487:4;25361:131;:::i;:::-;25353:139;;25080:419;;;:::o;25505:::-;25671:4;25709:2;25698:9;25694:18;25686:26;;25758:9;25752:4;25748:20;25744:1;25733:9;25729:17;25722:47;25786:131;25912:4;25786:131;:::i;:::-;25778:139;;25505:419;;;:::o;25930:::-;26096:4;26134:2;26123:9;26119:18;26111:26;;26183:9;26177:4;26173:20;26169:1;26158:9;26154:17;26147:47;26211:131;26337:4;26211:131;:::i;:::-;26203:139;;25930:419;;;:::o;26355:::-;26521:4;26559:2;26548:9;26544:18;26536:26;;26608:9;26602:4;26598:20;26594:1;26583:9;26579:17;26572:47;26636:131;26762:4;26636:131;:::i;:::-;26628:139;;26355:419;;;:::o;26780:::-;26946:4;26984:2;26973:9;26969:18;26961:26;;27033:9;27027:4;27023:20;27019:1;27008:9;27004:17;26997:47;27061:131;27187:4;27061:131;:::i;:::-;27053:139;;26780:419;;;:::o;27205:::-;27371:4;27409:2;27398:9;27394:18;27386:26;;27458:9;27452:4;27448:20;27444:1;27433:9;27429:17;27422:47;27486:131;27612:4;27486:131;:::i;:::-;27478:139;;27205:419;;;:::o;27630:::-;27796:4;27834:2;27823:9;27819:18;27811:26;;27883:9;27877:4;27873:20;27869:1;27858:9;27854:17;27847:47;27911:131;28037:4;27911:131;:::i;:::-;27903:139;;27630:419;;;:::o;28055:::-;28221:4;28259:2;28248:9;28244:18;28236:26;;28308:9;28302:4;28298:20;28294:1;28283:9;28279:17;28272:47;28336:131;28462:4;28336:131;:::i;:::-;28328:139;;28055:419;;;:::o;28480:::-;28646:4;28684:2;28673:9;28669:18;28661:26;;28733:9;28727:4;28723:20;28719:1;28708:9;28704:17;28697:47;28761:131;28887:4;28761:131;:::i;:::-;28753:139;;28480:419;;;:::o;28905:::-;29071:4;29109:2;29098:9;29094:18;29086:26;;29158:9;29152:4;29148:20;29144:1;29133:9;29129:17;29122:47;29186:131;29312:4;29186:131;:::i;:::-;29178:139;;28905:419;;;:::o;29330:::-;29496:4;29534:2;29523:9;29519:18;29511:26;;29583:9;29577:4;29573:20;29569:1;29558:9;29554:17;29547:47;29611:131;29737:4;29611:131;:::i;:::-;29603:139;;29330:419;;;:::o;29755:::-;29921:4;29959:2;29948:9;29944:18;29936:26;;30008:9;30002:4;29998:20;29994:1;29983:9;29979:17;29972:47;30036:131;30162:4;30036:131;:::i;:::-;30028:139;;29755:419;;;:::o;30180:::-;30346:4;30384:2;30373:9;30369:18;30361:26;;30433:9;30427:4;30423:20;30419:1;30408:9;30404:17;30397:47;30461:131;30587:4;30461:131;:::i;:::-;30453:139;;30180:419;;;:::o;30605:::-;30771:4;30809:2;30798:9;30794:18;30786:26;;30858:9;30852:4;30848:20;30844:1;30833:9;30829:17;30822:47;30886:131;31012:4;30886:131;:::i;:::-;30878:139;;30605:419;;;:::o;31030:::-;31196:4;31234:2;31223:9;31219:18;31211:26;;31283:9;31277:4;31273:20;31269:1;31258:9;31254:17;31247:47;31311:131;31437:4;31311:131;:::i;:::-;31303:139;;31030:419;;;:::o;31455:222::-;31548:4;31586:2;31575:9;31571:18;31563:26;;31599:71;31667:1;31656:9;31652:17;31643:6;31599:71;:::i;:::-;31455:222;;;;:::o;31683:831::-;31946:4;31984:3;31973:9;31969:19;31961:27;;31998:71;32066:1;32055:9;32051:17;32042:6;31998:71;:::i;:::-;32079:80;32155:2;32144:9;32140:18;32131:6;32079:80;:::i;:::-;32206:9;32200:4;32196:20;32191:2;32180:9;32176:18;32169:48;32234:108;32337:4;32328:6;32234:108;:::i;:::-;32226:116;;32352:72;32420:2;32409:9;32405:18;32396:6;32352:72;:::i;:::-;32434:73;32502:3;32491:9;32487:19;32478:6;32434:73;:::i;:::-;31683:831;;;;;;;;:::o;32520:442::-;32669:4;32707:2;32696:9;32692:18;32684:26;;32720:71;32788:1;32777:9;32773:17;32764:6;32720:71;:::i;:::-;32801:72;32869:2;32858:9;32854:18;32845:6;32801:72;:::i;:::-;32883;32951:2;32940:9;32936:18;32927:6;32883:72;:::i;:::-;32520:442;;;;;;:::o;32968:214::-;33057:4;33095:2;33084:9;33080:18;33072:26;;33108:67;33172:1;33161:9;33157:17;33148:6;33108:67;:::i;:::-;32968:214;;;;:::o;33269:132::-;33336:4;33359:3;33351:11;;33389:4;33384:3;33380:14;33372:22;;33269:132;;;:::o;33407:114::-;33474:6;33508:5;33502:12;33492:22;;33407:114;;;:::o;33527:99::-;33579:6;33613:5;33607:12;33597:22;;33527:99;;;:::o;33632:113::-;33702:4;33734;33729:3;33725:14;33717:22;;33632:113;;;:::o;33751:184::-;33850:11;33884:6;33879:3;33872:19;33924:4;33919:3;33915:14;33900:29;;33751:184;;;;:::o;33941:147::-;34042:11;34079:3;34064:18;;33941:147;;;;:::o;34094:169::-;34178:11;34212:6;34207:3;34200:19;34252:4;34247:3;34243:14;34228:29;;34094:169;;;;:::o;34269:305::-;34309:3;34328:20;34346:1;34328:20;:::i;:::-;34323:25;;34362:20;34380:1;34362:20;:::i;:::-;34357:25;;34516:1;34448:66;34444:74;34441:1;34438:81;34435:107;;;34522:18;;:::i;:::-;34435:107;34566:1;34563;34559:9;34552:16;;34269:305;;;;:::o;34580:185::-;34620:1;34637:20;34655:1;34637:20;:::i;:::-;34632:25;;34671:20;34689:1;34671:20;:::i;:::-;34666:25;;34710:1;34700:35;;34715:18;;:::i;:::-;34700:35;34757:1;34754;34750:9;34745:14;;34580:185;;;;:::o;34771:848::-;34832:5;34839:4;34863:6;34854:15;;34887:5;34878:14;;34901:712;34922:1;34912:8;34909:15;34901:712;;;35017:4;35012:3;35008:14;35002:4;34999:24;34996:50;;;35026:18;;:::i;:::-;34996:50;35076:1;35066:8;35062:16;35059:451;;;35491:4;35484:5;35480:16;35471:25;;35059:451;35541:4;35535;35531:15;35523:23;;35571:32;35594:8;35571:32;:::i;:::-;35559:44;;34901:712;;;34771:848;;;;;;;:::o;35625:281::-;35683:5;35707:23;35725:4;35707:23;:::i;:::-;35699:31;;35751:25;35767:8;35751:25;:::i;:::-;35739:37;;35795:104;35832:66;35822:8;35816:4;35795:104;:::i;:::-;35786:113;;35625:281;;;;:::o;35912:1073::-;35966:5;36157:8;36147:40;;36178:1;36169:10;;36180:5;;36147:40;36206:4;36196:36;;36223:1;36214:10;;36225:5;;36196:36;36292:4;36340:1;36335:27;;;;36376:1;36371:191;;;;36285:277;;36335:27;36353:1;36344:10;;36355:5;;;36371:191;36416:3;36406:8;36403:17;36400:43;;;36423:18;;:::i;:::-;36400:43;36472:8;36469:1;36465:16;36456:25;;36507:3;36500:5;36497:14;36494:40;;;36514:18;;:::i;:::-;36494:40;36547:5;;;36285:277;;36671:2;36661:8;36658:16;36652:3;36646:4;36643:13;36639:36;36621:2;36611:8;36608:16;36603:2;36597:4;36594:12;36590:35;36574:111;36571:246;;;36727:8;36721:4;36717:19;36708:28;;36762:3;36755:5;36752:14;36749:40;;;36769:18;;:::i;:::-;36749:40;36802:5;;36571:246;36842:42;36880:3;36870:8;36864:4;36861:1;36842:42;:::i;:::-;36827:57;;;;36916:4;36911:3;36907:14;36900:5;36897:25;36894:51;;;36925:18;;:::i;:::-;36894:51;36974:4;36967:5;36963:16;36954:25;;35912:1073;;;;;;:::o;36991:348::-;37031:7;37054:20;37072:1;37054:20;:::i;:::-;37049:25;;37088:20;37106:1;37088:20;:::i;:::-;37083:25;;37276:1;37208:66;37204:74;37201:1;37198:81;37193:1;37186:9;37179:17;37175:105;37172:131;;;37283:18;;:::i;:::-;37172:131;37331:1;37328;37324:9;37313:20;;36991:348;;;;:::o;37345:191::-;37385:4;37405:20;37423:1;37405:20;:::i;:::-;37400:25;;37439:20;37457:1;37439:20;:::i;:::-;37434:25;;37478:1;37475;37472:8;37469:34;;;37483:18;;:::i;:::-;37469:34;37528:1;37525;37521:9;37513:17;;37345:191;;;;:::o;37542:96::-;37579:7;37608:24;37626:5;37608:24;:::i;:::-;37597:35;;37542:96;;;:::o;37644:104::-;37689:7;37718:24;37736:5;37718:24;:::i;:::-;37707:35;;37644:104;;;:::o;37754:90::-;37788:7;37831:5;37824:13;37817:21;37806:32;;37754:90;;;:::o;37850:126::-;37887:7;37927:42;37920:5;37916:54;37905:65;;37850:126;;;:::o;37982:77::-;38019:7;38048:5;38037:16;;37982:77;;;:::o;38065:86::-;38100:7;38140:4;38133:5;38129:16;38118:27;;38065:86;;;:::o;38157:134::-;38215:9;38248:37;38279:5;38248:37;:::i;:::-;38235:50;;38157:134;;;:::o;38297:144::-;38365:9;38398:37;38429:5;38398:37;:::i;:::-;38385:50;;38297:144;;;:::o;38447:121::-;38505:9;38538:24;38556:5;38538:24;:::i;:::-;38525:37;;38447:121;;;:::o;38574:117::-;38630:9;38663:22;38679:5;38663:22;:::i;:::-;38650:35;;38574:117;;;:::o;38697:::-;38753:9;38786:22;38802:5;38786:22;:::i;:::-;38773:35;;38697:117;;;:::o;38820:::-;38876:9;38909:22;38925:5;38909:22;:::i;:::-;38896:35;;38820:117;;;:::o;38943:126::-;38993:9;39026:37;39057:5;39026:37;:::i;:::-;39013:50;;38943:126;;;:::o;39075:113::-;39125:9;39158:24;39176:5;39158:24;:::i;:::-;39145:37;;39075:113;;;:::o;39194:307::-;39262:1;39272:113;39286:6;39283:1;39280:13;39272:113;;;39371:1;39366:3;39362:11;39356:18;39352:1;39347:3;39343:11;39336:39;39308:2;39305:1;39301:10;39296:15;;39272:113;;;39403:6;39400:1;39397:13;39394:101;;;39483:1;39474:6;39469:3;39465:16;39458:27;39394:101;39243:258;39194:307;;;:::o;39507:171::-;39546:3;39569:24;39587:5;39569:24;:::i;:::-;39560:33;;39615:4;39608:5;39605:15;39602:41;;;39623:18;;:::i;:::-;39602:41;39670:1;39663:5;39659:13;39652:20;;39507:171;;;:::o;39684:233::-;39723:3;39746:24;39764:5;39746:24;:::i;:::-;39737:33;;39792:66;39785:5;39782:77;39779:103;;;39862:18;;:::i;:::-;39779:103;39909:1;39902:5;39898:13;39891:20;;39684:233;;;:::o;39923:180::-;39971:77;39968:1;39961:88;40068:4;40065:1;40058:15;40092:4;40089:1;40082:15;40109:180;40157:77;40154:1;40147:88;40254:4;40251:1;40244:15;40278:4;40275:1;40268:15;40295:180;40343:77;40340:1;40333:88;40440:4;40437:1;40430:15;40464:4;40461:1;40454:15;40481:180;40529:77;40526:1;40519:88;40626:4;40623:1;40616:15;40650:4;40647:1;40640:15;40667:117;40776:1;40773;40766:12;40790:117;40899:1;40896;40889:12;40913:117;41022:1;41019;41012:12;41036:117;41145:1;41142;41135:12;41159:117;41268:1;41265;41258:12;41282:102;41323:6;41374:2;41370:7;41365:2;41358:5;41354:14;41350:28;41340:38;;41282:102;;;:::o;41390:::-;41432:8;41479:5;41476:1;41472:13;41451:34;;41390:102;;;:::o;41498:171::-;41638:23;41634:1;41626:6;41622:14;41615:47;41498:171;:::o;41675:224::-;41815:34;41811:1;41803:6;41799:14;41792:58;41884:7;41879:2;41871:6;41867:15;41860:32;41675:224;:::o;41905:167::-;42045:19;42041:1;42033:6;42029:14;42022:43;41905:167;:::o;42078:174::-;42218:26;42214:1;42206:6;42202:14;42195:50;42078:174;:::o;42258:225::-;42398:34;42394:1;42386:6;42382:14;42375:58;42467:8;42462:2;42454:6;42450:15;42443:33;42258:225;:::o;42489:172::-;42629:24;42625:1;42617:6;42613:14;42606:48;42489:172;:::o;42667:170::-;42807:22;42803:1;42795:6;42791:14;42784:46;42667:170;:::o;42843:172::-;42983:24;42979:1;42971:6;42967:14;42960:48;42843:172;:::o;43021:177::-;43161:29;43157:1;43149:6;43145:14;43138:53;43021:177;:::o;43204:179::-;43344:31;43340:1;43332:6;43328:14;43321:55;43204:179;:::o;43389:174::-;43529:26;43525:1;43517:6;43513:14;43506:50;43389:174;:::o;43569:228::-;43709:34;43705:1;43697:6;43693:14;43686:58;43778:11;43773:2;43765:6;43761:15;43754:36;43569:228;:::o;43803:182::-;43943:34;43939:1;43931:6;43927:14;43920:58;43803:182;:::o;43991:114::-;;:::o;44111:171::-;44251:23;44247:1;44239:6;44235:14;44228:47;44111:171;:::o;44288:221::-;44428:34;44424:1;44416:6;44412:14;44405:58;44497:4;44492:2;44484:6;44480:15;44473:29;44288:221;:::o;44515:122::-;44588:24;44606:5;44588:24;:::i;:::-;44581:5;44578:35;44568:63;;44627:1;44624;44617:12;44568:63;44515:122;:::o;44643:138::-;44724:32;44750:5;44724:32;:::i;:::-;44717:5;44714:43;44704:71;;44771:1;44768;44761:12;44704:71;44643:138;:::o;44787:116::-;44857:21;44872:5;44857:21;:::i;:::-;44850:5;44847:32;44837:60;;44893:1;44890;44883:12;44837:60;44787:116;:::o;44909:122::-;44982:24;45000:5;44982:24;:::i;:::-;44975:5;44972:35;44962:63;;45021:1;45018;45011:12;44962:63;44909:122;:::o

Swarm Source

ipfs://3af7b0d062daa83022c3d3402384708779f10983f6280059ba158011f87d489f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.