ETH Price: $2,410.20 (-0.18%)

Token

ApeGoku (GOKU)
 

Overview

Max Total Supply

100,000,000 GOKU

Holders

22

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
913.222976084 GOKU

Value
$0.00
0x11191bcfe30c6aE7bBEF74c6De97c8D52FF957F9
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:
AVERAGE_DEV

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

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

/*Telegram https://t.me/ApeGokuEth*
 *Submitted for verification at Etherscan.io on 2022-09-09
*/




// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;

abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
  function totalSupply() external view returns (uint256);
  function decimals() external view returns (uint8);
  function symbol() external view returns (string memory);
  function name() external view returns (string memory);
  function getOwner() external view returns (address);
  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 IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    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);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract AVERAGE_DEV is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public isExcludedFromMaxWalletRestrictions;

    mapping (address => bool) private _isSniperOrBlacklisted;
    
    mapping (address => uint256) firstBuy;
    
    uint256 private startingSupply = 100_000_000;

    string private _name = "ApeGoku";
    string private _symbol = "GOKU";
//==========================
    // FEES
    struct taxes {
    uint buyFee;
    uint sellFee;
    uint transferFee;
    uint antiDumpLT;
    }

    taxes public Fees = taxes(
    {buyFee: 500, sellFee: 700, transferFee: 700, antiDumpLT: 700});
//==========================
    // Maxima

    struct Maxima {
    uint maxBuy;
    uint maxSell;
    uint maxTransfer;
    uint maxAntiDump;
    }

    Maxima public maxFees = Maxima(
    {maxBuy: 700, maxSell: 700, maxTransfer: 700, maxAntiDump: 700});
//==========================    
    //Proportions of Taxes
    struct feeProportions {
    uint liquidity;
    uint burn;
    uint averageDeveloper;
    uint developer;
    }

    feeProportions public Ratios = feeProportions(
    { liquidity: 0, burn: 0, averageDeveloper: 800, developer: 200});
//==========================
    // Anti-Dump
    struct jeetParameters {
    uint longTerm;
    bool enabled;
    }
    jeetParameters public terms = jeetParameters(
    {longTerm: 24 hours, enabled: true});
    // Anti-Dump
//==========================
    uint256 private constant masterTaxDivisor = 10000;
    uint256 private constant MAX = ~uint256(0);
    uint8 constant private _decimals = 9;
 
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // UNI ROUTER
    address constant private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD; // Receives tokens, deflates supply, increases price floor.
    
    address payable public _averageDeveloperWallet = payable(0x91Bbfe323F8943B9d744a1b905ac0De5D25C1123);
    address payable public _developerWallet = payable(0x988b461A5C161d260A7151b47B1c78078eA8fDE0);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent = 1;
    uint256 private maxTxDivisor = 100;
    uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    
    uint256 private maxWalletPercent = 2;
    uint256 private maxWalletDivisor = 100;
    uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
    
    uint256 private swapThreshold = (_tTotal * 5) / 10_000;
    uint256 private swapAmount = (_tTotal * 5) / 1_000;

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0; // make constant
    uint256 private snipeBlockAmt = 0;
    uint256 public snipersCaught = 0;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller != owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

        // Set the owner.
        _owner = msg.sender;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[owner()] = true;

        // Approve the owner for Uniswap, timesaver.
        _approve(_msgSender(), _routerAddress, _tTotal);

        // Event regarding the tTotal transferred to the _msgSender.
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (_averageDeveloperWallet == payable(_owner))
            _averageDeveloperWallet = payable(newOwner);
        
        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner() {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
    
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function getFirstBuy(address account) public view returns (uint256) {
        return firstBuy[account];
    }

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

        return _transfer(sender, recipient, amount);
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 1 weeks, "One week cooldown.");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }


    function excludeFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = true;
    }

    function revokeExcludedFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = false;
    }

    function isSniperOrBlacklisted(address account) public view returns (bool) {
        return _isSniperOrBlacklisted[account];
    }

    function isProtected(uint256 rInitializer) external onlyOwner {
        require (_liqAddStatus == 0, "Error.");
        _liqAddStatus = rInitializer;
        snipeBlockAmt = 3;
    }

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner() {
        _isSniperOrBlacklisted[account] = enabled;
    }

    function setRatios(uint _liquidity, uint _averageDeveloper, uint _developer, uint _burn) external onlyOwner {
        require ( (_liquidity+_averageDeveloper+_developer+_burn) == 1100, "!(1K)");
        Ratios.liquidity = _liquidity;
        Ratios.averageDeveloper = _averageDeveloper;
        Ratios.developer = _developer;
        Ratios.burn = _burn;}

    function antiDumpParameters(bool _enabled, uint _longTerm) external onlyOwner {
        require(_longTerm <= 24);
        terms.longTerm = _longTerm * 1 hours;
        terms.enabled = _enabled;}

    function setTaxes(uint _buyFee, uint _sellFee, uint _transferFee, uint _antiDumpLT) external onlyOwner {
        require(_buyFee <= maxFees.maxBuy
                && _sellFee <= maxFees.maxSell
                && _transferFee <= maxFees.maxTransfer
                && _antiDumpLT <= maxFees.maxAntiDump,
                "Cannot exceed maximums.");
         Fees.buyFee = _buyFee;
         Fees.sellFee = _sellFee;
         Fees.transferFee = _transferFee;
         Fees.antiDumpLT= _antiDumpLT;

    }

    function setMaxTxPercent(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxTxAmount = check;
    }

    function setMaxWalletSize(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxWalletSize = check;

    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setWallets(address payable averageDeveloperWallet, address payable developerWallet) external onlyOwner {
        _averageDeveloperWallet = payable(averageDeveloperWallet);
        _developerWallet = payable(developerWallet);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        if(_hasLimits(from, to)) {
            if(!(isExcludedFromMaxWalletRestrictions[from] || isExcludedFromMaxWalletRestrictions[to])) {
                if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
                }
                if(to != _routerAddress && !lpPairs[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                }

            }
            
        }


        if (_tOwned[to] == 0) {
            firstBuy[to] = block.timestamp;
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (Ratios.liquidity + Ratios.averageDeveloper + Ratios.developer == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.averageDeveloper + Ratios.developer) ) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.averageDeveloper + Ratios.developer) ) / 2;

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {
            _averageDeveloperWallet.transfer(((currentBalance - liquidityBalance) * Ratios.averageDeveloper) / (Ratios.averageDeveloper + Ratios.developer));
            _developerWallet.transfer(address(this).balance);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            if (snipeBlockAmt != 3) {
                _liqAddBlock = block.number + 5000;
            } else {
                _liqAddBlock = block.number;
            }

            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (sniperProtection){
            if (isSniperOrBlacklisted(from) || isSniperOrBlacklisted(to)) {
                revert("Sniper rejected.");
            }

            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
            } else {
                if (_liqAddBlock > 0 
                    && lpPairs[from] 
                    && _hasLimits(from, to)
                ) {
                    if (block.number - _liqAddBlock < snipeBlockAmt) {
                        _isSniperOrBlacklisted[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }
            }
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount; //A
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;

        if (to == lpPair) {
            if (terms.enabled){
                if (firstBuy[from] + terms.longTerm > block.timestamp) {currentFee = Fees.antiDumpLT;}

                else {currentFee = Fees.sellFee;}
            }
            else {currentFee=Fees.sellFee;}
            } 

        else if (from == lpPair) {currentFee = Fees.buyFee;} 

        else {currentFee = Fees.transferFee;}

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != (1)) {
                revert();
            }
        }
        uint256 burnAmt = (amount * currentFee * Ratios.burn) / (Ratios.burn + Ratios.liquidity + Ratios.averageDeveloper + Ratios.developer ) / masterTaxDivisor;
        uint256 feeAmount = (amount * currentFee / masterTaxDivisor) - burnAmt;
        _tOwned[DEAD] += burnAmt;
        _tOwned[address(this)] += (feeAmount);
        emit Transfer(from, DEAD, burnAmt);
        emit Transfer(from, address(this), feeAmount);
        return amount - feeAmount - burnAmt;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Fees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"},{"internalType":"uint256","name":"antiDumpLT","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ratios","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"averageDeveloper","type":"uint256"},{"internalType":"uint256","name":"developer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_averageDeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developerWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_longTerm","type":"uint256"}],"name":"antiDumpParameters","outputs":[],"stateMutability":"nonpayable","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"excludeFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getFirstBuy","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":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxWalletRestrictions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rInitializer","type":"uint256"}],"name":"isProtected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniperOrBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFees","outputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxTransfer","type":"uint256"},{"internalType":"uint256","name":"maxAntiDump","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"revokeExcludedFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_averageDeveloper","type":"uint256"},{"internalType":"uint256","name":"_developer","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"},{"internalType":"uint256","name":"_antiDumpLT","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"averageDeveloperWallet","type":"address"},{"internalType":"address payable","name":"developerWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"terms","outputs":[{"internalType":"uint256","name":"longTerm","type":"uint256"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"view","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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006003556305f5e100600a556040518060400160405280600781526020017f417065476f6b7500000000000000000000000000000000000000000000000000815250600b90805190602001906200005e92919062000c4a565b506040518060400160405280600481526020017f474f4b5500000000000000000000000000000000000000000000000000000000815250600c9080519060200190620000ac92919062000c4a565b5060405180608001604052806101f481526020016102bc81526020016102bc81526020016102bc815250600d60008201518160000155602082015181600101556040820151816002015560608201518160030155505060405180608001604052806102bc81526020016102bc81526020016102bc81526020016102bc815250601160008201518160000155602082015181600101556040820151816002015560608201518160030155505060405180608001604052806000815260200160008152602001610320815260200160c8815250601560008201518160000155602082015181600101556040820151816002015560608201518160030155505060405180604001604052806201518081526020016001151581525060196000820151816000015560208201518160010160006101000a81548160ff02191690831515021790555050506009600a62000202919062000e9c565b600a5462000211919062000fd9565b601b557391bbfe323f8943b9d744a1b905ac0de5d25c1123601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073988b461a5c161d260a7151b47b1c78078ea8fde0602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000602060156101000a81548160ff02191690831515021790555060016021556064602255602254602154601b54620002f8919062000fd9565b62000304919062000e09565b60235560026024556064602555602554602454601b5462000326919062000fd9565b62000332919062000e09565b6026556127106005601b5462000349919062000fd9565b62000355919062000e09565b6027556103e86005601b546200036c919062000fd9565b62000378919062000e09565b6028556001602960006101000a81548160ff0219169083151502179055506000602960016101000a81548160ff0219169083151502179055506000602a556000602b556000602c556000602d556000602e556000602f55601b5460016000620003e662000a4660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200052257600080fd5b505afa15801562000537573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055d919062000d11565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620005e157600080fd5b505afa158015620005f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061c919062000d11565b306040518363ffffffff1660e01b81526004016200063c92919062000d8c565b602060405180830381600087803b1580156200065757600080fd5b505af11580156200066c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000692919062000d11565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160026000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600660006200082562000a4e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560006200093e62000a4e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620009c7620009a362000a4660201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d601b5462000a7760201b60201c565b620009d762000a4660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601b5460405162000a38919062000ddb565b60405180910390a36200119d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000aea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ae19062000db9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b549062000db9565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000c3d919062000ddb565b60405180910390a3505050565b82805462000c589062001085565b90600052602060002090601f01602090048101928262000c7c576000855562000cc8565b82601f1062000c9757805160ff191683800117855562000cc8565b8280016001018555821562000cc8579182015b8281111562000cc757825182559160200191906001019062000caa565b5b50905062000cd7919062000cdb565b5090565b5b8082111562000cf657600081600090555060010162000cdc565b5090565b60008151905062000d0b8162001183565b92915050565b60006020828403121562000d2a5762000d2962001148565b5b600062000d3a8482850162000cfa565b91505092915050565b62000d4e816200103a565b82525050565b600062000d6360138362000df8565b915062000d70826200115a565b602082019050919050565b62000d86816200106e565b82525050565b600060408201905062000da3600083018562000d43565b62000db2602083018462000d43565b9392505050565b6000602082019050818103600083015262000dd48162000d54565b9050919050565b600060208201905062000df2600083018462000d7b565b92915050565b600082825260208201905092915050565b600062000e16826200106e565b915062000e23836200106e565b92508262000e365762000e35620010ea565b5b828204905092915050565b6000808291508390505b600185111562000e935780860481111562000e6b5762000e6a620010bb565b5b600185161562000e7b5780820291505b808102905062000e8b856200114d565b945062000e4b565b94509492505050565b600062000ea9826200106e565b915062000eb68362001078565b925062000ee57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000eed565b905092915050565b60008262000eff576001905062000fd2565b8162000f0f576000905062000fd2565b816001811462000f28576002811462000f335762000f69565b600191505062000fd2565b60ff84111562000f485762000f47620010bb565b5b8360020a91508482111562000f625762000f61620010bb565b5b5062000fd2565b5060208310610133831016604e8410600b841016171562000fa35782820a90508381111562000f9d5762000f9c620010bb565b5b62000fd2565b62000fb2848484600162000e41565b9250905081840481111562000fcc5762000fcb620010bb565b5b81810290505b9392505050565b600062000fe6826200106e565b915062000ff3836200106e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200102f576200102e620010bb565b5b828202905092915050565b600062001047826200104e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200109e57607f821691505b60208210811415620010b557620010b462001119565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6200118e816200103a565b81146200119a57600080fd5b50565b61566880620011ad6000396000f3fe60806040526004361061028c5760003560e01c806381c6f11b1161015a578063c49b9a80116100c1578063e5b55c6b1161007a578063e5b55c6b14610a2c578063e79d416014610a57578063e83e34b114610a82578063eafb5a3c14610ab0578063eec2744e14610ad9578063fb78680d14610b0257610293565b8063c49b9a801461091d578063ca79882f14610946578063ce8b79c914610971578063d3f6a1571461099a578063d5025625146109c3578063dd62ed3e146109ef57610293565b8063a12a7d6111610113578063a12a7d61146107e6578063a13ce2c61461080f578063a457c2d71461084c578063a9059cbb14610889578063b5f7bfa2146108c6578063bc1323e8146108f457610293565b806381c6f11b146106c2578063893d20e8146106eb57806389fd9bc1146107165780638c7321ad146107535780638da5cb5b1461079057806395d89b41146107bb57610293565b80633aaa36e6116101fe57806350a8e016116101b757806350a8e016146105b4578063571ac8b0146105df578063590ffdce1461061c57806370a0823114610645578063715018a61461068257806380c581d11461069957610293565b80633aaa36e6146104a15780633f3cf56c146104cf578063452ed4f1146104f85780634a74bb02146105235780634fb2e45d1461054e5780634fbee1931461057757610293565b806318160ddd1161025057806318160ddd1461037f57806323b872dd146103aa57806326003957146103e7578063313ce56714610410578063355b74de1461043b578063395093511461046457610293565b806303fd2a451461029857806306fdde03146102c35780630758d924146102ee578063095ea7b3146103195780631793fe4e1461035657610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b2b565b6040516102ba9190614ae2565b60405180910390f35b3480156102cf57600080fd5b506102d8610b31565b6040516102e59190614bd8565b60405180910390f35b3480156102fa57600080fd5b50610303610bc3565b6040516103109190614bbd565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b91906145da565b610be9565b60405161034d9190614ba2565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190614747565b610c07565b005b34801561038b57600080fd5b50610394610d2f565b6040516103a19190614dda565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190614547565b610d39565b6040516103de9190614ba2565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906146b4565b610e86565b005b34801561041c57600080fd5b50610425610f96565b6040516104329190614ef4565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190614647565b610f9f565b005b34801561047057600080fd5b5061048b600480360381019061048691906145da565b61107a565b6040516104989190614ba2565b60405180910390f35b3480156104ad57600080fd5b506104b6611126565b6040516104c69493929190614eaf565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f191906146b4565b611144565b005b34801561050457600080fd5b5061050d611254565b60405161051a9190614ae2565b60405180910390f35b34801561052f57600080fd5b5061053861127a565b6040516105459190614ba2565b60405180910390f35b34801561055a57600080fd5b506105756004803603810190610570919061446d565b61128d565b005b34801561058357600080fd5b5061059e6004803603810190610599919061446d565b6116fe565b6040516105ab9190614ba2565b60405180910390f35b3480156105c057600080fd5b506105c9611754565b6040516105d69190614ba2565b60405180910390f35b3480156105eb57600080fd5b506106066004803603810190610601919061446d565b611767565b6040516106139190614ba2565b60405180910390f35b34801561062857600080fd5b50610643600480360381019061063e919061459a565b61179a565b005b34801561065157600080fd5b5061066c6004803603810190610667919061446d565b61188a565b6040516106799190614dda565b60405180910390f35b34801561068e57600080fd5b506106976118d3565b005b3480156106a557600080fd5b506106c060048036038101906106bb919061459a565b611a51565b005b3480156106ce57600080fd5b506106e960048036038101906106e49190614687565b611c11565b005b3480156106f757600080fd5b50610700611cfd565b60405161070d9190614ae2565b60405180910390f35b34801561072257600080fd5b5061073d6004803603810190610738919061446d565b611d0c565b60405161074a9190614ba2565b60405180910390f35b34801561075f57600080fd5b5061077a6004803603810190610775919061446d565b611d62565b6040516107879190614ba2565b60405180910390f35b34801561079c57600080fd5b506107a5611d82565b6040516107b29190614ae2565b60405180910390f35b3480156107c757600080fd5b506107d0611dab565b6040516107dd9190614bd8565b60405180910390f35b3480156107f257600080fd5b5061080d60048036038101906108089190614747565b611e3d565b005b34801561081b57600080fd5b506108366004803603810190610831919061446d565b611f7b565b6040516108439190614dda565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e91906145da565b611fc4565b6040516108809190614ba2565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab91906145da565b612070565b6040516108bd9190614ba2565b60405180910390f35b3480156108d257600080fd5b506108db61208f565b6040516108eb9493929190614eaf565b60405180910390f35b34801561090057600080fd5b5061091b6004803603810190610916919061446d565b6120ad565b005b34801561092957600080fd5b50610944600480360381019061093f919061461a565b61219d565b005b34801561095257600080fd5b5061095b612286565b6040516109689190614afd565b60405180910390f35b34801561097d57600080fd5b506109986004803603810190610993919061446d565b6122ac565b005b3480156109a657600080fd5b506109c160048036038101906109bc91906144c7565b61239c565b005b3480156109cf57600080fd5b506109d86124b7565b6040516109e6929190614df5565b60405180910390f35b3480156109fb57600080fd5b50610a166004803603810190610a119190614507565b6124d6565b604051610a239190614dda565b60405180910390f35b348015610a3857600080fd5b50610a4161255d565b604051610a4e9190614afd565b60405180910390f35b348015610a6357600080fd5b50610a6c612583565b604051610a799190614dda565b60405180910390f35b348015610a8e57600080fd5b50610a97612589565b604051610aa79493929190614eaf565b60405180910390f35b348015610abc57600080fd5b50610ad76004803603810190610ad2919061446d565b6125a7565b005b348015610ae557600080fd5b50610b006004803603810190610afb919061459a565b612a53565b005b348015610b0e57600080fd5b50610b296004803603810190610b249190614747565b612b43565b005b61dead81565b6060600b8054610b409061515b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6c9061515b565b8015610bb95780601f10610b8e57610100808354040283529160200191610bb9565b820191906000526020600020905b815481529060010190602001808311610b9c57829003601f168201915b5050505050905090565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bfd610bf6612c1c565b8484612c24565b6001905092915050565b610c0f612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390614bfa565b60405180910390fd5b61044c81838587610cad9190614f64565b610cb79190614f64565b610cc19190614f64565b14610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890614dba565b60405180910390fd5b8360156000018190555082601560020181905550816015600301819055508060156001018190555050505050565b6000601b54905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e725781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6a9190615045565b925050819055505b610e7d848484612def565b90509392505050565b610e8e612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1290614bfa565b60405180910390fd5b60008183601b54610f2c9190614feb565b610f369190614fba565b905061012c601b54610f489190614fba565b811015610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8190614d7a565b60405180910390fd5b80602681905550505050565b60006009905090565b610fa7612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b90614bfa565b60405180910390fd5b601881111561104257600080fd5b610e10816110509190614feb565b60196000018190555081601960010160006101000a81548160ff0219169083151502179055505050565b600061111c611087612c1c565b848460046000611095612c1c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111179190614f64565b612c24565b6001905092915050565b600d8060000154908060010154908060020154908060030154905084565b61114c612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d090614bfa565b60405180910390fd5b60008183601b546111ea9190614feb565b6111f49190614fba565b905061012c601b546112069190614fba565b811015611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123f90614d7a565b60405180910390fd5b80602381905550505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602060159054906101000a900460ff1681565b611295612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131990614bfa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138990614d9a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa90614d9a565b60405180910390fd5b61142e60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061179a565b61143981600161179a565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156114f15780601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61151a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661188a565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006115e660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661188a565b11156116415761163f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261163a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661188a565b612def565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602960019054906101000a900460ff1681565b6000611793827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610be9565b9050919050565b6117a2612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182690614bfa565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118db612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f90614bfa565b60405180910390fd5b61199360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061179a565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b611a59612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90614bfa565b60405180910390fd5b600015158115151415611b50576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c0d565b600060035414611bad5762093a8060035442611b6c9190615045565b11611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba390614c9a565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b611c19612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d90614bfa565b60405180910390fd5b6000602a5414611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290614d1a565b60405180910390fd5b80602a819055506003602e8190555050565b6000611d07611d82565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054611dba9061515b565b80601f0160208091040260200160405190810160405280929190818152602001828054611de69061515b565b8015611e335780601f10611e0857610100808354040283529160200191611e33565b820191906000526020600020905b815481529060010190602001808311611e1657829003601f168201915b5050505050905090565b611e45612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec990614bfa565b60405180910390fd5b6011600001548411158015611eec57506011600101548311155b8015611efd57506011600201548211155b8015611f0e57506011600301548111155b611f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4490614c5a565b60405180910390fd5b83600d6000018190555082600d6001018190555081600d6002018190555080600d6003018190555050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000612066611fd1612c1c565b848460046000611fdf612c1c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120619190615045565b612c24565b6001905092915050565b600061208461207d612c1c565b8484612def565b506001905092915050565b60158060000154908060010154908060020154908060030154905084565b6120b5612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213990614bfa565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6121a5612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612232576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222990614bfa565b60405180910390fd5b80602060156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161227b9190614ba2565b60405180910390a150565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122b4612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233890614bfa565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6123a4612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242890614bfa565b60405180910390fd5b81601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60198060000154908060010160009054906101000a900460ff16905082565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602f5481565b60118060000154908060010154908060020154908060030154905084565b6125af612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263390614bfa565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561268957600080fd5b505afa15801561269d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c1919061449a565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272357600080fd5b505afa158015612737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275b919061449a565b6040518363ffffffff1660e01b8152600401612778929190614b18565b60206040518083038186803b15801561279057600080fd5b505afa1580156127a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c8919061449a565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129cb578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561284557600080fd5b505afa158015612859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287d919061449a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128df57600080fd5b505afa1580156128f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612917919061449a565b6040518363ffffffff1660e01b8152600401612934929190614b18565b602060405180830381600087803b15801561294e57600080fd5b505af1158015612962573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612986919061449a565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612a0d565b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b612a5b612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adf90614bfa565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612b4b612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcf90614bfa565b60405180910390fd5b8284601b54612be79190614feb565b612bf19190614fba565b6027819055508082601b54612c069190614feb565b612c109190614fba565b60288190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8b90614cda565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfb90614cda565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612de29190614dda565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5790614c7a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec790614c7a565b60405180910390fd5b60008211612f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0a90614cba565b60405180910390fd5b612f1d84846133b3565b156131ad57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fc35750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6131ac57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130685750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130b3576023548211156130b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a990614d5a565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561314d5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131ab576026548261315f8561188a565b6131699190614f64565b11156131aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a190614d3a565b60405180910390fd5b5b5b5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561323a5742600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132e15750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132eb57600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561339d57602060149054906101000a900460ff161580156133665750602060159054906101000a900460ff165b1561339c5760006133763061188a565b9050602754811061339a5760285481106133905760285490505b6133998161358a565b5b505b5b6133a98585858461382c565b9150509392505050565b60006133bd611d82565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561342b57506133fb611d82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156134815750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134d75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613511575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561354a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561358257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001602060146101000a81548160ff02191690831515021790555060006015600301546015600201546015600001546135c39190614f64565b6135cd9190614f64565b14156135d85761380e565b600060026015600301546015600201546015600001546135f89190614f64565b6136029190614f64565b601560000154846136139190614feb565b61361d9190614fba565b6136279190614fba565b9050600081836136379190615045565b905061364281613b8f565b6000479050600060026015600301546015600201546015600001546136679190614f64565b6136719190614f64565b601560000154846136829190614feb565b61368c9190614fba565b6136969190614fba565b905060008411156136e7576136ab8482613db4565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482866040516136de93929190614e78565b60405180910390a15b600084866136f59190615045565b111561380957601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60156003015460156002015461374d9190614f64565b601560020154848661375f9190615045565b6137699190614feb565b6137739190614fba565b9081150290604051600060405180830381858888f1935050505015801561379e573d6000803e3d6000fd5b50602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613807573d6000803e3d6000fd5b505b505050505b6000602060146101000a81548160ff02191690831515021790555050565b6000602960009054906101000a900460ff1615613a565761384c85611d0c565b8061385c575061385b84611d0c565b5b1561389c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389390614cfa565b60405180910390fd5b602960019054906101000a900460ff16613922576138ba8585613e7b565b602960019054906101000a900460ff161580156138dd57506138dc85856133b3565b5b1561391d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161391490614c3a565b60405180910390fd5b613a55565b6000602b5411801561397d5750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561398f575061398e85856133b3565b5b15613a5457602e54602b54436139a59190615045565b1015613a53576001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602f6000815480929190613a169061518d565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e584604051613a4a9190614ae2565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613aa59190615045565b92505081905550600082613ab95783613ac5565b613ac4868686614031565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b169190614f64565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b7a9190614dda565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613bac57613bab615292565b5b604051908082528060200260200182016040528015613bda5781602001602082028036833780820191505090505b5090503081600081518110613bf257613bf1615263565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c9457600080fd5b505afa158015613ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ccc919061449a565b81600181518110613ce057613cdf615263565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d7e959493929190614e1e565b600060405180830381600087803b158015613d9857600080fd5b505af1158015613dac573d6000803e3d6000fd5b505050505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613e00611d82565b426040518863ffffffff1660e01b8152600401613e2296959493929190614b41565b6060604051808303818588803b158015613e3b57600080fd5b505af1158015613e4f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e7491906146f4565b5050505050565b602960019054906101000a900460ff1615613ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ec290614c1a565b60405180910390fd5b613ed582826133b3565b158015613f2f5750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1561402d576003602e5414613f575761138843613f4c9190614f64565b602b81905550613f5f565b43602b819055505b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602960016101000a81548160ff02191690831515021790555042602c819055506001602060156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15960016040516140249190614ba2565b60405180910390a15b5050565b600080601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561412257601960010160009054906101000a900460ff16156141145742601960000154600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140f39190614f64565b111561410657600d60030154905061410f565b600d6001015490505b61411d565b600d6001015490505b61418f565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561418557600d60000154905061418e565b600d6002015490505b5b61419985856133b3565b156141bd576000602a5414806141b257506001602a5414155b156141bc57600080fd5b5b60006127106015600301546015600201546015600001546015600101546141e49190614f64565b6141ee9190614f64565b6141f89190614f64565b601560010154848761420a9190614feb565b6142149190614feb565b61421e9190614fba565b6142289190614fba565b9050600081612710848761423c9190614feb565b6142469190614fba565b6142509190615045565b9050816001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142a39190614f64565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142f99190614f64565b9250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161435f9190614dda565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143c49190614dda565b60405180910390a38181866143d99190615045565b6143e39190615045565b93505050509392505050565b6000813590506143fe816155d6565b92915050565b600081519050614413816155d6565b92915050565b600081359050614428816155ed565b92915050565b60008135905061443d81615604565b92915050565b6000813590506144528161561b565b92915050565b6000815190506144678161561b565b92915050565b600060208284031215614483576144826152c1565b5b6000614491848285016143ef565b91505092915050565b6000602082840312156144b0576144af6152c1565b5b60006144be84828501614404565b91505092915050565b600080604083850312156144de576144dd6152c1565b5b60006144ec85828601614419565b92505060206144fd85828601614419565b9150509250929050565b6000806040838503121561451e5761451d6152c1565b5b600061452c858286016143ef565b925050602061453d858286016143ef565b9150509250929050565b6000806000606084860312156145605761455f6152c1565b5b600061456e868287016143ef565b935050602061457f868287016143ef565b925050604061459086828701614443565b9150509250925092565b600080604083850312156145b1576145b06152c1565b5b60006145bf858286016143ef565b92505060206145d08582860161442e565b9150509250929050565b600080604083850312156145f1576145f06152c1565b5b60006145ff858286016143ef565b925050602061461085828601614443565b9150509250929050565b6000602082840312156146305761462f6152c1565b5b600061463e8482850161442e565b91505092915050565b6000806040838503121561465e5761465d6152c1565b5b600061466c8582860161442e565b925050602061467d85828601614443565b9150509250929050565b60006020828403121561469d5761469c6152c1565b5b60006146ab84828501614443565b91505092915050565b600080604083850312156146cb576146ca6152c1565b5b60006146d985828601614443565b92505060206146ea85828601614443565b9150509250929050565b60008060006060848603121561470d5761470c6152c1565b5b600061471b86828701614458565b935050602061472c86828701614458565b925050604061473d86828701614458565b9150509250925092565b60008060008060808587031215614761576147606152c1565b5b600061476f87828801614443565b945050602061478087828801614443565b935050604061479187828801614443565b92505060606147a287828801614443565b91505092959194509250565b60006147ba83836147d5565b60208301905092915050565b6147cf8161508b565b82525050565b6147de81615079565b82525050565b6147ed81615079565b82525050565b60006147fe82614f1f565b6148088185614f42565b935061481383614f0f565b8060005b8381101561484457815161482b88826147ae565b975061483683614f35565b925050600181019050614817565b5085935050505092915050565b61485a8161509d565b82525050565b614869816150e0565b82525050565b614878816150f2565b82525050565b600061488982614f2a565b6148938185614f53565b93506148a3818560208601615128565b6148ac816152c6565b840191505092915050565b60006148c4601083614f53565b91506148cf826152d7565b602082019050919050565b60006148e7602383614f53565b91506148f282615300565b604082019050919050565b600061490a602583614f53565b91506149158261534f565b604082019050919050565b600061492d601783614f53565b91506149388261539e565b602082019050919050565b6000614950601483614f53565b915061495b826153c7565b602082019050919050565b6000614973601283614f53565b915061497e826153f0565b602082019050919050565b6000614996600883614f53565b91506149a182615419565b602082019050919050565b60006149b9601383614f53565b91506149c482615442565b602082019050919050565b60006149dc601083614f53565b91506149e78261546b565b602082019050919050565b60006149ff600683614f53565b9150614a0a82615494565b602082019050919050565b6000614a22601a83614f53565b9150614a2d826154bd565b602082019050919050565b6000614a45601883614f53565b9150614a50826154e6565b602082019050919050565b6000614a68602583614f53565b9150614a738261550f565b604082019050919050565b6000614a8b603d83614f53565b9150614a968261555e565b604082019050919050565b6000614aae600583614f53565b9150614ab9826155ad565b602082019050919050565b614acd816150c9565b82525050565b614adc816150d3565b82525050565b6000602082019050614af760008301846147e4565b92915050565b6000602082019050614b1260008301846147c6565b92915050565b6000604082019050614b2d60008301856147e4565b614b3a60208301846147e4565b9392505050565b600060c082019050614b5660008301896147e4565b614b636020830188614ac4565b614b70604083018761486f565b614b7d606083018661486f565b614b8a60808301856147e4565b614b9760a0830184614ac4565b979650505050505050565b6000602082019050614bb76000830184614851565b92915050565b6000602082019050614bd26000830184614860565b92915050565b60006020820190508181036000830152614bf2818461487e565b905092915050565b60006020820190508181036000830152614c13816148b7565b9050919050565b60006020820190508181036000830152614c33816148da565b9050919050565b60006020820190508181036000830152614c53816148fd565b9050919050565b60006020820190508181036000830152614c7381614920565b9050919050565b60006020820190508181036000830152614c9381614943565b9050919050565b60006020820190508181036000830152614cb381614966565b9050919050565b60006020820190508181036000830152614cd381614989565b9050919050565b60006020820190508181036000830152614cf3816149ac565b9050919050565b60006020820190508181036000830152614d13816149cf565b9050919050565b60006020820190508181036000830152614d33816149f2565b9050919050565b60006020820190508181036000830152614d5381614a15565b9050919050565b60006020820190508181036000830152614d7381614a38565b9050919050565b60006020820190508181036000830152614d9381614a5b565b9050919050565b60006020820190508181036000830152614db381614a7e565b9050919050565b60006020820190508181036000830152614dd381614aa1565b9050919050565b6000602082019050614def6000830184614ac4565b92915050565b6000604082019050614e0a6000830185614ac4565b614e176020830184614851565b9392505050565b600060a082019050614e336000830188614ac4565b614e40602083018761486f565b8181036040830152614e5281866147f3565b9050614e6160608301856147e4565b614e6e6080830184614ac4565b9695505050505050565b6000606082019050614e8d6000830186614ac4565b614e9a6020830185614ac4565b614ea76040830184614ac4565b949350505050565b6000608082019050614ec46000830187614ac4565b614ed16020830186614ac4565b614ede6040830185614ac4565b614eeb6060830184614ac4565b95945050505050565b6000602082019050614f096000830184614ad3565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614f6f826150c9565b9150614f7a836150c9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614faf57614fae6151d6565b5b828201905092915050565b6000614fc5826150c9565b9150614fd0836150c9565b925082614fe057614fdf615205565b5b828204905092915050565b6000614ff6826150c9565b9150615001836150c9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561503a576150396151d6565b5b828202905092915050565b6000615050826150c9565b915061505b836150c9565b92508282101561506e5761506d6151d6565b5b828203905092915050565b6000615084826150a9565b9050919050565b6000615096826150a9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006150eb82615104565b9050919050565b60006150fd826150c9565b9050919050565b600061510f82615116565b9050919050565b6000615121826150a9565b9050919050565b60005b8381101561514657808201518184015260208101905061512b565b83811115615155576000848401525b50505050565b6000600282049050600182168061517357607f821691505b6020821081141561518757615186615234565b5b50919050565b6000615198826150c9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156151cb576151ca6151d6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f43616c6c657220213d206f776e65722e00000000000000000000000000000000600082015250565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b7f2128314b29000000000000000000000000000000000000000000000000000000600082015250565b6155df81615079565b81146155ea57600080fd5b50565b6155f68161508b565b811461560157600080fd5b50565b61560d8161509d565b811461561857600080fd5b50565b615624816150c9565b811461562f57600080fd5b5056fea264697066735822122083dd47ab2da8d2a30976b85f229bd62a7a21504748e289ddadd1bfac7dcdfac864736f6c63430008070033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c806381c6f11b1161015a578063c49b9a80116100c1578063e5b55c6b1161007a578063e5b55c6b14610a2c578063e79d416014610a57578063e83e34b114610a82578063eafb5a3c14610ab0578063eec2744e14610ad9578063fb78680d14610b0257610293565b8063c49b9a801461091d578063ca79882f14610946578063ce8b79c914610971578063d3f6a1571461099a578063d5025625146109c3578063dd62ed3e146109ef57610293565b8063a12a7d6111610113578063a12a7d61146107e6578063a13ce2c61461080f578063a457c2d71461084c578063a9059cbb14610889578063b5f7bfa2146108c6578063bc1323e8146108f457610293565b806381c6f11b146106c2578063893d20e8146106eb57806389fd9bc1146107165780638c7321ad146107535780638da5cb5b1461079057806395d89b41146107bb57610293565b80633aaa36e6116101fe57806350a8e016116101b757806350a8e016146105b4578063571ac8b0146105df578063590ffdce1461061c57806370a0823114610645578063715018a61461068257806380c581d11461069957610293565b80633aaa36e6146104a15780633f3cf56c146104cf578063452ed4f1146104f85780634a74bb02146105235780634fb2e45d1461054e5780634fbee1931461057757610293565b806318160ddd1161025057806318160ddd1461037f57806323b872dd146103aa57806326003957146103e7578063313ce56714610410578063355b74de1461043b578063395093511461046457610293565b806303fd2a451461029857806306fdde03146102c35780630758d924146102ee578063095ea7b3146103195780631793fe4e1461035657610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b2b565b6040516102ba9190614ae2565b60405180910390f35b3480156102cf57600080fd5b506102d8610b31565b6040516102e59190614bd8565b60405180910390f35b3480156102fa57600080fd5b50610303610bc3565b6040516103109190614bbd565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b91906145da565b610be9565b60405161034d9190614ba2565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190614747565b610c07565b005b34801561038b57600080fd5b50610394610d2f565b6040516103a19190614dda565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190614547565b610d39565b6040516103de9190614ba2565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906146b4565b610e86565b005b34801561041c57600080fd5b50610425610f96565b6040516104329190614ef4565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190614647565b610f9f565b005b34801561047057600080fd5b5061048b600480360381019061048691906145da565b61107a565b6040516104989190614ba2565b60405180910390f35b3480156104ad57600080fd5b506104b6611126565b6040516104c69493929190614eaf565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f191906146b4565b611144565b005b34801561050457600080fd5b5061050d611254565b60405161051a9190614ae2565b60405180910390f35b34801561052f57600080fd5b5061053861127a565b6040516105459190614ba2565b60405180910390f35b34801561055a57600080fd5b506105756004803603810190610570919061446d565b61128d565b005b34801561058357600080fd5b5061059e6004803603810190610599919061446d565b6116fe565b6040516105ab9190614ba2565b60405180910390f35b3480156105c057600080fd5b506105c9611754565b6040516105d69190614ba2565b60405180910390f35b3480156105eb57600080fd5b506106066004803603810190610601919061446d565b611767565b6040516106139190614ba2565b60405180910390f35b34801561062857600080fd5b50610643600480360381019061063e919061459a565b61179a565b005b34801561065157600080fd5b5061066c6004803603810190610667919061446d565b61188a565b6040516106799190614dda565b60405180910390f35b34801561068e57600080fd5b506106976118d3565b005b3480156106a557600080fd5b506106c060048036038101906106bb919061459a565b611a51565b005b3480156106ce57600080fd5b506106e960048036038101906106e49190614687565b611c11565b005b3480156106f757600080fd5b50610700611cfd565b60405161070d9190614ae2565b60405180910390f35b34801561072257600080fd5b5061073d6004803603810190610738919061446d565b611d0c565b60405161074a9190614ba2565b60405180910390f35b34801561075f57600080fd5b5061077a6004803603810190610775919061446d565b611d62565b6040516107879190614ba2565b60405180910390f35b34801561079c57600080fd5b506107a5611d82565b6040516107b29190614ae2565b60405180910390f35b3480156107c757600080fd5b506107d0611dab565b6040516107dd9190614bd8565b60405180910390f35b3480156107f257600080fd5b5061080d60048036038101906108089190614747565b611e3d565b005b34801561081b57600080fd5b506108366004803603810190610831919061446d565b611f7b565b6040516108439190614dda565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e91906145da565b611fc4565b6040516108809190614ba2565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab91906145da565b612070565b6040516108bd9190614ba2565b60405180910390f35b3480156108d257600080fd5b506108db61208f565b6040516108eb9493929190614eaf565b60405180910390f35b34801561090057600080fd5b5061091b6004803603810190610916919061446d565b6120ad565b005b34801561092957600080fd5b50610944600480360381019061093f919061461a565b61219d565b005b34801561095257600080fd5b5061095b612286565b6040516109689190614afd565b60405180910390f35b34801561097d57600080fd5b506109986004803603810190610993919061446d565b6122ac565b005b3480156109a657600080fd5b506109c160048036038101906109bc91906144c7565b61239c565b005b3480156109cf57600080fd5b506109d86124b7565b6040516109e6929190614df5565b60405180910390f35b3480156109fb57600080fd5b50610a166004803603810190610a119190614507565b6124d6565b604051610a239190614dda565b60405180910390f35b348015610a3857600080fd5b50610a4161255d565b604051610a4e9190614afd565b60405180910390f35b348015610a6357600080fd5b50610a6c612583565b604051610a799190614dda565b60405180910390f35b348015610a8e57600080fd5b50610a97612589565b604051610aa79493929190614eaf565b60405180910390f35b348015610abc57600080fd5b50610ad76004803603810190610ad2919061446d565b6125a7565b005b348015610ae557600080fd5b50610b006004803603810190610afb919061459a565b612a53565b005b348015610b0e57600080fd5b50610b296004803603810190610b249190614747565b612b43565b005b61dead81565b6060600b8054610b409061515b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6c9061515b565b8015610bb95780601f10610b8e57610100808354040283529160200191610bb9565b820191906000526020600020905b815481529060010190602001808311610b9c57829003601f168201915b5050505050905090565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bfd610bf6612c1c565b8484612c24565b6001905092915050565b610c0f612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390614bfa565b60405180910390fd5b61044c81838587610cad9190614f64565b610cb79190614f64565b610cc19190614f64565b14610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890614dba565b60405180910390fd5b8360156000018190555082601560020181905550816015600301819055508060156001018190555050505050565b6000601b54905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e725781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6a9190615045565b925050819055505b610e7d848484612def565b90509392505050565b610e8e612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1290614bfa565b60405180910390fd5b60008183601b54610f2c9190614feb565b610f369190614fba565b905061012c601b54610f489190614fba565b811015610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8190614d7a565b60405180910390fd5b80602681905550505050565b60006009905090565b610fa7612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b90614bfa565b60405180910390fd5b601881111561104257600080fd5b610e10816110509190614feb565b60196000018190555081601960010160006101000a81548160ff0219169083151502179055505050565b600061111c611087612c1c565b848460046000611095612c1c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111179190614f64565b612c24565b6001905092915050565b600d8060000154908060010154908060020154908060030154905084565b61114c612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d090614bfa565b60405180910390fd5b60008183601b546111ea9190614feb565b6111f49190614fba565b905061012c601b546112069190614fba565b811015611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123f90614d7a565b60405180910390fd5b80602381905550505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602060159054906101000a900460ff1681565b611295612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131990614bfa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138990614d9a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa90614d9a565b60405180910390fd5b61142e60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061179a565b61143981600161179a565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156114f15780601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61151a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661188a565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006115e660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661188a565b11156116415761163f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261163a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661188a565b612def565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602960019054906101000a900460ff1681565b6000611793827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610be9565b9050919050565b6117a2612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182690614bfa565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118db612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f90614bfa565b60405180910390fd5b61199360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061179a565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b611a59612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90614bfa565b60405180910390fd5b600015158115151415611b50576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c0d565b600060035414611bad5762093a8060035442611b6c9190615045565b11611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba390614c9a565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b611c19612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d90614bfa565b60405180910390fd5b6000602a5414611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290614d1a565b60405180910390fd5b80602a819055506003602e8190555050565b6000611d07611d82565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054611dba9061515b565b80601f0160208091040260200160405190810160405280929190818152602001828054611de69061515b565b8015611e335780601f10611e0857610100808354040283529160200191611e33565b820191906000526020600020905b815481529060010190602001808311611e1657829003601f168201915b5050505050905090565b611e45612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec990614bfa565b60405180910390fd5b6011600001548411158015611eec57506011600101548311155b8015611efd57506011600201548211155b8015611f0e57506011600301548111155b611f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4490614c5a565b60405180910390fd5b83600d6000018190555082600d6001018190555081600d6002018190555080600d6003018190555050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000612066611fd1612c1c565b848460046000611fdf612c1c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120619190615045565b612c24565b6001905092915050565b600061208461207d612c1c565b8484612def565b506001905092915050565b60158060000154908060010154908060020154908060030154905084565b6120b5612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213990614bfa565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6121a5612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612232576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222990614bfa565b60405180910390fd5b80602060156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161227b9190614ba2565b60405180910390a150565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122b4612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233890614bfa565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6123a4612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242890614bfa565b60405180910390fd5b81601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60198060000154908060010160009054906101000a900460ff16905082565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602f5481565b60118060000154908060010154908060020154908060030154905084565b6125af612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263390614bfa565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561268957600080fd5b505afa15801561269d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c1919061449a565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272357600080fd5b505afa158015612737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275b919061449a565b6040518363ffffffff1660e01b8152600401612778929190614b18565b60206040518083038186803b15801561279057600080fd5b505afa1580156127a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c8919061449a565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129cb578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561284557600080fd5b505afa158015612859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287d919061449a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128df57600080fd5b505afa1580156128f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612917919061449a565b6040518363ffffffff1660e01b8152600401612934929190614b18565b602060405180830381600087803b15801561294e57600080fd5b505af1158015612962573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612986919061449a565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612a0d565b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b612a5b612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adf90614bfa565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612b4b612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcf90614bfa565b60405180910390fd5b8284601b54612be79190614feb565b612bf19190614fba565b6027819055508082601b54612c069190614feb565b612c109190614fba565b60288190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8b90614cda565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfb90614cda565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612de29190614dda565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5790614c7a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec790614c7a565b60405180910390fd5b60008211612f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0a90614cba565b60405180910390fd5b612f1d84846133b3565b156131ad57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fc35750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6131ac57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130685750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130b3576023548211156130b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a990614d5a565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561314d5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131ab576026548261315f8561188a565b6131699190614f64565b11156131aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a190614d3a565b60405180910390fd5b5b5b5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561323a5742600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132e15750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132eb57600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561339d57602060149054906101000a900460ff161580156133665750602060159054906101000a900460ff165b1561339c5760006133763061188a565b9050602754811061339a5760285481106133905760285490505b6133998161358a565b5b505b5b6133a98585858461382c565b9150509392505050565b60006133bd611d82565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561342b57506133fb611d82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156134815750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134d75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613511575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561354a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561358257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001602060146101000a81548160ff02191690831515021790555060006015600301546015600201546015600001546135c39190614f64565b6135cd9190614f64565b14156135d85761380e565b600060026015600301546015600201546015600001546135f89190614f64565b6136029190614f64565b601560000154846136139190614feb565b61361d9190614fba565b6136279190614fba565b9050600081836136379190615045565b905061364281613b8f565b6000479050600060026015600301546015600201546015600001546136679190614f64565b6136719190614f64565b601560000154846136829190614feb565b61368c9190614fba565b6136969190614fba565b905060008411156136e7576136ab8482613db4565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482866040516136de93929190614e78565b60405180910390a15b600084866136f59190615045565b111561380957601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60156003015460156002015461374d9190614f64565b601560020154848661375f9190615045565b6137699190614feb565b6137739190614fba565b9081150290604051600060405180830381858888f1935050505015801561379e573d6000803e3d6000fd5b50602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613807573d6000803e3d6000fd5b505b505050505b6000602060146101000a81548160ff02191690831515021790555050565b6000602960009054906101000a900460ff1615613a565761384c85611d0c565b8061385c575061385b84611d0c565b5b1561389c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389390614cfa565b60405180910390fd5b602960019054906101000a900460ff16613922576138ba8585613e7b565b602960019054906101000a900460ff161580156138dd57506138dc85856133b3565b5b1561391d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161391490614c3a565b60405180910390fd5b613a55565b6000602b5411801561397d5750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561398f575061398e85856133b3565b5b15613a5457602e54602b54436139a59190615045565b1015613a53576001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602f6000815480929190613a169061518d565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e584604051613a4a9190614ae2565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613aa59190615045565b92505081905550600082613ab95783613ac5565b613ac4868686614031565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b169190614f64565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b7a9190614dda565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613bac57613bab615292565b5b604051908082528060200260200182016040528015613bda5781602001602082028036833780820191505090505b5090503081600081518110613bf257613bf1615263565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c9457600080fd5b505afa158015613ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ccc919061449a565b81600181518110613ce057613cdf615263565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d7e959493929190614e1e565b600060405180830381600087803b158015613d9857600080fd5b505af1158015613dac573d6000803e3d6000fd5b505050505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613e00611d82565b426040518863ffffffff1660e01b8152600401613e2296959493929190614b41565b6060604051808303818588803b158015613e3b57600080fd5b505af1158015613e4f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e7491906146f4565b5050505050565b602960019054906101000a900460ff1615613ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ec290614c1a565b60405180910390fd5b613ed582826133b3565b158015613f2f5750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1561402d576003602e5414613f575761138843613f4c9190614f64565b602b81905550613f5f565b43602b819055505b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602960016101000a81548160ff02191690831515021790555042602c819055506001602060156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15960016040516140249190614ba2565b60405180910390a15b5050565b600080601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561412257601960010160009054906101000a900460ff16156141145742601960000154600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140f39190614f64565b111561410657600d60030154905061410f565b600d6001015490505b61411d565b600d6001015490505b61418f565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561418557600d60000154905061418e565b600d6002015490505b5b61419985856133b3565b156141bd576000602a5414806141b257506001602a5414155b156141bc57600080fd5b5b60006127106015600301546015600201546015600001546015600101546141e49190614f64565b6141ee9190614f64565b6141f89190614f64565b601560010154848761420a9190614feb565b6142149190614feb565b61421e9190614fba565b6142289190614fba565b9050600081612710848761423c9190614feb565b6142469190614fba565b6142509190615045565b9050816001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142a39190614f64565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142f99190614f64565b9250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161435f9190614dda565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143c49190614dda565b60405180910390a38181866143d99190615045565b6143e39190615045565b93505050509392505050565b6000813590506143fe816155d6565b92915050565b600081519050614413816155d6565b92915050565b600081359050614428816155ed565b92915050565b60008135905061443d81615604565b92915050565b6000813590506144528161561b565b92915050565b6000815190506144678161561b565b92915050565b600060208284031215614483576144826152c1565b5b6000614491848285016143ef565b91505092915050565b6000602082840312156144b0576144af6152c1565b5b60006144be84828501614404565b91505092915050565b600080604083850312156144de576144dd6152c1565b5b60006144ec85828601614419565b92505060206144fd85828601614419565b9150509250929050565b6000806040838503121561451e5761451d6152c1565b5b600061452c858286016143ef565b925050602061453d858286016143ef565b9150509250929050565b6000806000606084860312156145605761455f6152c1565b5b600061456e868287016143ef565b935050602061457f868287016143ef565b925050604061459086828701614443565b9150509250925092565b600080604083850312156145b1576145b06152c1565b5b60006145bf858286016143ef565b92505060206145d08582860161442e565b9150509250929050565b600080604083850312156145f1576145f06152c1565b5b60006145ff858286016143ef565b925050602061461085828601614443565b9150509250929050565b6000602082840312156146305761462f6152c1565b5b600061463e8482850161442e565b91505092915050565b6000806040838503121561465e5761465d6152c1565b5b600061466c8582860161442e565b925050602061467d85828601614443565b9150509250929050565b60006020828403121561469d5761469c6152c1565b5b60006146ab84828501614443565b91505092915050565b600080604083850312156146cb576146ca6152c1565b5b60006146d985828601614443565b92505060206146ea85828601614443565b9150509250929050565b60008060006060848603121561470d5761470c6152c1565b5b600061471b86828701614458565b935050602061472c86828701614458565b925050604061473d86828701614458565b9150509250925092565b60008060008060808587031215614761576147606152c1565b5b600061476f87828801614443565b945050602061478087828801614443565b935050604061479187828801614443565b92505060606147a287828801614443565b91505092959194509250565b60006147ba83836147d5565b60208301905092915050565b6147cf8161508b565b82525050565b6147de81615079565b82525050565b6147ed81615079565b82525050565b60006147fe82614f1f565b6148088185614f42565b935061481383614f0f565b8060005b8381101561484457815161482b88826147ae565b975061483683614f35565b925050600181019050614817565b5085935050505092915050565b61485a8161509d565b82525050565b614869816150e0565b82525050565b614878816150f2565b82525050565b600061488982614f2a565b6148938185614f53565b93506148a3818560208601615128565b6148ac816152c6565b840191505092915050565b60006148c4601083614f53565b91506148cf826152d7565b602082019050919050565b60006148e7602383614f53565b91506148f282615300565b604082019050919050565b600061490a602583614f53565b91506149158261534f565b604082019050919050565b600061492d601783614f53565b91506149388261539e565b602082019050919050565b6000614950601483614f53565b915061495b826153c7565b602082019050919050565b6000614973601283614f53565b915061497e826153f0565b602082019050919050565b6000614996600883614f53565b91506149a182615419565b602082019050919050565b60006149b9601383614f53565b91506149c482615442565b602082019050919050565b60006149dc601083614f53565b91506149e78261546b565b602082019050919050565b60006149ff600683614f53565b9150614a0a82615494565b602082019050919050565b6000614a22601a83614f53565b9150614a2d826154bd565b602082019050919050565b6000614a45601883614f53565b9150614a50826154e6565b602082019050919050565b6000614a68602583614f53565b9150614a738261550f565b604082019050919050565b6000614a8b603d83614f53565b9150614a968261555e565b604082019050919050565b6000614aae600583614f53565b9150614ab9826155ad565b602082019050919050565b614acd816150c9565b82525050565b614adc816150d3565b82525050565b6000602082019050614af760008301846147e4565b92915050565b6000602082019050614b1260008301846147c6565b92915050565b6000604082019050614b2d60008301856147e4565b614b3a60208301846147e4565b9392505050565b600060c082019050614b5660008301896147e4565b614b636020830188614ac4565b614b70604083018761486f565b614b7d606083018661486f565b614b8a60808301856147e4565b614b9760a0830184614ac4565b979650505050505050565b6000602082019050614bb76000830184614851565b92915050565b6000602082019050614bd26000830184614860565b92915050565b60006020820190508181036000830152614bf2818461487e565b905092915050565b60006020820190508181036000830152614c13816148b7565b9050919050565b60006020820190508181036000830152614c33816148da565b9050919050565b60006020820190508181036000830152614c53816148fd565b9050919050565b60006020820190508181036000830152614c7381614920565b9050919050565b60006020820190508181036000830152614c9381614943565b9050919050565b60006020820190508181036000830152614cb381614966565b9050919050565b60006020820190508181036000830152614cd381614989565b9050919050565b60006020820190508181036000830152614cf3816149ac565b9050919050565b60006020820190508181036000830152614d13816149cf565b9050919050565b60006020820190508181036000830152614d33816149f2565b9050919050565b60006020820190508181036000830152614d5381614a15565b9050919050565b60006020820190508181036000830152614d7381614a38565b9050919050565b60006020820190508181036000830152614d9381614a5b565b9050919050565b60006020820190508181036000830152614db381614a7e565b9050919050565b60006020820190508181036000830152614dd381614aa1565b9050919050565b6000602082019050614def6000830184614ac4565b92915050565b6000604082019050614e0a6000830185614ac4565b614e176020830184614851565b9392505050565b600060a082019050614e336000830188614ac4565b614e40602083018761486f565b8181036040830152614e5281866147f3565b9050614e6160608301856147e4565b614e6e6080830184614ac4565b9695505050505050565b6000606082019050614e8d6000830186614ac4565b614e9a6020830185614ac4565b614ea76040830184614ac4565b949350505050565b6000608082019050614ec46000830187614ac4565b614ed16020830186614ac4565b614ede6040830185614ac4565b614eeb6060830184614ac4565b95945050505050565b6000602082019050614f096000830184614ad3565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614f6f826150c9565b9150614f7a836150c9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614faf57614fae6151d6565b5b828201905092915050565b6000614fc5826150c9565b9150614fd0836150c9565b925082614fe057614fdf615205565b5b828204905092915050565b6000614ff6826150c9565b9150615001836150c9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561503a576150396151d6565b5b828202905092915050565b6000615050826150c9565b915061505b836150c9565b92508282101561506e5761506d6151d6565b5b828203905092915050565b6000615084826150a9565b9050919050565b6000615096826150a9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006150eb82615104565b9050919050565b60006150fd826150c9565b9050919050565b600061510f82615116565b9050919050565b6000615121826150a9565b9050919050565b60005b8381101561514657808201518184015260208101905061512b565b83811115615155576000848401525b50505050565b6000600282049050600182168061517357607f821691505b6020821081141561518757615186615234565b5b50919050565b6000615198826150c9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156151cb576151ca6151d6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f43616c6c657220213d206f776e65722e00000000000000000000000000000000600082015250565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b7f2128314b29000000000000000000000000000000000000000000000000000000600082015250565b6155df81615079565b81146155ea57600080fd5b50565b6155f68161508b565b811461560157600080fd5b50565b61560d8161509d565b811461561857600080fd5b50565b615624816150c9565b811461562f57600080fd5b5056fea264697066735822122083dd47ab2da8d2a30976b85f229bd62a7a21504748e289ddadd1bfac7dcdfac864736f6c63430008070033

Deployed Bytecode Sourcemap

3808:20593:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6138:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11142:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5950:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11755:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15285:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10877:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12488:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16638:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10966:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15653:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12802:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4757:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16378:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5992:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6525:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9540:775;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14185:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7086:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12241:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14318:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11455:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10323:195;;;;;;;;;;;;;:::i;:::-;;13767:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14942:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11228:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14802:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4277:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9453:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11052:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15858:512;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12369:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13025:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11580:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5313:116;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;14628:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17450:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6284:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14462:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17200:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5559:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;11314:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6391:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7354:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5019:101;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;13258:501;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15136:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16903:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6138:73;6169:42;6138:73;:::o;11142:80::-;11190:13;11214:5;11207:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11142:80;:::o;5950:35::-;;;;;;;;;;;;;:::o;11755:161::-;11830:4;11847:39;11856:12;:10;:12::i;:::-;11870:7;11879:6;11847:8;:39::i;:::-;11904:4;11897:11;;11755:161;;;;:::o;15285:360::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15465:4:::1;15455:5;15444:10;15426:17;15415:10;:28;;;;:::i;:::-;:39;;;;:::i;:::-;:45;;;;:::i;:::-;15414:55;15404:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15509:10;15490:6;:16;;:29;;;;15556:17;15530:6;:23;;:43;;;;15603:10;15584:6;:16;;:29;;;;15638:5;15624:6;:11;;:19;;;;15285:360:::0;;;;:::o;10877:83::-;10932:7;10950;;10943:14;;10877:83;:::o;12488:306::-;12588:4;12644:17;12609:11;:19;12621:6;12609:19;;;;;;;;;;;;;;;:31;12629:10;12609:31;;;;;;;;;;;;;;;;:52;12605:126;;12713:6;12678:11;:19;12690:6;12678:19;;;;;;;;;;;;;;;:31;12698:10;12678:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;12605:126;12750:36;12760:6;12768:9;12779:6;12750:9;:36::i;:::-;12743:43;;12488:306;;;;;:::o;16638:257::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16722:13:::1;16760:7;16749;16739;;:17;;;;:::i;:::-;16738:29;;;;:::i;:::-;16722:45;;16806:3;16796:7;;:13;;;;:::i;:::-;16786:5;:24;;16778:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16880:5;16863:14;:22;;;;16711:184;16638:257:::0;;:::o;10966:80::-;11018:5;5841:1;11027:16;;10966:80;:::o;15653:197::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15763:2:::1;15750:9;:15;;15742:24;;;::::0;::::1;;15806:7;15794:9;:19;;;;:::i;:::-;15777:5;:14;;:36;;;;15840:8;15824:5;:13;;;:24;;;;;;;;;;;;;;;;;;15653:197:::0;;:::o;12802:215::-;12890:4;12907:80;12916:12;:10;:12::i;:::-;12930:7;12976:10;12939:11;:25;12951:12;:10;:12::i;:::-;12939:25;;;;;;;;;;;;;;;:34;12965:7;12939:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12907:8;:80::i;:::-;13005:4;12998:11;;12802:215;;;;:::o;4757:95::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;16378:252::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16461:13:::1;16499:7;16488;16478;;:17;;;;:::i;:::-;16477:29;;;;:::i;:::-;16461:45;;16545:3;16535:7;;:13;;;;:::i;:::-;16525:5;:24;;16517:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16617:5;16602:12;:20;;;;16450:180;16378:252:::0;;:::o;5992:21::-;;;;;;;;;;;;;:::o;6525:41::-;;;;;;;;;;;;;:::o;9540:775::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;9641:1:::1;9621:22;;:8;:22;;;;9613:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;6169:42;9728:16;;:8;:16;;;;9720:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;9821:34;9841:6;::::0;::::1;;;;;;;;9849:5;9821:19;:34::i;:::-;9866:35;9886:8;9896:4;9866:19;:35::i;:::-;9961:6;::::0;::::1;;;;;;;;9926:42;;:23;;;;;;;;;;;:42;;;9922:104;;;10017:8;9983:23;;:43;;;;;;;;;;;;;;;;;;9922:104;10079:17;10089:6;::::0;::::1;;;;;;;;10079:9;:17::i;:::-;10047:11;:19;10059:6:::0;::::1;;;;;;;;;;10047:19;;;;;;;;;;;;;;;:29;10067:8;10047:29;;;;;;;;;;;;;;;:49;;;;10130:1;10110:17;10120:6;::::0;::::1;;;;;;;;10110:9;:17::i;:::-;:21;10107:99;;;10148:46;10158:6;::::0;::::1;;;;;;;;10166:8;10176:17;10186:6;::::0;::::1;;;;;;;;10176:9;:17::i;:::-;10148:9;:46::i;:::-;;10107:99;10235:8;10226:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;10288:8;10259:38;;10280:6;::::0;::::1;;;;;;;;10259:38;;;;;;;;;;;;9540:775:::0;:::o;14185:125::-;14250:4;14274:19;:28;14294:7;14274:28;;;;;;;;;;;;;;;;;;;;;;;;;14267:35;;14185:125;;;:::o;7086:36::-;;;;;;;;;;;;;:::o;12241:120::-;12294:4;12318:35;12326:7;12335:17;12318:7;:35::i;:::-;12311:42;;12241:120;;;:::o;14318:134::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14437:7:::1;14406:19;:28;14426:7;14406:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;14318:134:::0;;:::o;11455:117::-;11521:7;11548;:16;11556:7;11548:16;;;;;;;;;;;;;;;;11541:23;;11455:117;;;:::o;10323:195::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;10390:34:::1;10410:6;::::0;::::1;;;;;;;;10418:5;10390:19;:34::i;:::-;10452:1;10435:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;10507:1;10470:40;;10491:6;::::0;::::1;;;;;;;;10470:40;;;;;;;;;;;;10323:195::o:0;13767:410::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13859:5:::1;13848:16;;:7;:16;;;13844:326;;;13897:5;13881:7;:13;13889:4;13881:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13844:326;;;13960:1;13939:17;;:22;13935:139;;14028:7;14008:17;;13990:15;:35;;;;:::i;:::-;:45;13982:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;13935:139;14104:4;14088:7;:13;14096:4;14088:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;14143:15;14123:17;:35;;;;13844:326;13767:410:::0;;:::o;14942:186::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15041:1:::1;15024:13;;:18;15015:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15080:12;15064:13;:28;;;;15119:1;15103:13;:17;;;;14942:186:::0;:::o;11228:80::-;11280:7;11298;:5;:7::i;:::-;11291:14;;11228:80;:::o;14802:132::-;14871:4;14895:22;:31;14918:7;14895:31;;;;;;;;;;;;;;;;;;;;;;;;;14888:38;;14802:132;;;:::o;4277:68::-;;;;;;;;;;;;;;;;;;;;;;:::o;9453:79::-;9491:7;9518:6;;;;;;;;;;;9511:13;;9453:79;:::o;11052:84::-;11102:13;11126:7;11119:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11052:84;:::o;15858:512::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15991:7:::1;:14;;;15980:7;:25;;:73;;;;;16038:7;:15;;;16026:8;:27;;15980:73;:129;;;;;16090:7;:19;;;16074:12;:35;;15980:129;:184;;;;;16145:7;:19;;;16130:11;:34;;15980:184;15972:237;;;;;;;;;;;;:::i;:::-;;;;;;;;;16235:7;16221:4;:11;;:21;;;;16269:8;16254:4;:12;;:23;;;;16308:12;16289:4;:16;;:31;;;;16349:11;16332:4;:15;;:28;;;;15858:512:::0;;;;:::o;12369:111::-;12428:7;12455:8;:17;12464:7;12455:17;;;;;;;;;;;;;;;;12448:24;;12369:111;;;:::o;13025:225::-;13118:4;13135:85;13144:12;:10;:12::i;:::-;13158:7;13204:15;13167:11;:25;13179:12;:10;:12::i;:::-;13167:25;;;;;;;;;;;;;;;:34;13193:7;13167:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;13135:8;:85::i;:::-;13238:4;13231:11;;13025:225;;;;:::o;11580:167::-;11658:4;11675:42;11685:12;:10;:12::i;:::-;11699:9;11710:6;11675:9;:42::i;:::-;;11735:4;11728:11;;11580:167;;;;:::o;5313:116::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14628:166::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14781:5:::1;14726:35;:52;14762:15;14726:52;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;14628:166:::0;:::o;17450:171::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17551:8:::1;17527:21;;:32;;;;;;;;;;;;;;;;;;17575:38;17604:8;17575:38;;;;;;:::i;:::-;;;;;;;;17450:171:::0;:::o;6284:100::-;;;;;;;;;;;;;:::o;14462:158::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14608:4:::1;14553:35;:52;14589:15;14553:52;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;14462:158:::0;:::o;17200:242::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17357:22:::1;17323:23;;:57;;;;;;;;;;;;;;;;;;17418:15;17391:16;;:43;;;;;;;;;;;;;;;;;;17200:242:::0;;:::o;5559:87::-;;;;;;;;;;;;;;;;;;;;;;;:::o;11314:133::-;11398:7;11416:11;:19;11428:6;11416:19;;;;;;;;;;;;;;;:28;11436:7;11416:28;;;;;;;;;;;;;;;;11409:35;;11314:133;;;;:::o;6391:93::-;;;;;;;;;;;;;:::o;7354:32::-;;;;:::o;5019:101::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;13258:501::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13329:29:::1;13380:9;13329:61;;13401:16;13438:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13420:47;;;13476:4;13483:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13420:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13401:100;;13536:1;13516:22;;:8;:22;;;13512:207;;;13582:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13564:50;;;13623:4;13630:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13564:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13555:6;;:93;;;;;;;;;;;;;;;;;;13512:207;;;13699:8;13690:6;;:17;;;;;;;;;;;;;;;;;;13512:207;13741:10;13729:9;;:22;;;;;;;;;;;;;;;;;;13318:441;;13258:501:::0;:::o;15136:141::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15262:7:::1;15228:22;:31;15251:7;15228:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;15136:141:::0;;:::o;16903:289::-;7963:12;:10;:12::i;:::-;7953:22;;:6;;;;;;;;;;:22;;;7945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17103:16:::1;17083;17073:7;;:26;;;;:::i;:::-;17072:47;;;;:::i;:::-;17056:13;:63;;;;17171:13;17154;17144:7;;:23;;;;:::i;:::-;17143:41;;;;:::i;:::-;17130:10;:54;;;;16903:289:::0;;;;:::o;272:107::-;317:15;360:10;345:26;;272:107;:::o;11924:309::-;12036:1;12018:20;;:6;:20;;;;12010:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;12100:1;12081:21;;:7;:21;;;;12073:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12170:6;12139:11;:19;12151:6;12139:19;;;;;;;;;;;;;;;:28;12159:7;12139:28;;;;;;;;;;;;;;;:37;;;;12209:7;12192:33;;12201:6;12192:33;;;12218:6;12192:33;;;;;;:::i;:::-;;;;;;;;11924:309;;;:::o;17960:1536::-;18039:4;18080:1;18064:18;;:4;:18;;;;18056:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;18140:1;18126:16;;:2;:16;;;;18118:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18195:1;18186:6;:10;18178:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;18223:20;18234:4;18240:2;18223:10;:20::i;:::-;18220:504;;;18265:35;:41;18301:4;18265:41;;;;;;;;;;;;;;;;;;;;;;;;;:84;;;;18310:35;:39;18346:2;18310:39;;;;;;;;;;;;;;;;;;;;;;;;;18265:84;18260:439;;18374:7;:13;18382:4;18374:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;18391:7;:11;18399:2;18391:11;;;;;;;;;;;;;;;;;;;;;;;;;18374:28;18371:130;;;18440:12;;18430:6;:22;;18422:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;18371:130;6083:42;18522:20;;:2;:20;;;;:36;;;;;18547:7;:11;18555:2;18547:11;;;;;;;;;;;;;;;;;;;;;;;;;18546:12;18522:36;18519:163;;;18617:14;;18607:6;18591:13;18601:2;18591:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18583:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;18519:163;18260:439;18220:504;18757:1;18742:7;:11;18750:2;18742:11;;;;;;;;;;;;;;;;:16;18738:79;;;18790:15;18775:8;:12;18784:2;18775:12;;;;;;;;;;;;;;;:30;;;;18738:79;18829:12;18844:4;18829:19;;18862;:25;18882:4;18862:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;18891:19;:23;18911:2;18891:23;;;;;;;;;;;;;;;;;;;;;;;;;18862:52;18859:98;;;18940:5;18930:15;;18859:98;18973:7;:11;18981:2;18973:11;;;;;;;;;;;;;;;;;;;;;;;;;18969:457;;;19006:16;;;;;;;;;;;19005:17;:59;;;;;19043:21;;;;;;;;;;;19005:59;19001:408;;;19099:28;19130:24;19148:4;19130:9;:24::i;:::-;19099:55;;19201:13;;19177:20;:37;19173:221;;19266:10;;19242:20;:34;19239:77;;19303:10;;19280:33;;19239:77;19338:36;19353:20;19338:14;:36::i;:::-;19173:221;19080:329;19001:408;18969:457;19444:44;19462:4;19468:2;19472:6;19480:7;19444:17;:44::i;:::-;19437:51;;;17960:1536;;;;;:::o;17629:323::-;17697:4;17729:7;:5;:7::i;:::-;17721:15;;:4;:15;;;;:45;;;;;17759:7;:5;:7::i;:::-;17753:13;;:2;:13;;;;17721:45;:84;;;;;17784:17;:21;17802:2;17784:21;;;;;;;;;;;;;;;;;;;;;;;;;17783:22;17721:84;:125;;;;;17823:17;:23;17841:4;17823:23;;;;;;;;;;;;;;;;;;;;;;;;;17822:24;17721:125;:152;;;;;6169:42;17863:10;;:2;:10;;;;17721:152;:185;;;;;17904:1;17890:16;;:2;:16;;;;17721:185;:223;;;;;17939:4;17923:21;;:4;:21;;;;17721:223;17714:230;;17629:323;;;;:::o;19504:1102::-;7846:4;7827:16;;:23;;;;;;;;;;;;;;;;;;19658:1:::1;19638:6;:16;;;19612:6;:23;;;19593:6;:16;;;:42;;;;:::i;:::-;:61;;;;:::i;:::-;:66;19589:92;;;19674:7;;19589:92;19691:17;19824:1;19802:6;:16;;;19776:6;:23;;;19757:6;:16;;;:42;;;;:::i;:::-;:61;;;;:::i;:::-;19736:6;:16;;;19713:20;:39;;;;:::i;:::-;19712:107;;;;:::i;:::-;19711:114;;;;:::i;:::-;19691:134;;19838:20;19884:9;19861:20;:32;;;;:::i;:::-;19838:55;;19904:30;19921:12;19904:16;:30::i;:::-;19947:22;19972:21;19947:46;;20004:24;20138:1;20116:6;:16;;;20090:6;:23;;;20071:6;:16;;;:42;;;;:::i;:::-;:61;;;;:::i;:::-;20050:6;:16;;;20033:14;:33;;;;:::i;:::-;20032:101;;;;:::i;:::-;20031:108;;;;:::i;:::-;20004:135;;20168:1;20156:9;:13;20152:161;;;20186:41;20199:9;20210:16;20186:12;:41::i;:::-;20247:54;20262:9;20273:16;20291:9;20247:54;;;;;;;;:::i;:::-;;;;;;;;20152:161;20362:1;20350:9;20327:20;:32;;;;:::i;:::-;:36;20323:276;;;20380:23;;;;;;;;;;;:32;;:144;20506:6;:16;;;20480:6;:23;;;:42;;;;:::i;:::-;20452:6;:23;;;20432:16;20415:14;:33;;;;:::i;:::-;20414:61;;;;:::i;:::-;20413:110;;;;:::i;:::-;20380:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20539:16;;;;;;;;;;;:25;;:48;20565:21;20539:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20323:276;19578:1028;;;;7861:1;7892:5:::0;7873:16;;:24;;;;;;;;;;;;;;;;;;19504:1102;:::o;22005:1220::-;22105:4;22126:16;;;;;;;;;;;22122:858;;;22162:27;22184:4;22162:21;:27::i;:::-;:56;;;;22193:25;22215:2;22193:21;:25::i;:::-;22162:56;22158:123;;;22239:26;;;;;;;;;;:::i;:::-;;;;;;;;22158:123;22302:16;;;;;;;;;;;22297:672;;22339:28;22358:4;22364:2;22339:18;:28::i;:::-;22391:16;;;;;;;;;;;22390:17;:41;;;;;22411:20;22422:4;22428:2;22411:10;:20::i;:::-;22390:41;22386:137;;;22456:47;;;;;;;;;;:::i;:::-;;;;;;;;22386:137;22297:672;;;22582:1;22567:12;;:16;:55;;;;;22609:7;:13;22617:4;22609:13;;;;;;;;;;;;;;;;;;;;;;;;;22567:55;:101;;;;;22648:20;22659:4;22665:2;22648:10;:20::i;:::-;22567:101;22563:391;;;22745:13;;22730:12;;22715;:27;;;;:::i;:::-;:43;22711:224;;;22816:4;22787:22;:26;22810:2;22787:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22847:13;;:16;;;;;;;;;:::i;:::-;;;;;;22895;22908:2;22895:16;;;;;;:::i;:::-;;;;;;;;22711:224;22563:391;22297:672;22122:858;23009:6;22992:7;:13;23000:4;22992:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;23026:22;23052:7;23051:48;;23093:6;23051:48;;;23063:27;23073:4;23079:2;23083:6;23063:9;:27::i;:::-;23051:48;23026:73;;23129:14;23114:7;:11;23122:2;23114:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;23176:2;23161:34;;23170:4;23161:34;;;23180:14;23161:34;;;;;;:::i;:::-;;;;;;;;23213:4;23206:11;;;22005:1220;;;;;;:::o;20614:417::-;20681:21;20719:1;20705:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20681:40;;20750:4;20732;20737:1;20732:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20776:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20766:4;20771:1;20766:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;20805:9;;;;;;;;;;;:60;;;20880:11;20906:1;20950:4;20977;20997:15;20805:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20670:361;20614:417;:::o;21039:335::-;21120:9;;;;;;;;;;;:25;;;21153:9;21186:4;21206:11;21232:1;21275;21318:7;:5;:7::i;:::-;21340:15;21120:246;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21039:335;;:::o;21382:615::-;21464:16;;;;;;;;;;;21463:17;21455:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;21536:20;21547:4;21553:2;21536:10;:20::i;:::-;21535:21;:37;;;;;21566:6;;;;;;;;;;;21560:12;;:2;:12;;;21535:37;21531:459;;;21610:1;21593:13;;:18;21589:161;;21662:4;21647:12;:19;;;;:::i;:::-;21632:12;:34;;;;21589:161;;;21722:12;21707;:27;;;;21589:161;21792:4;21766:17;:23;21784:4;21766:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;21830:4;21811:16;;:23;;;;;;;;;;;;;;;;;;21864:15;21849:12;:30;;;;21920:4;21896:21;;:28;;;;;;;;;;;;;;;;;;21944:34;21973:4;21944:34;;;;;;:::i;:::-;;;;;;;;21531:459;21382:615;;:::o;23233:1165::-;23312:7;23332:18;23373:6;;;;;;;;;;;23367:12;;:2;:12;;;23363:399;;;23400:5;:13;;;;;;;;;;;;23396:236;;;23471:15;23454:5;:14;;;23437:8;:14;23446:4;23437:14;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;:49;23433:139;;;23502:4;:15;;;23489:28;;23433:139;;;23558:4;:12;;;23545:25;;23433:139;23396:236;;;23618:4;:12;;;23607:23;;23396:236;23363:399;;;23677:6;;;;;;;;;;;23669:14;;:4;:14;;;23665:97;;;23699:4;:11;;;23686:24;;23665:97;;;23744:4;:16;;;23731:29;;23665:97;23363:399;23778:20;23789:4;23795:2;23778:10;:20::i;:::-;23774:142;;;23835:1;23818:13;;:18;:42;;;;23858:1;23840:13;;:20;;23818:42;23814:91;;;23881:8;;;23814:91;23774:142;23926:15;5745:5;24042:6;:16;;;24016:6;:23;;;23997:6;:16;;;23983:6;:11;;;:30;;;;:::i;:::-;:56;;;;:::i;:::-;:75;;;;:::i;:::-;23967:6;:11;;;23954:10;23945:6;:19;;;;:::i;:::-;:33;;;;:::i;:::-;23944:116;;;;:::i;:::-;:135;;;;:::i;:::-;23926:153;;24090:17;24153:7;5745:5;24120:10;24111:6;:19;;;;:::i;:::-;:38;;;;:::i;:::-;24110:50;;;;:::i;:::-;24090:70;;24188:7;24171;:13;6169:42;24171:13;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;24233:9;24206:7;:22;24222:4;24206:22;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;6169:42;24259:29;;24268:4;24259:29;;;24280:7;24259:29;;;;;;:::i;:::-;;;;;;;;24327:4;24304:40;;24313:4;24304:40;;;24334:9;24304:40;;;;;;:::i;:::-;;;;;;;;24383:7;24371:9;24362:6;:18;;;;:::i;:::-;:28;;;;:::i;:::-;24355:35;;;;;23233:1165;;;;;:::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;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:139::-;647:5;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;601:139;;;;:::o;746:143::-;803:5;834:6;828:13;819:22;;850:33;877:5;850:33;:::i;:::-;746:143;;;;:::o;895:329::-;954:6;1003:2;991:9;982:7;978:23;974:32;971:119;;;1009:79;;:::i;:::-;971:119;1129:1;1154:53;1199:7;1190:6;1179:9;1175:22;1154:53;:::i;:::-;1144:63;;1100:117;895:329;;;;:::o;1230:351::-;1300:6;1349:2;1337:9;1328:7;1324:23;1320:32;1317:119;;;1355:79;;:::i;:::-;1317:119;1475:1;1500:64;1556:7;1547:6;1536:9;1532:22;1500:64;:::i;:::-;1490:74;;1446:128;1230:351;;;;:::o;1587:506::-;1671:6;1679;1728:2;1716:9;1707:7;1703:23;1699:32;1696:119;;;1734:79;;:::i;:::-;1696:119;1854:1;1879:61;1932:7;1923:6;1912:9;1908:22;1879:61;:::i;:::-;1869:71;;1825:125;1989:2;2015:61;2068:7;2059:6;2048:9;2044:22;2015:61;:::i;:::-;2005:71;;1960:126;1587:506;;;;;:::o;2099:474::-;2167:6;2175;2224:2;2212:9;2203:7;2199:23;2195:32;2192:119;;;2230:79;;:::i;:::-;2192:119;2350:1;2375:53;2420:7;2411:6;2400:9;2396:22;2375:53;:::i;:::-;2365:63;;2321:117;2477:2;2503:53;2548:7;2539:6;2528:9;2524:22;2503:53;:::i;:::-;2493:63;;2448:118;2099:474;;;;;:::o;2579:619::-;2656:6;2664;2672;2721:2;2709:9;2700:7;2696:23;2692:32;2689:119;;;2727:79;;:::i;:::-;2689:119;2847:1;2872:53;2917:7;2908:6;2897:9;2893:22;2872:53;:::i;:::-;2862:63;;2818:117;2974:2;3000:53;3045:7;3036:6;3025:9;3021:22;3000:53;:::i;:::-;2990:63;;2945:118;3102:2;3128:53;3173:7;3164:6;3153:9;3149:22;3128:53;:::i;:::-;3118:63;;3073:118;2579:619;;;;;:::o;3204:468::-;3269:6;3277;3326:2;3314:9;3305:7;3301:23;3297:32;3294:119;;;3332:79;;:::i;:::-;3294:119;3452:1;3477:53;3522:7;3513:6;3502:9;3498:22;3477:53;:::i;:::-;3467:63;;3423:117;3579:2;3605:50;3647:7;3638:6;3627:9;3623:22;3605:50;:::i;:::-;3595:60;;3550:115;3204:468;;;;;:::o;3678:474::-;3746:6;3754;3803:2;3791:9;3782:7;3778:23;3774:32;3771:119;;;3809:79;;:::i;:::-;3771:119;3929:1;3954:53;3999:7;3990:6;3979:9;3975:22;3954:53;:::i;:::-;3944:63;;3900:117;4056:2;4082:53;4127:7;4118:6;4107:9;4103:22;4082:53;:::i;:::-;4072:63;;4027:118;3678:474;;;;;:::o;4158:323::-;4214:6;4263:2;4251:9;4242:7;4238:23;4234:32;4231:119;;;4269:79;;:::i;:::-;4231:119;4389:1;4414:50;4456:7;4447:6;4436:9;4432:22;4414:50;:::i;:::-;4404:60;;4360:114;4158:323;;;;:::o;4487:468::-;4552:6;4560;4609:2;4597:9;4588:7;4584:23;4580:32;4577:119;;;4615:79;;:::i;:::-;4577:119;4735:1;4760:50;4802:7;4793:6;4782:9;4778:22;4760:50;:::i;:::-;4750:60;;4706:114;4859:2;4885:53;4930:7;4921:6;4910:9;4906:22;4885:53;:::i;:::-;4875:63;;4830:118;4487:468;;;;;:::o;4961:329::-;5020:6;5069:2;5057:9;5048:7;5044:23;5040:32;5037:119;;;5075:79;;:::i;:::-;5037:119;5195:1;5220:53;5265:7;5256:6;5245:9;5241:22;5220:53;:::i;:::-;5210:63;;5166:117;4961:329;;;;:::o;5296:474::-;5364:6;5372;5421:2;5409:9;5400:7;5396:23;5392:32;5389:119;;;5427:79;;:::i;:::-;5389:119;5547:1;5572:53;5617:7;5608:6;5597:9;5593:22;5572:53;:::i;:::-;5562:63;;5518:117;5674:2;5700:53;5745:7;5736:6;5725:9;5721:22;5700:53;:::i;:::-;5690:63;;5645:118;5296:474;;;;;:::o;5776:663::-;5864:6;5872;5880;5929:2;5917:9;5908:7;5904:23;5900:32;5897:119;;;5935:79;;:::i;:::-;5897:119;6055:1;6080:64;6136:7;6127:6;6116:9;6112:22;6080:64;:::i;:::-;6070:74;;6026:128;6193:2;6219:64;6275:7;6266:6;6255:9;6251:22;6219:64;:::i;:::-;6209:74;;6164:129;6332:2;6358:64;6414:7;6405:6;6394:9;6390:22;6358:64;:::i;:::-;6348:74;;6303:129;5776:663;;;;;:::o;6445:765::-;6531:6;6539;6547;6555;6604:3;6592:9;6583:7;6579:23;6575:33;6572:120;;;6611:79;;:::i;:::-;6572:120;6731:1;6756:53;6801:7;6792:6;6781:9;6777:22;6756:53;:::i;:::-;6746:63;;6702:117;6858:2;6884:53;6929:7;6920:6;6909:9;6905:22;6884:53;:::i;:::-;6874:63;;6829:118;6986:2;7012:53;7057:7;7048:6;7037:9;7033:22;7012:53;:::i;:::-;7002:63;;6957:118;7114:2;7140:53;7185:7;7176:6;7165:9;7161:22;7140:53;:::i;:::-;7130:63;;7085:118;6445:765;;;;;;;:::o;7216:179::-;7285:10;7306:46;7348:3;7340:6;7306:46;:::i;:::-;7384:4;7379:3;7375:14;7361:28;;7216:179;;;;:::o;7401:142::-;7504:32;7530:5;7504:32;:::i;:::-;7499:3;7492:45;7401:142;;:::o;7549:108::-;7626:24;7644:5;7626:24;:::i;:::-;7621:3;7614:37;7549:108;;:::o;7663:118::-;7750:24;7768:5;7750:24;:::i;:::-;7745:3;7738:37;7663:118;;:::o;7817:732::-;7936:3;7965:54;8013:5;7965:54;:::i;:::-;8035:86;8114:6;8109:3;8035:86;:::i;:::-;8028:93;;8145:56;8195:5;8145:56;:::i;:::-;8224:7;8255:1;8240:284;8265:6;8262:1;8259:13;8240:284;;;8341:6;8335:13;8368:63;8427:3;8412:13;8368:63;:::i;:::-;8361:70;;8454:60;8507:6;8454:60;:::i;:::-;8444:70;;8300:224;8287:1;8284;8280:9;8275:14;;8240:284;;;8244:14;8540:3;8533:10;;7941:608;;;7817:732;;;;:::o;8555:109::-;8636:21;8651:5;8636:21;:::i;:::-;8631:3;8624:34;8555:109;;:::o;8670:183::-;8783:63;8840:5;8783:63;:::i;:::-;8778:3;8771:76;8670:183;;:::o;8859:147::-;8954:45;8993:5;8954:45;:::i;:::-;8949:3;8942:58;8859:147;;:::o;9012:364::-;9100:3;9128:39;9161:5;9128:39;:::i;:::-;9183:71;9247:6;9242:3;9183:71;:::i;:::-;9176:78;;9263:52;9308:6;9303:3;9296:4;9289:5;9285:16;9263:52;:::i;:::-;9340:29;9362:6;9340:29;:::i;:::-;9335:3;9331:39;9324:46;;9104:272;9012:364;;;;:::o;9382:366::-;9524:3;9545:67;9609:2;9604:3;9545:67;:::i;:::-;9538:74;;9621:93;9710:3;9621:93;:::i;:::-;9739:2;9734:3;9730:12;9723:19;;9382:366;;;:::o;9754:::-;9896:3;9917:67;9981:2;9976:3;9917:67;:::i;:::-;9910:74;;9993:93;10082:3;9993:93;:::i;:::-;10111:2;10106:3;10102:12;10095:19;;9754:366;;;:::o;10126:::-;10268:3;10289:67;10353:2;10348:3;10289:67;:::i;:::-;10282:74;;10365:93;10454:3;10365:93;:::i;:::-;10483:2;10478:3;10474:12;10467:19;;10126:366;;;:::o;10498:::-;10640:3;10661:67;10725:2;10720:3;10661:67;:::i;:::-;10654:74;;10737:93;10826:3;10737:93;:::i;:::-;10855:2;10850:3;10846:12;10839:19;;10498:366;;;:::o;10870:::-;11012:3;11033:67;11097:2;11092:3;11033:67;:::i;:::-;11026:74;;11109:93;11198:3;11109:93;:::i;:::-;11227:2;11222:3;11218:12;11211:19;;10870:366;;;:::o;11242:::-;11384:3;11405:67;11469:2;11464:3;11405:67;:::i;:::-;11398:74;;11481:93;11570:3;11481:93;:::i;:::-;11599:2;11594:3;11590:12;11583:19;;11242:366;;;:::o;11614:365::-;11756:3;11777:66;11841:1;11836:3;11777:66;:::i;:::-;11770:73;;11852:93;11941:3;11852:93;:::i;:::-;11970:2;11965:3;11961:12;11954:19;;11614:365;;;:::o;11985:366::-;12127:3;12148:67;12212:2;12207:3;12148:67;:::i;:::-;12141:74;;12224:93;12313:3;12224:93;:::i;:::-;12342:2;12337:3;12333:12;12326:19;;11985:366;;;:::o;12357:::-;12499:3;12520:67;12584:2;12579:3;12520:67;:::i;:::-;12513:74;;12596:93;12685:3;12596:93;:::i;:::-;12714:2;12709:3;12705:12;12698:19;;12357:366;;;:::o;12729:365::-;12871:3;12892:66;12956:1;12951:3;12892:66;:::i;:::-;12885:73;;12967:93;13056:3;12967:93;:::i;:::-;13085:2;13080:3;13076:12;13069:19;;12729:365;;;:::o;13100:366::-;13242:3;13263:67;13327:2;13322:3;13263:67;:::i;:::-;13256:74;;13339:93;13428:3;13339:93;:::i;:::-;13457:2;13452:3;13448:12;13441:19;;13100:366;;;:::o;13472:::-;13614:3;13635:67;13699:2;13694:3;13635:67;:::i;:::-;13628:74;;13711:93;13800:3;13711:93;:::i;:::-;13829:2;13824:3;13820:12;13813:19;;13472:366;;;:::o;13844:::-;13986:3;14007:67;14071:2;14066:3;14007:67;:::i;:::-;14000:74;;14083:93;14172:3;14083:93;:::i;:::-;14201:2;14196:3;14192:12;14185:19;;13844:366;;;:::o;14216:::-;14358:3;14379:67;14443:2;14438:3;14379:67;:::i;:::-;14372:74;;14455:93;14544:3;14455:93;:::i;:::-;14573:2;14568:3;14564:12;14557:19;;14216:366;;;:::o;14588:365::-;14730:3;14751:66;14815:1;14810:3;14751:66;:::i;:::-;14744:73;;14826:93;14915:3;14826:93;:::i;:::-;14944:2;14939:3;14935:12;14928:19;;14588:365;;;:::o;14959:118::-;15046:24;15064:5;15046:24;:::i;:::-;15041:3;15034:37;14959:118;;:::o;15083:112::-;15166:22;15182:5;15166:22;:::i;:::-;15161:3;15154:35;15083:112;;:::o;15201:222::-;15294:4;15332:2;15321:9;15317:18;15309:26;;15345:71;15413:1;15402:9;15398:17;15389:6;15345:71;:::i;:::-;15201:222;;;;:::o;15429:254::-;15538:4;15576:2;15565:9;15561:18;15553:26;;15589:87;15673:1;15662:9;15658:17;15649:6;15589:87;:::i;:::-;15429:254;;;;:::o;15689:332::-;15810:4;15848:2;15837:9;15833:18;15825:26;;15861:71;15929:1;15918:9;15914:17;15905:6;15861:71;:::i;:::-;15942:72;16010:2;15999:9;15995:18;15986:6;15942:72;:::i;:::-;15689:332;;;;;:::o;16027:807::-;16276:4;16314:3;16303:9;16299:19;16291:27;;16328:71;16396:1;16385:9;16381:17;16372:6;16328:71;:::i;:::-;16409:72;16477:2;16466:9;16462:18;16453:6;16409:72;:::i;:::-;16491:80;16567:2;16556:9;16552:18;16543:6;16491:80;:::i;:::-;16581;16657:2;16646:9;16642:18;16633:6;16581:80;:::i;:::-;16671:73;16739:3;16728:9;16724:19;16715:6;16671:73;:::i;:::-;16754;16822:3;16811:9;16807:19;16798:6;16754:73;:::i;:::-;16027:807;;;;;;;;;:::o;16840:210::-;16927:4;16965:2;16954:9;16950:18;16942:26;;16978:65;17040:1;17029:9;17025:17;17016:6;16978:65;:::i;:::-;16840:210;;;;:::o;17056:274::-;17175:4;17213:2;17202:9;17198:18;17190:26;;17226:97;17320:1;17309:9;17305:17;17296:6;17226:97;:::i;:::-;17056:274;;;;:::o;17336:313::-;17449:4;17487:2;17476:9;17472:18;17464:26;;17536:9;17530:4;17526:20;17522:1;17511:9;17507:17;17500:47;17564:78;17637:4;17628:6;17564:78;:::i;:::-;17556:86;;17336:313;;;;:::o;17655:419::-;17821:4;17859:2;17848:9;17844:18;17836:26;;17908:9;17902:4;17898:20;17894:1;17883:9;17879:17;17872:47;17936:131;18062:4;17936:131;:::i;:::-;17928:139;;17655:419;;;:::o;18080:::-;18246:4;18284:2;18273:9;18269:18;18261:26;;18333:9;18327:4;18323:20;18319:1;18308:9;18304:17;18297:47;18361:131;18487:4;18361:131;:::i;:::-;18353:139;;18080:419;;;:::o;18505:::-;18671:4;18709:2;18698:9;18694:18;18686:26;;18758:9;18752:4;18748:20;18744:1;18733:9;18729:17;18722:47;18786:131;18912:4;18786:131;:::i;:::-;18778:139;;18505:419;;;:::o;18930:::-;19096:4;19134:2;19123:9;19119:18;19111:26;;19183:9;19177:4;19173:20;19169:1;19158:9;19154:17;19147:47;19211:131;19337:4;19211:131;:::i;:::-;19203:139;;18930:419;;;:::o;19355:::-;19521:4;19559:2;19548:9;19544:18;19536:26;;19608:9;19602:4;19598:20;19594:1;19583:9;19579:17;19572:47;19636:131;19762:4;19636:131;:::i;:::-;19628:139;;19355:419;;;:::o;19780:::-;19946:4;19984:2;19973:9;19969:18;19961:26;;20033:9;20027:4;20023:20;20019:1;20008:9;20004:17;19997:47;20061:131;20187:4;20061:131;:::i;:::-;20053:139;;19780:419;;;:::o;20205:::-;20371:4;20409:2;20398:9;20394:18;20386:26;;20458:9;20452:4;20448:20;20444:1;20433:9;20429:17;20422:47;20486:131;20612:4;20486:131;:::i;:::-;20478:139;;20205:419;;;:::o;20630:::-;20796:4;20834:2;20823:9;20819:18;20811:26;;20883:9;20877:4;20873:20;20869:1;20858:9;20854:17;20847:47;20911:131;21037:4;20911:131;:::i;:::-;20903:139;;20630:419;;;:::o;21055:::-;21221:4;21259:2;21248:9;21244:18;21236:26;;21308:9;21302:4;21298:20;21294:1;21283:9;21279:17;21272:47;21336:131;21462:4;21336:131;:::i;:::-;21328:139;;21055:419;;;:::o;21480:::-;21646:4;21684:2;21673:9;21669:18;21661:26;;21733:9;21727:4;21723:20;21719:1;21708:9;21704:17;21697:47;21761:131;21887:4;21761:131;:::i;:::-;21753:139;;21480:419;;;:::o;21905:::-;22071:4;22109:2;22098:9;22094:18;22086:26;;22158:9;22152:4;22148:20;22144:1;22133:9;22129:17;22122:47;22186:131;22312:4;22186:131;:::i;:::-;22178:139;;21905:419;;;:::o;22330:::-;22496:4;22534:2;22523:9;22519:18;22511:26;;22583:9;22577:4;22573:20;22569:1;22558:9;22554:17;22547:47;22611:131;22737:4;22611:131;:::i;:::-;22603:139;;22330:419;;;:::o;22755:::-;22921:4;22959:2;22948:9;22944:18;22936:26;;23008:9;23002:4;22998:20;22994:1;22983:9;22979:17;22972:47;23036:131;23162:4;23036:131;:::i;:::-;23028:139;;22755:419;;;:::o;23180:::-;23346:4;23384:2;23373:9;23369:18;23361:26;;23433:9;23427:4;23423:20;23419:1;23408:9;23404:17;23397:47;23461:131;23587:4;23461:131;:::i;:::-;23453:139;;23180:419;;;:::o;23605:::-;23771:4;23809:2;23798:9;23794:18;23786:26;;23858:9;23852:4;23848:20;23844:1;23833:9;23829:17;23822:47;23886:131;24012:4;23886:131;:::i;:::-;23878:139;;23605:419;;;:::o;24030:222::-;24123:4;24161:2;24150:9;24146:18;24138:26;;24174:71;24242:1;24231:9;24227:17;24218:6;24174:71;:::i;:::-;24030:222;;;;:::o;24258:320::-;24373:4;24411:2;24400:9;24396:18;24388:26;;24424:71;24492:1;24481:9;24477:17;24468:6;24424:71;:::i;:::-;24505:66;24567:2;24556:9;24552:18;24543:6;24505:66;:::i;:::-;24258:320;;;;;:::o;24584:831::-;24847:4;24885:3;24874:9;24870:19;24862:27;;24899:71;24967:1;24956:9;24952:17;24943:6;24899:71;:::i;:::-;24980:80;25056:2;25045:9;25041:18;25032:6;24980:80;:::i;:::-;25107:9;25101:4;25097:20;25092:2;25081:9;25077:18;25070:48;25135:108;25238:4;25229:6;25135:108;:::i;:::-;25127:116;;25253:72;25321:2;25310:9;25306:18;25297:6;25253:72;:::i;:::-;25335:73;25403:3;25392:9;25388:19;25379:6;25335:73;:::i;:::-;24584:831;;;;;;;;:::o;25421:442::-;25570:4;25608:2;25597:9;25593:18;25585:26;;25621:71;25689:1;25678:9;25674:17;25665:6;25621:71;:::i;:::-;25702:72;25770:2;25759:9;25755:18;25746:6;25702:72;:::i;:::-;25784;25852:2;25841:9;25837:18;25828:6;25784:72;:::i;:::-;25421:442;;;;;;:::o;25869:553::-;26046:4;26084:3;26073:9;26069:19;26061:27;;26098:71;26166:1;26155:9;26151:17;26142:6;26098:71;:::i;:::-;26179:72;26247:2;26236:9;26232:18;26223:6;26179:72;:::i;:::-;26261;26329:2;26318:9;26314:18;26305:6;26261:72;:::i;:::-;26343;26411:2;26400:9;26396:18;26387:6;26343:72;:::i;:::-;25869:553;;;;;;;:::o;26428:214::-;26517:4;26555:2;26544:9;26540:18;26532:26;;26568:67;26632:1;26621:9;26617:17;26608:6;26568:67;:::i;:::-;26428:214;;;;:::o;26729:132::-;26796:4;26819:3;26811:11;;26849:4;26844:3;26840:14;26832:22;;26729:132;;;:::o;26867:114::-;26934:6;26968:5;26962:12;26952:22;;26867:114;;;:::o;26987:99::-;27039:6;27073:5;27067:12;27057:22;;26987:99;;;:::o;27092:113::-;27162:4;27194;27189:3;27185:14;27177:22;;27092:113;;;:::o;27211:184::-;27310:11;27344:6;27339:3;27332:19;27384:4;27379:3;27375:14;27360:29;;27211:184;;;;:::o;27401:169::-;27485:11;27519:6;27514:3;27507:19;27559:4;27554:3;27550:14;27535:29;;27401:169;;;;:::o;27576:305::-;27616:3;27635:20;27653:1;27635:20;:::i;:::-;27630:25;;27669:20;27687:1;27669:20;:::i;:::-;27664:25;;27823:1;27755:66;27751:74;27748:1;27745:81;27742:107;;;27829:18;;:::i;:::-;27742:107;27873:1;27870;27866:9;27859:16;;27576:305;;;;:::o;27887:185::-;27927:1;27944:20;27962:1;27944:20;:::i;:::-;27939:25;;27978:20;27996:1;27978:20;:::i;:::-;27973:25;;28017:1;28007:35;;28022:18;;:::i;:::-;28007:35;28064:1;28061;28057:9;28052:14;;27887:185;;;;:::o;28078:348::-;28118:7;28141:20;28159:1;28141:20;:::i;:::-;28136:25;;28175:20;28193:1;28175:20;:::i;:::-;28170:25;;28363:1;28295:66;28291:74;28288:1;28285:81;28280:1;28273:9;28266:17;28262:105;28259:131;;;28370:18;;:::i;:::-;28259:131;28418:1;28415;28411:9;28400:20;;28078:348;;;;:::o;28432:191::-;28472:4;28492:20;28510:1;28492:20;:::i;:::-;28487:25;;28526:20;28544:1;28526:20;:::i;:::-;28521:25;;28565:1;28562;28559:8;28556:34;;;28570:18;;:::i;:::-;28556:34;28615:1;28612;28608:9;28600:17;;28432:191;;;;:::o;28629:96::-;28666:7;28695:24;28713:5;28695:24;:::i;:::-;28684:35;;28629:96;;;:::o;28731:104::-;28776:7;28805:24;28823:5;28805:24;:::i;:::-;28794:35;;28731:104;;;:::o;28841:90::-;28875:7;28918:5;28911:13;28904:21;28893:32;;28841:90;;;:::o;28937:126::-;28974:7;29014:42;29007:5;29003:54;28992:65;;28937:126;;;:::o;29069:77::-;29106:7;29135:5;29124:16;;29069:77;;;:::o;29152:86::-;29187:7;29227:4;29220:5;29216:16;29205:27;;29152:86;;;:::o;29244:152::-;29320:9;29353:37;29384:5;29353:37;:::i;:::-;29340:50;;29244:152;;;:::o;29402:121::-;29460:9;29493:24;29511:5;29493:24;:::i;:::-;29480:37;;29402:121;;;:::o;29529:126::-;29579:9;29612:37;29643:5;29612:37;:::i;:::-;29599:50;;29529:126;;;:::o;29661:113::-;29711:9;29744:24;29762:5;29744:24;:::i;:::-;29731:37;;29661:113;;;:::o;29780:307::-;29848:1;29858:113;29872:6;29869:1;29866:13;29858:113;;;29957:1;29952:3;29948:11;29942:18;29938:1;29933:3;29929:11;29922:39;29894:2;29891:1;29887:10;29882:15;;29858:113;;;29989:6;29986:1;29983:13;29980:101;;;30069:1;30060:6;30055:3;30051:16;30044:27;29980:101;29829:258;29780:307;;;:::o;30093:320::-;30137:6;30174:1;30168:4;30164:12;30154:22;;30221:1;30215:4;30211:12;30242:18;30232:81;;30298:4;30290:6;30286:17;30276:27;;30232:81;30360:2;30352:6;30349:14;30329:18;30326:38;30323:84;;;30379:18;;:::i;:::-;30323:84;30144:269;30093:320;;;:::o;30419:233::-;30458:3;30481:24;30499:5;30481:24;:::i;:::-;30472:33;;30527:66;30520:5;30517:77;30514:103;;;30597:18;;:::i;:::-;30514:103;30644:1;30637:5;30633:13;30626:20;;30419:233;;;:::o;30658:180::-;30706:77;30703:1;30696:88;30803:4;30800:1;30793:15;30827:4;30824:1;30817:15;30844:180;30892:77;30889:1;30882:88;30989:4;30986:1;30979:15;31013:4;31010:1;31003:15;31030:180;31078:77;31075:1;31068:88;31175:4;31172:1;31165:15;31199:4;31196:1;31189:15;31216:180;31264:77;31261:1;31254:88;31361:4;31358:1;31351:15;31385:4;31382:1;31375:15;31402:180;31450:77;31447:1;31440:88;31547:4;31544:1;31537:15;31571:4;31568:1;31561:15;31711:117;31820:1;31817;31810:12;31834:102;31875:6;31926:2;31922:7;31917:2;31910:5;31906:14;31902:28;31892:38;;31834:102;;;:::o;31942:166::-;32082:18;32078:1;32070:6;32066:14;32059:42;31942:166;:::o;32114:222::-;32254:34;32250:1;32242:6;32238:14;32231:58;32323:5;32318:2;32310:6;32306:15;32299:30;32114:222;:::o;32342:224::-;32482:34;32478:1;32470:6;32466:14;32459:58;32551:7;32546:2;32538:6;32534:15;32527:32;32342:224;:::o;32572:173::-;32712:25;32708:1;32700:6;32696:14;32689:49;32572:173;:::o;32751:170::-;32891:22;32887:1;32879:6;32875:14;32868:46;32751:170;:::o;32927:168::-;33067:20;33063:1;33055:6;33051:14;33044:44;32927:168;:::o;33101:158::-;33241:10;33237:1;33229:6;33225:14;33218:34;33101:158;:::o;33265:169::-;33405:21;33401:1;33393:6;33389:14;33382:45;33265:169;:::o;33440:166::-;33580:18;33576:1;33568:6;33564:14;33557:42;33440:166;:::o;33612:156::-;33752:8;33748:1;33740:6;33736:14;33729:32;33612:156;:::o;33774:176::-;33914:28;33910:1;33902:6;33898:14;33891:52;33774:176;:::o;33956:174::-;34096:26;34092:1;34084:6;34080:14;34073:50;33956:174;:::o;34136:224::-;34276:34;34272:1;34264:6;34260:14;34253:58;34345:7;34340:2;34332:6;34328:15;34321:32;34136:224;:::o;34366:248::-;34506:34;34502:1;34494:6;34490:14;34483:58;34575:31;34570:2;34562:6;34558:15;34551:56;34366:248;:::o;34620:155::-;34760:7;34756:1;34748:6;34744:14;34737:31;34620:155;:::o;34781:122::-;34854:24;34872:5;34854:24;:::i;:::-;34847:5;34844:35;34834:63;;34893:1;34890;34883:12;34834:63;34781:122;:::o;34909:138::-;34990:32;35016:5;34990:32;:::i;:::-;34983:5;34980:43;34970:71;;35037:1;35034;35027:12;34970:71;34909:138;:::o;35053:116::-;35123:21;35138:5;35123:21;:::i;:::-;35116:5;35113:32;35103:60;;35159:1;35156;35149:12;35103:60;35053:116;:::o;35175:122::-;35248:24;35266:5;35248:24;:::i;:::-;35241:5;35238:35;35228:63;;35287:1;35284;35277:12;35228:63;35175:122;:::o

Swarm Source

ipfs://83dd47ab2da8d2a30976b85f229bd62a7a21504748e289ddadd1bfac7dcdfac8
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.