ETH Price: $2,529.04 (+0.45%)

Token

Wall Street Wallet (WSWALLET)
 

Overview

Max Total Supply

1,000,000,000 WSWALLET

Holders

18

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
19,500,244.977951984321411073 WSWALLET

Value
$0.00
0xe63f2b0d812408f522b395c80b540313ae735797
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:
WallStreetWallet

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-25
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

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 IFactoryV2 {
    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 IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface Protections {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
}

contract WallStreetWallet is IERC20 {
    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 _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 1_000_000_000;
    string constant private _name = "Wall Street Wallet";
    string constant private _symbol = "WSWALLET";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    Fees public _taxRates = Fees({
        buyFee: 0,
        sellFee: 800,
        transferFee: 0
    });

    uint256 constant public maxBuyTaxes = 800;
    uint256 constant public maxSellTaxes = 800;
    uint256 constant public maxTransferTaxes = 800;
    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public marketingWallet = payable(0xC9604fd1a238A15b5Af4bcfB818E28Afcc396882);
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Protections protections;
    uint256 public launchStamp;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);

    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        originalDeployer = msg.sender;

        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3 || block.chainid == 5) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            //Ropstein DAI 0xaD6D458402F60fD3Bd25163575031ACDce07538D
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else if (block.chainid == 42161) {
            dexRouter = IRouter02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);
        } else {
            revert();
        }


        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

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

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    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 (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

    address public originalDeployer;
    address public operator;

    // Function to set an operator to allow someone other the deployer to create things such as launchpads.
    // Only callable by original deployer.
    function setOperator(address newOperator) public {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        address oldOperator = operator;
        if (oldOperator != address(0)) {
            _liquidityHolders[oldOperator] = false;
            setExcludedFromFees(oldOperator, false);
        }
        operator = newOperator;
        _liquidityHolders[newOperator] = true;
        setExcludedFromFees(newOperator, true);
    }

    function renounceOriginalDeployer() external {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        setOperator(address(0));
        originalDeployer = address(0);
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    
    receive() external payable {}
    function totalSupply() external pure override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure 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(msg.sender, recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

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

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

    function approveContractContingency() external onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

    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 setNewRouter(address newRouter) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (!enabled) {
            lpPairs[pair] = false;
            protections.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.");
            }
            require(!lpPairs[pair], "Pair already added to list.");
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            protections.setLpPair(pair, true);
        }
    }

    function setInitializer(address initializer) external onlyOwner {
        require(!tradingEnabled);
        require(initializer != address(this), "Can't be self.");
        protections = Protections(initializer);
    }

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

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

    function isExcludedFromProtection(address account) external view returns (bool) {
        return _isExcludedFromProtection[account];
    }

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

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

    function removeSniper(address account) external onlyOwner {
        protections.removeSniper(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        protections.setProtections(_antiSnipe, _antiBlock);
    }

    function lockTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(!taxesAreLocked, "Taxes are locked.");
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setWallets(address payable marketing) external onlyOwner {
        require(marketing != address(0), "Cannot be zero address.");
        marketingWallet = payable(marketing);
    }

    function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
    }

    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%.");
        piSwapPercent = priceImpactSwapPercent;
    }

    function setContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    function excludePresaleAddresses(address router, address presale) external onlyOwner {
        require(allowedPresaleExclusion);
        require(router != address(this) 
                && presale != address(this) 
                && lpPair != router 
                && lpPair != presale, "Just don't.");
        if (router == presale) {
            _liquidityHolders[presale] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(presale, true);
        } else {
            _liquidityHolders[router] = true;
            _liquidityHolders[presale] = true;
            presaleAddresses[router] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(router, true);
            setExcludedFromFees(presale, true);
        }
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this)
            && from != address(protections)
            && to != address(protections);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if (_hasLimits(from, to)) {
            if(!tradingEnabled) {
                if (!other) {
                    revert("Trading not yet enabled!");
                } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
                    revert("Tokens cannot be moved until trading is live.");
                }
            }
        }

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled
                   && !presaleAddresses[to]
                   && !presaleAddresses[from]
                ) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        bool success;
        (success,) = marketingWallet.call{value: address(this).balance, gas: 55000}("");
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _isExcludedFromFees[from] = true;
            _hasLiqBeenAdded = true;
            if (address(protections) == address(0)){
                protections = Protections(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(protections) == address(0)){
            protections = Protections(address(this));
        }
        try protections.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try protections.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        tradingEnabled = true;
        allowedPresaleExclusion = false;
        launchStamp = block.timestamp;
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(_owner).transfer(address(this).balance);
    }

    function sweepExternalTokens(address token) external onlyOwner {
        if (_hasLiqBeenAdded) {
            require(token != address(this), "Cannot sweep native tokens.");
        }
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens.");
            finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, true);
        }
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try protections.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (currentFee == 0) { return amount; }
        if (address(protections) == address(this)
            && (block.chainid == 1
            || block.chainid == 56)) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }
}

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":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","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":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":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"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":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","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":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"originalDeployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOriginalDeployer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","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":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","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":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","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":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"}]

600060028190556008805460ff1916600117905560e0604052608081905261032060a05260c0526009805465ffffffffffff19166303200000179055600c8054600161ff0160a01b03191673c9604fd1a238a15b5af4bcfb818e28afcc396882179055600a60108190556011805461ffff19169055601380546001600160a01b031990811633908117909255601480549091169091179055620000a59060129062000728565b620000b590633b9aca0062000740565b601380546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001096012600a62000728565b6200011990633b9aca0062000740565b60405190815260200160405180910390a3466038036200016157600a8054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e00179055620002a0565b466061036200019857600a8054610100600160a81b03191674d99d1c33f9fc3444f8101754abc46c52416550d100179055620002a0565b4660011480620001a85750466004145b80620001b45750466003145b80620001c05750466005145b15620001f457600a8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d00179055620002a0565b4661a86a036200022c57600a8054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d400179055620002a0565b4660fa036200026357600a8054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c2900179055620002a0565b4661a4b1036200029b57600a8054610100600160a81b031916741b02da8cb0d097eb8d57a175b88c7d8b4799750600179055620002a0565b600080fd5b600a60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031a91906200075a565b6001600160a01b031663c9c65396600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200037c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a291906200075a565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620003ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041591906200075a565b600b80546001600160a01b0319166001600160a01b039283169081179091556000908152600160208190526040909120805460ff19169091179055601354600a546200046f92918216916101009091041660001962000512565b600a546200049090309061010090046001600160a01b031660001962000512565b601380546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548216831790559554909416835260049091529020805490921617905562000785565b6001600160a01b038316620005645760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620005b25760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016200055b565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200066a5781600019048211156200064e576200064e62000613565b808516156200065c57918102915b93841c93908002906200062e565b509250929050565b600082620006835750600162000722565b81620006925750600062000722565b8160018114620006ab5760028114620006b657620006d6565b600191505062000722565b60ff841115620006ca57620006ca62000613565b50506001821b62000722565b5060208310610133831016604e8410600b8410161715620006fb575081810a62000722565b62000707838362000629565b80600019048211156200071e576200071e62000613565b0290505b92915050565b60006200073960ff84168362000672565b9392505050565b808202811582820484141762000722576200072262000613565b6000602082840312156200076d57600080fd5b81516001600160a01b03811681146200073957600080fd5b613c9680620007956000396000f3fe60806040526004361061036f5760003560e01c8063570ca735116101c6578063a9059cbb116100f7578063dd62ed3e11610095578063ee5d9c2d1161006f578063ee5d9c2d14610a3f578063fb78680d14610a54578063fdb78c0e14610a74578063feadde9c14610a9557600080fd5b8063dd62ed3e146109b9578063eafb5a3c146109ff578063eb50e70e14610a1f57600080fd5b8063b3ab15fb116100d1578063b3ab15fb1461095f578063b3d514fb146105e1578063b7df8b361461097f578063bfc2fc351461099957600080fd5b8063a9059cbb1461091f578063ab558e4d1461093f578063b1b08f71146105e157600080fd5b806378648edf11610164578063893d20e81161013e578063893d20e8146108a65780638a63bd9b146108c45780638a8c523c146108d957806395d89b41146108ee57600080fd5b806378648edf1461085157806380c581d11461086657806381cf58a91461088657600080fd5b80635c24b074116101a05780635c24b074146107c657806370a08231146107e6578063715018a61461081c57806375f0a8741461083157600080fd5b8063570ca73514610770578063590ffdce146107905780635a6f0918146107b057600080fd5b80632b112e49116102a0578063452ed4f11161023e5780634e718e48116102185780634e718e48146106d85780634fb2e45d146106f85780634fbee1931461071857806350a8e0161461075157600080fd5b8063452ed4f11461067e5780634ada218b1461069e5780634bbb93eb146106b857600080fd5b8063313ce5671161027a578063313ce5671461060d57806332cde6641461062957806333251a0b1461064957806339a059021461066957600080fd5b80632b112e49146105cc5780632b28fc7a146105e15780632e8fa821146105f757600080fd5b8063095ea7b31161030d57806318160ddd116102e757806318160ddd1461056157806323b872dd146105765780632610eaca1461059657806328577751146105b657600080fd5b8063095ea7b3146104e85780630dcbcf1c1461050857806313b4a7f41461054157600080fd5b8063069d955f11610349578063069d955f146103f457806306fdde031461044a5780630758d9241461049957806307dd79e0146104be57600080fd5b806303fd2a451461037b5780630445b667146103ae578063044df726146103d257600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039161dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103c4600d5481565b6040519081526020016103a5565b3480156103de57600080fd5b506103f26103ed36600461360a565b610ab5565b005b34801561040057600080fd5b506009546104259061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103a5565b34801561045657600080fd5b5060408051808201909152601281527f57616c6c205374726565742057616c6c6574000000000000000000000000000060208201525b6040516103a59190613643565b3480156104a557600080fd5b50600a546103919061010090046001600160a01b031681565b3480156104ca57600080fd5b50600a546104d89060ff1681565b60405190151581526020016103a5565b3480156104f457600080fd5b506104d86105033660046136a6565b610b73565b34801561051457600080fd5b506104d86105233660046136d2565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561054d57600080fd5b506103f261055c3660046136ef565b610b8a565b34801561056d57600080fd5b506103c4610d48565b34801561058257600080fd5b506104d861059136600461371d565b610d69565b3480156105a257600080fd5b506103f26105b1366004613834565b610de1565b3480156105c257600080fd5b506103c460105481565b3480156105d857600080fd5b506103c4610f96565b3480156105ed57600080fd5b506103c461032081565b34801561060357600080fd5b506103c4600e5481565b34801561061957600080fd5b50604051601281526020016103a5565b34801561063557600080fd5b506103f261064436600461390d565b611014565b34801561065557600080fd5b506103f26106643660046136d2565b611168565b34801561067557600080fd5b506103f2611219565b34801561068a57600080fd5b50600b54610391906001600160a01b031681565b3480156106aa57600080fd5b506011546104d89060ff1681565b3480156106c457600080fd5b506103c46106d3366004613950565b6112a0565b3480156106e457600080fd5b506103f26106f3366004613950565b6112d4565b34801561070457600080fd5b506103f26107133660046136d2565b611372565b34801561072457600080fd5b506104d86107333660046136d2565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561075d57600080fd5b506011546104d890610100900460ff1681565b34801561077c57600080fd5b50601554610391906001600160a01b031681565b34801561079c57600080fd5b506103f26107ab366004613969565b611574565b3480156107bc57600080fd5b506103c460125481565b3480156107d257600080fd5b506103f26107e13660046136d2565b6115e7565b3480156107f257600080fd5b506103c46108013660046136d2565b6001600160a01b031660009081526020819052604090205490565b34801561082857600080fd5b506103f26116c1565b34801561083d57600080fd5b50600c54610391906001600160a01b031681565b34801561085d57600080fd5b506103f26117e6565b34801561087257600080fd5b506103f2610881366004613969565b61183d565b34801561089257600080fd5b50601454610391906001600160a01b031681565b3480156108b257600080fd5b506013546001600160a01b0316610391565b3480156108d057600080fd5b506104d8611a27565b3480156108e557600080fd5b506103f2611a97565b3480156108fa57600080fd5b5060408051808201909152600881526715d4d5d05313115560c21b602082015261048c565b34801561092b57600080fd5b506104d861093a3660046136a6565b611ced565b34801561094b57600080fd5b506103f261095a3660046136d2565b611d04565b34801561096b57600080fd5b506103f261097a3660046136d2565b611e9e565b34801561098b57600080fd5b50600f546104d89060ff1681565b3480156109a557600080fd5b506103f26109b436600461360a565b611f8b565b3480156109c557600080fd5b506103c46109d43660046136ef565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a0b57600080fd5b506103f2610a1a3660046136d2565b612036565b348015610a2b57600080fd5b506103f2610a3a3660046136d2565b612437565b348015610a4b57600080fd5b506103f26124f7565b348015610a6057600080fd5b506103f2610a6f366004613987565b6125d3565b348015610a8057600080fd5b50600c546104d890600160a81b900460ff1681565b348015610aa157600080fd5b506103f2610ab0366004613969565b612895565b6013546001600160a01b03163314610b025760405162461bcd60e51b81526020600482015260116024820152600080516020613c4183398151915260448201526064015b60405180910390fd5b60115460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505050565b6000610b80338484612908565b5060015b92915050565b6013546001600160a01b03163314610bd25760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b60085460ff16610be157600080fd5b6001600160a01b0382163014801590610c0357506001600160a01b0381163014155b8015610c1d5750600b546001600160a01b03838116911614155b8015610c375750600b546001600160a01b03828116911614155b610c715760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610af9565b806001600160a01b0316826001600160a01b031603610cd3576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560079093529220805490911682179055610ccf908290611574565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526007909252808320805486168317905592825291902080549092168117909155610d3d908390611574565b610ccf816001611574565b6000610d566012600a613ab3565b610d6490633b9aca00613ac2565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610dce576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610dc8908490613ad9565b90915550505b610dd9848484612a01565b949350505050565b6013546001600160a01b03163314610e295760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b8051825114610e7a5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610af9565b60005b82518161ffff161015610f9157610e966012600a613ab3565b828261ffff1681518110610eac57610eac613aec565b6020026020010151610ebe9190613ac2565b336000908152602081905260409020541015610f1c5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610af9565b610f7e33848361ffff1681518110610f3657610f36613aec565b60200260200101516012600a610f4c9190613ab3565b858561ffff1681518110610f6257610f62613aec565b6020026020010151610f749190613ac2565b6000806001612d95565b5080610f8981613b02565b915050610e7d565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610ff09190613b23565b610ffc6012600a613ab3565b61100a90633b9aca00613ac2565b610d649190613ad9565b6013546001600160a01b0316331461105c5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b600a5460ff16156110af5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610af9565b6103208361ffff16111580156110cb57506103208261ffff1611155b80156110dd57506103208161ffff1611155b6111295760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610af9565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6013546001600160a01b031633146111b05760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b6011546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b1580156111fe57600080fd5b505af1158015611212573d6000803e3d6000fd5b5050505050565b6014546001600160a01b031633146112845760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610af9565b61128e6000611e9e565b601480546001600160a01b0319169055565b600b546001600160a01b0316600090815260208190526040812054612710906112ca908490613ac2565b610b849190613b36565b6013546001600160a01b0316331461131c5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b609681111561136d5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610af9565b601055565b6013546001600160a01b031633146113ba5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b6001600160a01b0381166114365760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610af9565b61deac196001600160a01b038216016114b75760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610af9565b6013546114ce906001600160a01b03166000611574565b6114d9816001611574565b6013546001600160a01b031660009081526020819052604090205415611522576013546001600160a01b031660008181526020819052604090205461152091908390610f74565b505b601380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6013546001600160a01b031633146115bc5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6013546001600160a01b0316331461162f5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b60115460ff161561163f57600080fd5b306001600160a01b038216036116975760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610af9565b601180546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6013546001600160a01b031633146117095760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b60115460ff166117815760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610af9565b601354611798906001600160a01b03166000611574565b601380546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6013546001600160a01b0316331461182e5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b600a805460ff19166001179055565b6013546001600160a01b031633146118855760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b806118f8576001600160a01b03828116600081815260016020526040808220805460ff1916905560115490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610b5757600080fd5b6002541561195f576203f480600254426119129190613ad9565b1161195f5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610af9565b6001600160a01b03821660009081526001602052604090205460ff16156119c85760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610af9565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560115491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610b3d565b6013546000906001600160a01b03163314611a725760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b600a54611a9190309061010090046001600160a01b0316600019612908565b50600190565b6013546001600160a01b03163314611adf5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b60115460ff1615611b325760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610af9565b601154610100900460ff16611b895760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610af9565b6011546201000090046001600160a01b0316611bb9576011805462010000600160b01b0319163062010000021790555b601154600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c2b57600080fd5b505af1925050508015611c3c575060015b50601154600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611cbf575060408051601f3d908101601f19168201909252611cbc91810190613b58565b60015b15611cce57600d91909155600e555b6011805460ff1990811660011790915560088054909116905542601255565b6000611cfa338484612a01565b5060019392505050565b6013546001600160a01b03163314611d4c5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b601154610100900460ff1615611db457306001600160a01b03821603611db45760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610af9565b6013546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2f9190613b7c565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f919190613b95565b6014546001600160a01b03163314611f095760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610af9565b6015546001600160a01b03168015611f46576001600160a01b0381166000908152600460205260408120805460ff19169055611f46908290611574565b601580546001600160a01b0319166001600160a01b0384169081179091556000908152600460205260409020805460ff19166001908117909155610ccf908390611574565b6013546001600160a01b03163314611fd35760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b600c805460ff60a81b1916600160a81b84151590810291909117909155600f805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6013546001600160a01b0316331461207e5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b601154610100900460ff16156120d65760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610af9565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561211b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213f9190613bb2565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561218c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b09190613bb2565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156121fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221f9190613bb2565b600b546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166123b557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561228a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ae9190613bb2565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231f9190613bb2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561236c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123909190613bb2565b600b80546001600160a01b0319166001600160a01b03929092169190911790556123d1565b600b80546001600160a01b0319166001600160a01b0383161790555b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610f91923092910416600019612908565b6013546001600160a01b0316331461247f5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b6001600160a01b0381166124d55760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610af9565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6013546001600160a01b0316331461253f5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b601154610100900460ff16156125975760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610af9565b6013546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156125d0573d6000803e3d6000fd5b50565b6013546001600160a01b0316331461261b5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b82846126296012600a613ab3565b61263790633b9aca00613ac2565b6126419190613ac2565b61264b9190613b36565b600d55808261265c6012600a613ab3565b61266a90633b9aca00613ac2565b6126749190613ac2565b61267e9190613b36565b600e819055600d5411156126de5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610af9565b600b546001600160a01b031660009081526020819052604090205461271090612708906096613ac2565b6127129190613b36565b600e54111561276f5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610af9565b620f424061277f6012600a613ab3565b61278d90633b9aca00613ac2565b6127979190613b36565b600e5410156127ff5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610af9565b620f424061280f6012600a613ab3565b61281d90633b9aca00613ac2565b6128279190613b36565b600d54101561288f5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610af9565b50505050565b6013546001600160a01b031633146128dd5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166129545760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610af9565b6001600160a01b0382166129a05760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610af9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612a675760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610af9565b6001600160a01b038316612ac95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610af9565b60008211612b2b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610af9565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612b595760019250612b87565b6001600160a01b03861660009081526001602052604090205460ff1615612b835760019150612b87565b5060015b612b918787613048565b15612c925760115460ff16612c925780612bed5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610af9565b6001600160a01b03871660009081526005602052604090205460ff16158015612c2f57506001600160a01b03861660009081526005602052604090205460ff16155b15612c925760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610af9565b8115612d7c57600c54600160a01b900460ff16612d7c57600c54600160a81b900460ff168015612cdb57506001600160a01b03861660009081526007602052604090205460ff16155b8015612d0057506001600160a01b03871660009081526007602052604090205460ff16155b15612d7c5730600090815260208190526040902054600d548110612d7a57600e54600f5460ff1615612d6457601054600b546001600160a01b031660009081526020819052604090205461271091612d5791613ac2565b612d619190613b36565b90505b808210612d6f578091505b612d788261315f565b505b505b612d8a878787868686612d95565b979650505050505050565b6000612da18787613048565b15612e3b5760115460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612e24575060408051601f3d908101601f19168201909252612e2191810190613b95565b60015b612e2d57600080fd5b905080612e3957600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612e7d57506001600160a01b03871660009081526006602052604090205460ff165b15612e86575060005b6001600160a01b03881660009081526020819052604081208054889290612eae908490613ad9565b909155506000905081612ec15786612ecd565b612ecd898888886133a3565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612f039190613b23565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f4f91815260200190565b60405180910390a3601154610100900460ff1661303957612f7089896134b8565b601154610100900460ff16158015612f8d5750612f8d8989613048565b8015612fb257506001600160a01b03891660009081526005602052604090205460ff16155b8015612fd757506001600160a01b03881660009081526005602052604090205460ff16155b8015612fe1575083155b156130395760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610af9565b50600198975050505050505050565b6013546000906001600160a01b0384811691161480159061307757506013546001600160a01b03838116911614155b801561308e57506013546001600160a01b03163214155b80156130b357506001600160a01b03821660009081526004602052604090205460ff16155b80156130d857506001600160a01b03831660009081526004602052604090205460ff16155b80156130ef57506001600160a01b03821661dead14155b801561310357506001600160a01b03821615155b801561311857506001600160a01b0383163014155b801561313857506011546001600160a01b03848116620100009092041614155b801561315857506011546001600160a01b03838116620100009092041614155b9392505050565b600c805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902054600019146131d557306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061320a5761320a613aec565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561327d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a19190613bb2565b816001815181106132b4576132b4613aec565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac94790613301908590600090869030904290600401613bcf565b600060405180830381600087803b15801561331b57600080fd5b505af192505050801561332c575060015b6133365750613393565b600c546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114613388576040519150601f19603f3d011682016040523d82523d6000602084013e61338d565b606091505b50505050505b50600c805460ff60a01b19169055565b60008083156133b9575060095461ffff166133e3565b82156133d2575060095462010000900461ffff166133e3565b50600954640100000000900461ffff165b806000036133f45784915050610dd9565b6011546201000090046001600160a01b03163014801561341e5750466001148061341e5750466038145b1561342857506111945b60006127106134378388613ac2565b6134419190613b36565b905080156134ae573060009081526020819052604081208054839290613468908490613b23565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612d8a8187613ad9565b601154610100900460ff161561351c5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610af9565b6135268282613048565b1580156135405750600b546001600160a01b038281169116145b15610ccf576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556011805461ff0019166101001790819055620100009004166135b8576011805462010000600160b01b0319163062010000021790555b600c805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200161202a565b80151581146125d057600080fd5b6000806040838503121561361d57600080fd5b8235613628816135fc565b91506020830135613638816135fc565b809150509250929050565b600060208083528351808285015260005b8181101561367057858101830151858201604001528201613654565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146125d057600080fd5b600080604083850312156136b957600080fd5b82356136c481613691565b946020939093013593505050565b6000602082840312156136e457600080fd5b813561315881613691565b6000806040838503121561370257600080fd5b823561370d81613691565b9150602083013561363881613691565b60008060006060848603121561373257600080fd5b833561373d81613691565b9250602084013561374d81613691565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561379d5761379d61375e565b604052919050565b600067ffffffffffffffff8211156137bf576137bf61375e565b5060051b60200190565b600082601f8301126137da57600080fd5b813560206137ef6137ea836137a5565b613774565b82815260059290921b8401810191818101908684111561380e57600080fd5b8286015b848110156138295780358352918301918301613812565b509695505050505050565b6000806040838503121561384757600080fd5b823567ffffffffffffffff8082111561385f57600080fd5b818501915085601f83011261387357600080fd5b813560206138836137ea836137a5565b82815260059290921b840181019181810190898411156138a257600080fd5b948201945b838610156138c95785356138ba81613691565b825294820194908201906138a7565b965050860135925050808211156138df57600080fd5b506138ec858286016137c9565b9150509250929050565b803561ffff8116811461390857600080fd5b919050565b60008060006060848603121561392257600080fd5b61392b846138f6565b9250613939602085016138f6565b9150613947604085016138f6565b90509250925092565b60006020828403121561396257600080fd5b5035919050565b6000806040838503121561397c57600080fd5b823561362881613691565b6000806000806080858703121561399d57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613a0a5781600019048211156139f0576139f06139b9565b808516156139fd57918102915b93841c93908002906139d4565b509250929050565b600082613a2157506001610b84565b81613a2e57506000610b84565b8160018114613a445760028114613a4e57613a6a565b6001915050610b84565b60ff841115613a5f57613a5f6139b9565b50506001821b610b84565b5060208310610133831016604e8410600b8410161715613a8d575081810a610b84565b613a9783836139cf565b8060001904821115613aab57613aab6139b9565b029392505050565b600061315860ff841683613a12565b8082028115828204841417610b8457610b846139b9565b81810381811115610b8457610b846139b9565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613b1957613b196139b9565b6001019392505050565b80820180821115610b8457610b846139b9565b600082613b5357634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215613b6b57600080fd5b505080516020909101519092909150565b600060208284031215613b8e57600080fd5b5051919050565b600060208284031215613ba757600080fd5b8151613158816135fc565b600060208284031215613bc457600080fd5b815161315881613691565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613c1f5784516001600160a01b031683529383019391830191600101613bfa565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220078546c9723d681686ae72170262a3880c800376a3f535a653850e740adeb05b64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c8063570ca735116101c6578063a9059cbb116100f7578063dd62ed3e11610095578063ee5d9c2d1161006f578063ee5d9c2d14610a3f578063fb78680d14610a54578063fdb78c0e14610a74578063feadde9c14610a9557600080fd5b8063dd62ed3e146109b9578063eafb5a3c146109ff578063eb50e70e14610a1f57600080fd5b8063b3ab15fb116100d1578063b3ab15fb1461095f578063b3d514fb146105e1578063b7df8b361461097f578063bfc2fc351461099957600080fd5b8063a9059cbb1461091f578063ab558e4d1461093f578063b1b08f71146105e157600080fd5b806378648edf11610164578063893d20e81161013e578063893d20e8146108a65780638a63bd9b146108c45780638a8c523c146108d957806395d89b41146108ee57600080fd5b806378648edf1461085157806380c581d11461086657806381cf58a91461088657600080fd5b80635c24b074116101a05780635c24b074146107c657806370a08231146107e6578063715018a61461081c57806375f0a8741461083157600080fd5b8063570ca73514610770578063590ffdce146107905780635a6f0918146107b057600080fd5b80632b112e49116102a0578063452ed4f11161023e5780634e718e48116102185780634e718e48146106d85780634fb2e45d146106f85780634fbee1931461071857806350a8e0161461075157600080fd5b8063452ed4f11461067e5780634ada218b1461069e5780634bbb93eb146106b857600080fd5b8063313ce5671161027a578063313ce5671461060d57806332cde6641461062957806333251a0b1461064957806339a059021461066957600080fd5b80632b112e49146105cc5780632b28fc7a146105e15780632e8fa821146105f757600080fd5b8063095ea7b31161030d57806318160ddd116102e757806318160ddd1461056157806323b872dd146105765780632610eaca1461059657806328577751146105b657600080fd5b8063095ea7b3146104e85780630dcbcf1c1461050857806313b4a7f41461054157600080fd5b8063069d955f11610349578063069d955f146103f457806306fdde031461044a5780630758d9241461049957806307dd79e0146104be57600080fd5b806303fd2a451461037b5780630445b667146103ae578063044df726146103d257600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039161dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103c4600d5481565b6040519081526020016103a5565b3480156103de57600080fd5b506103f26103ed36600461360a565b610ab5565b005b34801561040057600080fd5b506009546104259061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103a5565b34801561045657600080fd5b5060408051808201909152601281527f57616c6c205374726565742057616c6c6574000000000000000000000000000060208201525b6040516103a59190613643565b3480156104a557600080fd5b50600a546103919061010090046001600160a01b031681565b3480156104ca57600080fd5b50600a546104d89060ff1681565b60405190151581526020016103a5565b3480156104f457600080fd5b506104d86105033660046136a6565b610b73565b34801561051457600080fd5b506104d86105233660046136d2565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561054d57600080fd5b506103f261055c3660046136ef565b610b8a565b34801561056d57600080fd5b506103c4610d48565b34801561058257600080fd5b506104d861059136600461371d565b610d69565b3480156105a257600080fd5b506103f26105b1366004613834565b610de1565b3480156105c257600080fd5b506103c460105481565b3480156105d857600080fd5b506103c4610f96565b3480156105ed57600080fd5b506103c461032081565b34801561060357600080fd5b506103c4600e5481565b34801561061957600080fd5b50604051601281526020016103a5565b34801561063557600080fd5b506103f261064436600461390d565b611014565b34801561065557600080fd5b506103f26106643660046136d2565b611168565b34801561067557600080fd5b506103f2611219565b34801561068a57600080fd5b50600b54610391906001600160a01b031681565b3480156106aa57600080fd5b506011546104d89060ff1681565b3480156106c457600080fd5b506103c46106d3366004613950565b6112a0565b3480156106e457600080fd5b506103f26106f3366004613950565b6112d4565b34801561070457600080fd5b506103f26107133660046136d2565b611372565b34801561072457600080fd5b506104d86107333660046136d2565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561075d57600080fd5b506011546104d890610100900460ff1681565b34801561077c57600080fd5b50601554610391906001600160a01b031681565b34801561079c57600080fd5b506103f26107ab366004613969565b611574565b3480156107bc57600080fd5b506103c460125481565b3480156107d257600080fd5b506103f26107e13660046136d2565b6115e7565b3480156107f257600080fd5b506103c46108013660046136d2565b6001600160a01b031660009081526020819052604090205490565b34801561082857600080fd5b506103f26116c1565b34801561083d57600080fd5b50600c54610391906001600160a01b031681565b34801561085d57600080fd5b506103f26117e6565b34801561087257600080fd5b506103f2610881366004613969565b61183d565b34801561089257600080fd5b50601454610391906001600160a01b031681565b3480156108b257600080fd5b506013546001600160a01b0316610391565b3480156108d057600080fd5b506104d8611a27565b3480156108e557600080fd5b506103f2611a97565b3480156108fa57600080fd5b5060408051808201909152600881526715d4d5d05313115560c21b602082015261048c565b34801561092b57600080fd5b506104d861093a3660046136a6565b611ced565b34801561094b57600080fd5b506103f261095a3660046136d2565b611d04565b34801561096b57600080fd5b506103f261097a3660046136d2565b611e9e565b34801561098b57600080fd5b50600f546104d89060ff1681565b3480156109a557600080fd5b506103f26109b436600461360a565b611f8b565b3480156109c557600080fd5b506103c46109d43660046136ef565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a0b57600080fd5b506103f2610a1a3660046136d2565b612036565b348015610a2b57600080fd5b506103f2610a3a3660046136d2565b612437565b348015610a4b57600080fd5b506103f26124f7565b348015610a6057600080fd5b506103f2610a6f366004613987565b6125d3565b348015610a8057600080fd5b50600c546104d890600160a81b900460ff1681565b348015610aa157600080fd5b506103f2610ab0366004613969565b612895565b6013546001600160a01b03163314610b025760405162461bcd60e51b81526020600482015260116024820152600080516020613c4183398151915260448201526064015b60405180910390fd5b60115460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505050565b6000610b80338484612908565b5060015b92915050565b6013546001600160a01b03163314610bd25760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b60085460ff16610be157600080fd5b6001600160a01b0382163014801590610c0357506001600160a01b0381163014155b8015610c1d5750600b546001600160a01b03838116911614155b8015610c375750600b546001600160a01b03828116911614155b610c715760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610af9565b806001600160a01b0316826001600160a01b031603610cd3576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560079093529220805490911682179055610ccf908290611574565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526007909252808320805486168317905592825291902080549092168117909155610d3d908390611574565b610ccf816001611574565b6000610d566012600a613ab3565b610d6490633b9aca00613ac2565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610dce576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610dc8908490613ad9565b90915550505b610dd9848484612a01565b949350505050565b6013546001600160a01b03163314610e295760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b8051825114610e7a5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610af9565b60005b82518161ffff161015610f9157610e966012600a613ab3565b828261ffff1681518110610eac57610eac613aec565b6020026020010151610ebe9190613ac2565b336000908152602081905260409020541015610f1c5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610af9565b610f7e33848361ffff1681518110610f3657610f36613aec565b60200260200101516012600a610f4c9190613ab3565b858561ffff1681518110610f6257610f62613aec565b6020026020010151610f749190613ac2565b6000806001612d95565b5080610f8981613b02565b915050610e7d565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610ff09190613b23565b610ffc6012600a613ab3565b61100a90633b9aca00613ac2565b610d649190613ad9565b6013546001600160a01b0316331461105c5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b600a5460ff16156110af5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610af9565b6103208361ffff16111580156110cb57506103208261ffff1611155b80156110dd57506103208161ffff1611155b6111295760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610af9565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6013546001600160a01b031633146111b05760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b6011546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b1580156111fe57600080fd5b505af1158015611212573d6000803e3d6000fd5b5050505050565b6014546001600160a01b031633146112845760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610af9565b61128e6000611e9e565b601480546001600160a01b0319169055565b600b546001600160a01b0316600090815260208190526040812054612710906112ca908490613ac2565b610b849190613b36565b6013546001600160a01b0316331461131c5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b609681111561136d5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610af9565b601055565b6013546001600160a01b031633146113ba5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b6001600160a01b0381166114365760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610af9565b61deac196001600160a01b038216016114b75760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610af9565b6013546114ce906001600160a01b03166000611574565b6114d9816001611574565b6013546001600160a01b031660009081526020819052604090205415611522576013546001600160a01b031660008181526020819052604090205461152091908390610f74565b505b601380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6013546001600160a01b031633146115bc5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6013546001600160a01b0316331461162f5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b60115460ff161561163f57600080fd5b306001600160a01b038216036116975760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610af9565b601180546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6013546001600160a01b031633146117095760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b60115460ff166117815760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610af9565b601354611798906001600160a01b03166000611574565b601380546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6013546001600160a01b0316331461182e5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b600a805460ff19166001179055565b6013546001600160a01b031633146118855760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b806118f8576001600160a01b03828116600081815260016020526040808220805460ff1916905560115490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610b5757600080fd5b6002541561195f576203f480600254426119129190613ad9565b1161195f5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610af9565b6001600160a01b03821660009081526001602052604090205460ff16156119c85760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610af9565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560115491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610b3d565b6013546000906001600160a01b03163314611a725760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b600a54611a9190309061010090046001600160a01b0316600019612908565b50600190565b6013546001600160a01b03163314611adf5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b60115460ff1615611b325760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610af9565b601154610100900460ff16611b895760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610af9565b6011546201000090046001600160a01b0316611bb9576011805462010000600160b01b0319163062010000021790555b601154600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c2b57600080fd5b505af1925050508015611c3c575060015b50601154600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611cbf575060408051601f3d908101601f19168201909252611cbc91810190613b58565b60015b15611cce57600d91909155600e555b6011805460ff1990811660011790915560088054909116905542601255565b6000611cfa338484612a01565b5060019392505050565b6013546001600160a01b03163314611d4c5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b601154610100900460ff1615611db457306001600160a01b03821603611db45760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610af9565b6013546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2f9190613b7c565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f919190613b95565b6014546001600160a01b03163314611f095760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610af9565b6015546001600160a01b03168015611f46576001600160a01b0381166000908152600460205260408120805460ff19169055611f46908290611574565b601580546001600160a01b0319166001600160a01b0384169081179091556000908152600460205260409020805460ff19166001908117909155610ccf908390611574565b6013546001600160a01b03163314611fd35760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b600c805460ff60a81b1916600160a81b84151590810291909117909155600f805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6013546001600160a01b0316331461207e5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b601154610100900460ff16156120d65760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610af9565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561211b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213f9190613bb2565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561218c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b09190613bb2565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156121fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221f9190613bb2565b600b546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166123b557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561228a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ae9190613bb2565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231f9190613bb2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561236c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123909190613bb2565b600b80546001600160a01b0319166001600160a01b03929092169190911790556123d1565b600b80546001600160a01b0319166001600160a01b0383161790555b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610f91923092910416600019612908565b6013546001600160a01b0316331461247f5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b6001600160a01b0381166124d55760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610af9565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6013546001600160a01b0316331461253f5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b601154610100900460ff16156125975760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610af9565b6013546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156125d0573d6000803e3d6000fd5b50565b6013546001600160a01b0316331461261b5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b82846126296012600a613ab3565b61263790633b9aca00613ac2565b6126419190613ac2565b61264b9190613b36565b600d55808261265c6012600a613ab3565b61266a90633b9aca00613ac2565b6126749190613ac2565b61267e9190613b36565b600e819055600d5411156126de5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610af9565b600b546001600160a01b031660009081526020819052604090205461271090612708906096613ac2565b6127129190613b36565b600e54111561276f5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610af9565b620f424061277f6012600a613ab3565b61278d90633b9aca00613ac2565b6127979190613b36565b600e5410156127ff5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610af9565b620f424061280f6012600a613ab3565b61281d90633b9aca00613ac2565b6128279190613b36565b600d54101561288f5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610af9565b50505050565b6013546001600160a01b031633146128dd5760405162461bcd60e51b81526020600482015260116024820152600080516020613c418339815191526044820152606401610af9565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166129545760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610af9565b6001600160a01b0382166129a05760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610af9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612a675760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610af9565b6001600160a01b038316612ac95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610af9565b60008211612b2b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610af9565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612b595760019250612b87565b6001600160a01b03861660009081526001602052604090205460ff1615612b835760019150612b87565b5060015b612b918787613048565b15612c925760115460ff16612c925780612bed5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610af9565b6001600160a01b03871660009081526005602052604090205460ff16158015612c2f57506001600160a01b03861660009081526005602052604090205460ff16155b15612c925760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610af9565b8115612d7c57600c54600160a01b900460ff16612d7c57600c54600160a81b900460ff168015612cdb57506001600160a01b03861660009081526007602052604090205460ff16155b8015612d0057506001600160a01b03871660009081526007602052604090205460ff16155b15612d7c5730600090815260208190526040902054600d548110612d7a57600e54600f5460ff1615612d6457601054600b546001600160a01b031660009081526020819052604090205461271091612d5791613ac2565b612d619190613b36565b90505b808210612d6f578091505b612d788261315f565b505b505b612d8a878787868686612d95565b979650505050505050565b6000612da18787613048565b15612e3b5760115460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612e24575060408051601f3d908101601f19168201909252612e2191810190613b95565b60015b612e2d57600080fd5b905080612e3957600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612e7d57506001600160a01b03871660009081526006602052604090205460ff165b15612e86575060005b6001600160a01b03881660009081526020819052604081208054889290612eae908490613ad9565b909155506000905081612ec15786612ecd565b612ecd898888886133a3565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612f039190613b23565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f4f91815260200190565b60405180910390a3601154610100900460ff1661303957612f7089896134b8565b601154610100900460ff16158015612f8d5750612f8d8989613048565b8015612fb257506001600160a01b03891660009081526005602052604090205460ff16155b8015612fd757506001600160a01b03881660009081526005602052604090205460ff16155b8015612fe1575083155b156130395760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610af9565b50600198975050505050505050565b6013546000906001600160a01b0384811691161480159061307757506013546001600160a01b03838116911614155b801561308e57506013546001600160a01b03163214155b80156130b357506001600160a01b03821660009081526004602052604090205460ff16155b80156130d857506001600160a01b03831660009081526004602052604090205460ff16155b80156130ef57506001600160a01b03821661dead14155b801561310357506001600160a01b03821615155b801561311857506001600160a01b0383163014155b801561313857506011546001600160a01b03848116620100009092041614155b801561315857506011546001600160a01b03838116620100009092041614155b9392505050565b600c805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902054600019146131d557306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061320a5761320a613aec565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561327d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a19190613bb2565b816001815181106132b4576132b4613aec565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac94790613301908590600090869030904290600401613bcf565b600060405180830381600087803b15801561331b57600080fd5b505af192505050801561332c575060015b6133365750613393565b600c546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114613388576040519150601f19603f3d011682016040523d82523d6000602084013e61338d565b606091505b50505050505b50600c805460ff60a01b19169055565b60008083156133b9575060095461ffff166133e3565b82156133d2575060095462010000900461ffff166133e3565b50600954640100000000900461ffff165b806000036133f45784915050610dd9565b6011546201000090046001600160a01b03163014801561341e5750466001148061341e5750466038145b1561342857506111945b60006127106134378388613ac2565b6134419190613b36565b905080156134ae573060009081526020819052604081208054839290613468908490613b23565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612d8a8187613ad9565b601154610100900460ff161561351c5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610af9565b6135268282613048565b1580156135405750600b546001600160a01b038281169116145b15610ccf576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556011805461ff0019166101001790819055620100009004166135b8576011805462010000600160b01b0319163062010000021790555b600c805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200161202a565b80151581146125d057600080fd5b6000806040838503121561361d57600080fd5b8235613628816135fc565b91506020830135613638816135fc565b809150509250929050565b600060208083528351808285015260005b8181101561367057858101830151858201604001528201613654565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146125d057600080fd5b600080604083850312156136b957600080fd5b82356136c481613691565b946020939093013593505050565b6000602082840312156136e457600080fd5b813561315881613691565b6000806040838503121561370257600080fd5b823561370d81613691565b9150602083013561363881613691565b60008060006060848603121561373257600080fd5b833561373d81613691565b9250602084013561374d81613691565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561379d5761379d61375e565b604052919050565b600067ffffffffffffffff8211156137bf576137bf61375e565b5060051b60200190565b600082601f8301126137da57600080fd5b813560206137ef6137ea836137a5565b613774565b82815260059290921b8401810191818101908684111561380e57600080fd5b8286015b848110156138295780358352918301918301613812565b509695505050505050565b6000806040838503121561384757600080fd5b823567ffffffffffffffff8082111561385f57600080fd5b818501915085601f83011261387357600080fd5b813560206138836137ea836137a5565b82815260059290921b840181019181810190898411156138a257600080fd5b948201945b838610156138c95785356138ba81613691565b825294820194908201906138a7565b965050860135925050808211156138df57600080fd5b506138ec858286016137c9565b9150509250929050565b803561ffff8116811461390857600080fd5b919050565b60008060006060848603121561392257600080fd5b61392b846138f6565b9250613939602085016138f6565b9150613947604085016138f6565b90509250925092565b60006020828403121561396257600080fd5b5035919050565b6000806040838503121561397c57600080fd5b823561362881613691565b6000806000806080858703121561399d57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613a0a5781600019048211156139f0576139f06139b9565b808516156139fd57918102915b93841c93908002906139d4565b509250929050565b600082613a2157506001610b84565b81613a2e57506000610b84565b8160018114613a445760028114613a4e57613a6a565b6001915050610b84565b60ff841115613a5f57613a5f6139b9565b50506001821b610b84565b5060208310610133831016604e8410600b8410161715613a8d575081810a610b84565b613a9783836139cf565b8060001904821115613aab57613aab6139b9565b029392505050565b600061315860ff841683613a12565b8082028115828204841417610b8457610b846139b9565b81810381811115610b8457610b846139b9565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613b1957613b196139b9565b6001019392505050565b80820180821115610b8457610b846139b9565b600082613b5357634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215613b6b57600080fd5b505080516020909101519092909150565b600060208284031215613b8e57600080fd5b5051919050565b600060208284031215613ba757600080fd5b8151613158816135fc565b600060208284031215613bc457600080fd5b815161315881613691565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613c1f5784516001600160a01b031683529383019391830191600101613bfa565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220078546c9723d681686ae72170262a3880c800376a3f535a653850e740adeb05b64736f6c63430008130033

Deployed Bytecode Sourcemap

4027:21371:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5381:73;;;;;;;;;;;;5412:42;5381:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5381:73:0;;;;;;;;5630:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;5630:28:0;245:177:1;15021:153:0;;;;;;;;;;-1:-1:-1;15021:153:0;;;;;:::i;:::-;;:::i;:::-;;4973:105;;;;;;;;;;-1:-1:-1;4973:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;4973:105:0;931:365:1;11091:80:0;;;;;;;;;;-1:-1:-1;11163:5:0;;;;;;;;;;;;;;;;;11091:80;;;;;;;:::i;5320:26::-;;;;;;;;;;-1:-1:-1;5320:26:0;;;;;;;-1:-1:-1;;;;;5320:26:0;;;5287;;;;;;;;;;-1:-1:-1;5287:26:0;;;;;;;;;;;2267:14:1;;2260:22;2242:41;;2230:2;2215:18;5287:26:0;2102:187:1;11699:161:0;;;;;;;;;;-1:-1:-1;11699:161:0;;;;;:::i;:::-;;:::i;14450:140::-;;;;;;;;;;-1:-1:-1;14450:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14548:34:0;14524:4;14548:34;;;:25;:34;;;;;;;;;14450:140;17432:809;;;;;;;;;;-1:-1:-1;17432:809:0;;;;;:::i;:::-;;:::i;10826:83::-;;;;;;;;;;;;;:::i;12369:306::-;;;;;;;;;;-1:-1:-1;12369:306:0;;;;;:::i;:::-;;:::i;23073:447::-;;;;;;;;;;-1:-1:-1;23073:447:0;;;;;:::i;:::-;;:::i;5738:33::-;;;;;;;;;;;;;;;;14754:141;;;;;;;;;;;;;:::i;5087:41::-;;;;;;;;;;;;5125:3;5087:41;;5665:25;;;;;;;;;;;;;;;;10915:80;;;;;;;;;;-1:-1:-1;10915:80:0;;4784:2;6508:36:1;;6496:2;6481:18;10915:80:0;6366:184:1;15372:453:0;;;;;;;;;;-1:-1:-1;15372:453:0;;;;;:::i;:::-;;:::i;14903:110::-;;;;;;;;;;-1:-1:-1;14903:110:0;;;;;:::i;:::-;;:::i;10209:221::-;;;;;;;;;;;;;:::i;5353:21::-;;;;;;;;;;-1:-1:-1;5353:21:0;;;;-1:-1:-1;;;;;5353:21:0;;;5778:34;;;;;;;;;;-1:-1:-1;5778:34:0;;;;;;;;16032:189;;;;;;;;;;-1:-1:-1;16032:189:0;;;;;:::i;:::-;;:::i;16936:217::-;;;;;;;;;;-1:-1:-1;16936:217:0;;;;;:::i;:::-;;:::i;8516:654::-;;;;;;;;;;-1:-1:-1;8516:654:0;;;;;:::i;:::-;;:::i;14173:127::-;;;;;;;;;;-1:-1:-1;14173:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;14264:28:0;14240:4;14264:28;;;:19;:28;;;;;;;;;14173:127;5819:36;;;;;;;;;;-1:-1:-1;5819:36:0;;;;;;;;;;;9534:23;;;;;;;;;;-1:-1:-1;9534:23:0;;;;-1:-1:-1;;;;;9534:23:0;;;14308:134;;;;;;;;;;-1:-1:-1;14308:134:0;;;;;:::i;:::-;;:::i;5892:26::-;;;;;;;;;;;;;;;;13943:222;;;;;;;;;;-1:-1:-1;13943:222:0;;;;;:::i;:::-;;:::i;11401:117::-;;;;;;;;;;-1:-1:-1;11401:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;11494:16:0;11467:7;11494:16;;;;;;;;;;;;11401:117;9178:310;;;;;;;;;;;;;:::i;5461:92::-;;;;;;;;;;-1:-1:-1;5461:92:0;;;;-1:-1:-1;;;;;5461:92:0;;;15182:182;;;;;;;;;;;;;:::i;13371:564::-;;;;;;;;;;-1:-1:-1;13371:564:0;;;;;:::i;:::-;;:::i;9496:31::-;;;;;;;;;;-1:-1:-1;9496:31:0;;;;-1:-1:-1;;;;;9496:31:0;;;11177:79;;;;;;;;;;-1:-1:-1;11247:6:0;;-1:-1:-1;;;;;11247:6:0;11177:79;;12186:175;;;;;;;;;;;;;:::i;21834:737::-;;;;;;;;;;;;;:::i;11001:84::-;;;;;;;;;;-1:-1:-1;11075:7:0;;;;;;;;;;;;-1:-1:-1;;;11075:7:0;;;;11001:84;;11526:165;;;;;;;;;;-1:-1:-1;11526:165:0;;;;;:::i;:::-;;:::i;22769:296::-;;;;;;;;;;-1:-1:-1;22769:296:0;;;;;:::i;:::-;;:::i;9719:482::-;;;;;;;;;;-1:-1:-1;9719:482:0;;;;;:::i;:::-;;:::i;5697:34::-;;;;;;;;;;-1:-1:-1;5697:34:0;;;;;;;;17161:263;;;;;;;;;;-1:-1:-1;17161:263:0;;;;;:::i;:::-;;:::i;11262:133::-;;;;;;;;;;-1:-1:-1;11262:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11364:19:0;;;11346:7;11364:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11262:133;12683:680;;;;;;;;;;-1:-1:-1;12683:680:0;;;;;:::i;:::-;;:::i;15833:191::-;;;;;;;;;;-1:-1:-1;15833:191:0;;;;;:::i;:::-;;:::i;22579:182::-;;;;;;;;;;;;;:::i;16229:699::-;;;;;;;;;;-1:-1:-1;16229:699:0;;;;;:::i;:::-;;:::i;5584:39::-;;;;;;;;;;-1:-1:-1;5584:39:0;;;;-1:-1:-1;;;5584:39:0;;;;;;14598:148;;;;;;;;;;-1:-1:-1;14598:148:0;;;;;:::i;:::-;;:::i;15021:153::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;;;;;;;;;15116:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;15116:50:0;;9054:14:1;;9047:22;15116:50:0::1;::::0;::::1;9029:41:1::0;9113:14;;9106:22;9086:18;;;9079:50;15116:11:0;;;::::1;-1:-1:-1::0;;;;;15116:11:0::1;::::0;:26:::1;::::0;9002:18:1;;15116:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15021:153:::0;;:::o;11699:161::-;11776:4;11793:37;11802:10;11814:7;11823:6;11793:8;:37::i;:::-;-1:-1:-1;11848:4:0;11699:161;;;;;:::o;17432:809::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;17536:23:::1;::::0;::::1;;17528:32;;;::::0;::::1;;-1:-1:-1::0;;;;;17579:23:0;::::1;17597:4;17579:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;17624:24:0;::::1;17643:4;17624:24;;17579:69;:107;;;;-1:-1:-1::0;17670:6:0::1;::::0;-1:-1:-1;;;;;17670:16:0;;::::1;:6:::0;::::1;:16;;17579:107;:146;;;;-1:-1:-1::0;17708:6:0::1;::::0;-1:-1:-1;;;;;17708:17:0;;::::1;:6:::0;::::1;:17;;17579:146;17571:170;;;::::0;-1:-1:-1;;;17571:170:0;;9342:2:1;17571:170:0::1;::::0;::::1;9324:21:1::0;9381:2;9361:18;;;9354:30;-1:-1:-1;;;9400:18:1;;;9393:41;9451:18;;17571:170:0::1;9140:335:1::0;17571:170:0::1;17766:7;-1:-1:-1::0;;;;;17756:17:0::1;:6;-1:-1:-1::0;;;;;17756:17:0::1;::::0;17752:482:::1;;-1:-1:-1::0;;;;;17790:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;17819:4:::1;-1:-1:-1::0;;17790:33:0;;::::1;::::0;::::1;::::0;;;17838:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;17885:34:::1;::::0;17790:26;;17885:19:::1;:34::i;:::-;17432:809:::0;;:::o;17752:482::-:1;-1:-1:-1::0;;;;;17952:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;17980:4:::1;-1:-1:-1::0;;17952:32:0;;::::1;::::0;::::1;::::0;;;17999:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;18047:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;18093:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;18140:33:::1;::::0;17952:25;;18140:19:::1;:33::i;:::-;18188:34;18208:7;18217:4;18188:19;:34::i;10826:83::-:0;10881:7;4845:13;4784:2;4845;:13;:::i;:::-;4828:30;;4619:13;4828:30;:::i;:::-;10892:14;;10826:83;:::o;12369:306::-;-1:-1:-1;;;;;12490:19:0;;12469:4;12490:19;;;:11;:19;;;;;;;;12510:10;12490:31;;;;;;;;-1:-1:-1;;12490:52:0;12486:126;;-1:-1:-1;;;;;12559:19:0;;;;;;:11;:19;;;;;;;;12579:10;12559:31;;;;;;;:41;;12594:6;;12559:19;:41;;12594:6;;12559:41;:::i;:::-;;;;-1:-1:-1;;12486:126:0;12631:36;12641:6;12649:9;12660:6;12631:9;:36::i;:::-;12624:43;12369:306;-1:-1:-1;;;;12369:306:0:o;23073:447::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;23208:7:::1;:14;23189:8;:15;:33;23181:67;;;::::0;-1:-1:-1;;;23181:67:0;;11503:2:1;23181:67:0::1;::::0;::::1;11485:21:1::0;11542:2;11522:18;;;11515:30;11581:23;11561:18;;;11554:51;11622:18;;23181:67:0::1;11301:345:1::0;23181:67:0::1;23264:8;23259:254;23282:8;:15;23278:1;:19;;;23259:254;;;23363:13;4784:2;23363;:13;:::i;:::-;23352:7;23360:1;23352:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23337:10;11467:7:::0;11494:16;;;;;;;;;;;23327:49:::1;;23319:80;;;::::0;-1:-1:-1;;;23319:80:0;;11985:2:1;23319:80:0::1;::::0;::::1;11967:21:1::0;12024:2;12004:18;;;11997:30;12063:20;12043:18;;;12036:48;12101:18;;23319:80:0::1;11783:342:1::0;23319:80:0::1;23414:87;23431:10;23443:8;23452:1;23443:11;;;;;;;;;;:::i;:::-;;;;;;;4784:2;23467;:13;;;;:::i;:::-;23456:7;23464:1;23456:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23482:5;23489::::0;23496:4:::1;23414:16;:87::i;:::-;-1:-1:-1::0;23299:3:0;::::1;::::0;::::1;:::i;:::-;;;;23259:254;;;;23073:447:::0;;:::o;14754:141::-;14807:7;11494:16;;;;;;5412:42;11494:16;;;;14846:39;;11494:16;14846:39;:::i;:::-;4845:13;4784:2;4845;:13;:::i;:::-;4828:30;;4619:13;4828:30;:::i;:::-;14835:51;;;;:::i;15372:453::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;15480:14:::1;::::0;::::1;;15479:15;15471:45;;;::::0;-1:-1:-1;;;15471:45:0;;12664:2:1;15471:45:0::1;::::0;::::1;12646:21:1::0;12703:2;12683:18;;;12676:30;12742:19;12722:18;;;12715:47;12779:18;;15471:45:0::1;12462:341:1::0;15471:45:0::1;5125:3;15535:6;:21;;;;:65;;;;;5174:3;15577:7;:23;;;;15535:65;:117;;;;;5227:3;15621:11;:31;;;;15535:117;15527:170;;;::::0;-1:-1:-1;;;15527:170:0;;13010:2:1;15527:170:0::1;::::0;::::1;12992:21:1::0;13049:2;13029:18;;;13022:30;13088:25;13068:18;;;13061:53;13131:18;;15527:170:0::1;12808:347:1::0;15527:170:0::1;15708:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;15744:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;15782:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;15372:453::o;14903:110::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;14972:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;14972:33:0;;-1:-1:-1;;;;;178:55:1;;;14972:33:0::1;::::0;::::1;160:74:1::0;14972:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;14972:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14903:110:::0;:::o;10209:221::-;10287:16;;-1:-1:-1;;;;;10287:16:0;10273:10;:30;10265:83;;;;-1:-1:-1;;;10265:83:0;;13362:2:1;10265:83:0;;;13344:21:1;13401:2;13381:18;;;13374:30;13440:34;13420:18;;;13413:62;-1:-1:-1;;;13491:18:1;;;13484:38;13539:19;;10265:83:0;13160:404:1;10265:83:0;10359:23;10379:1;10359:11;:23::i;:::-;10393:16;:29;;-1:-1:-1;;;;;;10393:29:0;;;10209:221::o;16032:189::-;16161:6;;-1:-1:-1;;;;;16161:6:0;16123:7;11494:16;;;;;;;;;;;5273:5;;16151:41;;16171:21;;16151:41;:::i;:::-;16150:62;;;;:::i;16936:217::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;17066:3:::1;17040:22;:29;;17032:64;;;::::0;-1:-1:-1;;;17032:64:0;;13993:2:1;17032:64:0::1;::::0;::::1;13975:21:1::0;14032:2;14012:18;;;14005:30;14071:24;14051:18;;;14044:52;14113:18;;17032:64:0::1;13791:346:1::0;17032:64:0::1;17107:13;:38:::0;16936:217::o;8516:654::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;-1:-1:-1;;;;;8595:22:0;::::1;8587:96;;;::::0;-1:-1:-1;;;8587:96:0;;14344:2:1;8587:96:0::1;::::0;::::1;14326:21:1::0;14383:2;14363:18;;;14356:30;14422:34;14402:18;;;14395:62;14493:31;14473:18;;;14466:59;14542:19;;8587:96:0::1;14142:425:1::0;8587:96:0::1;-1:-1:-1::0;;;;;;;8702:16:0;::::1;::::0;8694:90:::1;;;::::0;-1:-1:-1;;;8694:90:0;;14344:2:1;8694:90:0::1;::::0;::::1;14326:21:1::0;14383:2;14363:18;;;14356:30;14422:34;14402:18;;;14395:62;14493:31;14473:18;;;14466:59;14542:19;;8694:90:0::1;14142:425:1::0;8694:90:0::1;8815:6;::::0;8795:34:::1;::::0;-1:-1:-1;;;;;8815:6:0::1;;8795:19;:34::i;:::-;8840:35;8860:8;8870:4;8840:19;:35::i;:::-;8910:6;::::0;-1:-1:-1;;;;;8910:6:0::1;8920:1;11494:16:::0;;;;;;;;;;;8900:21;8896:127:::1;;8955:6;::::0;-1:-1:-1;;;;;8955:6:0::1;11467:7:::0;11494:16;;;;;;;;;;;8938:73:::1;::::0;8955:6;8963:8;;8973:17:::1;11401:117:::0;8938:73:::1;;8896:127;9062:6;::::0;;-1:-1:-1;;;;;9079:17:0;;::::1;-1:-1:-1::0;;;;;;9079:17:0;::::1;::::0;::::1;::::0;;;9112:40:::1;::::0;9062:6;::::1;::::0;9079:17;9062:6;;9112:40:::1;::::0;9043:16:::1;::::0;9112:40:::1;8576:594;8516:654:::0;:::o;14308:134::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;-1:-1:-1;;;;;14396:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14396:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14308:134::o;13943:222::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;14027:14:::1;::::0;::::1;;14026:15;14018:24;;;::::0;::::1;;14084:4;-1:-1:-1::0;;;;;14061:28:0;::::1;::::0;14053:55:::1;;;::::0;-1:-1:-1;;;14053:55:0;;14774:2:1;14053:55:0::1;::::0;::::1;14756:21:1::0;14813:2;14793:18;;;14786:30;14852:16;14832:18;;;14825:44;14886:18;;14053:55:0::1;14572:338:1::0;14053:55:0::1;14119:11;:38:::0;;-1:-1:-1;;;;;14119:38:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;14119:38:0;;::::1;::::0;;;::::1;::::0;;13943:222::o;9178:310::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;9245:14:::1;::::0;::::1;;9237:74;;;::::0;-1:-1:-1;;;9237:74:0;;15117:2:1;9237:74:0::1;::::0;::::1;15099:21:1::0;15156:2;15136:18;;;15129:30;15195:34;15175:18;;;15168:62;15266:17;15246:18;;;15239:45;15301:19;;9237:74:0::1;14915:411:1::0;9237:74:0::1;9342:6;::::0;9322:34:::1;::::0;-1:-1:-1;;;;;9342:6:0::1;;9322:19;:34::i;:::-;9386:6;::::0;;-1:-1:-1;;;;;;9403:19:0;::::1;::::0;;;9438:42:::1;::::0;-1:-1:-1;;;;;9386:6:0;;::::1;::::0;9367:16:::1;::::0;9386:6;;9438:42:::1;::::0;9367:16;;9438:42:::1;9226:262;9178:310::o:0;15182:182::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;15335:14:::1;:21:::0;;-1:-1:-1;;15335:21:0::1;15352:4;15335:21;::::0;;15182:182::o;13371:564::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;13453:7:::1;13448:480;;-1:-1:-1::0;;;;;13477:13:0;;::::1;13493:5;13477:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;13477:21:0::1;::::0;;13513:11:::1;::::0;:34;;-1:-1:-1;;;13513:34:0;;::::1;::::0;::::1;15499:74:1::0;;;;15589:18;;;15582:50;;;;13513:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15472:18:1;;13513:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;13448:480;13584:17;::::0;:22;13580:135:::1;;13673:6;13653:17;;13635:15;:35;;;;:::i;:::-;:44;13627:72;;;::::0;-1:-1:-1;;;13627:72:0;;15845:2:1;13627:72:0::1;::::0;::::1;15827:21:1::0;15884:2;15864:18;;;15857:30;15923:17;15903:18;;;15896:45;15958:18;;13627:72:0::1;15643:339:1::0;13627:72:0::1;-1:-1:-1::0;;;;;13738:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;13737:14;13729:54;;;::::0;-1:-1:-1;;;13729:54:0;;16189:2:1;13729:54:0::1;::::0;::::1;16171:21:1::0;16228:2;16208:18;;;16201:30;16267:29;16247:18;;;16240:57;16314:18;;13729:54:0::1;15987:351:1::0;13729:54:0::1;-1:-1:-1::0;;;;;13798:13:0;;::::1;;::::0;;;13814:4:::1;13798:13;::::0;;;;;;;;:20;;-1:-1:-1;;13798:20:0::1;::::0;::::1;::::0;;13853:15:::1;13833:17;:35:::0;13883:11:::1;::::0;:33;;-1:-1:-1;;;13883:33:0;;::::1;::::0;::::1;15499:74:1::0;;;;15589:18;;;15582:50;13883:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15472:18:1;;13883:33:0::1;15331:307:1::0;12186:175:0;8370:6;;12252:4;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;12301:9:::1;::::0;12269:62:::1;::::0;12286:4:::1;::::0;12301:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12301:9:0::1;-1:-1:-1::0;;12269:8:0::1;:62::i;:::-;-1:-1:-1::0;12349:4:0::1;12186:175:::0;:::o;21834:737::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;21896:14:::1;::::0;::::1;;21895:15;21887:52;;;::::0;-1:-1:-1;;;21887:52:0;;16545:2:1;21887:52:0::1;::::0;::::1;16527:21:1::0;16584:2;16564:18;;;16557:30;16623:26;16603:18;;;16596:54;16667:18;;21887:52:0::1;16343:348:1::0;21887:52:0::1;21958:16;::::0;::::1;::::0;::::1;;;21950:53;;;::::0;-1:-1:-1;;;21950:53:0;;16898:2:1;21950:53:0::1;::::0;::::1;16880:21:1::0;16937:2;16917:18;;;16910:30;16976:26;16956:18;;;16949:54;17020:18;;21950:53:0::1;16696:348:1::0;21950:53:0::1;22026:11;::::0;;;::::1;-1:-1:-1::0;;;;;22026:11:0::1;22014:106;;22068:11;:40:::0;;-1:-1:-1;;;;;;22068:40:0::1;22102:4;22068:40:::0;::::1;;::::0;;22014:106:::1;22134:11;::::0;22156:6:::1;::::0;22134:87:::1;::::0;-1:-1:-1;;;22134:87:0;;-1:-1:-1;;;;;22156:6:0;;::::1;22134:87;::::0;::::1;17272:74:1::0;17394:10;22171:12:0::1;17382:23:1::0;17362:18;;;17355:51;17454:18;22193:15:0::1;17442:31:1::0;17422:18;;;17415:59;4784:2:0::1;17490:18:1::0;;;17483:45;22134:11:0;;;::::1;;::::0;:21:::1;::::0;17244:19:1;;22134:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;22247:11:0::1;::::0;22278:6:::1;::::0;-1:-1:-1;;;;;22278:6:0;;::::1;11467:7:::0;11494:16;;;;;;;;;;;;;22247:39;;-1:-1:-1;;;22247:39:0;;::::1;::::0;::::1;391:25:1::0;;;;22247:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;22247:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;22247:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;22247:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;22243:207:::0;::::1;;22358:13;:29:::0;;;;22402:10:::1;:27:::0;22243:207:::1;22460:14;:21:::0;;-1:-1:-1;;22460:21:0;;::::1;22477:4;22460:21;::::0;;;22492:23:::1;:31:::0;;;;::::1;::::0;;22548:15:::1;22534:11;:29:::0;21834:737::o;11526:165::-;11604:4;11621:40;11631:10;11643:9;11654:6;11621:9;:40::i;:::-;-1:-1:-1;11679:4:0;;11526:165;-1:-1:-1;;;11526:165:0:o;22769:296::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;22847:16:::1;::::0;::::1;::::0;::::1;;;22843:111;;;22905:4;-1:-1:-1::0;;;;;22888:22:0;::::1;::::0;22880:62:::1;;;::::0;-1:-1:-1;;;22880:62:0;;17991:2:1;22880:62:0::1;::::0;::::1;17973:21:1::0;18030:2;18010:18;;;18003:30;18069:29;18049:18;;;18042:57;18116:18;;22880:62:0::1;17789:351:1::0;22880:62:0::1;23018:6;::::0;23026:30:::1;::::0;-1:-1:-1;;;23026:30:0;;23050:4:::1;23026:30;::::0;::::1;160:74:1::0;22986:5:0;;-1:-1:-1;;;;;23003:14:0;;::::1;::::0;::::1;::::0;23018:6;;;::::1;::::0;23003:14;;23026:15:::1;::::0;133:18:1;;23026:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23003:54;::::0;-1:-1:-1;;;;;;23003:54:0::1;::::0;;;;;;-1:-1:-1;;;;;18526:55:1;;;23003:54:0::1;::::0;::::1;18508:74:1::0;18598:18;;;18591:34;18481:18;;23003:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9719:482::-:0;9801:16;;-1:-1:-1;;;;;9801:16:0;9787:10;:30;9779:83;;;;-1:-1:-1;;;9779:83:0;;13362:2:1;9779:83:0;;;13344:21:1;13401:2;13381:18;;;13374:30;13440:34;13420:18;;;13413:62;-1:-1:-1;;;13491:18:1;;;13484:38;13539:19;;9779:83:0;13160:404:1;9779:83:0;9895:8;;-1:-1:-1;;;;;9895:8:0;9918:25;;9914:150;;-1:-1:-1;;;;;9960:30:0;;9993:5;9960:30;;;:17;:30;;;;;:38;;-1:-1:-1;;9960:38:0;;;10013:39;;9978:11;;10013:19;:39::i;:::-;10074:8;:22;;-1:-1:-1;;;;;;10074:22:0;-1:-1:-1;;;;;10074:22:0;;;;;;;;-1:-1:-1;10107:30:0;;;:17;:30;;;;;:37;;-1:-1:-1;;10107:37:0;-1:-1:-1;10107:37:0;;;;;;10155:38;;10074:22;;10155:19;:38::i;17161:263::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;17270:19:::1;:33:::0;;-1:-1:-1;;;;17270:33:0::1;-1:-1:-1::0;;;17270:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;17314:22:::1;:47:::0;;-1:-1:-1;;17314:47:0::1;::::0;::::1;;;::::0;;17377:39:::1;::::0;2242:41:1;;;17377:39:0::1;::::0;2230:2:1;2215:18;17377:39:0::1;;;;;;;;17161:263:::0;;:::o;12683:680::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;12763:16:::1;::::0;::::1;::::0;::::1;;;12762:17;12754:60;;;::::0;-1:-1:-1;;;12754:60:0;;19088:2:1;12754:60:0::1;::::0;::::1;19070:21:1::0;19127:2;19107:18;;;19100:30;19166:32;19146:18;;;19139:60;19216:18;;12754:60:0::1;18886:354:1::0;12754:60:0::1;12825:20;12858:9;12825:43;;12879:16;12909:10;-1:-1:-1::0;;;;;12909:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12898:40:0::1;;12947:4;12954:10;-1:-1:-1::0;;;;;12954:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12898:74;::::0;-1:-1:-1;;;;;;12898:74:0::1;::::0;;;;;;-1:-1:-1;;;;;19754:15:1;;;12898:74:0::1;::::0;::::1;19736:34:1::0;19806:15;;19786:18;;;19779:43;19648:18;;12898:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12991:6;::::0;-1:-1:-1;;;;;12991:6:0;;::::1;13001:5;12983:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;12983:23:0::1;::::0;;12879:93;;-1:-1:-1;13021:22:0;::::1;13017:200;;13080:10;-1:-1:-1::0;;;;;13080:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13069:43:0::1;;13121:4;13128:10;-1:-1:-1::0;;;;;13128:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13069:77;::::0;-1:-1:-1;;;;;;13069:77:0::1;::::0;;;;;;-1:-1:-1;;;;;19754:15:1;;;13069:77:0::1;::::0;::::1;19736:34:1::0;19806:15;;19786:18;;;19779:43;19648:18;;13069:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13060:6;:86:::0;;-1:-1:-1;;;;;;13060:86:0::1;-1:-1:-1::0;;;;;13060:86:0;;;::::1;::::0;;;::::1;::::0;;13017:200:::1;;;13188:6;:17:::0;;-1:-1:-1;;;;;;13188:17:0::1;-1:-1:-1::0;;;;;13188:17:0;::::1;;::::0;;13017:200:::1;13227:9;:22:::0;;-1:-1:-1;;13227:22:0::1;;-1:-1:-1::0;;;;;13227:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;13268:6:::1;::::0;;::::1;-1:-1:-1::0;13260:15:0;;;-1:-1:-1;13260:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;13260:22:0::1;::::0;;::::1;::::0;;13325:9;;13293:62:::1;::::0;13310:4:::1;::::0;13325:9;::::1;;-1:-1:-1::0;;13293:8:0::1;:62::i;15833:191::-:0;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;-1:-1:-1;;;;;15918:23:0;::::1;15910:59;;;::::0;-1:-1:-1;;;15910:59:0;;20035:2:1;15910:59:0::1;::::0;::::1;20017:21:1::0;20074:2;20054:18;;;20047:30;20113:25;20093:18;;;20086:53;20156:18;;15910:59:0::1;19833:347:1::0;15910:59:0::1;15980:15;:36:::0;;-1:-1:-1;;;;;;15980:36:0::1;-1:-1:-1::0;;;;;15980:36:0;;;::::1;::::0;;;::::1;::::0;;15833:191::o;22579:182::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;22646:16:::1;::::0;::::1;::::0;::::1;;;22645:17;22637:58;;;::::0;-1:-1:-1;;;22637:58:0;;20387:2:1;22637:58:0::1;::::0;::::1;20369:21:1::0;20426:2;20406:18;;;20399:30;20465;20445:18;;;20438:58;20513:18;;22637:58:0::1;20185:352:1::0;22637:58:0::1;22714:6;::::0;22706:47:::1;::::0;-1:-1:-1;;;;;22714:6:0;;::::1;::::0;22731:21:::1;22706:47:::0;::::1;;;::::0;22714:6:::1;22706:47:::0;22714:6;22706:47;22731:21;22714:6;22706:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22579:182::o:0;16229:699::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;16429:16;16409;4845:13:::1;4784:2;4845;:13;:::i;:::-;4828:30;::::0;4619:13:::1;4828:30;:::i;:::-;16399:26;;;;:::i;:::-;16398:47;;;;:::i;:::-;16382:13;:63:::0;16497:13;16480;4845::::1;4784:2;4845;:13;:::i;:::-;4828:30;::::0;4619:13:::1;4828:30;:::i;:::-;16470:23;;;;:::i;:::-;16469:41;;;;:::i;:::-;16456:10;:54:::0;;;16529:13:::1;::::0;:27:::1;;16521:73;;;::::0;-1:-1:-1;;;16521:73:0;;20744:2:1;16521:73:0::1;::::0;::::1;20726:21:1::0;20783:2;20763:18;;;20756:30;20822:34;20802:18;;;20795:62;-1:-1:-1;;;20873:18:1;;;20866:31;20914:19;;16521:73:0::1;20542:397:1::0;16521:73:0::1;16638:6;::::0;-1:-1:-1;;;;;16638:6:0::1;11467:7:::0;11494:16;;;;;;;;;;;5273:5:::1;::::0;16628:23:::1;::::0;16648:3:::1;16628:23;:::i;:::-;16627:44;;;;:::i;:::-;16613:10;;:58;;16605:106;;;::::0;-1:-1:-1;;;16605:106:0;;21146:2:1;16605:106:0::1;::::0;::::1;21128:21:1::0;21185:2;21165:18;;;21158:30;21224:34;21204:18;;;21197:62;-1:-1:-1;;;21275:18:1;;;21268:33;21318:19;;16605:106:0::1;20944:399:1::0;16605:106:0::1;16754:9;4845:13;4784:2;4845;:13;:::i;:::-;4828:30;::::0;4619:13:::1;4828:30;:::i;:::-;16744:19;;;;:::i;:::-;16730:10;;:33;;16722:92;;;::::0;-1:-1:-1;;;16722:92:0;;21550:2:1;16722:92:0::1;::::0;::::1;21532:21:1::0;21589:2;21569:18;;;21562:30;21628:34;21608:18;;;21601:62;-1:-1:-1;;;21679:18:1;;;21672:44;21733:19;;16722:92:0::1;21348:410:1::0;16722:92:0::1;16860:9;4845:13;4784:2;4845;:13;:::i;:::-;4828:30;::::0;4619:13:::1;4828:30;:::i;:::-;16850:19;;;;:::i;:::-;16833:13;;:36;;16825:95;;;::::0;-1:-1:-1;;;16825:95:0;;21550:2:1;16825:95:0::1;::::0;::::1;21532:21:1::0;21589:2;21569:18;;;21562:30;21628:34;21608:18;;;21601:62;-1:-1:-1;;;21679:18:1;;;21672:44;21733:19;;16825:95:0::1;21348:410:1::0;16825:95:0::1;16229:699:::0;;;;:::o;14598:148::-;8370:6;;-1:-1:-1;;;;;8370:6:0;8380:10;8370:20;8362:50;;;;-1:-1:-1;;;8362:50:0;;8723:2:1;8362:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;8362:50:0;8521:341:1;8362:50:0;-1:-1:-1;;;;;14694:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14694:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14598:148::o;11868:310::-;-1:-1:-1;;;;;11963:20:0;;11955:52;;;;-1:-1:-1;;;11955:52:0;;21965:2:1;11955:52:0;;;21947:21:1;22004:2;21984:18;;;21977:30;-1:-1:-1;;;22023:18:1;;;22016:49;22082:18;;11955:52:0;21763:343:1;11955:52:0;-1:-1:-1;;;;;12026:21:0;;12018:53;;;;-1:-1:-1;;;12018:53:0;;21965:2:1;12018:53:0;;;21947:21:1;22004:2;21984:18;;;21977:30;-1:-1:-1;;;22023:18:1;;;22016:49;22082:18;;12018:53:0;21763:343:1;12018:53:0;-1:-1:-1;;;;;12084:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;12137:33;;391:25:1;;;12137:33:0;;364:18:1;12137:33:0;;;;;;;11868:310;;;:::o;18703:1783::-;18782:4;-1:-1:-1;;;;;18807:18:0;;18799:68;;;;-1:-1:-1;;;18799:68:0;;22313:2:1;18799:68:0;;;22295:21:1;22352:2;22332:18;;;22325:30;22391:34;22371:18;;;22364:62;-1:-1:-1;;;22442:18:1;;;22435:35;22487:19;;18799:68:0;22111:401:1;18799:68:0;-1:-1:-1;;;;;18886:16:0;;18878:64;;;;-1:-1:-1;;;18878:64:0;;22719:2:1;18878:64:0;;;22701:21:1;22758:2;22738:18;;;22731:30;22797:34;22777:18;;;22770:62;-1:-1:-1;;;22848:18:1;;;22841:33;22891:19;;18878:64:0;22517:399:1;18878:64:0;18970:1;18961:6;:10;18953:64;;;;-1:-1:-1;;;18953:64:0;;23123:2:1;18953:64:0;;;23105:21:1;23162:2;23142:18;;;23135:30;23201:34;23181:18;;;23174:62;-1:-1:-1;;;23252:18:1;;;23245:39;23301:19;;18953:64:0;22921:405:1;18953:64:0;-1:-1:-1;;;;;19116:13:0;;19028:8;19116:13;;;:7;:13;;;;;;19028:8;;;;19116:13;;19112:162;;;19152:4;19146:10;;19112:162;;;-1:-1:-1;;;;;19178:11:0;;;;;;:7;:11;;;;;;;;19174:100;;;19213:4;19206:11;;19174:100;;;-1:-1:-1;19258:4:0;19174:100;19288:20;19299:4;19305:2;19288:10;:20::i;:::-;19284:371;;;19329:14;;;;19325:319;;19369:5;19364:265;;19399:34;;-1:-1:-1;;;19399:34:0;;23533:2:1;19399:34:0;;;23515:21:1;23572:2;23552:18;;;23545:30;23611:26;23591:18;;;23584:54;23655:18;;19399:34:0;23331:348:1;19364:265:0;-1:-1:-1;;;;;19464:31:0;;;;;;:25;:31;;;;;;;;19463:32;:66;;;;-1:-1:-1;;;;;;19500:29:0;;;;;;:25;:29;;;;;;;;19499:30;19463:66;19459:170;;;19554:55;;-1:-1:-1;;;19554:55:0;;23886:2:1;19554:55:0;;;23868:21:1;23925:2;23905:18;;;23898:30;23964:34;23944:18;;;23937:62;-1:-1:-1;;;24015:18:1;;;24008:43;24068:19;;19554:55:0;23684:409:1;19459:170:0;19671:4;19667:742;;;19697:6;;-1:-1:-1;;;19697:6:0;;;;19692:706;;19728:19;;-1:-1:-1;;;19728:19:0;;;;:64;;;;-1:-1:-1;;;;;;19772:20:0;;;;;;:16;:20;;;;;;;;19771:21;19728:64;:111;;;;-1:-1:-1;;;;;;19817:22:0;;;;;;:16;:22;;;;;;;;19816:23;19728:111;19724:659;;;19931:4;19882:28;11494:16;;;;;;;;;;;19988:13;;19964:37;;19960:404;;20048:10;;20089:22;;;;20085:97;;;20146:13;;20136:6;;-1:-1:-1;;;;;20136:6:0;11467:7;11494:16;;;;;;;;;;;5273:5;;20126:33;;;:::i;:::-;20125:54;;;;:::i;:::-;20115:64;;20085:97;20236:7;20212:20;:31;20208:72;;20270:7;20247:30;;20208:72;20306:34;20319:20;20306:12;:34::i;:::-;20003:361;19960:404;19859:524;19724:659;20426:52;20443:4;20449:2;20453:6;20461:3;20466:4;20472:5;20426:16;:52::i;:::-;20419:59;18703:1783;-1:-1:-1;;;;;;;18703:1783:0:o;23528:1055::-;23647:4;23668:20;23679:4;23685:2;23668:10;:20::i;:::-;23664:228;;;23723:11;;:39;;-1:-1:-1;;;23723:39:0;;-1:-1:-1;;;;;24379:15:1;;;23723:39:0;;;24361:34:1;24431:15;;;24411:18;;;24404:43;24463:18;;;24456:34;;;23692:12:0;;23723:11;;;;;:21;;24273:18:1;;23723:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;23723:39:0;;;;;;;;-1:-1:-1;;23723:39:0;;;;;;;;;;;;:::i;:::-;;;23719:122;;23830:8;;;23719:122;23813:5;-1:-1:-1;23859:7:0;23855:26;;23870:8;;;23855:26;23690:202;23664:228;-1:-1:-1;;;;;23936:25:0;;23902:12;23936:25;;;:19;:25;;;;;;23917:4;;23936:25;;;:52;;-1:-1:-1;;;;;;23965:23:0;;;;;;:19;:23;;;;;;;;23936:52;23932:99;;;-1:-1:-1;24014:5:0;23932:99;-1:-1:-1;;;;;24041:13:0;;:7;:13;;;;;;;;;;:23;;24058:6;;24041:7;:23;;24058:6;;24041:23;:::i;:::-;;;;-1:-1:-1;24075:22:0;;-1:-1:-1;24101:7:0;24100:55;;24149:6;24100:55;;;24112:34;24122:4;24128:6;24136:3;24141:4;24112:9;:34::i;:::-;24075:80;;24181:14;24166:7;:11;24174:2;-1:-1:-1;;;;;24166:11:0;-1:-1:-1;;;;;24166:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;24226:2;-1:-1:-1;;;;;24211:34:0;24220:4;-1:-1:-1;;;;;24211:34:0;;24230:14;24211:34;;;;391:25:1;;379:2;364:18;;245:177;24211:34:0;;;;;;;;24261:16;;;;;;;24256:298;;24294:28;24313:4;24319:2;24294:18;:28::i;:::-;24342:16;;;;;;;24341:17;:41;;;;;24362:20;24373:4;24379:2;24362:10;:20::i;:::-;24341:77;;;;-1:-1:-1;;;;;;24387:31:0;;;;;;:25;:31;;;;;;;;24386:32;24341:77;:111;;;;-1:-1:-1;;;;;;24423:29:0;;;;;;:25;:29;;;;;;;;24422:30;24341:111;:121;;;;;24457:5;24456:6;24341:121;24337:206;;;24483:44;;-1:-1:-1;;;24483:44:0;;24703:2:1;24483:44:0;;;24685:21:1;24742:2;24722:18;;;24715:30;24781:34;24761:18;;;24754:62;-1:-1:-1;;;24832:18:1;;;24825:32;24874:19;;24483:44:0;24501:398:1;24337:206:0;-1:-1:-1;24571:4:0;;23528:1055;-1:-1:-1;;;;;;;;23528:1055:0:o;18249:446::-;18350:6;;18318:4;;-1:-1:-1;;;;;18342:14:0;;;18350:6;;18342:14;;;;:43;;-1:-1:-1;18379:6:0;;-1:-1:-1;;;;;18373:12:0;;;18379:6;;18373:12;;18342:43;:79;;;;-1:-1:-1;18415:6:0;;-1:-1:-1;;;;;18415:6:0;18402:9;:19;;18342:79;:118;;;;-1:-1:-1;;;;;;18439:21:0;;;;;;:17;:21;;;;;;;;18438:22;18342:118;:159;;;;-1:-1:-1;;;;;;18478:23:0;;;;;;:17;:23;;;;;;;;18477:24;18342:159;:186;;;;-1:-1:-1;;;;;;18518:10:0;;5412:42;18518:10;;18342:186;:219;;;;-1:-1:-1;;;;;;18545:16:0;;;;18342:219;:257;;;;-1:-1:-1;;;;;;18578:21:0;;18594:4;18578:21;;18342:257;:302;;;;-1:-1:-1;18632:11:0;;-1:-1:-1;;;;;18616:28:0;;;18632:11;;;;;18616:28;;18342:302;:345;;;;-1:-1:-1;18675:11:0;;-1:-1:-1;;;;;18661:26:0;;;18675:11;;;;;18661:26;;18342:345;18335:352;18249:446;-1:-1:-1;;;18249:446:0:o;20494:761::-;6083:6;:13;;-1:-1:-1;;;;6083:13:0;-1:-1:-1;;;6083:13:0;;;20601:4:::1;6083:13:::0;20581:26;;;:11:::1;:26;::::0;;;;;;;20616:9:::1;::::0;6083:13;20616:9;::::1;-1:-1:-1::0;;;;;20616:9:0::1;20581:46:::0;;;;;;;;-1:-1:-1;;20581:67:0::1;20577:166;;20685:4;20665:26;::::0;;;:11:::1;:26;::::0;;;;;;;20700:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;20700:9:0::1;20665:46:::0;;;;;;;-1:-1:-1;;20665:66:0;;20577:166:::1;20787:16;::::0;;20801:1:::1;20787:16:::0;;;;;::::1;::::0;;20763:21:::1;::::0;20787:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20787:16:0::1;20763:40;;20832:4;20814;20819:1;20814:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;20814:23:0::1;;;-1:-1:-1::0;;;;;20814:23:0::1;;;::::0;::::1;20858:9;;;;;;;;;-1:-1:-1::0;;;;;20858:9:0::1;-1:-1:-1::0;;;;;20858:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20848:4;20853:1;20848:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20848:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;20891:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;20891:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;20966:20;;21001:1:::1;::::0;21017:4;;21044::::1;::::0;21064:15:::1;::::0;20891:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;20887:246;;21115:7;;;20887:246;21181:15;::::0;:66:::1;::::0;21145:12:::1;::::0;-1:-1:-1;;;;;21181:15:0::1;::::0;21237:5:::1;::::0;21209:21:::1;::::0;21145:12;21181:66;21145:12;21181:66;21209:21;21181:15;21237:5;21181:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6107:1:0::1;-1:-1:-1::0;6119:6:0;:14;;-1:-1:-1;;;;6119:14:0;;;20494:761::o;24591:804::-;24679:7;24699:18;24732:3;24728:205;;;-1:-1:-1;24765:9:0;:16;;;24728:205;;;24803:4;24799:134;;;-1:-1:-1;24837:9:0;:17;;;;;;24799:134;;;-1:-1:-1;24900:9:0;:21;;;;;;24799:134;24947:10;24961:1;24947:15;24943:39;;24973:6;24966:13;;;;;24943:39;25004:11;;;;;-1:-1:-1;;;;;25004:11:0;25028:4;24996:37;:110;;;;;25051:13;25068:1;25051:18;:54;;;;25086:13;25103:2;25086:19;25051:54;24992:138;;;-1:-1:-1;25123:4:0;24992:138;25140:17;5273:5;25160:19;25169:10;25160:6;:19;:::i;:::-;:38;;;;:::i;:::-;25140:58;-1:-1:-1;25213:13:0;;25209:141;;25259:4;25243:7;:22;;;;;;;;;;:35;;25269:9;;25243:7;:35;;25269:9;;25243:35;:::i;:::-;;;;-1:-1:-1;;25298:40:0;;391:25:1;;;25321:4:0;;-1:-1:-1;;;;;25298:40:0;;;;;379:2:1;364:18;25298:40:0;;;;;;;25209:141;25369:18;25378:9;25369:6;:18;:::i;21263:563::-;21346:16;;;;;;;21345:17;21337:65;;;;-1:-1:-1;;;21337:65:0;;26347:2:1;21337:65:0;;;26329:21:1;26386:2;26366:18;;;26359:30;26425:34;26405:18;;;26398:62;-1:-1:-1;;;26476:18:1;;;26469:33;26519:19;;21337:65:0;26145:399:1;21337:65:0;21418:20;21429:4;21435:2;21418:10;:20::i;:::-;21417:21;:37;;;;-1:-1:-1;21448:6:0;;-1:-1:-1;;;;;21442:12:0;;;21448:6;;21442:12;21417:37;21413:406;;;-1:-1:-1;;;;;21471:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;21471:30:0;;;21497:4;21471:30;;;;;;21516:19;:25;;;;;:32;;;;;;;;;;21563:16;:23;;-1:-1:-1;;21563:23:0;21471:30;21563:23;;;;;21613:11;;;;21601:114;;21659:11;:40;;-1:-1:-1;;;;;;21659:40:0;21693:4;21659:40;;;;;21601:114;21729:19;:26;;-1:-1:-1;;;;21729:26:0;-1:-1:-1;;;21729:26:0;;;21775:32;;-1:-1:-1;2242:41:1;;21775:32:0;;2230:2:1;2215:18;21775:32:0;2102:187:1;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:548::-;1413:4;1442:2;1471;1460:9;1453:21;1503:6;1497:13;1546:6;1541:2;1530:9;1526:18;1519:34;1571:1;1581:140;1595:6;1592:1;1589:13;1581:140;;;1690:14;;;1686:23;;1680:30;1656:17;;;1675:2;1652:26;1645:66;1610:10;;1581:140;;;1585:3;1770:1;1765:2;1756:6;1745:9;1741:22;1737:31;1730:42;1840:2;1833;1829:7;1824:2;1816:6;1812:15;1808:29;1797:9;1793:45;1789:54;1781:62;;;;1301:548;;;;:::o;2294:154::-;-1:-1:-1;;;;;2373:5:1;2369:54;2362:5;2359:65;2349:93;;2438:1;2435;2428:12;2453:315;2521:6;2529;2582:2;2570:9;2561:7;2557:23;2553:32;2550:52;;;2598:1;2595;2588:12;2550:52;2637:9;2624:23;2656:31;2681:5;2656:31;:::i;:::-;2706:5;2758:2;2743:18;;;;2730:32;;-1:-1:-1;;;2453:315:1:o;2773:247::-;2832:6;2885:2;2873:9;2864:7;2860:23;2856:32;2853:52;;;2901:1;2898;2891:12;2853:52;2940:9;2927:23;2959:31;2984:5;2959:31;:::i;3025:388::-;3093:6;3101;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;3209:9;3196:23;3228:31;3253:5;3228:31;:::i;:::-;3278:5;-1:-1:-1;3335:2:1;3320:18;;3307:32;3348:33;3307:32;3348:33;:::i;3418:456::-;3495:6;3503;3511;3564:2;3552:9;3543:7;3539:23;3535:32;3532:52;;;3580:1;3577;3570:12;3532:52;3619:9;3606:23;3638:31;3663:5;3638:31;:::i;:::-;3688:5;-1:-1:-1;3745:2:1;3730:18;;3717:32;3758:33;3717:32;3758:33;:::i;:::-;3418:456;;3810:7;;-1:-1:-1;;;3864:2:1;3849:18;;;;3836:32;;3418:456::o;3879:127::-;3940:10;3935:3;3931:20;3928:1;3921:31;3971:4;3968:1;3961:15;3995:4;3992:1;3985:15;4011:275;4082:2;4076:9;4147:2;4128:13;;-1:-1:-1;;4124:27:1;4112:40;;4182:18;4167:34;;4203:22;;;4164:62;4161:88;;;4229:18;;:::i;:::-;4265:2;4258:22;4011:275;;-1:-1:-1;4011:275:1:o;4291:183::-;4351:4;4384:18;4376:6;4373:30;4370:56;;;4406:18;;:::i;:::-;-1:-1:-1;4451:1:1;4447:14;4463:4;4443:25;;4291:183::o;4479:662::-;4533:5;4586:3;4579:4;4571:6;4567:17;4563:27;4553:55;;4604:1;4601;4594:12;4553:55;4640:6;4627:20;4666:4;4690:60;4706:43;4746:2;4706:43;:::i;:::-;4690:60;:::i;:::-;4784:15;;;4870:1;4866:10;;;;4854:23;;4850:32;;;4815:12;;;;4894:15;;;4891:35;;;4922:1;4919;4912:12;4891:35;4958:2;4950:6;4946:15;4970:142;4986:6;4981:3;4978:15;4970:142;;;5052:17;;5040:30;;5090:12;;;;5003;;4970:142;;;-1:-1:-1;5130:5:1;4479:662;-1:-1:-1;;;;;;4479:662:1:o;5146:1215::-;5264:6;5272;5325:2;5313:9;5304:7;5300:23;5296:32;5293:52;;;5341:1;5338;5331:12;5293:52;5381:9;5368:23;5410:18;5451:2;5443:6;5440:14;5437:34;;;5467:1;5464;5457:12;5437:34;5505:6;5494:9;5490:22;5480:32;;5550:7;5543:4;5539:2;5535:13;5531:27;5521:55;;5572:1;5569;5562:12;5521:55;5608:2;5595:16;5630:4;5654:60;5670:43;5710:2;5670:43;:::i;5654:60::-;5748:15;;;5830:1;5826:10;;;;5818:19;;5814:28;;;5779:12;;;;5854:19;;;5851:39;;;5886:1;5883;5876:12;5851:39;5910:11;;;;5930:217;5946:6;5941:3;5938:15;5930:217;;;6026:3;6013:17;6043:31;6068:5;6043:31;:::i;:::-;6087:18;;5963:12;;;;6125;;;;5930:217;;;6166:5;-1:-1:-1;;6209:18:1;;6196:32;;-1:-1:-1;;6240:16:1;;;6237:36;;;6269:1;6266;6259:12;6237:36;;6292:63;6347:7;6336:8;6325:9;6321:24;6292:63;:::i;:::-;6282:73;;;5146:1215;;;;;:::o;6555:159::-;6622:20;;6682:6;6671:18;;6661:29;;6651:57;;6704:1;6701;6694:12;6651:57;6555:159;;;:::o;6719:328::-;6793:6;6801;6809;6862:2;6850:9;6841:7;6837:23;6833:32;6830:52;;;6878:1;6875;6868:12;6830:52;6901:28;6919:9;6901:28;:::i;:::-;6891:38;;6948:37;6981:2;6970:9;6966:18;6948:37;:::i;:::-;6938:47;;7004:37;7037:2;7026:9;7022:18;7004:37;:::i;:::-;6994:47;;6719:328;;;;;:::o;7052:180::-;7111:6;7164:2;7152:9;7143:7;7139:23;7135:32;7132:52;;;7180:1;7177;7170:12;7132:52;-1:-1:-1;7203:23:1;;7052:180;-1:-1:-1;7052:180:1:o;7237:382::-;7302:6;7310;7363:2;7351:9;7342:7;7338:23;7334:32;7331:52;;;7379:1;7376;7369:12;7331:52;7418:9;7405:23;7437:31;7462:5;7437:31;:::i;8131:385::-;8217:6;8225;8233;8241;8294:3;8282:9;8273:7;8269:23;8265:33;8262:53;;;8311:1;8308;8301:12;8262:53;-1:-1:-1;;8334:23:1;;;8404:2;8389:18;;8376:32;;-1:-1:-1;8455:2:1;8440:18;;8427:32;;8506:2;8491:18;8478:32;;-1:-1:-1;8131:385:1;-1:-1:-1;8131:385:1:o;9480:127::-;9541:10;9536:3;9532:20;9529:1;9522:31;9572:4;9569:1;9562:15;9596:4;9593:1;9586:15;9612:422;9701:1;9744:5;9701:1;9758:270;9779:7;9769:8;9766:21;9758:270;;;9838:4;9834:1;9830:6;9826:17;9820:4;9817:27;9814:53;;;9847:18;;:::i;:::-;9897:7;9887:8;9883:22;9880:55;;;9917:16;;;;9880:55;9996:22;;;;9956:15;;;;9758:270;;;9762:3;9612:422;;;;;:::o;10039:806::-;10088:5;10118:8;10108:80;;-1:-1:-1;10159:1:1;10173:5;;10108:80;10207:4;10197:76;;-1:-1:-1;10244:1:1;10258:5;;10197:76;10289:4;10307:1;10302:59;;;;10375:1;10370:130;;;;10282:218;;10302:59;10332:1;10323:10;;10346:5;;;10370:130;10407:3;10397:8;10394:17;10391:43;;;10414:18;;:::i;:::-;-1:-1:-1;;10470:1:1;10456:16;;10485:5;;10282:218;;10584:2;10574:8;10571:16;10565:3;10559:4;10556:13;10552:36;10546:2;10536:8;10533:16;10528:2;10522:4;10519:12;10515:35;10512:77;10509:159;;;-1:-1:-1;10621:19:1;;;10653:5;;10509:159;10700:34;10725:8;10719:4;10700:34;:::i;:::-;10770:6;10766:1;10762:6;10758:19;10749:7;10746:32;10743:58;;;10781:18;;:::i;:::-;10819:20;;10039:806;-1:-1:-1;;;10039:806:1:o;10850:140::-;10908:5;10937:47;10978:4;10968:8;10964:19;10958:4;10937:47;:::i;10995:168::-;11068:9;;;11099;;11116:15;;;11110:22;;11096:37;11086:71;;11137:18;;:::i;11168:128::-;11235:9;;;11256:11;;;11253:37;;;11270:18;;:::i;11651:127::-;11712:10;11707:3;11703:20;11700:1;11693:31;11743:4;11740:1;11733:15;11767:4;11764:1;11757:15;12130:197;12168:3;12196:6;12237:2;12230:5;12226:14;12264:2;12255:7;12252:15;12249:41;;12270:18;;:::i;:::-;12319:1;12306:15;;12130:197;-1:-1:-1;;;12130:197:1:o;12332:125::-;12397:9;;;12418:10;;;12415:36;;;12431:18;;:::i;13569:217::-;13609:1;13635;13625:132;;13679:10;13674:3;13670:20;13667:1;13660:31;13714:4;13711:1;13704:15;13742:4;13739:1;13732:15;13625:132;-1:-1:-1;13771:9:1;;13569:217::o;17539:245::-;17618:6;17626;17679:2;17667:9;17658:7;17654:23;17650:32;17647:52;;;17695:1;17692;17685:12;17647:52;-1:-1:-1;;17718:16:1;;17774:2;17759:18;;;17753:25;17718:16;;17753:25;;-1:-1:-1;17539:245:1:o;18145:184::-;18215:6;18268:2;18256:9;18247:7;18243:23;18239:32;18236:52;;;18284:1;18281;18274:12;18236:52;-1:-1:-1;18307:16:1;;18145:184;-1:-1:-1;18145:184:1:o;18636:245::-;18703:6;18756:2;18744:9;18735:7;18731:23;18727:32;18724:52;;;18772:1;18769;18762:12;18724:52;18804:9;18798:16;18823:28;18845:5;18823:28;:::i;19245:251::-;19315:6;19368:2;19356:9;19347:7;19343:23;19339:32;19336:52;;;19384:1;19381;19374:12;19336:52;19416:9;19410:16;19435:31;19460:5;19435:31;:::i;24904:1026::-;25166:4;25214:3;25203:9;25199:19;25245:6;25234:9;25227:25;25271:2;25309:6;25304:2;25293:9;25289:18;25282:34;25352:3;25347:2;25336:9;25332:18;25325:31;25376:6;25411;25405:13;25442:6;25434;25427:22;25480:3;25469:9;25465:19;25458:26;;25519:2;25511:6;25507:15;25493:29;;25540:1;25550:218;25564:6;25561:1;25558:13;25550:218;;;25629:13;;-1:-1:-1;;;;;25625:62:1;25613:75;;25743:15;;;;25708:12;;;;25586:1;25579:9;25550:218;;;-1:-1:-1;;;;;;;25824:55:1;;;;25819:2;25804:18;;25797:83;-1:-1:-1;;;25911:3:1;25896:19;25889:35;25785:3;24904:1026;-1:-1:-1;;;24904:1026:1:o

Swarm Source

ipfs://078546c9723d681686ae72170262a3880c800376a3f535a653850e740adeb05b
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.