ETH Price: $2,958.86 (-7.92%)
Gas: 11 Gwei

Token

Bank BTC | https://bankbtc.app (BANKBTC)
 

Overview

Max Total Supply

1,000,000,000,000 BANKBTC

Holders

270 (0.00%)

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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

OVERVIEW

Bank BTC claims to offer users with W-BTC reward when they hold $BankBTC. 10% of every $BankBTC transaction is automatically deposited to the vault, which users can securely claim anytime.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BankBTC

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-08-18
*/

// SPDX-License-Identifier: Unlicensed

/**
 *  
 *  $$$$$$$\   $$$$$$\  $$\   $$\ $$\   $$\       $$$$$$$\ $$$$$$$$\  $$$$$$\  
 *  $$  __$$\ $$  __$$\ $$$\  $$ |$$ | $$  |      $$  __$$\\__$$  __|$$  __$$\ 
 *  $$ |  $$ |$$ /  $$ |$$$$\ $$ |$$ |$$  /       $$ |  $$ |  $$ |   $$ /  \__|
 *  $$$$$$$\ |$$$$$$$$ |$$ $$\$$ |$$$$$  /        $$$$$$$\ |  $$ |   $$ |      
 *  $$  __$$\ $$  __$$ |$$ \$$$$ |$$  $$<         $$  __$$\   $$ |   $$ |      
 *  $$ |  $$ |$$ |  $$ |$$ |\$$$ |$$ |\$$\        $$ |  $$ |  $$ |   $$ |  $$\ 
 *  $$$$$$$  |$$ |  $$ |$$ | \$$ |$$ | \$$\       $$$$$$$  |  $$ |   \$$$$$$  |
 *  \_______/ \__|  \__|\__|  \__|\__|  \__|      \_______/   \__|    \______/                                                                            
 *                                                                 
 *  Bank BTC is the easiest way to earn Bitcoin! Just buy & hold $BankBTC and you’ll get Bitcoin (WBTC) rewards 24×7.
 *  
 *  10% of every $BankBTC transaction is automatically deposited to the vault, which you can securely claim anytime.
 *  
 *  https://bankbtc.app
 *  https://t.me/BankBTCApp
 */
 

pragma solidity ^0.8.6;

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    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);
}

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract deployer
     */
    modifier onlyDeployer() {
        require(isOwner(msg.sender), "!D"); _;
    }

    /**
     * Function modifier to require caller to be owner
     */
    modifier onlyOwner() {
        require(isAuthorized(msg.sender), "!OWNER"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyDeployer {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Deployer only
     */
    function unauthorize(address adr) public onlyDeployer {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be deployer. Leaves old deployer authorized
     */
    function transferOwnership(address payable adr) public onlyDeployer {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

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

    function 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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

interface IDividendDistributor {
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function claimDividend(address shareholder) external;
    function setDividendToken(address dividendToken) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IBEP20 dividendToken;
    IDEXRouter router;
    
    address WETH;

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;
    
    address owner;

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }
    
    modifier onlyOwner() {
        require(msg.sender == owner); _;
    }
    
    event DividendTokenUpdate(address dividendToken);

    constructor (address _router, address _dividendToken, address _owner) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _token = msg.sender;
        dividendToken = IBEP20(_dividendToken);
        WETH = router.WETH();
        owner = _owner;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = dividendToken.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WETH;
        path[1] = address(dividendToken);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = dividendToken.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            dividendToken.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend(address shareholder) external override onlyToken {
        distributeDividend(shareholder);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
    
    function setDividendToken(address _dividendToken) external override onlyToken {
        dividendToken = IBEP20(_dividendToken);
        emit DividendTokenUpdate(_dividendToken);
    }
    
    function getDividendToken() external view returns (address) {
        return address(dividendToken);
    }
    
    function sendDividend(address holder, uint256 amount) external onlyOwner {
        dividendToken.transfer(holder, amount);
    }
}

contract BankBTC is IBEP20, Auth {
    using SafeMath for uint256;

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "Bank BTC | https://bankbtc.app";
    string constant _symbol = "BANKBTC";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1000000000000 * (10 ** _decimals);
    uint256 public _maxTxAmountBuy = _totalSupply;
    uint256 public _maxTxAmountSell = _totalSupply / 100;
    
    uint256 _maxWalletToken = 10 * 10**9 * (10**_decimals);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isDividendExempt;
    mapping (address => bool) isBot;

    uint256 initialBlockLimit = 15;
    
    uint256 reflectionFeeBuy = 10;
    uint256 marketingFeeBuy = 2;
    uint256 totalFeeBuy = 12;
    uint256 feeDenominatorBuy = 100;
    
    uint256 reflectionFeeSell = 10;
    uint256 marketingFeeSell = 5;
    uint256 totalFeeSell = 15;
    uint256 feeDenominatorSell = 100;

    address marketingReceiver;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;

    DividendDistributor distributor;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 5000; // 200M
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor (
        address _presaler,
        address _router,
        address _token
    ) Auth(msg.sender) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            
        _presaler = _presaler != address(0)
            ? _presaler
            : msg.sender;
            
        WETH = router.WETH();
        
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        
        _allowances[address(this)][address(router)] = type(uint256).max;
        
        _token = _token != address(0)
            ? _token
            : 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599;

        distributor = new DividendDistributor(address(router), _token, _presaler);

        isFeeExempt[_presaler] = true;
        isTxLimitExempt[_presaler] = true;
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

        marketingReceiver = msg.sender;

        _balances[_presaler] = _totalSupply;
    
        emit Transfer(address(0), _presaler, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    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 balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

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

        return _tF(sender, recipient, amount);
    }

    function _tF(address s, address r, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(s, r, amount); }
        
        checkTxLimit(s, r, amount);

        if(shouldSwapBack()){ swapBack(); }

        if(!launched() && r == pair){ require(_balances[s] > 0); launch(); }

        _balances[s] = _balances[s].sub(amount, "Insufficient Balance");

        uint256 amountReceived = shouldTakeFee(s) ? takeFee(s, r, amount) : amount;
        
        if(r != pair && !isTxLimitExempt[r]){
            uint256 contractBalanceRecepient = balanceOf(r);
            require(contractBalanceRecepient + amountReceived <= _maxWalletToken, "Exceeds maximum wallet token amount"); 
        }
        
        _balances[r] = _balances[r].add(amountReceived);

        if(!isDividendExempt[s]){ try distributor.setShare(s, _balances[s]) {} catch {} }
        if(!isDividendExempt[r]){ try distributor.setShare(r, _balances[r]) {} catch {} }

        emit Transfer(s, r, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, address receiver, uint256 amount) internal view {
        sender == pair
            ? require(amount <= _maxTxAmountBuy || isTxLimitExempt[receiver], "Buy TX Limit Exceeded")
            : require(amount <= _maxTxAmountSell || isTxLimitExempt[sender], "Sell TX Limit Exceeded");
    }

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

    function getTotalFee(bool selling, bool bot) public view returns (uint256) {
        // Anti-bot, fees as 99% for the first block
        if(launchedAt + initialBlockLimit >= block.number || bot){ return selling ? feeDenominatorSell.sub(1) : feeDenominatorBuy.sub(1); }
        // If selling and buyback has happened in past 30 mins, then get the multiplied fees or otherwise get the normal fees
        return selling ? totalFeeSell : totalFeeBuy;
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        // Add all the fees to the contract. In case of Sell, it will be multiplied fees.
        uint256 feeAmount = (receiver == pair) ? amount.mul(getTotalFee(true, isBot[sender])).div(feeDenominatorSell) : amount.mul(getTotalFee(false, isBot[receiver])).div(feeDenominatorBuy);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

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

    function swapBack() internal swapping {
        uint256 amountToSwap = swapThreshold;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 amountReflection = amountETH.mul(reflectionFeeSell).div(totalFeeSell);
        uint256 amountMarketing = amountETH.sub(amountReflection);

        try distributor.deposit{value: amountReflection}() {} catch {}
        
        (bool successMarketing, /* bytes memory data */) = payable(marketingReceiver).call{value: amountMarketing, gas: 30000}("");
        require(successMarketing, "receiver rejected ETH transfer");
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        //To know when it was launched
        launchedAt = block.number;
    }
    
    function setInitialBlockLimit(uint256 blocks) external onlyOwner {
        require(blocks > 0, "Blocks should be greater than 0");
        initialBlockLimit = blocks;
    }

    function setBuyTxLimit(uint256 amount) external onlyOwner {
        _maxTxAmountBuy = amount;
    }
    
    function setSellTxLimit(uint256 amount) external onlyOwner {
        _maxTxAmountSell = amount;
    }
    
    function setMaxWalletToken(uint256 amount) external onlyOwner {
        _maxWalletToken = amount;
    }
    
    function getMaxWalletToken() public view onlyOwner returns (uint256) {
        return _maxWalletToken;
    }
    
    function setBot(address _address, bool toggle) external onlyOwner {
        isBot[_address] = toggle;
        _setIsDividendExempt(_address, toggle);
    }
    
    function isInBot(address _address) public view onlyOwner returns (bool) {
        return isBot[_address];
    }
    
    function _setIsDividendExempt(address holder, bool exempt) internal {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function setIsDividendExempt(address holder, bool exempt) public onlyOwner {
        _setIsDividendExempt(holder, exempt);
    }

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

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

    function setSellFees( uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external onlyOwner {
        reflectionFeeSell = _reflectionFee;
        marketingFeeSell = _marketingFee;
        totalFeeSell = _reflectionFee.add(_marketingFee);
        feeDenominatorSell = _feeDenominator;
        //Total fees has be less than 25%
        require(totalFeeSell < feeDenominatorSell/4);
    }
    
    function setBuyFees(uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external onlyOwner {
        reflectionFeeBuy = _reflectionFee;
        marketingFeeBuy = _marketingFee;
        totalFeeBuy = _reflectionFee.add(_marketingFee);
        feeDenominatorBuy = _feeDenominator;
        //Total fees has be less than 25%
        require(totalFeeBuy < feeDenominatorBuy/4);
    }

    function setFeeReceivers(address _marketingReceiver) external onlyOwner {
        marketingReceiver = _marketingReceiver;
    }
    
    function fixFeeIssue(uint256 amount) external onlyOwner {
        //Use in case marketing fees or dividends are stuck.
        uint256 contractETHBalance = address(this).balance;
        payable(marketingReceiver).transfer(amount > 0 ? amount : contractETHBalance);
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
    
    function claimDividend() external {
        distributor.claimDividend(msg.sender);
    }
    
    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        return distributor.getUnpaidEarnings(shareholder);
    }
    
    function banMultipleBots(address[] calldata accounts, bool excluded) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            isBot[accounts[i]] = excluded;
            isDividendExempt[accounts[i]] = excluded;
            if(excluded){
                distributor.setShare(accounts[i], 0);
            }else{
                distributor.setShare(accounts[i], _balances[accounts[i]]);
            }
        }
    }
    
    function blockKnownBots() external onlyOwner {
        isBot[address(0x7589319ED0fD750017159fb4E4d96C63966173C1)] = true;
        isDividendExempt[address(0x7589319ED0fD750017159fb4E4d96C63966173C1)] = true;
    
        isBot[address(0x65A67DF75CCbF57828185c7C050e34De64d859d0)] = true;
        isDividendExempt[address(0x65A67DF75CCbF57828185c7C050e34De64d859d0)] = true;
    
        isBot[address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce)] = true;
        isDividendExempt[address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce)] = true;
    
        isBot[address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce)] = true;
        isDividendExempt[address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce)] = true;
    
        isBot[address(0xe516bDeE55b0b4e9bAcaF6285130De15589B1345)] = true;
        isDividendExempt[address(0xe516bDeE55b0b4e9bAcaF6285130De15589B1345)] = true;
    
        isBot[address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b)] = true;
        isDividendExempt[address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b)] = true;
    
        isBot[address(0xd7d3EE77D35D0a56F91542D4905b1a2b1CD7cF95)] = true;
        isDividendExempt[address(0xd7d3EE77D35D0a56F91542D4905b1a2b1CD7cF95)] = true;
    
        isBot[address(0xFe76f05dc59fEC04184fA0245AD0C3CF9a57b964)] = true;
        isDividendExempt[address(0xFe76f05dc59fEC04184fA0245AD0C3CF9a57b964)] = true;
    
        isBot[address(0xDC81a3450817A58D00f45C86d0368290088db848)] = true;
        isDividendExempt[address(0xDC81a3450817A58D00f45C86d0368290088db848)] = true;
    
        isBot[address(0x45fD07C63e5c316540F14b2002B085aEE78E3881)] = true;
        isDividendExempt[address(0x45fD07C63e5c316540F14b2002B085aEE78E3881)] = true;
    
        isBot[address(0x27F9Adb26D532a41D97e00206114e429ad58c679)] = true;
        isDividendExempt[address(0x27F9Adb26D532a41D97e00206114e429ad58c679)] = true;
    
        isBot[address(0x9282dc5c422FA91Ff2F6fF3a0b45B7BF97CF78E7)] = true;
        isDividendExempt[address(0x9282dc5c422FA91Ff2F6fF3a0b45B7BF97CF78E7)] = true;
    
        isBot[address(0xfad95B6089c53A0D1d861eabFaadd8901b0F8533)] = true;
        isDividendExempt[address(0xfad95B6089c53A0D1d861eabFaadd8901b0F8533)] = true;
    
        isBot[address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d)] = true;
        isDividendExempt[address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d)] = true;
    
        isBot[address(0x000000000000084e91743124a982076C59f10084)] = true;
        isDividendExempt[address(0x000000000000084e91743124a982076C59f10084)] = true;
    
        isBot[address(0x6dA4bEa09C3aA0761b09b19837D9105a52254303)] = true;
        isDividendExempt[address(0x6dA4bEa09C3aA0761b09b19837D9105a52254303)] = true;
    
        isBot[address(0x323b7F37d382A68B0195b873aF17CeA5B67cd595)] = true;
        isDividendExempt[address(0x323b7F37d382A68B0195b873aF17CeA5B67cd595)] = true;
    
        isBot[address(0x000000005804B22091aa9830E50459A15E7C9241)] = true;
        isDividendExempt[address(0x000000005804B22091aa9830E50459A15E7C9241)] = true;
    
        isBot[address(0xA3b0e79935815730d942A444A84d4Bd14A339553)] = true;
        isDividendExempt[address(0xA3b0e79935815730d942A444A84d4Bd14A339553)] = true;
    
        isBot[address(0xf6da21E95D74767009acCB145b96897aC3630BaD)] = true;
        isDividendExempt[address(0xf6da21E95D74767009acCB145b96897aC3630BaD)] = true;
    
        isBot[address(0x0000000000007673393729D5618DC555FD13f9aA)] = true;
        isDividendExempt[address(0x0000000000007673393729D5618DC555FD13f9aA)] = true;
    
        isBot[address(0x00000000000003441d59DdE9A90BFfb1CD3fABf1)] = true;
        isDividendExempt[address(0x00000000000003441d59DdE9A90BFfb1CD3fABf1)] = true;
    
        isBot[address(0x59903993Ae67Bf48F10832E9BE28935FEE04d6F6)] = true;
        isDividendExempt[address(0x59903993Ae67Bf48F10832E9BE28935FEE04d6F6)] = true;
    
        isBot[address(0x000000917de6037d52b1F0a306eeCD208405f7cd)] = true;
        isDividendExempt[address(0x000000917de6037d52b1F0a306eeCD208405f7cd)] = true;
    
        isBot[address(0x7100e690554B1c2FD01E8648db88bE235C1E6514)] = true;
        isDividendExempt[address(0x7100e690554B1c2FD01E8648db88bE235C1E6514)] = true;
    
        isBot[address(0x72b30cDc1583224381132D379A052A6B10725415)] = true;
        isDividendExempt[address(0x72b30cDc1583224381132D379A052A6B10725415)] = true;
    
        isBot[address(0x9eDD647D7d6Eceae6bB61D7785Ef66c5055A9bEE)] = true;
        isDividendExempt[address(0x9eDD647D7d6Eceae6bB61D7785Ef66c5055A9bEE)] = true;
    
        isBot[address(0xfe9d99ef02E905127239E85A611c29ad32c31c2F)] = true;
        isDividendExempt[address(0xfe9d99ef02E905127239E85A611c29ad32c31c2F)] = true;
    
        isBot[address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b)] = true;
        isDividendExempt[address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b)] = true;
    
        isBot[address(0xc496D84215d5018f6F53E7F6f12E45c9b5e8e8A9)] = true;
        isDividendExempt[address(0xc496D84215d5018f6F53E7F6f12E45c9b5e8e8A9)] = true;
    
        isBot[address(0x59341Bc6b4f3Ace878574b05914f43309dd678c7)] = true;
        isDividendExempt[address(0x59341Bc6b4f3Ace878574b05914f43309dd678c7)] = true;
    
        isBot[address(0xe986d48EfeE9ec1B8F66CD0b0aE8e3D18F091bDF)] = true;
        isDividendExempt[address(0xe986d48EfeE9ec1B8F66CD0b0aE8e3D18F091bDF)] = true;
    
        isBot[address(0x4aEB32e16DcaC00B092596ADc6CD4955EfdEE290)] = true;
        isDividendExempt[address(0x4aEB32e16DcaC00B092596ADc6CD4955EfdEE290)] = true;
    
        isBot[address(0x136F4B5b6A306091b280E3F251fa0E21b1280Cd5)] = true;
        isDividendExempt[address(0x136F4B5b6A306091b280E3F251fa0E21b1280Cd5)] = true;
    
        isBot[address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b)] = true;
        isDividendExempt[address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b)] = true;
    
        isBot[address(0x5B83A351500B631cc2a20a665ee17f0dC66e3dB7)] = true;
        isDividendExempt[address(0x5B83A351500B631cc2a20a665ee17f0dC66e3dB7)] = true;
    
        isBot[address(0xbCb05a3F85d34f0194C70d5914d5C4E28f11Cc02)] = true;
        isDividendExempt[address(0xbCb05a3F85d34f0194C70d5914d5C4E28f11Cc02)] = true;
    
        isBot[address(0x22246F9BCa9921Bfa9A3f8df5baBc5Bc8ee73850)] = true;
        isDividendExempt[address(0x22246F9BCa9921Bfa9A3f8df5baBc5Bc8ee73850)] = true;
    
        isBot[address(0x42d4C197036BD9984cA652303e07dD29fA6bdB37)] = true;
        isDividendExempt[address(0x42d4C197036BD9984cA652303e07dD29fA6bdB37)] = true;
    
        isBot[address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40)] = true;
        isDividendExempt[address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40)] = true;
    
        isBot[address(0x231DC6af3C66741f6Cf618884B953DF0e83C1A2A)] = true;
        isDividendExempt[address(0x231DC6af3C66741f6Cf618884B953DF0e83C1A2A)] = true;
    
        isBot[address(0xC6bF34596f74eb22e066a878848DfB9fC1CF4C65)] = true;
        isDividendExempt[address(0xC6bF34596f74eb22e066a878848DfB9fC1CF4C65)] = true;
    
        isBot[address(0x20f6fCd6B8813c4f98c0fFbD88C87c0255040Aa3)] = true;
        isDividendExempt[address(0x20f6fCd6B8813c4f98c0fFbD88C87c0255040Aa3)] = true;
    
        isBot[address(0xD334C5392eD4863C81576422B968C6FB90EE9f79)] = true;
        isDividendExempt[address(0xD334C5392eD4863C81576422B968C6FB90EE9f79)] = true;
    
        isBot[address(0xFFFFF6E70842330948Ca47254F2bE673B1cb0dB7)] = true;
        isDividendExempt[address(0xFFFFF6E70842330948Ca47254F2bE673B1cb0dB7)] = true;
    
        isBot[address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a)] = true;
        isDividendExempt[address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a)] = true;
    
        isBot[address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a)] = true;
        isDividendExempt[address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a)] = true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_presaler","type":"address"},{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"_maxTxAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"banMultipleBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"blockKnownBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"fixFeeIssue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMaxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"},{"internalType":"bool","name":"bot","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isInBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setBuyTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"setInitialBlockLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSellTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b03191661dead179055620000266009600a620005e2565b620000379064e8d4a51000620006a3565b600455600454600555606460045462000051919062000576565b600655620000626009600a620005e2565b62000073906402540be400620006a3565b600755600f600e819055600a8082556002601055600c601155606460128190556013919091556005601455601591909155601655601b805460ff60a01b1916600160a01b179055600454620000cc906113889062000576565b601c55348015620000dc57600080fd5b50604051620048b5380380620048b5833981016040819052620000ff916200052c565b600080546001600160a01b0319163390811782558152600160208190526040909120805460ff191690911790556001600160a01b0382166200015657737a250d5630b4cf539739df2c5dacb4c659f2488d62000158565b815b601880546001600160a01b0319166001600160a01b03928316179055831662000182573362000184565b825b9250601860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001d557600080fd5b505afa158015620001ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000210919062000507565b600280546001600160a01b0319166001600160a01b039283161790556018546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b1580156200026a57600080fd5b505afa1580156200027f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a5919062000507565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b158015620002f257600080fd5b505af115801562000307573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032d919062000507565b601980546001600160a01b0319166001600160a01b03928316179055306000908152600960209081526040808320601854851684529091529020600019905581166200038e57732260fac5e5542a773aa44fbcfedf7c193bc2c59962000390565b805b6018546040519192506001600160a01b03169082908590620003b290620004dc565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620003ef573d6000803e3d6000fd5b50601b80546001600160a01b039283166001600160a01b0319918216179091558482166000818152600a60209081526040808320805460ff199081166001908117909255600b8452828520805482168317905560195488168552600c8452828520805482168317905530855282852080548216831790556003549097168452818420805490971617909555601780549094163317909355600454828252600890935283812083905592519092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620004cb91815260200190565b60405180910390a3505050620006db565b61105c806200385983390190565b80516001600160a01b03811681146200050257600080fd5b919050565b6000602082840312156200051a57600080fd5b6200052582620004ea565b9392505050565b6000806000606084860312156200054257600080fd5b6200054d84620004ea565b92506200055d60208501620004ea565b91506200056d60408501620004ea565b90509250925092565b6000826200059457634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620005da578160001904821115620005be57620005be620006c5565b80851615620005cc57918102915b93841c93908002906200059e565b509250929050565b60006200052560ff841683600082620005fe575060016200069d565b816200060d575060006200069d565b8160018114620006265760028114620006315762000651565b60019150506200069d565b60ff841115620006455762000645620006c5565b50506001821b6200069d565b5060208310610133831016604e8410600b841016171562000676575081810a6200069d565b62000682838362000599565b8060001904821115620006995762000699620006c5565b0290505b92915050565b6000816000190483118215151615620006c057620006c0620006c5565b500290565b634e487b7160e01b600052601160045260246000fd5b61316e80620006eb6000396000f3fe6080604052600436106102605760003560e01c8063893d20e811610144578063e01bb688116100b6578063f2fde38b1161007a578063f2fde38b14610780578063f59d047c146107a0578063f708a64f146107b6578063f84ba65d146107d6578063f887ea40146107f6578063fe9fbb801461081657600080fd5b8063e01bb688146106f6578063ed62cb3114610716578063f0b37c041461072b578063f0fc6bca1461074b578063f28f0c721461076057600080fd5b8063b6a5d7de11610108578063b6a5d7de1461061a578063bcfb94341461063a578063bf56b3711461065a578063c3647c8c14610670578063dd62ed3e14610690578063df20fd49146106d657600080fd5b8063893d20e81461055857806391d55f411461058a57806395d89b41146105aa578063a8aa1b31146105da578063a9059cbb146105fa57600080fd5b8063313ce567116101dd578063571ac8b0116101a1578063571ac8b0146104815780636419b6f9146104a1578063658d4b7f146104c15780636ddd1713146104e157806370a0823114610502578063736ad0501461053857600080fd5b8063313ce567146103fa578063342aa8b514610416578063416501c81461043657806346469ae7146104565780635587964e1461046c57600080fd5b80630f683e90116102245780630f683e901461035657806318160ddd1461037657806323b872dd1461038b57806328fd3198146103ab5780632f54bf6e146103cb57600080fd5b80630445b6671461026c57806306fdde031461029557806308cad4e5146102e4578063095ea7b3146103065780630d075d9c1461033657600080fd5b3661026757005b600080fd5b34801561027857600080fd5b50610282601c5481565b6040519081526020015b60405180910390f35b3480156102a157600080fd5b5060408051808201909152601e81527f42616e6b20425443207c2068747470733a2f2f62616e6b6274632e617070000060208201525b60405161028c9190612f67565b3480156102f057600080fd5b506103046102ff366004612f09565b610836565b005b34801561031257600080fd5b50610326610321366004612e21565b610869565b604051901515815260200161028c565b34801561034257600080fd5b50610304610351366004612f3b565b6108d6565b34801561036257600080fd5b50610304610371366004612f3b565b610934565b34801561038257600080fd5b50600454610282565b34801561039757600080fd5b506103266103a6366004612dab565b61098d565b3480156103b757600080fd5b506102826103c6366004612d55565b610a4f565b3480156103d757600080fd5b506103266103e6366004612d55565b6000546001600160a01b0391821691161490565b34801561040657600080fd5b506040516009815260200161028c565b34801561042257600080fd5b50610304610431366004612dec565b610acd565b34801561044257600080fd5b50610326610451366004612d55565b610b24565b34801561046257600080fd5b5061028260055481565b34801561047857600080fd5b50610282610b6e565b34801561048d57600080fd5b5061032661049c366004612d55565b610b9c565b3480156104ad57600080fd5b506102826104bc366004612ed1565b610baa565b3480156104cd57600080fd5b506103046104dc366004612dec565b610c10565b3480156104ed57600080fd5b50601b5461032690600160a01b900460ff1681565b34801561050e57600080fd5b5061028261051d366004612d55565b6001600160a01b031660009081526008602052604090205490565b34801561054457600080fd5b50610304610553366004612f09565b610c60565b34801561056457600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161028c565b34801561059657600080fd5b506103046105a5366004612f09565b610c8a565b3480156105b657600080fd5b5060408051808201909152600781526642414e4b42544360c81b60208201526102d7565b3480156105e657600080fd5b50601954610572906001600160a01b031681565b34801561060657600080fd5b50610326610615366004612e21565b610cb4565b34801561062657600080fd5b50610304610635366004612d55565b610cc1565b34801561064657600080fd5b50610304610655366004612e4d565b610d12565b34801561066657600080fd5b50610282601a5481565b34801561067c57600080fd5b5061030461068b366004612f09565b610f9c565b34801561069c57600080fd5b506102826106ab366004612d72565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156106e257600080fd5b506103046106f1366004612eed565b611016565b34801561070257600080fd5b50610304610711366004612d55565b61105d565b34801561072257600080fd5b506103046110a4565b34801561073757600080fd5b50610304610746366004612d55565b611f09565b34801561075757600080fd5b50610304611f54565b34801561076c57600080fd5b5061030461077b366004612f09565b611fad565b34801561078c57600080fd5b5061030461079b366004612d55565b612018565b3480156107ac57600080fd5b5061028260065481565b3480156107c257600080fd5b506103046107d1366004612dec565b6120ae565b3480156107e257600080fd5b506103046107f1366004612dec565b6120dd565b34801561080257600080fd5b50601854610572906001600160a01b031681565b34801561082257600080fd5b50610326610831366004612d55565b61212d565b61083f3361212d565b6108645760405162461bcd60e51b815260040161085b90612fd8565b60405180910390fd5b600655565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108c49086815260200190565b60405180910390a35060015b92915050565b6108df3361212d565b6108fb5760405162461bcd60e51b815260040161085b90612fd8565b600f839055601082905561090f838361214b565b6011556012819055610922600482613081565b6011541061092f57600080fd5b505050565b61093d3361212d565b6109595760405162461bcd60e51b815260040161085b90612fd8565b6013839055601482905561096d838361214b565b6015556016819055610980600482613081565b6015541061092f57600080fd5b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610a3a576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610a159184906121aa565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610a458484846121e4565b90505b9392505050565b601b5460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd31989060240160206040518083038186803b158015610a9557600080fd5b505afa158015610aa9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d09190612f22565b610ad63361212d565b610af25760405162461bcd60e51b815260040161085b90612fd8565b6001600160a01b0382166000908152600d60205260409020805460ff1916821515179055610b208282612574565b5050565b6000610b2f3361212d565b610b4b5760405162461bcd60e51b815260040161085b90612fd8565b506001600160a01b0381166000908152600d602052604090205460ff165b919050565b6000610b793361212d565b610b955760405162461bcd60e51b815260040161085b90612fd8565b5060075490565b60006108d082600019610869565b600043600e54601a54610bbd9190613069565b101580610bc75750815b15610bf95782610be457601254610bdf906001612685565b610bf2565b601654610bf2906001612685565b90506108d0565b82610c0657601154610a48565b6015549392505050565b610c193361212d565b610c355760405162461bcd60e51b815260040161085b90612fd8565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b610c693361212d565b610c855760405162461bcd60e51b815260040161085b90612fd8565b600555565b610c933361212d565b610caf5760405162461bcd60e51b815260040161085b90612fd8565b600755565b6000610a483384846121e4565b6000546001600160a01b03163314610ceb5760405162461bcd60e51b815260040161085b90612fbc565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b610d1b3361212d565b610d375760405162461bcd60e51b815260040161085b90612fd8565b60005b82811015610f965781600d6000868685818110610d5957610d5961310a565b9050602002016020810190610d6e9190612d55565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555081600c6000868685818110610dbc57610dbc61310a565b9050602002016020810190610dd19190612d55565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558115610e9c57601b546001600160a01b03166314b6ca96858584818110610e2257610e2261310a565b9050602002016020810190610e379190612d55565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260006024820152604401600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b50505050610f84565b601b546001600160a01b03166314b6ca96858584818110610ebf57610ebf61310a565b9050602002016020810190610ed49190612d55565b60086000888887818110610eea57610eea61310a565b9050602002016020810190610eff9190612d55565b6001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b8152600401610f519291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050505b80610f8e816130d9565b915050610d3a565b50505050565b610fa53361212d565b610fc15760405162461bcd60e51b815260040161085b90612fd8565b600081116110115760405162461bcd60e51b815260206004820152601f60248201527f426c6f636b732073686f756c642062652067726561746572207468616e203000604482015260640161085b565b600e55565b61101f3361212d565b61103b5760405162461bcd60e51b815260040161085b90612fd8565b601b8054921515600160a01b0260ff60a01b1990931692909217909155601c55565b6110663361212d565b6110825760405162461bcd60e51b815260040161085b90612fd8565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6110ad3361212d565b6110c95760405162461bcd60e51b815260040161085b90612fd8565b7f422b7a4a3e410a1d4a010a4c0b80e1b5f87895426cd13f0ba2337601580ebe6a8054600160ff1991821681179092557fb26d7218d92022545bcbabc851ef5fec20e38b0ca72438ad6f67a53bb771b76780548216831790557fbaf7245c8f9cbf33ea8ef18c7007e3a46c64377be2e531ef38e14673efea66b080548216831790557f5616165abcf9a3da49d12fb289e64058f90db7211a195c5b16b8c4c11fb64b7b80548216831790557fe3bda5f67a1825294d8d44dbd4ccaeee932a871f93ac5249918ee89610959a3d80548216831790557f9fc2042ea2f613c2a52f8c68c876b1009b2d422d25c81b8d9bf4c23a1ba6ee3180548216831790557fbbddf73ed3850180f4d0c936f37029ab9ea5e188df8aeeb88121b6ee39cf21bc80548216831790557fe755da55b4059c65fc3d0c728e29c1aeafa6abf9bbb6e5d9ddaafb8684bf9bbe80548216831790557f314a838562daf9d06ad83a4009626a2bf305025544155ab92099c9dd6e097f2480548216831790557fcbf2350efea0a943984fa75655713be4b3f6419fbd96a5bec091cc2cf02c3e1980548216831790557fa84371a0d196bf511b49f37b3bc3ac206f36712b2dfe8a4c5adc04f2c528badc80548216831790557fa0df61c57413100daeb466b69c517d67071ebbe494f38d19d8705763655752c480548216831790557fec80bcc0d6014e6bcfcecd0ade4b86aa729ddabe9019a20946daee141d65334c80548216831790557f1c315f4e9682471ee2173f6f543f732652ac365229e2f5976881bd6d6331fdf780548216831790557fc263b18ffe9852827838312013bc464eb33cae79fae3d50ff8b1ab21af0a28ad80548216831790557fe2fcb7cf379da1917ed55ccb9432ec005f6a22ecfcae4897d83686c991464a7880548216831790557f7107a141fa7cf1a11f076d4af17174dafa34b612388c28d057591e36dc3b113080548216831790557fae3aae685b179f4ccedb6df4cae1c02623b69643951c464c331c8c8edc7757ca80548216831790557f9a71177376f80c9b3245cf36d03800660a7d56f28556ffdac3e86127bab8295e80548216831790557fe2acb2c96a44c4639e7e3f41bcc8d6b5196c336d2f10f95727c3acedd78881e180548216831790557f4f78b4798e53595b8397b3c943cad9f330ab3bc0556a9739408b3d33eb1a2a5580548216831790557f4d43e2b0bd9a62c48d7f9ca8f52bafa69d3097638ece0baa62bf07abcec58f9080548216831790557fecb7b043999e7685cd38a8adb750063f9a8097e2d57c15f51c6363dcc32b0f3080548216831790557fdb7be9451a1331b7f48770508f8a73a0be9530ce52655e6598c4f5415530bfb580548216831790557fc891305243d0cb74a0fd0468779891814a319393a64bf7084e7dcc722afa3bce80548216831790557f584871ac10068bf04412f5c45435e7b743959e534a8ee1711fb23a34953383d680548216831790557fa24c18ef247ff1eff99d56e0b3716dea7fa0064ba65e9d2f27282a9c750e6adf80548216831790557feeffe76a11ce1c0393dca202b15f858984decb333ee409485b42cdc173d59b3580548216831790557fcb27cb29741dfce365a4ec70bd499ffa81ec169cda659c978d63c05edf6035bb80548216831790557ff5db15777b0c065693fcf55f705bb5a67f336a11ed9c99b166f7ac60e05306d980548216831790557fda123bb4d6a0519f083de5a6a60c392dc44ba1519caa0e70321f96c8661cd5aa80548216831790557feb6b5b4b9ce6e82534fb7b2e122d634cc09769a8e206cee09d1125dd11705aec80548216831790557fdda3eaf3e5b52d22767ac0a8260102773126853b6985b1866a7376365afa9a0880548216831790557f2a3b66e7d986666b5a4128c846cba02335540bf6bfef6c423aff5d8479462ede80548216831790557f496b5237cea3f8a155221922c6c0f307772d425e777fe7e83e209eb48a1b8ff480548216831790557f4ef55fe9c7dd4a1fbfc8b09dd00a58e79057f79165dfdae73b3e7bf2558d1ba680548216831790557f347be088e11df3b5162c0d949c0c2fda3c899f93ea2fe97be1314c13ac1556b880548216831790557f97c3e1aa2f032a9a87f586a624d29d69825e4d2a8a4f87c9068064efdb27f8d780548216831790557f23302a5c0e2037e48af567bbee8db9a15a66d14566958986960de74ac24566b380548216831790557f0dcd19fcdb363ed877222333646084bad57910ccf9d09ce19c313bf28dfb0f3f80548216831790557fddb002e7d1e556b328ba98b100c06b333dc2686b0c0c85b321138cefee51240d80548216831790557ffa2c9eaa37d3f5db215be0fe89d5a87b44761dfe6613229b9a153ed7140ea8fd80548216831790557fea31c6360d69a9fe199676ecfd1d44f63eb74787c6ab0a0327f817f5489f2a6980548216831790557f9d6499bd02dc45478307ea12eddd377f2293c66886525d762a16440df674c54880548216831790557fc08a09d6f72fcb6d2debe0f056c647fcacfd0e7887fe6458b02b694e1591a2e780548216831790557f59ef43b2564761dc142326005800c89bee0b0512520d2138991e96e80b01d16d80548216831790557fb1ee6765c753e6fb4bd00408b920c93fcdaee431a2103a5944fdb64940e0a2d380548216831790557f1c0244642490da06182ca6f202a422bd503ec809edbd85f5b10e706dc4a91d0680548216831790557f745b3c2f091281cebcbfa26af9ab2e61be5812b4725bc8e6d6a55c51d1813bc280548216831790557f066c39024d071280e68f862423344f6efd00ff8757b5d31c324a9f71d57a648680548216831790557fe5d3ff0867559000f32f6cc7fa01c0976448e1a36d1346f7960d5951d47b514780548216831790557fabc53be46980f9fca66b0425764ee885cbee4d01ca74be2d4400eb565bd3812680548216831790557f0d26bffca65b7804bd468c3305f5dd5988cd29dc77f674df07f5ea02df73315480548216831790557f0a327ded7227470d37a6453aefa38b60fd88d91dbbbdbadad1722e0a24a1180780548216831790557fd4b81d6b81cc1feb73bf3ce97e6fd26bec855e2e5efbecf2c157aff6da8e3ddf80548216831790557fad095295e432475054249542c03a719bc3d3c3494d5ae42573a694a94c94edc780548216831790557f796053ea402085da9ce870672cabfa9ea37130f19829a290846e0bc22e7c174b80548216831790557f9051c2aedab62977c23a0366711e6460a4d27285efd621bf075328f708d5a13580548216831790557f7d3febce8b16fd48cbfd28264814eaa2581d43ddb953f8919df8ef68469c866d80548216831790557f8b7a0986356fd609d8ab34942000e75afc3abadb0e4132ddd323bf495033693280548216831790557f7f96b5ebf2c38888eacd3b3322e9b898c89d1b3191f8f6e6ebda90455999f15880548216831790557f24c5ccde68ccc3342a9d2304d7d4a9113682b36899732b4bb8e823a123bc898480548216831790557fc35b1f3f39915154e6765dcb75cd7b7fd3f8520e72e96cdb800968503e35c21b80548216831790557fa31bb47725d54da818848e46548a75dfd55a8959c86591550d470f48a19bacc280548216831790557fdb110f3c889ac47ef7dbc7404b33cf270d74e26be5887262a146c42673b9227f80548216831790557fcea8173c8d457eef8a5639130f5b2802d4cb414656e91038a884778e0b25e93480548216831790557fb42d83b92807ff2f4091b72d40385dfc3f3b7f71ea0f3941ad9521c1a4ccc69280548216831790557fcb086e2f4612a8e644098b32c9351c186c5dc8252f5ad80598641e351f01391280548216831790557f10362f7468ba54dcbae1b8a65713173e447715ed6a14a71336e03db84bf28dc680548216831790557f994c49cd3990a46d53dc08c9eb8badd2a7b3672a1ca0764e84003d647ceeaa7680548216831790557f066710a6472652366b3eaa91a40c81bda02cbfabfba5dc12d29466a8da0656c580548216831790557f03c9f43dcd6cb19cf6428d499a101a16dbc3be58cb14b4a7461861f258bf8e9080548216831790557ff709bb779d6f37594883570e60fa6adc4630abd3200201857a1832446ea85b4d80548216831790557f2031c0704d256bad2bad81c740c3e141d6499ff6c398c343d59268f967d8a14180548216831790557f92a7093147c46b8700b693a97a0abbf45a4ac9718b3ac76d1ad5e7b9a607618580548216831790557ffeab03fcfd42e82077839fcb00c63049cbfc5ba98dad1fc9a1dab6c2fc9a8bea80548216831790557feffe29c60607039ddb0c42a8576455c55a1fa4210f261d42cf1b727b83fb418380548216831790557f7b719f4f4887d282253a2a50f847a57fe4664e2f6bf12e3f178500d252dd4ac980548216831790557fd8f6fb60524a17ba895260ab9d65a55eddfd9a78f4260151e4fb73cbf88f01e280548216831790557f25823bea884588a289ed9d5d83cf37a9100d7391064e25534e8f6a41b77be42b80548216831790557f81dc087c326f65541e942d62d6e8f97c58e2df940f8a90c0e65907209078308b80548216831790557f87392736390064232a09867dc5b2a424aa528a0ee9d18c57cf7429d572a1a03a80548216831790557f08f2541af23e6ba8c2f7fc3df828c2f088477ee8facab8057c4d622cf800202a80548216831790557ffb45298d9331a31dc90641f32661d5c665737b32280d5dd19dd78c334f4c893080548216831790557f4d35ed364e7c9c207c49e57439becf8df98a9ae47c92bc74ad1b37dbef6a143b80548216831790557f3688e920127acef1a2469a259c34e7e122dcf9e6b075969ceb599f43b6983dc8805482168317905573a39c50bf86e15391180240938f469a7bf4fdae9a6000527f72c05bf4a8afd86b95c6c155f7c1b62753ef23c9cc3bbad32bae830686878ecf80548216831790557fbbbe8c4bf222d268d0cd80aaf6ce21e1e4c92d7fdc7eb3f8a4373fcfbadf50ee80549091169091179055600c602052565b6000546001600160a01b03163314611f335760405162461bcd60e51b815260040161085b90612fbc565b6001600160a01b03166000908152600160205260409020805460ff19169055565b601b54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015611f9957600080fd5b505af1158015610f96573d6000803e3d6000fd5b611fb63361212d565b611fd25760405162461bcd60e51b815260040161085b90612fd8565b60175447906001600160a01b03166108fc83611fee5782611ff0565b835b6040518115909202916000818181858888f1935050505015801561092f573d6000803e3d6000fd5b6000546001600160a01b031633146120425760405162461bcd60e51b815260040161085b90612fbc565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6120b73361212d565b6120d35760405162461bcd60e51b815260040161085b90612fd8565b610b208282612574565b6120e63361212d565b6121025760405162461bcd60e51b815260040161085b90612fd8565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6000806121588385613069565b905083811015610a485760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161085b565b600081848411156121ce5760405162461bcd60e51b815260040161085b9190612f67565b5060006121db84866130c2565b95945050505050565b601d5460009060ff1615612204576121fd8484846126c7565b9050610a48565b61220f8484846127ad565b61221761289d565b15612224576122246128f5565b601a5415801561224157506019546001600160a01b038481169116145b15612271576001600160a01b03841660009081526008602052604090205461226857600080fd5b61227143601a55565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600890915291909120546122c39184906121aa565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff16156122f85782612303565b612303858585612b4f565b6019549091506001600160a01b0385811691161480159061233d57506001600160a01b0384166000908152600b602052604090205460ff16155b156123c4576001600160a01b0384166000908152600860205260409020546007546123688383613069565b11156123c25760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b606482015260840161085b565b505b6001600160a01b0384166000908152600860205260409020546123e7908261214b565b6001600160a01b038086166000908152600860209081526040808320949094559188168152600c909152205460ff1661248b57601b546001600160a01b0386811660008181526008602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561247857600080fd5b505af1925050508015612489575060015b505b6001600160a01b0384166000908152600c602052604090205460ff1661251c57601b546001600160a01b0385811660008181526008602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561250957600080fd5b505af192505050801561251a575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161256191815260200190565b60405180910390a3506001949350505050565b6001600160a01b038216301480159061259b57506019546001600160a01b03838116911614155b6125a457600080fd5b6001600160a01b0382166000908152600c60205260409020805460ff1916821580159190911790915561263c57601b54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b15801561262057600080fd5b505af1158015612634573d6000803e3d6000fd5b505050505050565b601b546001600160a01b0383811660008181526008602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401612606565b6000610a4883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121aa565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546127189184906121aa565b6001600160a01b038086166000908152600860205260408082209390935590851681522054612747908361214b565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061279b9086815260200190565b60405180910390a35060019392505050565b6019546001600160a01b0384811691161461283057600654811115806127eb57506001600160a01b0383166000908152600b602052604090205460ff165b61092f5760405162461bcd60e51b815260206004820152601660248201527514d95b1b08151608131a5b5a5d08115e18d95959195960521b604482015260640161085b565b6005548111158061285957506001600160a01b0382166000908152600b602052604090205460ff165b61092f5760405162461bcd60e51b8152602060048201526015602482015274109d5e48151608131a5b5a5d08115e18d959591959605a1b604482015260640161085b565b6019546000906001600160a01b031633148015906128be5750601d5460ff16155b80156128d35750601b54600160a01b900460ff165b80156128f05750601c543060009081526008602052604090205410155b905090565b601d805460ff19166001179055601c54604080516002808252606082018352600092602083019080368337019050509050308160008151811061293a5761293a61310a565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061296b5761296b61310a565b6001600160a01b03928316602091820292909201015260185460405163791ac94760e01b81524792919091169063791ac947906129b5908690600090879030904290600401612ff8565b600060405180830381600087803b1580156129cf57600080fd5b505af11580156129e3573d6000803e3d6000fd5b5050505060006129fc824761268590919063ffffffff16565b90506000612a21601554612a1b60135485612c5b90919063ffffffff16565b90612cda565b90506000612a2f8383612685565b9050601b60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a8157600080fd5b505af193505050508015612a93575060015b506017546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114612ae6576040519150601f19603f3d011682016040523d82523d6000602084013e612aeb565b606091505b5050905080612b3c5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161085b565b5050601d805460ff191690555050505050565b60195460009081906001600160a01b03858116911614612ba7576012546001600160a01b0385166000908152600d6020526040812054612ba29291612a1b91612b9b919060ff16610baa565b8690612c5b565b612bdb565b6016546001600160a01b0386166000908152600d6020526040902054612bdb9190612a1b90612b9b9060019060ff16610baa565b30600090815260086020526040902054909150612bf8908261214b565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612c499085815260200190565b60405180910390a36121db8382612685565b600082612c6a575060006108d0565b6000612c7683856130a3565b905082612c838583613081565b14610a485760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161085b565b6000610a4883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183612d385760405162461bcd60e51b815260040161085b9190612f67565b5060006121db8486613081565b80358015158114610b6957600080fd5b600060208284031215612d6757600080fd5b8135610a4881613120565b60008060408385031215612d8557600080fd5b8235612d9081613120565b91506020830135612da081613120565b809150509250929050565b600080600060608486031215612dc057600080fd5b8335612dcb81613120565b92506020840135612ddb81613120565b929592945050506040919091013590565b60008060408385031215612dff57600080fd5b8235612e0a81613120565b9150612e1860208401612d45565b90509250929050565b60008060408385031215612e3457600080fd5b8235612e3f81613120565b946020939093013593505050565b600080600060408486031215612e6257600080fd5b833567ffffffffffffffff80821115612e7a57600080fd5b818601915086601f830112612e8e57600080fd5b813581811115612e9d57600080fd5b8760208260051b8501011115612eb257600080fd5b602092830195509350612ec89186019050612d45565b90509250925092565b60008060408385031215612ee457600080fd5b612e0a83612d45565b60008060408385031215612f0057600080fd5b612e3f83612d45565b600060208284031215612f1b57600080fd5b5035919050565b600060208284031215612f3457600080fd5b5051919050565b600080600060608486031215612f5057600080fd5b505081359360208301359350604090920135919050565b600060208083528351808285015260005b81811015612f9457858101830151858201604001528201612f78565b81811115612fa6576000604083870101525b50601f01601f1916929092016040019392505050565b602080825260029082015261085160f21b604082015260600190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156130485784516001600160a01b031683529383019391830191600101613023565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561307c5761307c6130f4565b500190565b60008261309e57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156130bd576130bd6130f4565b500290565b6000828210156130d4576130d46130f4565b500390565b60006000198214156130ed576130ed6130f4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461313557600080fd5b5056fea264697066735822122038c3579bab038ca19b241699484555e8e40dbe86624436637792dd2a08e2380364736f6c6343000806003360806040526ec097ce7bc90715b34b9f1000000000600c553480156200002457600080fd5b506040516200105c3803806200105c83398101604081905262000047916200019b565b6001600160a01b0383166200007157737a250d5630b4cf539739df2c5dacb4c659f2488d62000073565b825b600280546001600160a01b039283166001600160a01b0319918216811790925560008054821633179055600180549386169390911692909217909155604080516315ab88c960e31b8152905163ad5c464891600480820192602092909190829003018186803b158015620000e657600080fd5b505afa158015620000fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000121919062000176565b600380546001600160a01b039283166001600160a01b031991821617909155600d805493909216921691909117905550620001e59050565b80516001600160a01b03811681146200017157600080fd5b919050565b6000602082840312156200018957600080fd5b620001948262000159565b9392505050565b600080600060608486031215620001b157600080fd5b620001bc8462000159565b9250620001cc6020850162000159565b9150620001dc6040850162000159565b90509250925092565b610e6780620001f56000396000f3fe6080604052600436106100c25760003560e01c80633a98ef391161007f578063ce7c2ac211610059578063ce7c2ac2146101e6578063d0e30db01461023d578063e2d2e21914610245578063efca2eed1461025b57600080fd5b80633a98ef391461019a5780636b7db8fc146101b0578063997664d7146101d057600080fd5b806311ce023d146100c757806314b6ca96146100f057806315f7e05e14610112578063162db73f1461013257806320ffe2fd1461015a57806328fd31981461017a575b600080fd5b3480156100d357600080fd5b506100dd600c5481565b6040519081526020015b60405180910390f35b3480156100fc57600080fd5b5061011061010b366004610c5b565b610271565b005b34801561011e57600080fd5b5061011061012d366004610c40565b6103e9565b34801561013e57600080fd5b506001546040516001600160a01b0390911681526020016100e7565b34801561016657600080fd5b50610110610175366004610c40565b61040c565b34801561018657600080fd5b506100dd610195366004610c40565b610477565b3480156101a657600080fd5b506100dd60085481565b3480156101bc57600080fd5b506101106101cb366004610c5b565b610500565b3480156101dc57600080fd5b506100dd60095481565b3480156101f257600080fd5b50610222610201366004610c40565b60076020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016100e7565b6101106105a2565b34801561025157600080fd5b506100dd600b5481565b34801561026757600080fd5b506100dd600a5481565b6000546001600160a01b0316331461028857600080fd5b6001600160a01b038216600090815260076020526040902054156102af576102af826107ef565b6000811180156102d557506001600160a01b038216600090815260076020526040902054155b1561033b57600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b031916909117905561036e565b8015801561036057506001600160a01b03821660009081526007602052604090205415155b1561036e5761036e8261091a565b6001600160a01b03821660009081526007602052604090205460085461039f91839161039991610a2f565b90610a7a565b6008556001600160a01b03821660009081526007602052604090208190556103c681610ade565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6000546001600160a01b0316331461040057600080fd5b610409816107ef565b50565b6000546001600160a01b0316331461042357600080fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f8f14af6e51856288e65b250dbddfce7be3cf8785fae01f7498d98a6765a02c849060200160405180910390a150565b6001600160a01b03811660009081526007602052604081205461049c57506000919050565b6001600160a01b0382166000908152600760205260408120546104be90610ade565b6001600160a01b0384166000908152600760205260409020600101549091508082116104ee575060009392505050565b6104f88282610a2f565b949350505050565b600d546001600160a01b0316331461051757600080fd5b60015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b15801561056557600080fd5b505af1158015610579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059d9190610c85565b505050565b6000546001600160a01b031633146105b957600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b1580156105fd57600080fd5b505afa158015610611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106359190610ca7565b6040805160028082526060820183529293506000929091602083019080368337505060035482519293506001600160a01b03169183915060009061067b5761067b610e1b565b6001600160a01b03928316602091820292909201015260018054835192169183919081106106ab576106ab610e1b565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906106f190600090869030904290600401610cc0565b6000604051808303818588803b15801561070a57600080fd5b505af115801561071e573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094506107ad93508692506001600160a01b03909116906370a082319060240160206040518083038186803b15801561076f57600080fd5b505afa158015610783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a79190610ca7565b90610a2f565b6009549091506107bd9082610a7a565b600955600854600c546107e7916107de916107d89085610afb565b90610b7a565b600b5490610a7a565b600b55505050565b6001600160a01b03811660009081526007602052604090205461080f5750565b600061081a82610477565b9050801561091657600a5461082f9082610a7a565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b15801561088057600080fd5b505af1158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b89190610c85565b506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546108ec9082610a7a565b6001600160a01b03831660009081526007602052604090206002810191909155546103c690610ade565b5050565b6004805461092a90600190610dd8565b8154811061093a5761093a610e1b565b60009182526020808320909101546001600160a01b038481168452600590925260409092205460048054929093169291811061097857610978610e1b565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916109c490600190610dd8565b815481106109d4576109d4610e1b565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610a0a57610a0a610e05565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610a7183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610bbc565b90505b92915050565b600080610a878385610d7f565b905083811015610a715760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610a74600c546107d8600b5485610afb90919063ffffffff16565b600082610b0a57506000610a74565b6000610b168385610db9565b905082610b238583610d97565b14610a715760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ad5565b6000610a7183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610bf6565b60008184841115610be05760405162461bcd60e51b8152600401610ad59190610d2a565b506000610bed8486610dd8565b95945050505050565b60008183610c175760405162461bcd60e51b8152600401610ad59190610d2a565b506000610bed8486610d97565b80356001600160a01b0381168114610c3b57600080fd5b919050565b600060208284031215610c5257600080fd5b610a7182610c24565b60008060408385031215610c6e57600080fd5b610c7783610c24565b946020939093013593505050565b600060208284031215610c9757600080fd5b81518015158114610a7157600080fd5b600060208284031215610cb957600080fd5b5051919050565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610d0a5784516001600160a01b031683529383019391830191600101610ce5565b50506001600160a01b039690961660408501525050506060015292915050565b600060208083528351808285015260005b81811015610d5757858101830151858201604001528201610d3b565b81811115610d69576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610d9257610d92610def565b500190565b600082610db457634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610dd357610dd3610def565b500290565b600082821015610dea57610dea610def565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212208de95b9b623ceebf4bb7e7ead9c0888cacfc88bee582def953f8d8092ab1b7fc64736f6c634300080600330000000000000000000000006352673136d6ab9dd62d6da188150a07566bbb3d0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599

Deployed Bytecode

0x6080604052600436106102605760003560e01c8063893d20e811610144578063e01bb688116100b6578063f2fde38b1161007a578063f2fde38b14610780578063f59d047c146107a0578063f708a64f146107b6578063f84ba65d146107d6578063f887ea40146107f6578063fe9fbb801461081657600080fd5b8063e01bb688146106f6578063ed62cb3114610716578063f0b37c041461072b578063f0fc6bca1461074b578063f28f0c721461076057600080fd5b8063b6a5d7de11610108578063b6a5d7de1461061a578063bcfb94341461063a578063bf56b3711461065a578063c3647c8c14610670578063dd62ed3e14610690578063df20fd49146106d657600080fd5b8063893d20e81461055857806391d55f411461058a57806395d89b41146105aa578063a8aa1b31146105da578063a9059cbb146105fa57600080fd5b8063313ce567116101dd578063571ac8b0116101a1578063571ac8b0146104815780636419b6f9146104a1578063658d4b7f146104c15780636ddd1713146104e157806370a0823114610502578063736ad0501461053857600080fd5b8063313ce567146103fa578063342aa8b514610416578063416501c81461043657806346469ae7146104565780635587964e1461046c57600080fd5b80630f683e90116102245780630f683e901461035657806318160ddd1461037657806323b872dd1461038b57806328fd3198146103ab5780632f54bf6e146103cb57600080fd5b80630445b6671461026c57806306fdde031461029557806308cad4e5146102e4578063095ea7b3146103065780630d075d9c1461033657600080fd5b3661026757005b600080fd5b34801561027857600080fd5b50610282601c5481565b6040519081526020015b60405180910390f35b3480156102a157600080fd5b5060408051808201909152601e81527f42616e6b20425443207c2068747470733a2f2f62616e6b6274632e617070000060208201525b60405161028c9190612f67565b3480156102f057600080fd5b506103046102ff366004612f09565b610836565b005b34801561031257600080fd5b50610326610321366004612e21565b610869565b604051901515815260200161028c565b34801561034257600080fd5b50610304610351366004612f3b565b6108d6565b34801561036257600080fd5b50610304610371366004612f3b565b610934565b34801561038257600080fd5b50600454610282565b34801561039757600080fd5b506103266103a6366004612dab565b61098d565b3480156103b757600080fd5b506102826103c6366004612d55565b610a4f565b3480156103d757600080fd5b506103266103e6366004612d55565b6000546001600160a01b0391821691161490565b34801561040657600080fd5b506040516009815260200161028c565b34801561042257600080fd5b50610304610431366004612dec565b610acd565b34801561044257600080fd5b50610326610451366004612d55565b610b24565b34801561046257600080fd5b5061028260055481565b34801561047857600080fd5b50610282610b6e565b34801561048d57600080fd5b5061032661049c366004612d55565b610b9c565b3480156104ad57600080fd5b506102826104bc366004612ed1565b610baa565b3480156104cd57600080fd5b506103046104dc366004612dec565b610c10565b3480156104ed57600080fd5b50601b5461032690600160a01b900460ff1681565b34801561050e57600080fd5b5061028261051d366004612d55565b6001600160a01b031660009081526008602052604090205490565b34801561054457600080fd5b50610304610553366004612f09565b610c60565b34801561056457600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161028c565b34801561059657600080fd5b506103046105a5366004612f09565b610c8a565b3480156105b657600080fd5b5060408051808201909152600781526642414e4b42544360c81b60208201526102d7565b3480156105e657600080fd5b50601954610572906001600160a01b031681565b34801561060657600080fd5b50610326610615366004612e21565b610cb4565b34801561062657600080fd5b50610304610635366004612d55565b610cc1565b34801561064657600080fd5b50610304610655366004612e4d565b610d12565b34801561066657600080fd5b50610282601a5481565b34801561067c57600080fd5b5061030461068b366004612f09565b610f9c565b34801561069c57600080fd5b506102826106ab366004612d72565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156106e257600080fd5b506103046106f1366004612eed565b611016565b34801561070257600080fd5b50610304610711366004612d55565b61105d565b34801561072257600080fd5b506103046110a4565b34801561073757600080fd5b50610304610746366004612d55565b611f09565b34801561075757600080fd5b50610304611f54565b34801561076c57600080fd5b5061030461077b366004612f09565b611fad565b34801561078c57600080fd5b5061030461079b366004612d55565b612018565b3480156107ac57600080fd5b5061028260065481565b3480156107c257600080fd5b506103046107d1366004612dec565b6120ae565b3480156107e257600080fd5b506103046107f1366004612dec565b6120dd565b34801561080257600080fd5b50601854610572906001600160a01b031681565b34801561082257600080fd5b50610326610831366004612d55565b61212d565b61083f3361212d565b6108645760405162461bcd60e51b815260040161085b90612fd8565b60405180910390fd5b600655565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108c49086815260200190565b60405180910390a35060015b92915050565b6108df3361212d565b6108fb5760405162461bcd60e51b815260040161085b90612fd8565b600f839055601082905561090f838361214b565b6011556012819055610922600482613081565b6011541061092f57600080fd5b505050565b61093d3361212d565b6109595760405162461bcd60e51b815260040161085b90612fd8565b6013839055601482905561096d838361214b565b6015556016819055610980600482613081565b6015541061092f57600080fd5b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610a3a576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610a159184906121aa565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610a458484846121e4565b90505b9392505050565b601b5460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd31989060240160206040518083038186803b158015610a9557600080fd5b505afa158015610aa9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d09190612f22565b610ad63361212d565b610af25760405162461bcd60e51b815260040161085b90612fd8565b6001600160a01b0382166000908152600d60205260409020805460ff1916821515179055610b208282612574565b5050565b6000610b2f3361212d565b610b4b5760405162461bcd60e51b815260040161085b90612fd8565b506001600160a01b0381166000908152600d602052604090205460ff165b919050565b6000610b793361212d565b610b955760405162461bcd60e51b815260040161085b90612fd8565b5060075490565b60006108d082600019610869565b600043600e54601a54610bbd9190613069565b101580610bc75750815b15610bf95782610be457601254610bdf906001612685565b610bf2565b601654610bf2906001612685565b90506108d0565b82610c0657601154610a48565b6015549392505050565b610c193361212d565b610c355760405162461bcd60e51b815260040161085b90612fd8565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b610c693361212d565b610c855760405162461bcd60e51b815260040161085b90612fd8565b600555565b610c933361212d565b610caf5760405162461bcd60e51b815260040161085b90612fd8565b600755565b6000610a483384846121e4565b6000546001600160a01b03163314610ceb5760405162461bcd60e51b815260040161085b90612fbc565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b610d1b3361212d565b610d375760405162461bcd60e51b815260040161085b90612fd8565b60005b82811015610f965781600d6000868685818110610d5957610d5961310a565b9050602002016020810190610d6e9190612d55565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555081600c6000868685818110610dbc57610dbc61310a565b9050602002016020810190610dd19190612d55565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558115610e9c57601b546001600160a01b03166314b6ca96858584818110610e2257610e2261310a565b9050602002016020810190610e379190612d55565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260006024820152604401600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b50505050610f84565b601b546001600160a01b03166314b6ca96858584818110610ebf57610ebf61310a565b9050602002016020810190610ed49190612d55565b60086000888887818110610eea57610eea61310a565b9050602002016020810190610eff9190612d55565b6001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b8152600401610f519291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050505b80610f8e816130d9565b915050610d3a565b50505050565b610fa53361212d565b610fc15760405162461bcd60e51b815260040161085b90612fd8565b600081116110115760405162461bcd60e51b815260206004820152601f60248201527f426c6f636b732073686f756c642062652067726561746572207468616e203000604482015260640161085b565b600e55565b61101f3361212d565b61103b5760405162461bcd60e51b815260040161085b90612fd8565b601b8054921515600160a01b0260ff60a01b1990931692909217909155601c55565b6110663361212d565b6110825760405162461bcd60e51b815260040161085b90612fd8565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6110ad3361212d565b6110c95760405162461bcd60e51b815260040161085b90612fd8565b7f422b7a4a3e410a1d4a010a4c0b80e1b5f87895426cd13f0ba2337601580ebe6a8054600160ff1991821681179092557fb26d7218d92022545bcbabc851ef5fec20e38b0ca72438ad6f67a53bb771b76780548216831790557fbaf7245c8f9cbf33ea8ef18c7007e3a46c64377be2e531ef38e14673efea66b080548216831790557f5616165abcf9a3da49d12fb289e64058f90db7211a195c5b16b8c4c11fb64b7b80548216831790557fe3bda5f67a1825294d8d44dbd4ccaeee932a871f93ac5249918ee89610959a3d80548216831790557f9fc2042ea2f613c2a52f8c68c876b1009b2d422d25c81b8d9bf4c23a1ba6ee3180548216831790557fbbddf73ed3850180f4d0c936f37029ab9ea5e188df8aeeb88121b6ee39cf21bc80548216831790557fe755da55b4059c65fc3d0c728e29c1aeafa6abf9bbb6e5d9ddaafb8684bf9bbe80548216831790557f314a838562daf9d06ad83a4009626a2bf305025544155ab92099c9dd6e097f2480548216831790557fcbf2350efea0a943984fa75655713be4b3f6419fbd96a5bec091cc2cf02c3e1980548216831790557fa84371a0d196bf511b49f37b3bc3ac206f36712b2dfe8a4c5adc04f2c528badc80548216831790557fa0df61c57413100daeb466b69c517d67071ebbe494f38d19d8705763655752c480548216831790557fec80bcc0d6014e6bcfcecd0ade4b86aa729ddabe9019a20946daee141d65334c80548216831790557f1c315f4e9682471ee2173f6f543f732652ac365229e2f5976881bd6d6331fdf780548216831790557fc263b18ffe9852827838312013bc464eb33cae79fae3d50ff8b1ab21af0a28ad80548216831790557fe2fcb7cf379da1917ed55ccb9432ec005f6a22ecfcae4897d83686c991464a7880548216831790557f7107a141fa7cf1a11f076d4af17174dafa34b612388c28d057591e36dc3b113080548216831790557fae3aae685b179f4ccedb6df4cae1c02623b69643951c464c331c8c8edc7757ca80548216831790557f9a71177376f80c9b3245cf36d03800660a7d56f28556ffdac3e86127bab8295e80548216831790557fe2acb2c96a44c4639e7e3f41bcc8d6b5196c336d2f10f95727c3acedd78881e180548216831790557f4f78b4798e53595b8397b3c943cad9f330ab3bc0556a9739408b3d33eb1a2a5580548216831790557f4d43e2b0bd9a62c48d7f9ca8f52bafa69d3097638ece0baa62bf07abcec58f9080548216831790557fecb7b043999e7685cd38a8adb750063f9a8097e2d57c15f51c6363dcc32b0f3080548216831790557fdb7be9451a1331b7f48770508f8a73a0be9530ce52655e6598c4f5415530bfb580548216831790557fc891305243d0cb74a0fd0468779891814a319393a64bf7084e7dcc722afa3bce80548216831790557f584871ac10068bf04412f5c45435e7b743959e534a8ee1711fb23a34953383d680548216831790557fa24c18ef247ff1eff99d56e0b3716dea7fa0064ba65e9d2f27282a9c750e6adf80548216831790557feeffe76a11ce1c0393dca202b15f858984decb333ee409485b42cdc173d59b3580548216831790557fcb27cb29741dfce365a4ec70bd499ffa81ec169cda659c978d63c05edf6035bb80548216831790557ff5db15777b0c065693fcf55f705bb5a67f336a11ed9c99b166f7ac60e05306d980548216831790557fda123bb4d6a0519f083de5a6a60c392dc44ba1519caa0e70321f96c8661cd5aa80548216831790557feb6b5b4b9ce6e82534fb7b2e122d634cc09769a8e206cee09d1125dd11705aec80548216831790557fdda3eaf3e5b52d22767ac0a8260102773126853b6985b1866a7376365afa9a0880548216831790557f2a3b66e7d986666b5a4128c846cba02335540bf6bfef6c423aff5d8479462ede80548216831790557f496b5237cea3f8a155221922c6c0f307772d425e777fe7e83e209eb48a1b8ff480548216831790557f4ef55fe9c7dd4a1fbfc8b09dd00a58e79057f79165dfdae73b3e7bf2558d1ba680548216831790557f347be088e11df3b5162c0d949c0c2fda3c899f93ea2fe97be1314c13ac1556b880548216831790557f97c3e1aa2f032a9a87f586a624d29d69825e4d2a8a4f87c9068064efdb27f8d780548216831790557f23302a5c0e2037e48af567bbee8db9a15a66d14566958986960de74ac24566b380548216831790557f0dcd19fcdb363ed877222333646084bad57910ccf9d09ce19c313bf28dfb0f3f80548216831790557fddb002e7d1e556b328ba98b100c06b333dc2686b0c0c85b321138cefee51240d80548216831790557ffa2c9eaa37d3f5db215be0fe89d5a87b44761dfe6613229b9a153ed7140ea8fd80548216831790557fea31c6360d69a9fe199676ecfd1d44f63eb74787c6ab0a0327f817f5489f2a6980548216831790557f9d6499bd02dc45478307ea12eddd377f2293c66886525d762a16440df674c54880548216831790557fc08a09d6f72fcb6d2debe0f056c647fcacfd0e7887fe6458b02b694e1591a2e780548216831790557f59ef43b2564761dc142326005800c89bee0b0512520d2138991e96e80b01d16d80548216831790557fb1ee6765c753e6fb4bd00408b920c93fcdaee431a2103a5944fdb64940e0a2d380548216831790557f1c0244642490da06182ca6f202a422bd503ec809edbd85f5b10e706dc4a91d0680548216831790557f745b3c2f091281cebcbfa26af9ab2e61be5812b4725bc8e6d6a55c51d1813bc280548216831790557f066c39024d071280e68f862423344f6efd00ff8757b5d31c324a9f71d57a648680548216831790557fe5d3ff0867559000f32f6cc7fa01c0976448e1a36d1346f7960d5951d47b514780548216831790557fabc53be46980f9fca66b0425764ee885cbee4d01ca74be2d4400eb565bd3812680548216831790557f0d26bffca65b7804bd468c3305f5dd5988cd29dc77f674df07f5ea02df73315480548216831790557f0a327ded7227470d37a6453aefa38b60fd88d91dbbbdbadad1722e0a24a1180780548216831790557fd4b81d6b81cc1feb73bf3ce97e6fd26bec855e2e5efbecf2c157aff6da8e3ddf80548216831790557fad095295e432475054249542c03a719bc3d3c3494d5ae42573a694a94c94edc780548216831790557f796053ea402085da9ce870672cabfa9ea37130f19829a290846e0bc22e7c174b80548216831790557f9051c2aedab62977c23a0366711e6460a4d27285efd621bf075328f708d5a13580548216831790557f7d3febce8b16fd48cbfd28264814eaa2581d43ddb953f8919df8ef68469c866d80548216831790557f8b7a0986356fd609d8ab34942000e75afc3abadb0e4132ddd323bf495033693280548216831790557f7f96b5ebf2c38888eacd3b3322e9b898c89d1b3191f8f6e6ebda90455999f15880548216831790557f24c5ccde68ccc3342a9d2304d7d4a9113682b36899732b4bb8e823a123bc898480548216831790557fc35b1f3f39915154e6765dcb75cd7b7fd3f8520e72e96cdb800968503e35c21b80548216831790557fa31bb47725d54da818848e46548a75dfd55a8959c86591550d470f48a19bacc280548216831790557fdb110f3c889ac47ef7dbc7404b33cf270d74e26be5887262a146c42673b9227f80548216831790557fcea8173c8d457eef8a5639130f5b2802d4cb414656e91038a884778e0b25e93480548216831790557fb42d83b92807ff2f4091b72d40385dfc3f3b7f71ea0f3941ad9521c1a4ccc69280548216831790557fcb086e2f4612a8e644098b32c9351c186c5dc8252f5ad80598641e351f01391280548216831790557f10362f7468ba54dcbae1b8a65713173e447715ed6a14a71336e03db84bf28dc680548216831790557f994c49cd3990a46d53dc08c9eb8badd2a7b3672a1ca0764e84003d647ceeaa7680548216831790557f066710a6472652366b3eaa91a40c81bda02cbfabfba5dc12d29466a8da0656c580548216831790557f03c9f43dcd6cb19cf6428d499a101a16dbc3be58cb14b4a7461861f258bf8e9080548216831790557ff709bb779d6f37594883570e60fa6adc4630abd3200201857a1832446ea85b4d80548216831790557f2031c0704d256bad2bad81c740c3e141d6499ff6c398c343d59268f967d8a14180548216831790557f92a7093147c46b8700b693a97a0abbf45a4ac9718b3ac76d1ad5e7b9a607618580548216831790557ffeab03fcfd42e82077839fcb00c63049cbfc5ba98dad1fc9a1dab6c2fc9a8bea80548216831790557feffe29c60607039ddb0c42a8576455c55a1fa4210f261d42cf1b727b83fb418380548216831790557f7b719f4f4887d282253a2a50f847a57fe4664e2f6bf12e3f178500d252dd4ac980548216831790557fd8f6fb60524a17ba895260ab9d65a55eddfd9a78f4260151e4fb73cbf88f01e280548216831790557f25823bea884588a289ed9d5d83cf37a9100d7391064e25534e8f6a41b77be42b80548216831790557f81dc087c326f65541e942d62d6e8f97c58e2df940f8a90c0e65907209078308b80548216831790557f87392736390064232a09867dc5b2a424aa528a0ee9d18c57cf7429d572a1a03a80548216831790557f08f2541af23e6ba8c2f7fc3df828c2f088477ee8facab8057c4d622cf800202a80548216831790557ffb45298d9331a31dc90641f32661d5c665737b32280d5dd19dd78c334f4c893080548216831790557f4d35ed364e7c9c207c49e57439becf8df98a9ae47c92bc74ad1b37dbef6a143b80548216831790557f3688e920127acef1a2469a259c34e7e122dcf9e6b075969ceb599f43b6983dc8805482168317905573a39c50bf86e15391180240938f469a7bf4fdae9a6000527f72c05bf4a8afd86b95c6c155f7c1b62753ef23c9cc3bbad32bae830686878ecf80548216831790557fbbbe8c4bf222d268d0cd80aaf6ce21e1e4c92d7fdc7eb3f8a4373fcfbadf50ee80549091169091179055600c602052565b6000546001600160a01b03163314611f335760405162461bcd60e51b815260040161085b90612fbc565b6001600160a01b03166000908152600160205260409020805460ff19169055565b601b54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015611f9957600080fd5b505af1158015610f96573d6000803e3d6000fd5b611fb63361212d565b611fd25760405162461bcd60e51b815260040161085b90612fd8565b60175447906001600160a01b03166108fc83611fee5782611ff0565b835b6040518115909202916000818181858888f1935050505015801561092f573d6000803e3d6000fd5b6000546001600160a01b031633146120425760405162461bcd60e51b815260040161085b90612fbc565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6120b73361212d565b6120d35760405162461bcd60e51b815260040161085b90612fd8565b610b208282612574565b6120e63361212d565b6121025760405162461bcd60e51b815260040161085b90612fd8565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6000806121588385613069565b905083811015610a485760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161085b565b600081848411156121ce5760405162461bcd60e51b815260040161085b9190612f67565b5060006121db84866130c2565b95945050505050565b601d5460009060ff1615612204576121fd8484846126c7565b9050610a48565b61220f8484846127ad565b61221761289d565b15612224576122246128f5565b601a5415801561224157506019546001600160a01b038481169116145b15612271576001600160a01b03841660009081526008602052604090205461226857600080fd5b61227143601a55565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600890915291909120546122c39184906121aa565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff16156122f85782612303565b612303858585612b4f565b6019549091506001600160a01b0385811691161480159061233d57506001600160a01b0384166000908152600b602052604090205460ff16155b156123c4576001600160a01b0384166000908152600860205260409020546007546123688383613069565b11156123c25760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b606482015260840161085b565b505b6001600160a01b0384166000908152600860205260409020546123e7908261214b565b6001600160a01b038086166000908152600860209081526040808320949094559188168152600c909152205460ff1661248b57601b546001600160a01b0386811660008181526008602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561247857600080fd5b505af1925050508015612489575060015b505b6001600160a01b0384166000908152600c602052604090205460ff1661251c57601b546001600160a01b0385811660008181526008602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561250957600080fd5b505af192505050801561251a575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161256191815260200190565b60405180910390a3506001949350505050565b6001600160a01b038216301480159061259b57506019546001600160a01b03838116911614155b6125a457600080fd5b6001600160a01b0382166000908152600c60205260409020805460ff1916821580159190911790915561263c57601b54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b15801561262057600080fd5b505af1158015612634573d6000803e3d6000fd5b505050505050565b601b546001600160a01b0383811660008181526008602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401612606565b6000610a4883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121aa565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546127189184906121aa565b6001600160a01b038086166000908152600860205260408082209390935590851681522054612747908361214b565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061279b9086815260200190565b60405180910390a35060019392505050565b6019546001600160a01b0384811691161461283057600654811115806127eb57506001600160a01b0383166000908152600b602052604090205460ff165b61092f5760405162461bcd60e51b815260206004820152601660248201527514d95b1b08151608131a5b5a5d08115e18d95959195960521b604482015260640161085b565b6005548111158061285957506001600160a01b0382166000908152600b602052604090205460ff165b61092f5760405162461bcd60e51b8152602060048201526015602482015274109d5e48151608131a5b5a5d08115e18d959591959605a1b604482015260640161085b565b6019546000906001600160a01b031633148015906128be5750601d5460ff16155b80156128d35750601b54600160a01b900460ff165b80156128f05750601c543060009081526008602052604090205410155b905090565b601d805460ff19166001179055601c54604080516002808252606082018352600092602083019080368337019050509050308160008151811061293a5761293a61310a565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061296b5761296b61310a565b6001600160a01b03928316602091820292909201015260185460405163791ac94760e01b81524792919091169063791ac947906129b5908690600090879030904290600401612ff8565b600060405180830381600087803b1580156129cf57600080fd5b505af11580156129e3573d6000803e3d6000fd5b5050505060006129fc824761268590919063ffffffff16565b90506000612a21601554612a1b60135485612c5b90919063ffffffff16565b90612cda565b90506000612a2f8383612685565b9050601b60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a8157600080fd5b505af193505050508015612a93575060015b506017546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114612ae6576040519150601f19603f3d011682016040523d82523d6000602084013e612aeb565b606091505b5050905080612b3c5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161085b565b5050601d805460ff191690555050505050565b60195460009081906001600160a01b03858116911614612ba7576012546001600160a01b0385166000908152600d6020526040812054612ba29291612a1b91612b9b919060ff16610baa565b8690612c5b565b612bdb565b6016546001600160a01b0386166000908152600d6020526040902054612bdb9190612a1b90612b9b9060019060ff16610baa565b30600090815260086020526040902054909150612bf8908261214b565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612c499085815260200190565b60405180910390a36121db8382612685565b600082612c6a575060006108d0565b6000612c7683856130a3565b905082612c838583613081565b14610a485760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161085b565b6000610a4883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183612d385760405162461bcd60e51b815260040161085b9190612f67565b5060006121db8486613081565b80358015158114610b6957600080fd5b600060208284031215612d6757600080fd5b8135610a4881613120565b60008060408385031215612d8557600080fd5b8235612d9081613120565b91506020830135612da081613120565b809150509250929050565b600080600060608486031215612dc057600080fd5b8335612dcb81613120565b92506020840135612ddb81613120565b929592945050506040919091013590565b60008060408385031215612dff57600080fd5b8235612e0a81613120565b9150612e1860208401612d45565b90509250929050565b60008060408385031215612e3457600080fd5b8235612e3f81613120565b946020939093013593505050565b600080600060408486031215612e6257600080fd5b833567ffffffffffffffff80821115612e7a57600080fd5b818601915086601f830112612e8e57600080fd5b813581811115612e9d57600080fd5b8760208260051b8501011115612eb257600080fd5b602092830195509350612ec89186019050612d45565b90509250925092565b60008060408385031215612ee457600080fd5b612e0a83612d45565b60008060408385031215612f0057600080fd5b612e3f83612d45565b600060208284031215612f1b57600080fd5b5035919050565b600060208284031215612f3457600080fd5b5051919050565b600080600060608486031215612f5057600080fd5b505081359360208301359350604090920135919050565b600060208083528351808285015260005b81811015612f9457858101830151858201604001528201612f78565b81811115612fa6576000604083870101525b50601f01601f1916929092016040019392505050565b602080825260029082015261085160f21b604082015260600190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156130485784516001600160a01b031683529383019391830191600101613023565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561307c5761307c6130f4565b500190565b60008261309e57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156130bd576130bd6130f4565b500290565b6000828210156130d4576130d46130f4565b500390565b60006000198214156130ed576130ed6130f4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461313557600080fd5b5056fea264697066735822122038c3579bab038ca19b241699484555e8e40dbe86624436637792dd2a08e2380364736f6c63430008060033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000006352673136d6ab9dd62d6da188150a07566bbb3d0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599

-----Decoded View---------------
Arg [0] : _presaler (address): 0x6352673136D6Ab9dD62D6da188150A07566bBb3d
Arg [1] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [2] : _token (address): 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000006352673136d6ab9dd62d6da188150a07566bbb3d
Arg [1] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [2] : 0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599


Deployed Bytecode Sourcemap

12139:20481:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13517:50;;;;;;;;;;;;;;;;;;;9692:25:1;;;9680:2;9665:18;13517:50:0;;;;;;;;15169:80;;;;;;;;;;-1:-1:-1;15241:5:0;;;;;;;;;;;;;;;;;15169:80;;;;;;;:::i;21077:103::-;;;;;;;;;;-1:-1:-1;21077:103:0;;;;;:::i;:::-;;:::i;:::-;;15591:216;;;;;;;;;;-1:-1:-1;15591:216:0;;;;;:::i;:::-;;:::i;:::-;;;5445:14:1;;5438:22;5420:41;;5408:2;5393:18;15591:216:0;5375:92:1;22896:405:0;;;;;;;;;;-1:-1:-1;22896:405:0;;;;;:::i;:::-;;:::i;22471:413::-;;;;;;;;;;-1:-1:-1;22471:413:0;;;;;:::i;:::-;;:::i;14899:88::-;;;;;;;;;;-1:-1:-1;14972:12:0;;14899:88;;16099:360;;;;;;;;;;-1:-1:-1;16099:360:0;;;;;:::i;:::-;;:::i;24002:146::-;;;;;;;;;;-1:-1:-1;24002:146:0;;;;;:::i;:::-;;:::i;4553:103::-;;;;;;;;;;-1:-1:-1;4553:103:0;;;;;:::i;:::-;4608:4;4643:5;-1:-1:-1;;;;;4632:16:0;;;4643:5;;4632:16;;4553:103;14993:80;;;;;;;;;;-1:-1:-1;14993:80:0;;12431:1;10855:36:1;;10843:2;10828:18;14993:80:0;10810:87:1;21431:158:0;;;;;;;;;;-1:-1:-1;21431:158:0;;;;;:::i;:::-;;:::i;21601:113::-;;;;;;;;;;-1:-1:-1;21601:113:0;;;;;:::i;:::-;;:::i;12504:45::-;;;;;;;;;;;;;;;;21309:110;;;;;;;;;;;;;:::i;15815:122::-;;;;;;;;;;-1:-1:-1;15815:122:0;;;;;:::i;:::-;;:::i;18330:459::-;;;;;;;;;;-1:-1:-1;18330:459:0;;;;;:::i;:::-;;:::i;22209:119::-;;;;;;;;;;-1:-1:-1;22209:119:0;;;;;:::i;:::-;;:::i;13480:30::-;;;;;;;;;;-1:-1:-1;13480:30:0;;;;-1:-1:-1;;;13480:30:0;;;;;;15339:105;;;;;;;;;;-1:-1:-1;15339:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;15423:18:0;15405:7;15423:18;;;:9;:18;;;;;;;15339:105;20964:101;;;;;;;;;;-1:-1:-1;20964:101:0;;;;;:::i;:::-;;:::i;15255:78::-;;;;;;;;;;-1:-1:-1;15307:7:0;15325:5;-1:-1:-1;;;;;15325:5:0;15255:78;;;-1:-1:-1;;;;;4454:32:1;;;4436:51;;4424:2;4409:18;15255:78:0;4391:102:1;21192:105:0;;;;;;;;;;-1:-1:-1;21192:105:0;;;;;:::i;:::-;;:::i;15079:84::-;;;;;;;;;;-1:-1:-1;15153:7:0;;;;;;;;;;;;-1:-1:-1;;;15153:7:0;;;;15079:84;;13378:19;;;;;;;;;;-1:-1:-1;13378:19:0;;;;-1:-1:-1;;;;;13378:19:0;;;15945:146;;;;;;;;;;-1:-1:-1;15945:146:0;;;;;:::i;:::-;;:::i;4217:97::-;;;;;;;;;;-1:-1:-1;4217:97:0;;;;;:::i;:::-;;:::i;24160:455::-;;;;;;;;;;-1:-1:-1;24160:455:0;;;;;:::i;:::-;;:::i;13406:25::-;;;;;;;;;;;;;;;;20781:175;;;;;;;;;;-1:-1:-1;20781:175:0;;;;;:::i;:::-;;:::i;15450:133::-;;;;;;;;;;-1:-1:-1;15450:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;15552:19:0;;;15534:7;15552:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15450:133;23733:155;;;;;;;;;;-1:-1:-1;23733:155:0;;;;;:::i;:::-;;:::i;23309:129::-;;;;;;;;;;-1:-1:-1;23309:129:0;;;;;:::i;:::-;;:::i;24627:7990::-;;;;;;;;;;;;;:::i;4393:100::-;;;;;;;;;;-1:-1:-1;4393:100:0;;;;;:::i;:::-;;:::i;23900:90::-;;;;;;;;;;;;;:::i;23450:275::-;;;;;;;;;;-1:-1:-1;23450:275:0;;;;;:::i;:::-;;:::i;4959:176::-;;;;;;;;;;-1:-1:-1;4959:176:0;;;;;:::i;:::-;;:::i;12556:52::-;;;;;;;;;;;;;;;;22071:130;;;;;;;;;;-1:-1:-1;22071:130:0;;;;;:::i;:::-;;:::i;22336:127::-;;;;;;;;;;-1:-1:-1;22336:127:0;;;;;:::i;:::-;;:::i;13347:24::-;;;;;;;;;;-1:-1:-1;13347:24:0;;;;-1:-1:-1;;;;;13347:24:0;;;4727:107;;;;;;;;;;-1:-1:-1;4727:107:0;;;;;:::i;:::-;;:::i;21077:103::-;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;;;;;;;;;21147:16:::1;:25:::0;21077:103::o;15591:216::-;15695:10;15666:4;15683:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;15683:32:0;;;;;;;;;;:41;;;15740:37;15666:4;;15683:32;;15740:37;;;;15718:6;9692:25:1;;9680:2;9665:18;;9647:76;15740:37:0;;;;;;;;-1:-1:-1;15795:4:0;15591:216;;;;;:::o;22896:405::-;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;23018:16:::1;:33:::0;;;23062:15:::1;:31:::0;;;23118:33:::1;23037:14:::0;23080:13;23118:18:::1;:33::i;:::-;23104:11;:47:::0;23162:17:::1;:35:::0;;;23273:19:::1;23291:1;23182:15:::0;23273:19:::1;:::i;:::-;23259:11;;:33;23251:42;;;::::0;::::1;;22896:405:::0;;;:::o;22471:413::-;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;22595:17:::1;:34:::0;;;22640:16:::1;:32:::0;;;22698:33:::1;22615:14:::0;22659:13;22698:18:::1;:33::i;:::-;22683:12;:48:::0;22742:18:::1;:36:::0;;;22855:20:::1;22874:1;22763:15:::0;22855:20:::1;:::i;:::-;22840:12;;:35;22832:44;;;::::0;::::1;16099:360:::0;-1:-1:-1;;;;;16219:19:0;;16199:4;16219:19;;;:11;:19;;;;;;;;16239:10;16219:31;;;;;;;;-1:-1:-1;;16219:52:0;16216:186;;16321:69;;;;;;;;;;;-1:-1:-1;;;16321:69:0;;;;;;;;-1:-1:-1;;;;;16321:19:0;;-1:-1:-1;16321:19:0;;;:11;:19;;;;;16341:10;16321:31;;;;;;;;;;:69;;16357:6;;16321:35;:69::i;:::-;-1:-1:-1;;;;;16287:19:0;;;;;;:11;:19;;;;;;;;16307:10;16287:31;;;;;;;:103;16216:186;16421:30;16425:6;16433:9;16444:6;16421:3;:30::i;:::-;16414:37;;16099:360;;;;;;:::o;24002:146::-;24098:11;;:42;;-1:-1:-1;;;24098:42:0;;-1:-1:-1;;;;;4454:32:1;;;24098:42:0;;;4436:51:1;24071:7:0;;24098:11;;:29;;4409:18:1;;24098:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21431:158::-;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21508:15:0;::::1;;::::0;;;:5:::1;:15;::::0;;;;:24;;-1:-1:-1;;21508:24:0::1;::::0;::::1;;;::::0;;21543:38:::1;21508:15:::0;:24;21543:20:::1;:38::i;:::-;21431:158:::0;;:::o;21601:113::-;21667:4;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;21691:15:0;::::1;;::::0;;;:5:::1;:15;::::0;;;;;::::1;;4144:1;21601:113:::0;;;:::o;21309:110::-;21369:7;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;-1:-1:-1;21396:15:0::1;::::0;21309:110;:::o;15815:122::-;15870:4;15894:35;15902:7;-1:-1:-1;;15894:7:0;:35::i;18330:459::-;18396:7;18507:12;18486:17;;18473:10;;:30;;;;:::i;:::-;:46;;:53;;;;18523:3;18473:53;18470:131;;;18536:7;:62;;18574:17;;:24;;18596:1;18574:21;:24::i;:::-;18536:62;;;18546:18;;:25;;18569:1;18546:22;:25::i;:::-;18529:69;;;;18470:131;18745:7;:36;;18770:11;;18745:36;;;18755:12;;18738:43;18330:459;-1:-1:-1;;;18330:459:0:o;22209:119::-;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22292:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;22292:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22209:119::o;20964:101::-;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;21033:15:::1;:24:::0;20964:101::o;21192:105::-;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;21265:15:::1;:24:::0;21192:105::o;15945:146::-;16025:4;16049:34;16053:10;16065:9;16076:6;16049:3;:34::i;4217:97::-;4608:4;4643:5;-1:-1:-1;;;;;4643:5:0;3956:10;4632:16;3940:34;;;;-1:-1:-1;;;3940:34:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4280:19:0::1;;::::0;;;4302:4:::1;4280:19;::::0;;;;;;;:26;;-1:-1:-1;;4280:26:0::1;::::0;;::::1;::::0;;4217:97::o;24160:455::-;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;24263:9:::1;24259:349;24278:19:::0;;::::1;24259:349;;;24340:8;24319:5;:18;24325:8;;24334:1;24325:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24319:18:0::1;-1:-1:-1::0;;;;;24319:18:0::1;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;24395:8;24363:16;:29;24380:8;;24389:1;24380:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24363:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;24363:29:0;:40;;-1:-1:-1;;24363:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24418:179;::::1;;;24449:11;::::0;-1:-1:-1;;;;;24449:11:0::1;:20;24470:8:::0;;24479:1;24470:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;24449:36;::::0;-1:-1:-1;;;;;;24449:36:0::1;::::0;;;;;;-1:-1:-1;;;;;4914:32:1;;;24449:36:0::1;::::0;::::1;4896:51:1::0;24483:1:0::1;4963:18:1::0;;;4956:34;4869:18;;24449:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24418:179;;;24524:11;::::0;-1:-1:-1;;;;;24524:11:0::1;:20;24545:8:::0;;24554:1;24545:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;24558:9;:22;24568:8;;24577:1;24568:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24558:22:0::1;-1:-1:-1::0;;;;;24558:22:0::1;;;;;;;;;;;;;24524:57;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;4914:32:1;;;;4896:51;;4978:2;4963:18;;4956:34;4884:2;4869:18;;4851:145;24524:57:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24418:179;24299:3:::0;::::1;::::0;::::1;:::i;:::-;;;;24259:349;;;;24160:455:::0;;;:::o;20781:175::-;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;20874:1:::1;20865:6;:10;20857:54;;;::::0;-1:-1:-1;;;20857:54:0;;8301:2:1;20857:54:0::1;::::0;::::1;8283:21:1::0;8340:2;8320:18;;;8313:30;8379:33;8359:18;;;8352:61;8430:18;;20857:54:0::1;8273:181:1::0;20857:54:0::1;20922:17;:26:::0;20781:175::o;23733:155::-;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;23824:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;23824:22:0::1;-1:-1:-1::0;;;;23824:22:0;;::::1;::::0;;;::::1;::::0;;;23857:13:::1;:23:::0;23733:155::o;23309:129::-;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;23392:17:::1;:38:::0;;-1:-1:-1;;;;;;23392:38:0::1;-1:-1:-1::0;;;;;23392:38:0;;;::::1;::::0;;;::::1;::::0;;23309:129::o;24627:7990::-;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;24683:58;:65;;24744:4:::1;-1:-1:-1::0;;24683:65:0;;::::1;::::0;::::1;::::0;;;24759:69;:76;;;::::1;::::0;::::1;::::0;;24852:58;:65;;;::::1;::::0;::::1;::::0;;24928:69;:76;;;::::1;::::0;::::1;::::0;;25021:58;:65;;;::::1;::::0;::::1;::::0;;25097:69;:76;;;::::1;::::0;::::1;::::0;;25359:58;:65;;;::::1;::::0;::::1;::::0;;25435:69;:76;;;::::1;::::0;::::1;::::0;;25528:58;:65;;;::::1;::::0;::::1;::::0;;25604:69;:76;;;::::1;::::0;::::1;::::0;;25697:58;:65;;;::::1;::::0;::::1;::::0;;25773:69;:76;;;::::1;::::0;::::1;::::0;;25866:58;:65;;;::::1;::::0;::::1;::::0;;25942:69;:76;;;::::1;::::0;::::1;::::0;;26035:58;:65;;;::::1;::::0;::::1;::::0;;26111:69;:76;;;::::1;::::0;::::1;::::0;;26204:58;:65;;;::::1;::::0;::::1;::::0;;26280:69;:76;;;::::1;::::0;::::1;::::0;;26373:58;:65;;;::::1;::::0;::::1;::::0;;26449:69;:76;;;::::1;::::0;::::1;::::0;;26542:58;:65;;;::::1;::::0;::::1;::::0;;26618:69;:76;;;::::1;::::0;::::1;::::0;;26711:58;:65;;;::::1;::::0;::::1;::::0;;26787:69;:76;;;::::1;::::0;::::1;::::0;;26880:58;:65;;;::::1;::::0;::::1;::::0;;26956:69;:76;;;::::1;::::0;::::1;::::0;;27049:58;:65;;;::::1;::::0;::::1;::::0;;27125:69;:76;;;::::1;::::0;::::1;::::0;;27218:58;:65;;;::::1;::::0;::::1;::::0;;27294:69;:76;;;::::1;::::0;::::1;::::0;;27387:58;:65;;;::::1;::::0;::::1;::::0;;27463:69;:76;;;::::1;::::0;::::1;::::0;;27556:58;:65;;;::::1;::::0;::::1;::::0;;27632:69;:76;;;::::1;::::0;::::1;::::0;;27725:58;:65;;;::::1;::::0;::::1;::::0;;27801:69;:76;;;::::1;::::0;::::1;::::0;;27894:58;:65;;;::::1;::::0;::::1;::::0;;27970:69;:76;;;::::1;::::0;::::1;::::0;;28063:58;:65;;;::::1;::::0;::::1;::::0;;28139:69;:76;;;::::1;::::0;::::1;::::0;;28232:58;:65;;;::::1;::::0;::::1;::::0;;28308:69;:76;;;::::1;::::0;::::1;::::0;;28401:58;:65;;;::::1;::::0;::::1;::::0;;28477:69;:76;;;::::1;::::0;::::1;::::0;;28570:58;:65;;;::::1;::::0;::::1;::::0;;28646:69;:76;;;::::1;::::0;::::1;::::0;;28739:58;:65;;;::::1;::::0;::::1;::::0;;28815:69;:76;;;::::1;::::0;::::1;::::0;;28908:58;:65;;;::::1;::::0;::::1;::::0;;28984:69;:76;;;::::1;::::0;::::1;::::0;;29077:58;:65;;;::::1;::::0;::::1;::::0;;29153:69;:76;;;::::1;::::0;::::1;::::0;;29246:58;:65;;;::::1;::::0;::::1;::::0;;29322:69;:76;;;::::1;::::0;::::1;::::0;;29415:58;:65;;;::::1;::::0;::::1;::::0;;29491:69;:76;;;::::1;::::0;::::1;::::0;;29584:58;:65;;;::::1;::::0;::::1;::::0;;29660:69;:76;;;::::1;::::0;::::1;::::0;;29753:58;:65;;;::::1;::::0;::::1;::::0;;29829:69;:76;;;::::1;::::0;::::1;::::0;;29922:58;:65;;;::::1;::::0;::::1;::::0;;29998:69;:76;;;::::1;::::0;::::1;::::0;;30091:58;:65;;;::::1;::::0;::::1;::::0;;30167:69;:76;;;::::1;::::0;::::1;::::0;;30260:58;:65;;;::::1;::::0;::::1;::::0;;30336:69;:76;;;::::1;::::0;::::1;::::0;;30598:58;:65;;;::::1;::::0;::::1;::::0;;30674:69;:76;;;::::1;::::0;::::1;::::0;;30767:58;:65;;;::::1;::::0;::::1;::::0;;30843:69;:76;;;::::1;::::0;::::1;::::0;;30936:58;:65;;;::::1;::::0;::::1;::::0;;31012:69;:76;;;::::1;::::0;::::1;::::0;;31105:58;:65;;;::::1;::::0;::::1;::::0;;31181:69;:76;;;::::1;::::0;::::1;::::0;;31274:58;:65;;;::::1;::::0;::::1;::::0;;31350:69;:76;;;::::1;::::0;::::1;::::0;;31443:58;:65;;;::::1;::::0;::::1;::::0;;31519:69;:76;;;::::1;::::0;::::1;::::0;;31612:58;:65;;;::::1;::::0;::::1;::::0;;31688:69;:76;;;::::1;::::0;::::1;::::0;;31781:58;:65;;;::::1;::::0;::::1;::::0;;31857:69;:76;;;::::1;::::0;::::1;::::0;;31950:58;:65;;;::::1;::::0;::::1;::::0;;32026:69;:76;;;::::1;::::0;::::1;::::0;;32119:58;:65;;;::::1;::::0;::::1;::::0;;32195:69;:76;;;::::1;::::0;::::1;::::0;;32302:42:::1;-1:-1:-1::0;32288:58:0;;:65;;;::::1;::::0;::::1;::::0;;32364:69;:76;;;;::::1;::::0;;::::1;::::0;;24759:16:::1;24683:58;32533:69:::0;24627:7990::o;4393:100::-;4608:4;4643:5;-1:-1:-1;;;;;4643:5:0;3956:10;4632:16;3940:34;;;;-1:-1:-1;;;3940:34:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4458:19:0::1;4480:5;4458:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;4458:27:0::1;::::0;;4393:100::o;23900:90::-;23945:11;;:37;;-1:-1:-1;;;23945:37:0;;23971:10;23945:37;;;4436:51:1;-1:-1:-1;;;;;23945:11:0;;;;:25;;4409:18:1;;23945:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23450:275;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;23648:17:::1;::::0;23608:21:::1;::::0;-1:-1:-1;;;;;23648:17:0::1;23640:77;23676:10:::0;:40:::1;;23698:18;23676:40;;;23689:6;23676:40;23640:77;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;4959:176:::0;4608:4;4643:5;-1:-1:-1;;;;;4643:5:0;3956:10;4632:16;3940:34;;;;-1:-1:-1;;;3940:34:0;;;;;;;:::i;:::-;5038:5:::1;:11:::0;;-1:-1:-1;;;;;;5038:11:0::1;-1:-1:-1::0;;;;;5038:11:0;::::1;::::0;;::::1;::::0;;5060:19;;;-1:-1:-1;5060:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;5060:26:0::1;::::0;;::::1;::::0;;;5102:25;;4436:51:1;;;5102:25:0::1;::::0;4409:18:1;5102:25:0::1;;;;;;;4959:176:::0;:::o;22071:130::-;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;22157:36:::1;22178:6;22186;22157:20;:36::i;22336:127::-:0;4107:24;4120:10;4107:12;:24::i;:::-;4099:43;;;;-1:-1:-1;;;4099:43:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22423:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;22423:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22336:127::o;4727:107::-;-1:-1:-1;;;;;4807:19:0;4783:4;4807:19;;;:14;:19;;;;;;;;;4727:107::o;1283:181::-;1341:7;;1373:5;1377:1;1373;:5;:::i;:::-;1361:17;;1402:1;1397;:6;;1389:46;;;;-1:-1:-1;;;1389:46:0;;6502:2:1;1389:46:0;;;6484:21:1;6541:2;6521:18;;;6514:30;6580:29;6560:18;;;6553:57;6627:18;;1389:46:0;6474:177:1;1612:192:0;1698:7;1734:12;1726:6;;;;1718:29;;;;-1:-1:-1;;;1718:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1758:9:0;1770:5;1774:1;1770;:5;:::i;:::-;1758:17;1612:192;-1:-1:-1;;;;;1612:192:0:o;16467:1056::-;16556:6;;16536:4;;16556:6;;16553:50;;;16572:28;16587:1;16590;16593:6;16572:14;:28::i;:::-;16565:35;;;;16553:50;16623:26;16636:1;16639;16642:6;16623:12;:26::i;:::-;16665:16;:14;:16::i;:::-;16662:35;;;16684:10;:8;:10::i;:::-;20627;;:15;;;16712:24;;-1:-1:-1;16732:4:0;;-1:-1:-1;;;;;16727:9:0;;;16732:4;;16727:9;16712:24;16709:68;;;-1:-1:-1;;;;;16747:12:0;;16762:1;16747:12;;;:9;:12;;;;;;16739:25;;;;;;16766:8;20749:12;20736:10;:25;20658:111;16766:8;16804:48;;;;;;;;;;;-1:-1:-1;;;16804:48:0;;;;;;;;-1:-1:-1;;;;;16804:12:0;;-1:-1:-1;16804:12:0;;;:9;:12;;;;;;;;:48;;16821:6;;16804:16;:48::i;:::-;-1:-1:-1;;;;;16789:12:0;;;;;;:9;:12;;;;;;;;:63;;;;18295:11;:19;;;;;;;;18294:20;16890:49;;16933:6;16890:49;;;16909:21;16917:1;16920;16923:6;16909:7;:21::i;:::-;16968:4;;16865:74;;-1:-1:-1;;;;;;16963:9:0;;;16968:4;;16963:9;;;;:32;;-1:-1:-1;;;;;;16977:18:0;;;;;;:15;:18;;;;;;;;16976:19;16963:32;16960:234;;;-1:-1:-1;;;;;15423:18:0;;17011:32;15423:18;;;:9;:18;;;;;;17126:15;;17081:41;17108:14;15423:18;17081:41;:::i;:::-;:60;;17073:108;;;;-1:-1:-1;;;17073:108:0;;6858:2:1;17073:108:0;;;6840:21:1;6897:2;6877:18;;;6870:30;6936:34;6916:18;;;6909:62;-1:-1:-1;;;6987:18:1;;;6980:33;7030:19;;17073:108:0;6830:225:1;17073:108:0;16996:198;16960:234;-1:-1:-1;;;;;17229:12:0;;;;;;:9;:12;;;;;;:32;;17246:14;17229:16;:32::i;:::-;-1:-1:-1;;;;;17214:12:0;;;;;;;:9;:12;;;;;;;;:47;;;;17278:19;;;;;:16;:19;;;;;;;17274:81;;17304:11;;-1:-1:-1;;;;;17328:12:0;;;17304:11;17328:12;;;:9;:12;;;;;;;;17304:37;;-1:-1:-1;;;17304:37:0;;;;;4896:51:1;;;;4963:18;;;4956:34;17304:11:0;;;:20;;4869:18:1;;17304:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17300:53;;-1:-1:-1;;;;;17369:19:0;;;;;;:16;:19;;;;;;;;17365:81;;17395:11;;-1:-1:-1;;;;;17419:12:0;;;17395:11;17419:12;;;:9;:12;;;;;;;;17395:37;;-1:-1:-1;;;17395:37:0;;;;;4896:51:1;;;;4963:18;;;4956:34;17395:11:0;;;:20;;4869:18:1;;17395:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17391:53;;17475:1;-1:-1:-1;;;;;17463:30:0;17472:1;-1:-1:-1;;;;;17463:30:0;;17478:14;17463:30;;;;9692:25:1;;9680:2;9665:18;;9647:76;17463:30:0;;;;;;;;-1:-1:-1;17511:4:0;;16467:1056;-1:-1:-1;;;;16467:1056:0:o;21726:337::-;-1:-1:-1;;;;;21813:23:0;;21831:4;21813:23;;;;:41;;-1:-1:-1;21850:4:0;;-1:-1:-1;;;;;21840:14:0;;;21850:4;;21840:14;;21813:41;21805:50;;;;;;-1:-1:-1;;;;;21866:24:0;;;;;;:16;:24;;;;;:33;;-1:-1:-1;;21866:33:0;;;;;;;;;;;;21910:146;;21935:11;;:31;;-1:-1:-1;;;21935:31:0;;-1:-1:-1;;;;;4914:32:1;;;21935:31:0;;;4896:51:1;21935:11:0;4963:18:1;;;4956:34;21935:11:0;;;;:20;;4869:18:1;;21935:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21431:158;;:::o;21910:146::-;21997:11;;-1:-1:-1;;;;;22026:17:0;;;21997:11;22026:17;;;:9;:17;;;;;;;;21997:47;;-1:-1:-1;;;21997:47:0;;;;;4896:51:1;;;;4963:18;;;4956:34;21997:11:0;;;:20;;4869:18:1;;21997:47:0;4851:145:1;1470:136:0;1528:7;1555:43;1559:1;1562;1555:43;;;;;;;;;;;;;;;;;:3;:43::i;17535:330::-;17665:53;;;;;;;;;;;-1:-1:-1;;;17665:53:0;;;;;;;;-1:-1:-1;;;;;17665:17:0;;17628:4;17665:17;;;:9;:17;;;;;;;:53;;17687:6;;17665:21;:53::i;:::-;-1:-1:-1;;;;;17645:17:0;;;;;;;:9;:17;;;;;;:73;;;;17752:20;;;;;;;:32;;17777:6;17752:24;:32::i;:::-;-1:-1:-1;;;;;17729:20:0;;;;;;;:9;:20;;;;;;;:55;;;;17800:35;;;;;;;;;;17828:6;9692:25:1;;9680:2;9665:18;;9647:76;17800:35:0;;;;;;;;-1:-1:-1;17853:4:0;17535:330;;;;;:::o;17873:327::-;17980:4;;-1:-1:-1;;;;;17970:14:0;;;17980:4;;17970:14;:222;;18122:16;;18112:6;:26;;:53;;;-1:-1:-1;;;;;;18142:23:0;;;;;;:15;:23;;;;;;;;18112:53;18104:88;;;;-1:-1:-1;;;18104:88:0;;9063:2:1;18104:88:0;;;9045:21:1;9102:2;9082:18;;;9075:30;-1:-1:-1;;;9121:18:1;;;9114:52;9183:18;;18104:88:0;9035:172:1;17970:222:0;18018:15;;18008:6;:25;;:54;;;-1:-1:-1;;;;;;18037:25:0;;;;;;:15;:25;;;;;;;;18008:54;18000:88;;;;-1:-1:-1;;;18000:88:0;;7951:2:1;18000:88:0;;;7933:21:1;7990:2;7970:18;;;7963:30;-1:-1:-1;;;8009:18:1;;;8002:51;8070:18;;18000:88:0;7923:171:1;19369:197:0;19456:4;;19418;;-1:-1:-1;;;;;19456:4:0;19442:10;:18;;;;:38;;-1:-1:-1;19474:6:0;;;;19473:7;19442:38;:62;;;;-1:-1:-1;19493:11:0;;-1:-1:-1;;;19493:11:0;;;;19442:62;:116;;;;-1:-1:-1;19545:13:0;;19535:4;19517:24;;;;:9;:24;;;;;;:41;;19442:116;19435:123;;19369:197;:::o;19574:978::-;13622:6;:13;;-1:-1:-1;;13622:13:0;13631:4;13622:13;;;19646::::1;::::0;19696:16:::1;::::0;;19710:1:::1;19696:16:::0;;;;;::::1;::::0;;-1:-1:-1;;19696:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19696:16:0::1;19672:40;;19741:4;19723;19728:1;19723:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19723:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;19767:4:::1;::::0;19757:7;;19767:4;::::1;::::0;19757;;19767;;19757:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;19757:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;19842:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;19842:188:0;;19808:21:::1;::::0;19842:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;19914:12;;19784:21:::1;::::0;19957:4;;19984::::1;::::0;20004:15:::1;::::0;19842:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20041:17;20061:40;20087:13;20061:21;:25;;:40;;;;:::i;:::-;20041:60;;20112:24;20139:50;20176:12;;20139:32;20153:17;;20139:9;:13;;:32;;;;:::i;:::-;:36:::0;::::1;:50::i;:::-;20112:77:::0;-1:-1:-1;20200:23:0::1;20226:31;:9:::0;20112:77;20226:13:::1;:31::i;:::-;20200:57;;20274:11;;;;;;;;;-1:-1:-1::0;;;;;20274:11:0::1;-1:-1:-1::0;;;;;20274:19:0::1;;20301:16;20274:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;20411:17:0::1;::::0;20403:71:::1;::::0;20353:21:::1;::::0;-1:-1:-1;;;;;20411:17:0::1;::::0;20464:5:::1;::::0;20442:15;;20353:21;20403:71;20353:21;20403:71;20442:15;20411:17;20464:5;20403:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20352:122;;;20493:16;20485:59;;;::::0;-1:-1:-1;;;20485:59:0;;7262:2:1;20485:59:0::1;::::0;::::1;7244:21:1::0;7301:2;7281:18;;;7274:30;7340:32;7320:18;;;7313:60;7390:18;;20485:59:0::1;7234:180:1::0;20485:59:0::1;-1:-1:-1::0;;13640:6:0;:14;;-1:-1:-1;;13640:14:0;;;-1:-1:-1;;;;;19574:978:0:o;18797:564::-;19026:4;;18882:7;;;;-1:-1:-1;;;;;19014:16:0;;;19026:4;;19014:16;19013:162;;19157:17;;-1:-1:-1;;;;;19135:15:0;;19128:5;19135:15;;;:5;:15;;;;;;19105:70;;19157:17;19105:47;;19116:35;;19128:5;19135:15;;19116:11;:35::i;:::-;19105:6;;:10;:47::i;:70::-;19013:162;;;19083:18;;-1:-1:-1;;;;;19063:13:0;;;;;;:5;:13;;;;;;19034:68;;19083:18;19034:44;;19045:32;;19057:4;;19063:13;;19045:11;:32::i;19034:68::-;19233:4;19215:24;;;;:9;:24;;;;;;18993:182;;-1:-1:-1;19215:39:0;;18993:182;19215:28;:39::i;:::-;19206:4;19188:24;;;;:9;:24;;;;;;;:66;;;;19270:42;;-1:-1:-1;;;;;19270:42:0;;;;;;;19302:9;9692:25:1;;9680:2;9665:18;;9647:76;19270:42:0;;;;;;;;19332:21;:6;19343:9;19332:10;:21::i;1810:250::-;1868:7;1892:6;1888:47;;-1:-1:-1;1922:1:0;1915:8;;1888:47;1947:9;1959:5;1963:1;1959;:5;:::i;:::-;1947:17;-1:-1:-1;1992:1:0;1983:5;1987:1;1947:17;1983:5;:::i;:::-;:10;1975:56;;;;-1:-1:-1;;;1975:56:0;;8661:2:1;1975:56:0;;;8643:21:1;8700:2;8680:18;;;8673:30;8739:34;8719:18;;;8712:62;-1:-1:-1;;;8790:18:1;;;8783:31;8831:19;;1975:56:0;8633:223:1;2066:132:0;2124:7;2151:39;2155:1;2158;2151:39;;;;;;;;;;;;;;;;;2290:7;2392:12;2385:5;2377:28;;;;-1:-1:-1;;;2377:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2416:9:0;2428:5;2432:1;2428;:5;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;179:247;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;307:1;304;297:12;259:2;346:9;333:23;365:31;390:5;365:31;:::i;691:388::-;759:6;767;820:2;808:9;799:7;795:23;791:32;788:2;;;836:1;833;826:12;788:2;875:9;862:23;894:31;919:5;894:31;:::i;:::-;944:5;-1:-1:-1;1001:2:1;986:18;;973:32;1014:33;973:32;1014:33;:::i;:::-;1066:7;1056:17;;;778:301;;;;;:::o;1084:456::-;1161:6;1169;1177;1230:2;1218:9;1209:7;1205:23;1201:32;1198:2;;;1246:1;1243;1236:12;1198:2;1285:9;1272:23;1304:31;1329:5;1304:31;:::i;:::-;1354:5;-1:-1:-1;1411:2:1;1396:18;;1383:32;1424:33;1383:32;1424:33;:::i;:::-;1188:352;;1476:7;;-1:-1:-1;;;1530:2:1;1515:18;;;;1502:32;;1188:352::o;1545:315::-;1610:6;1618;1671:2;1659:9;1650:7;1646:23;1642:32;1639:2;;;1687:1;1684;1677:12;1639:2;1726:9;1713:23;1745:31;1770:5;1745:31;:::i;:::-;1795:5;-1:-1:-1;1819:35:1;1850:2;1835:18;;1819:35;:::i;:::-;1809:45;;1629:231;;;;;:::o;1865:315::-;1933:6;1941;1994:2;1982:9;1973:7;1969:23;1965:32;1962:2;;;2010:1;2007;2000:12;1962:2;2049:9;2036:23;2068:31;2093:5;2068:31;:::i;:::-;2118:5;2170:2;2155:18;;;;2142:32;;-1:-1:-1;;;1952:228:1:o;2185:689::-;2277:6;2285;2293;2346:2;2334:9;2325:7;2321:23;2317:32;2314:2;;;2362:1;2359;2352:12;2314:2;2402:9;2389:23;2431:18;2472:2;2464:6;2461:14;2458:2;;;2488:1;2485;2478:12;2458:2;2526:6;2515:9;2511:22;2501:32;;2571:7;2564:4;2560:2;2556:13;2552:27;2542:2;;2593:1;2590;2583:12;2542:2;2633;2620:16;2659:2;2651:6;2648:14;2645:2;;;2675:1;2672;2665:12;2645:2;2730:7;2723:4;2713:6;2710:1;2706:14;2702:2;2698:23;2694:34;2691:47;2688:2;;;2751:1;2748;2741:12;2688:2;2782:4;2774:13;;;;-1:-1:-1;2806:6:1;-1:-1:-1;2831:37:1;;2847:20;;;-1:-1:-1;2831:37:1;:::i;:::-;2821:47;;2304:570;;;;;:::o;2879:248::-;2941:6;2949;3002:2;2990:9;2981:7;2977:23;2973:32;2970:2;;;3018:1;3015;3008:12;2970:2;3041:26;3057:9;3041:26;:::i;3132:248::-;3197:6;3205;3258:2;3246:9;3237:7;3233:23;3229:32;3226:2;;;3274:1;3271;3264:12;3226:2;3297:26;3313:9;3297:26;:::i;3385:180::-;3444:6;3497:2;3485:9;3476:7;3472:23;3468:32;3465:2;;;3513:1;3510;3503:12;3465:2;-1:-1:-1;3536:23:1;;3455:110;-1:-1:-1;3455:110:1:o;3570:184::-;3640:6;3693:2;3681:9;3672:7;3668:23;3664:32;3661:2;;;3709:1;3706;3699:12;3661:2;-1:-1:-1;3732:16:1;;3651:103;-1:-1:-1;3651:103:1:o;3759:316::-;3836:6;3844;3852;3905:2;3893:9;3884:7;3880:23;3876:32;3873:2;;;3921:1;3918;3911:12;3873:2;-1:-1:-1;;3944:23:1;;;4014:2;3999:18;;3986:32;;-1:-1:-1;4065:2:1;4050:18;;;4037:32;;3863:212;-1:-1:-1;3863:212:1:o;5698:597::-;5810:4;5839:2;5868;5857:9;5850:21;5900:6;5894:13;5943:6;5938:2;5927:9;5923:18;5916:34;5968:1;5978:140;5992:6;5989:1;5986:13;5978:140;;;6087:14;;;6083:23;;6077:30;6053:17;;;6072:2;6049:26;6042:66;6007:10;;5978:140;;;6136:6;6133:1;6130:13;6127:2;;;6206:1;6201:2;6192:6;6181:9;6177:22;6173:31;6166:42;6127:2;-1:-1:-1;6279:2:1;6258:15;-1:-1:-1;;6254:29:1;6239:45;;;;6286:2;6235:54;;5819:476;-1:-1:-1;;;5819:476:1:o;7419:325::-;7621:2;7603:21;;;7660:1;7640:18;;;7633:29;-1:-1:-1;;;7693:2:1;7678:18;;7671:32;7735:2;7720:18;;7593:151::o;9212:329::-;9414:2;9396:21;;;9453:1;9433:18;;;9426:29;-1:-1:-1;;;9486:2:1;9471:18;;9464:36;9532:2;9517:18;;9386:155::o;9728:980::-;9990:4;10038:3;10027:9;10023:19;10069:6;10058:9;10051:25;10095:2;10133:6;10128:2;10117:9;10113:18;10106:34;10176:3;10171:2;10160:9;10156:18;10149:31;10200:6;10235;10229:13;10266:6;10258;10251:22;10304:3;10293:9;10289:19;10282:26;;10343:2;10335:6;10331:15;10317:29;;10364:1;10374:195;10388:6;10385:1;10382:13;10374:195;;;10453:13;;-1:-1:-1;;;;;10449:39:1;10437:52;;10544:15;;;;10509:12;;;;10485:1;10403:9;10374:195;;;-1:-1:-1;;;;;;;10625:32:1;;;;10620:2;10605:18;;10598:60;-1:-1:-1;;;10689:3:1;10674:19;10667:35;10586:3;9999:709;-1:-1:-1;;;9999:709:1:o;10902:128::-;10942:3;10973:1;10969:6;10966:1;10963:13;10960:2;;;10979:18;;:::i;:::-;-1:-1:-1;11015:9:1;;10950:80::o;11035:217::-;11075:1;11101;11091:2;;11145:10;11140:3;11136:20;11133:1;11126:31;11180:4;11177:1;11170:15;11208:4;11205:1;11198:15;11091:2;-1:-1:-1;11237:9:1;;11081:171::o;11257:168::-;11297:7;11363:1;11359;11355:6;11351:14;11348:1;11345:21;11340:1;11333:9;11326:17;11322:45;11319:2;;;11370:18;;:::i;:::-;-1:-1:-1;11410:9:1;;11309:116::o;11430:125::-;11470:4;11498:1;11495;11492:8;11489:2;;;11503:18;;:::i;:::-;-1:-1:-1;11540:9:1;;11479:76::o;11560:135::-;11599:3;-1:-1:-1;;11620:17:1;;11617:2;;;11640:18;;:::i;:::-;-1:-1:-1;11687:1:1;11676:13;;11607:88::o;11700:127::-;11761:10;11756:3;11752:20;11749:1;11742:31;11792:4;11789:1;11782:15;11816:4;11813:1;11806:15;11832:127;11893:10;11888:3;11884:20;11881:1;11874:31;11924:4;11921:1;11914:15;11948:4;11945:1;11938:15;12096:131;-1:-1:-1;;;;;12171:31:1;;12161:42;;12151:2;;12217:1;12214;12207:12;12151:2;12141:86;:::o

Swarm Source

ipfs://8de95b9b623ceebf4bb7e7ead9c0888cacfc88bee582def953f8d8092ab1b7fc
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.