ETH Price: $2,735.44 (+12.92%)
 

Overview

Max Total Supply

1,000,000 MAYA

Holders

8

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 MAYA

Value
$0.00
0xfb6d4f61f667e94f8ad53cd95982c3fe110c01d9
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Maya

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-20
*/

//SPDX-License-Identifier: MIT

/*
Tg Portal: https://t.me/MakeAmericaYugeAgain @MakeAmericaYugeAgain

Webpage: https://makeamericayugeagain.com/

X/Twitter: https://x.com/MakeAmericaYA
*/


pragma solidity 0.8.21;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address __owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed _owner, address indexed spender, uint256 value);
}

interface IUniswapV2Factory { 
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

abstract contract Auth {
    address internal _owner;
    constructor(address deployerWallet) { 
        _owner = deployerWallet; 
    }
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this"); 
        _; 
    }
    function owner() public view returns (address) { 
        return _owner; 
    }
    function transferOwnership(address payable newOwner) external onlyOwner { 
        _owner = newOwner; 
        emit OwnershipTransferred(newOwner); 
    }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0); 
        emit OwnershipTransferred(address(0)); 
    }
    event OwnershipTransferred(address _owner);
}

contract Maya is IERC20, Auth {
    uint8 private constant _decimals      = 9;
    uint256 private constant _totalSupply = 1000000 * (10**_decimals);
    string private constant _name         = "MAKE AMERICA YUGE AGAIN";
    string private constant _symbol       = "MAYA";

    uint8 private antiSnipeTax1 = 25;
    uint8 private antiSnipeTax2 = 22;
    uint8 private antiSnipeBlocks1 = 1;
    uint8 private antiSnipeBlocks2 = 1;

    uint8 private _buyTaxRate  = 20;
    uint8 private _sellTaxRate = 20;

    address payable private _walletMarketing = payable(0xfE89B942FD3842339c163ed5Ee4628EFcf0f1b92); 

    uint256 private _launchBlock;
    uint256 private _maxTxAmount = _totalSupply * 2 / 100; 
    uint256 private _maxWalletAmount = _totalSupply * 2 / 100;
    uint256 private _taxSwapMin = _totalSupply * 10 / 100000;
    uint256 private _taxSwapMax = _totalSupply * 599 / 100000;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFees;
    mapping (address => bool) private _noLimits;

    address private _lpOwner;

    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;

    bool private _tradingOpen;

    bool private _inTaxSwap = false;
    modifier lockTaxSwap { 
        _inTaxSwap = true; 
        _; 
        _inTaxSwap = false; 
    }

    event TokensAirdropped(uint256 totalWallets, uint256 totalTokens);
    event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount);

    constructor() Auth(msg.sender) {
        _lpOwner = msg.sender;

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

        _noFees[_owner] = true;
        _noFees[address(this)] = true;
        _noFees[_swapRouterAddress] = true;
        _noFees[_walletMarketing] = true;
        _noLimits[_owner] = true;
        _noLimits[address(this)] = true;
        _noLimits[_swapRouterAddress] = true;
        _noLimits[_walletMarketing] = true;
    }

    receive() external payable {}
    
    function totalSupply() external pure 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 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 transfer(address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(sender), "Trading not open");
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] -= amount;
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP exists");
        require(!_tradingOpen, "trading is open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in contract or message");
        require(_balances[address(this)]>0, "No tokens in contract");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance, false);
        _isLP[_primaryLP] = true;
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
        address lpTokenRecipient = _lpOwner;
        if ( autoburn ) { lpTokenRecipient = address(0); }
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
    }

    function enableTrading() external onlyOwner {
        require(!_tradingOpen, "trading is open");
        _openTrading();
    }

    function _openTrading() internal {
        _tradingOpen = true;
        _launchBlock = block.number;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); }
        
        if ( sender != address(this) && recipient != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); 
        }
        uint256 _taxAmount = _calculateTax(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] = _balances[sender] - amount;
        if ( _taxAmount > 0 ) { _balances[address(this)] += _taxAmount; }
        _balances[recipient] += _transferAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) {
            if ( transferAmount > _maxTxAmount ) { 
                limitCheckPassed = false; 
            }
            else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { 
                limitCheckPassed = false; 
            }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address sender) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; } 
        return checkResult;
    }

    function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[sender] ) { 
            if ( block.number >= _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2 ) {
                taxAmount = amount * _buyTaxRate / 100; 
            } else if ( block.number >= _launchBlock + antiSnipeBlocks1 ) {
                taxAmount = amount * antiSnipeTax2 / 100;
            } else if ( block.number >= _launchBlock) {
                taxAmount = amount * antiSnipeTax1 / 100;
            }
        } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _sellTaxRate / 100; 
        }
        return taxAmount;
    }

    function exemptFromFees(address wallet) external view returns (bool) {
        return _noFees[wallet];
    } 
    function exemptFromLimits(address wallet) external view returns (bool) {
        return _noLimits[wallet];
    } 
    function setExempt(address wallet, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); }
        _noFees[ wallet ] = noFees;
        _noLimits[ wallet ] = noLimits;
    }

    function buyFee() external view returns(uint8) {
        return _buyTaxRate;
    }
    function sellFee() external view returns(uint8) {
        return _sellTaxRate;
    }

    function setFees(uint8 buy, uint8 sell) external onlyOwner {
        require(buy + sell <= 20, "Roundtrip too high");
        _buyTaxRate = buy;
        _sellTaxRate = sell;
    }  

    function marketingWallet() external view returns (address) {
        return _walletMarketing;
    }

    function updateWallet(address marketing) external onlyOwner {
        require(!_isLP[marketing], "LP cannot be tax wallet");
        _walletMarketing = payable(marketing);
        _noFees[marketing] = true;
        _noLimits[marketing] = true;
    }

    function maxWallet() external view returns (uint256) {
        return _maxWalletAmount;
    }
    function maxTransaction() external view returns (uint256) {
        return _maxTxAmount;
    }

    function swapAtMin() external view returns (uint256) {
        return _taxSwapMin;
    }
    function swapAtMax() external view returns (uint256) {
        return _taxSwapMax;
    }

    function setLimits(uint16 maxTransactionPermille, uint16 maxWalletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransactionPermille / 1000 + 1;
        require(newTxAmt >= _maxTxAmount, "tx too low");
        _maxTxAmount = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWalletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletAmount, "wallet too low");
        _maxWalletAmount = newWalletAmt;
    }

    function setTaxSwap(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
        _taxSwapMin = _totalSupply * minValue / minDivider;
        _taxSwapMax = _totalSupply * maxValue / maxDivider;
        require(_taxSwapMax>=_taxSwapMin, "Min/Max error");
        require(_taxSwapMax>_totalSupply / 100000, "Max too low");
        require(_taxSwapMax<_totalSupply / 100, "Max too high");
    }

    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = balanceOf(address(this));

        if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }
            uint256 _tokensToSwap = _taxTokensAvailable;
            if( _tokensToSwap > 10**_decimals ) {
                _swapTaxTokensForEth(_tokensToSwap);
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _walletMarketing.transfer(_contractETHBalance); }
        }
    }

    function _swapTaxTokensForEth(uint256 tokenAmt) private {
        _approveRouter(tokenAmt);
        address[] memory swappath = new address[](2);
        swappath[0] = address(this); swappath[1] = _primarySwapRouter.WETH();
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmt,0,swappath,address(this),block.timestamp);
    }

    function manualTaxSwapAndSend(uint8 swapTokenPercent, bool sendEth) external onlyOwner lockTaxSwap {
        require(swapTokenPercent <= 100, "Cannot swap more than 100%");
        uint256 tokensToSwap = balanceOf(address(this)) * swapTokenPercent / 100;
        if (tokensToSwap > 10 ** _decimals) {
            _swapTaxTokensForEth(tokensToSwap);
        }
        if (sendEth) { 
            uint256 ethBalance = address(this).balance;
            require(ethBalance > 0, "No ETH");
            _walletMarketing.transfer(ethBalance);
        }
    }

    function burn(uint256 amount) external onlyOwner {
        uint256 _tokensAvailable = balanceOf(msg.sender);
        require(amount <= _tokensAvailable, "balance too low");
        if ( amount > 0 ) {
            _balances[msg.sender] -= amount;
            _balances[address(0)] += amount;
            emit Transfer(msg.sender, address(0), amount);
            emit TokensBurned(msg.sender, amount);
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","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":"addLiquidity","outputs":[],"stateMutability":"payable","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"swapTokenPercent","type":"uint8"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy","type":"uint8"},{"internalType":"uint8","name":"sell","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransactionPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtMin","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":"pure","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"}],"name":"updateWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f80546514140101161960a01b65ffffffffffff60a01b19909116179055600180546001600160a01b03191673fe89b942fd3842339c163ed5ee4628efcf0f1b921790556064620000586009600a62000400565b6200006790620f424062000417565b6200007490600262000417565b62000080919062000431565b6003556064620000936009600a62000400565b620000a290620f424062000417565b620000af90600262000417565b620000bb919062000431565b600455620186a0620000d06009600a62000400565b620000df90620f424062000417565b620000ec90600a62000417565b620000f8919062000431565b600555620186a06200010d6009600a62000400565b6200011c90620f424062000417565b6200012a9061025762000417565b62000136919062000431565b600655600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055600f805461ff001916905534801562000176575f80fd5b505f8054336001600160a01b03199182168117909255600b80549091169091179055620001a66009600a62000400565b620001b590620f424062000417565b5f80546001600160a01b039081168252600760205260408083209390935581541680825282822054925190927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200021091815260200190565b60405180910390a35f80546001600160a01b0390811682526009602090815260408084208054600160ff1991821681179092553080875283872080548316841790557fbaa441ac52505693dd98c7dd2f5bbf8f9349b7da9de72f9d52e5cac70e7da8ce80548316841790558254861687528387208054831684179055865486168752600a909452828620805482168317905592855281852080548416821790557fc90215bb1b0ac6bfa50a3c02c4b559c695b6a8e828048a88e327592fc55c5d2c805484168217905580549093168452909220805490921617905562000451565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200034557815f1904821115620003295762000329620002f1565b808516156200033757918102915b93841c93908002906200030a565b509250929050565b5f826200035d57506001620003fa565b816200036b57505f620003fa565b81600181146200038457600281146200038f57620003af565b6001915050620003fa565b60ff841115620003a357620003a3620002f1565b50506001821b620003fa565b5060208310610133831016604e8410600b8410161715620003d4575081810a620003fa565b620003e0838362000305565b805f1904821115620003f657620003f6620002f1565b0290505b92915050565b5f6200041060ff8416836200034d565b9392505050565b8082028115828204841417620003fa57620003fa620002f1565b5f826200044c57634e487b7160e01b5f52601260045260245ffd5b500490565b6121e5806200045f5f395ff3fe6080604052600436106101c8575f3560e01c806370a08231116100f257806395d89b4111610092578063dd62ed3e11610062578063dd62ed3e1461056e578063e8078d94146105b2578063f2fde38b146105ba578063f8b45b05146105d9575f80fd5b806395d89b41146104f0578063a6097b0a1461051c578063a9059cbb1461053b578063c3f70b521461055a575f80fd5b8063848b86e3116100cd578063848b86e31461046a5780638a8c523c146104895780638d3e6e401461049d5780638da5cb5b146104d4575f80fd5b806370a08231146103f1578063715018a61461042557806375f0a87414610439575f80fd5b8063368f4800116101685780634d4ce935116101385780634d4ce935146103685780634fcd24461461037c57806357ff135a1461039b5780635a90a49e146103ba575f80fd5b8063368f4800146102f957806342966c681461031857806346b8983414610337578063470624021461034b575f80fd5b806323b872dd116101a357806323b872dd1461027b5780632b14ca561461029a5780632fb528ba146102c5578063313ce567146102e6575f80fd5b806306fdde03146101d3578063095ea7b31461022a57806318160ddd14610259575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b5060408051808201909152601781527f4d414b4520414d4552494341205955474520414741494e00000000000000000060208201525b6040516102219190611c82565b60405180910390f35b348015610235575f80fd5b50610249610244366004611ce1565b6105ed565b6040519015158152602001610221565b348015610264575f80fd5b5061026d610659565b604051908152602001610221565b348015610286575f80fd5b50610249610295366004611d0b565b610678565b3480156102a5575f80fd5b505f54600160c81b900460ff165b60405160ff9091168152602001610221565b3480156102d0575f80fd5b506102e46102df366004611d6d565b61071c565b005b3480156102f1575f80fd5b5060096102b3565b348015610304575f80fd5b506102e4610313366004611daf565b610877565b348015610323575f80fd5b506102e4610332366004611dd7565b6109b5565b348015610342575f80fd5b5060055461026d565b348015610356575f80fd5b505f54600160c01b900460ff166102b3565b348015610373575f80fd5b5060065461026d565b348015610387575f80fd5b506102e4610396366004611dee565b610b08565b3480156103a6575f80fd5b506102e46103b5366004611e16565b610bb6565b3480156103c5575f80fd5b506102496103d4366004611e58565b6001600160a01b03165f9081526009602052604090205460ff1690565b3480156103fc575f80fd5b5061026d61040b366004611e58565b6001600160a01b03165f9081526007602052604090205490565b348015610430575f80fd5b506102e4610c89565b348015610444575f80fd5b506001546001600160a01b03165b6040516001600160a01b039091168152602001610221565b348015610475575f80fd5b506102e4610484366004611e58565b610cf6565b348015610494575f80fd5b506102e4610dd5565b3480156104a8575f80fd5b506102496104b7366004611e58565b6001600160a01b03165f908152600a602052604090205460ff1690565b3480156104df575f80fd5b505f546001600160a01b0316610452565b3480156104fb575f80fd5b506040805180820190915260048152634d41594160e01b6020820152610214565b348015610527575f80fd5b506102e4610536366004611e86565b610e5b565b348015610546575f80fd5b50610249610555366004611ce1565b61100c565b348015610565575f80fd5b5060035461026d565b348015610579575f80fd5b5061026d610588366004611ed7565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b6102e4611044565b3480156105c5575f80fd5b506102e46105d4366004611e58565b611382565b3480156105e4575f80fd5b5060045461026d565b335f8181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106479086815260200190565b60405180910390a35060015b92915050565b5f6106666009600a612002565b61067390620f4240612010565b905090565b5f610682846113fe565b6106a75760405162461bcd60e51b815260040161069e90612027565b60405180910390fd5b6001600160a01b0384165f9081526008602090815260408083203384529091529020545f1914610709576001600160a01b0384165f90815260086020908152604080832033845290915281208054849290610703908490612051565b90915550505b610714848484611461565b949350505050565b5f546001600160a01b031633146107455760405162461bcd60e51b815260040161069e90612064565b600f805461ff001916610100179055606460ff831611156107a85760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000604482015260640161069e565b305f908152600760205260408120546064906107c89060ff861690612010565b6107d2919061209b565b90506107e06009600a612002565b8111156107f0576107f0816116eb565b811561086757478061082d5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b604482015260640161069e565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610864573d5f803e3d5ffd5b50505b5050600f805461ff001916905550565b5f546001600160a01b031633146108a05760405162461bcd60e51b815260040161069e90612064565b5f6103e861ffff84166108b56009600a612002565b6108c290620f4240612010565b6108cc9190612010565b6108d6919061209b565b6108e19060016120ba565b90506003548110156109225760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b604482015260640161069e565b60038190555f6103e861ffff841661093c6009600a612002565b61094990620f4240612010565b6109539190612010565b61095d919061209b565b6109689060016120ba565b90506004548110156109ad5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b604482015260640161069e565b600455505050565b5f546001600160a01b031633146109de5760405162461bcd60e51b815260040161069e90612064565b335f9081526007602052604090205480821115610a2f5760405162461bcd60e51b815260206004820152600f60248201526e62616c616e636520746f6f206c6f7760881b604482015260640161069e565b8115610b0457335f9081526007602052604081208054849290610a53908490612051565b90915550505f80805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df8054849290610a929084906120ba565b90915550506040518281525f9033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360405182815233907ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb69060200160405180910390a25b5050565b5f546001600160a01b03163314610b315760405162461bcd60e51b815260040161069e90612064565b6014610b3d82846120cd565b60ff161115610b835760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b604482015260640161069e565b5f805461ffff60c01b1916600160c01b60ff9485160260ff60c81b191617600160c81b9290931691909102919091179055565b5f546001600160a01b03163314610bdf5760405162461bcd60e51b815260040161069e90612064565b8080610be85750815b15610c48576001600160a01b0383165f908152600e602052604090205460ff1615610c485760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b604482015260640161069e565b6001600160a01b039092165f908152600960209081526040808320805494151560ff19958616179055600a9091529020805492151592909116919091179055565b5f546001600160a01b03163314610cb25760405162461bcd60e51b815260040161069e90612064565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610d1f5760405162461bcd60e51b815260040161069e90612064565b6001600160a01b0381165f908152600e602052604090205460ff1615610d875760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000604482015260640161069e565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600960209081526040808420805460ff199081168517909155600a9092529092208054909216179055565b5f546001600160a01b03163314610dfe5760405162461bcd60e51b815260040161069e90612064565b600f5460ff1615610e435760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b604482015260640161069e565b610e59600f805460ff1916600117905543600255565b565b5f546001600160a01b03163314610e845760405162461bcd60e51b815260040161069e90612064565b63ffffffff808416908516610e9b6009600a612002565b610ea890620f4240612010565b610eb29190612010565b610ebc919061209b565b60055563ffffffff808216908316610ed66009600a612002565b610ee390620f4240612010565b610eed9190612010565b610ef7919061209b565b60068190556005541115610f3d5760405162461bcd60e51b815260206004820152600d60248201526c26b4b717a6b0bc1032b93937b960991b604482015260640161069e565b620186a0610f4d6009600a612002565b610f5a90620f4240612010565b610f64919061209b565b60065411610fa25760405162461bcd60e51b815260206004820152600b60248201526a4d617820746f6f206c6f7760a81b604482015260640161069e565b6064610fb06009600a612002565b610fbd90620f4240612010565b610fc7919061209b565b600654106110065760405162461bcd60e51b815260206004820152600c60248201526b09ac2f040e8dede40d0d2ced60a31b604482015260640161069e565b50505050565b5f611016336113fe565b6110325760405162461bcd60e51b815260040161069e90612027565b61103d338484611461565b9392505050565b5f546001600160a01b0316331461106d5760405162461bcd60e51b815260040161069e90612064565b600f805461ff001916610100179055600d546001600160a01b0316156110c15760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b604482015260640161069e565b600f5460ff16156111065760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b604482015260640161069e565b5f34118061111357505f47115b61115f5760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000604482015260640161069e565b305f908152600760205260409020546111b25760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b604482015260640161069e565b600c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611202573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122691906120e6565b6001600160a01b031663c9c6539630600c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611285573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a991906120e6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131791906120e6565b600d80546001600160a01b0319166001600160a01b0392909216919091179055305f9081526007602052604081205461135191479061182b565b600d546001600160a01b03165f908152600e60205260409020805460ff19166001179055600f805461ff0019169055565b5f546001600160a01b031633146113ab5760405162461bcd60e51b815260040161069e90612064565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600f545f90819060ff161561141557506001610653565b6001600160a01b0383165f9081526009602052604090205460ff16801561145357506001600160a01b0383165f908152600a602052604090205460ff165b156106535750600192915050565b5f6001600160a01b0384166114b85760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000604482015260640161069e565b600f5460ff1661151c576001600160a01b0384165f9081526009602052604090205460ff16801561150057506001600160a01b0384165f908152600a602052604090205460ff165b61151c5760405162461bcd60e51b815260040161069e90612027565b600f54610100900460ff1615801561154b57506001600160a01b0383165f908152600e602052604090205460ff165b15611558576115586118e2565b6001600160a01b038416301480159061157a57506001600160a01b0383163014155b801561159357505f546001600160a01b03858116911614155b156115e3576115a3848484611997565b6115e35760405162461bcd60e51b815260206004820152601160248201527054582065786365656473206c696d69747360781b604482015260640161069e565b5f6115ef858585611a5a565b90505f6115fc8285612051565b6001600160a01b0387165f90815260076020526040902054909150611622908590612051565b6001600160a01b0387165f90815260076020526040902055811561166457305f908152600760205260408120805484929061165e9084906120ba565b90915550505b6001600160a01b0385165f908152600760205260408120805483929061168b9084906120ba565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516116d791815260200190565b60405180910390a350600195945050505050565b6116f481611be0565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061172757611727612101565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561177e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a291906120e6565b816001815181106117b5576117b5612101565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac947906117fa9085905f90869030904290600401612115565b5f604051808303815f87803b158015611811575f80fd5b505af1158015611823573d5f803e3d5ffd5b505050505050565b600b546001600160a01b0316811561184057505f5b61184984611be0565b600c5460405163f305d71960e01b8152306004820152602481018690525f6044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af11580156118b4573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118d99190612184565b50505050505050565b600f805461ff001916610100179055305f90815260076020526040812054905060055481101580156119165750600f5460ff165b1561198957600654811061192957506006545b806119366009600a612002565b81111561194657611946816116eb565b478015611986576001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611984573d5f803e3d5ffd5b505b50505b50600f805461ff0019169055565b600f545f9060019060ff1680156119c657506001600160a01b0385165f908152600a602052604090205460ff16155b80156119ea57506001600160a01b0384165f908152600a602052604090205460ff16155b1561071457600354831115611a0057505f610714565b6001600160a01b0384165f908152600e602052604090205460ff16158015611a4b57506004546001600160a01b0385165f90815260076020526040902054611a499085906120ba565b115b1561071457505f949350505050565b600f545f90819060ff161580611a8757506001600160a01b0385165f9081526009602052604090205460ff165b80611aa957506001600160a01b0384165f9081526009602052604090205460ff165b15611ab557505f610714565b6001600160a01b0385165f908152600e602052604090205460ff1615611b94575f5460025460ff600160b81b8304811692611afb92600160b01b909104909116906120ba565b611b0591906120ba565b4310611b35575f54606490611b2490600160c01b900460ff1685612010565b611b2e919061209b565b9050610714565b5f54600254611b4e91600160b01b900460ff16906120ba565b4310611b6d575f54606490611b2490600160a81b900460ff1685612010565b6002544310611b8f575f54606490611b2490600160a01b900460ff1685612010565b610714565b6001600160a01b0384165f908152600e602052604090205460ff1615610714575f54606490611bcd90600160c81b900460ff1685612010565b611bd7919061209b565b95945050505050565b305f908152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611c7f57305f818152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b5f6020808352835180828501525f5b81811015611cad57858101830151858201604001528201611c91565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611c7f575f80fd5b5f8060408385031215611cf2575f80fd5b8235611cfd81611ccd565b946020939093013593505050565b5f805f60608486031215611d1d575f80fd5b8335611d2881611ccd565b92506020840135611d3881611ccd565b929592945050506040919091013590565b803560ff81168114611d59575f80fd5b919050565b80358015158114611d59575f80fd5b5f8060408385031215611d7e575f80fd5b611d8783611d49565b9150611d9560208401611d5e565b90509250929050565b803561ffff81168114611d59575f80fd5b5f8060408385031215611dc0575f80fd5b611dc983611d9e565b9150611d9560208401611d9e565b5f60208284031215611de7575f80fd5b5035919050565b5f8060408385031215611dff575f80fd5b611e0883611d49565b9150611d9560208401611d49565b5f805f60608486031215611e28575f80fd5b8335611e3381611ccd565b9250611e4160208501611d5e565b9150611e4f60408501611d5e565b90509250925092565b5f60208284031215611e68575f80fd5b813561103d81611ccd565b803563ffffffff81168114611d59575f80fd5b5f805f8060808587031215611e99575f80fd5b611ea285611e73565b9350611eb060208601611e73565b9250611ebe60408601611e73565b9150611ecc60608601611e73565b905092959194509250565b5f8060408385031215611ee8575f80fd5b8235611ef381611ccd565b91506020830135611f0381611ccd565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611f5c57815f1904821115611f4257611f42611f0e565b80851615611f4f57918102915b93841c9390800290611f27565b509250929050565b5f82611f7257506001610653565b81611f7e57505f610653565b8160018114611f945760028114611f9e57611fba565b6001915050610653565b60ff841115611faf57611faf611f0e565b50506001821b610653565b5060208310610133831016604e8410600b8410161715611fdd575081810a610653565b611fe78383611f22565b805f1904821115611ffa57611ffa611f0e565b029392505050565b5f61103d60ff841683611f64565b808202811582820484141761065357610653611f0e565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b8181038181111561065357610653611f0e565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b5f826120b557634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561065357610653611f0e565b60ff818116838216019081111561065357610653611f0e565b5f602082840312156120f6575f80fd5b815161103d81611ccd565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156121635784516001600160a01b03168352938301939183019160010161213e565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612196575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220dbe4523d52d3e74c4e5cd01484a1c73d6c86a56decab8f24b87268337bfe84a464736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101c8575f3560e01c806370a08231116100f257806395d89b4111610092578063dd62ed3e11610062578063dd62ed3e1461056e578063e8078d94146105b2578063f2fde38b146105ba578063f8b45b05146105d9575f80fd5b806395d89b41146104f0578063a6097b0a1461051c578063a9059cbb1461053b578063c3f70b521461055a575f80fd5b8063848b86e3116100cd578063848b86e31461046a5780638a8c523c146104895780638d3e6e401461049d5780638da5cb5b146104d4575f80fd5b806370a08231146103f1578063715018a61461042557806375f0a87414610439575f80fd5b8063368f4800116101685780634d4ce935116101385780634d4ce935146103685780634fcd24461461037c57806357ff135a1461039b5780635a90a49e146103ba575f80fd5b8063368f4800146102f957806342966c681461031857806346b8983414610337578063470624021461034b575f80fd5b806323b872dd116101a357806323b872dd1461027b5780632b14ca561461029a5780632fb528ba146102c5578063313ce567146102e6575f80fd5b806306fdde03146101d3578063095ea7b31461022a57806318160ddd14610259575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b5060408051808201909152601781527f4d414b4520414d4552494341205955474520414741494e00000000000000000060208201525b6040516102219190611c82565b60405180910390f35b348015610235575f80fd5b50610249610244366004611ce1565b6105ed565b6040519015158152602001610221565b348015610264575f80fd5b5061026d610659565b604051908152602001610221565b348015610286575f80fd5b50610249610295366004611d0b565b610678565b3480156102a5575f80fd5b505f54600160c81b900460ff165b60405160ff9091168152602001610221565b3480156102d0575f80fd5b506102e46102df366004611d6d565b61071c565b005b3480156102f1575f80fd5b5060096102b3565b348015610304575f80fd5b506102e4610313366004611daf565b610877565b348015610323575f80fd5b506102e4610332366004611dd7565b6109b5565b348015610342575f80fd5b5060055461026d565b348015610356575f80fd5b505f54600160c01b900460ff166102b3565b348015610373575f80fd5b5060065461026d565b348015610387575f80fd5b506102e4610396366004611dee565b610b08565b3480156103a6575f80fd5b506102e46103b5366004611e16565b610bb6565b3480156103c5575f80fd5b506102496103d4366004611e58565b6001600160a01b03165f9081526009602052604090205460ff1690565b3480156103fc575f80fd5b5061026d61040b366004611e58565b6001600160a01b03165f9081526007602052604090205490565b348015610430575f80fd5b506102e4610c89565b348015610444575f80fd5b506001546001600160a01b03165b6040516001600160a01b039091168152602001610221565b348015610475575f80fd5b506102e4610484366004611e58565b610cf6565b348015610494575f80fd5b506102e4610dd5565b3480156104a8575f80fd5b506102496104b7366004611e58565b6001600160a01b03165f908152600a602052604090205460ff1690565b3480156104df575f80fd5b505f546001600160a01b0316610452565b3480156104fb575f80fd5b506040805180820190915260048152634d41594160e01b6020820152610214565b348015610527575f80fd5b506102e4610536366004611e86565b610e5b565b348015610546575f80fd5b50610249610555366004611ce1565b61100c565b348015610565575f80fd5b5060035461026d565b348015610579575f80fd5b5061026d610588366004611ed7565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b6102e4611044565b3480156105c5575f80fd5b506102e46105d4366004611e58565b611382565b3480156105e4575f80fd5b5060045461026d565b335f8181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106479086815260200190565b60405180910390a35060015b92915050565b5f6106666009600a612002565b61067390620f4240612010565b905090565b5f610682846113fe565b6106a75760405162461bcd60e51b815260040161069e90612027565b60405180910390fd5b6001600160a01b0384165f9081526008602090815260408083203384529091529020545f1914610709576001600160a01b0384165f90815260086020908152604080832033845290915281208054849290610703908490612051565b90915550505b610714848484611461565b949350505050565b5f546001600160a01b031633146107455760405162461bcd60e51b815260040161069e90612064565b600f805461ff001916610100179055606460ff831611156107a85760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000604482015260640161069e565b305f908152600760205260408120546064906107c89060ff861690612010565b6107d2919061209b565b90506107e06009600a612002565b8111156107f0576107f0816116eb565b811561086757478061082d5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b604482015260640161069e565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610864573d5f803e3d5ffd5b50505b5050600f805461ff001916905550565b5f546001600160a01b031633146108a05760405162461bcd60e51b815260040161069e90612064565b5f6103e861ffff84166108b56009600a612002565b6108c290620f4240612010565b6108cc9190612010565b6108d6919061209b565b6108e19060016120ba565b90506003548110156109225760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b604482015260640161069e565b60038190555f6103e861ffff841661093c6009600a612002565b61094990620f4240612010565b6109539190612010565b61095d919061209b565b6109689060016120ba565b90506004548110156109ad5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b604482015260640161069e565b600455505050565b5f546001600160a01b031633146109de5760405162461bcd60e51b815260040161069e90612064565b335f9081526007602052604090205480821115610a2f5760405162461bcd60e51b815260206004820152600f60248201526e62616c616e636520746f6f206c6f7760881b604482015260640161069e565b8115610b0457335f9081526007602052604081208054849290610a53908490612051565b90915550505f80805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df8054849290610a929084906120ba565b90915550506040518281525f9033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360405182815233907ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb69060200160405180910390a25b5050565b5f546001600160a01b03163314610b315760405162461bcd60e51b815260040161069e90612064565b6014610b3d82846120cd565b60ff161115610b835760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b604482015260640161069e565b5f805461ffff60c01b1916600160c01b60ff9485160260ff60c81b191617600160c81b9290931691909102919091179055565b5f546001600160a01b03163314610bdf5760405162461bcd60e51b815260040161069e90612064565b8080610be85750815b15610c48576001600160a01b0383165f908152600e602052604090205460ff1615610c485760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b604482015260640161069e565b6001600160a01b039092165f908152600960209081526040808320805494151560ff19958616179055600a9091529020805492151592909116919091179055565b5f546001600160a01b03163314610cb25760405162461bcd60e51b815260040161069e90612064565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610d1f5760405162461bcd60e51b815260040161069e90612064565b6001600160a01b0381165f908152600e602052604090205460ff1615610d875760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000604482015260640161069e565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600960209081526040808420805460ff199081168517909155600a9092529092208054909216179055565b5f546001600160a01b03163314610dfe5760405162461bcd60e51b815260040161069e90612064565b600f5460ff1615610e435760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b604482015260640161069e565b610e59600f805460ff1916600117905543600255565b565b5f546001600160a01b03163314610e845760405162461bcd60e51b815260040161069e90612064565b63ffffffff808416908516610e9b6009600a612002565b610ea890620f4240612010565b610eb29190612010565b610ebc919061209b565b60055563ffffffff808216908316610ed66009600a612002565b610ee390620f4240612010565b610eed9190612010565b610ef7919061209b565b60068190556005541115610f3d5760405162461bcd60e51b815260206004820152600d60248201526c26b4b717a6b0bc1032b93937b960991b604482015260640161069e565b620186a0610f4d6009600a612002565b610f5a90620f4240612010565b610f64919061209b565b60065411610fa25760405162461bcd60e51b815260206004820152600b60248201526a4d617820746f6f206c6f7760a81b604482015260640161069e565b6064610fb06009600a612002565b610fbd90620f4240612010565b610fc7919061209b565b600654106110065760405162461bcd60e51b815260206004820152600c60248201526b09ac2f040e8dede40d0d2ced60a31b604482015260640161069e565b50505050565b5f611016336113fe565b6110325760405162461bcd60e51b815260040161069e90612027565b61103d338484611461565b9392505050565b5f546001600160a01b0316331461106d5760405162461bcd60e51b815260040161069e90612064565b600f805461ff001916610100179055600d546001600160a01b0316156110c15760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b604482015260640161069e565b600f5460ff16156111065760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b604482015260640161069e565b5f34118061111357505f47115b61115f5760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000604482015260640161069e565b305f908152600760205260409020546111b25760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b604482015260640161069e565b600c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611202573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122691906120e6565b6001600160a01b031663c9c6539630600c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611285573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a991906120e6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131791906120e6565b600d80546001600160a01b0319166001600160a01b0392909216919091179055305f9081526007602052604081205461135191479061182b565b600d546001600160a01b03165f908152600e60205260409020805460ff19166001179055600f805461ff0019169055565b5f546001600160a01b031633146113ab5760405162461bcd60e51b815260040161069e90612064565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600f545f90819060ff161561141557506001610653565b6001600160a01b0383165f9081526009602052604090205460ff16801561145357506001600160a01b0383165f908152600a602052604090205460ff165b156106535750600192915050565b5f6001600160a01b0384166114b85760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000604482015260640161069e565b600f5460ff1661151c576001600160a01b0384165f9081526009602052604090205460ff16801561150057506001600160a01b0384165f908152600a602052604090205460ff165b61151c5760405162461bcd60e51b815260040161069e90612027565b600f54610100900460ff1615801561154b57506001600160a01b0383165f908152600e602052604090205460ff165b15611558576115586118e2565b6001600160a01b038416301480159061157a57506001600160a01b0383163014155b801561159357505f546001600160a01b03858116911614155b156115e3576115a3848484611997565b6115e35760405162461bcd60e51b815260206004820152601160248201527054582065786365656473206c696d69747360781b604482015260640161069e565b5f6115ef858585611a5a565b90505f6115fc8285612051565b6001600160a01b0387165f90815260076020526040902054909150611622908590612051565b6001600160a01b0387165f90815260076020526040902055811561166457305f908152600760205260408120805484929061165e9084906120ba565b90915550505b6001600160a01b0385165f908152600760205260408120805483929061168b9084906120ba565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516116d791815260200190565b60405180910390a350600195945050505050565b6116f481611be0565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061172757611727612101565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561177e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a291906120e6565b816001815181106117b5576117b5612101565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac947906117fa9085905f90869030904290600401612115565b5f604051808303815f87803b158015611811575f80fd5b505af1158015611823573d5f803e3d5ffd5b505050505050565b600b546001600160a01b0316811561184057505f5b61184984611be0565b600c5460405163f305d71960e01b8152306004820152602481018690525f6044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af11580156118b4573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118d99190612184565b50505050505050565b600f805461ff001916610100179055305f90815260076020526040812054905060055481101580156119165750600f5460ff165b1561198957600654811061192957506006545b806119366009600a612002565b81111561194657611946816116eb565b478015611986576001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611984573d5f803e3d5ffd5b505b50505b50600f805461ff0019169055565b600f545f9060019060ff1680156119c657506001600160a01b0385165f908152600a602052604090205460ff16155b80156119ea57506001600160a01b0384165f908152600a602052604090205460ff16155b1561071457600354831115611a0057505f610714565b6001600160a01b0384165f908152600e602052604090205460ff16158015611a4b57506004546001600160a01b0385165f90815260076020526040902054611a499085906120ba565b115b1561071457505f949350505050565b600f545f90819060ff161580611a8757506001600160a01b0385165f9081526009602052604090205460ff165b80611aa957506001600160a01b0384165f9081526009602052604090205460ff165b15611ab557505f610714565b6001600160a01b0385165f908152600e602052604090205460ff1615611b94575f5460025460ff600160b81b8304811692611afb92600160b01b909104909116906120ba565b611b0591906120ba565b4310611b35575f54606490611b2490600160c01b900460ff1685612010565b611b2e919061209b565b9050610714565b5f54600254611b4e91600160b01b900460ff16906120ba565b4310611b6d575f54606490611b2490600160a81b900460ff1685612010565b6002544310611b8f575f54606490611b2490600160a01b900460ff1685612010565b610714565b6001600160a01b0384165f908152600e602052604090205460ff1615610714575f54606490611bcd90600160c81b900460ff1685612010565b611bd7919061209b565b95945050505050565b305f908152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611c7f57305f818152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b5f6020808352835180828501525f5b81811015611cad57858101830151858201604001528201611c91565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611c7f575f80fd5b5f8060408385031215611cf2575f80fd5b8235611cfd81611ccd565b946020939093013593505050565b5f805f60608486031215611d1d575f80fd5b8335611d2881611ccd565b92506020840135611d3881611ccd565b929592945050506040919091013590565b803560ff81168114611d59575f80fd5b919050565b80358015158114611d59575f80fd5b5f8060408385031215611d7e575f80fd5b611d8783611d49565b9150611d9560208401611d5e565b90509250929050565b803561ffff81168114611d59575f80fd5b5f8060408385031215611dc0575f80fd5b611dc983611d9e565b9150611d9560208401611d9e565b5f60208284031215611de7575f80fd5b5035919050565b5f8060408385031215611dff575f80fd5b611e0883611d49565b9150611d9560208401611d49565b5f805f60608486031215611e28575f80fd5b8335611e3381611ccd565b9250611e4160208501611d5e565b9150611e4f60408501611d5e565b90509250925092565b5f60208284031215611e68575f80fd5b813561103d81611ccd565b803563ffffffff81168114611d59575f80fd5b5f805f8060808587031215611e99575f80fd5b611ea285611e73565b9350611eb060208601611e73565b9250611ebe60408601611e73565b9150611ecc60608601611e73565b905092959194509250565b5f8060408385031215611ee8575f80fd5b8235611ef381611ccd565b91506020830135611f0381611ccd565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611f5c57815f1904821115611f4257611f42611f0e565b80851615611f4f57918102915b93841c9390800290611f27565b509250929050565b5f82611f7257506001610653565b81611f7e57505f610653565b8160018114611f945760028114611f9e57611fba565b6001915050610653565b60ff841115611faf57611faf611f0e565b50506001821b610653565b5060208310610133831016604e8410600b8410161715611fdd575081810a610653565b611fe78383611f22565b805f1904821115611ffa57611ffa611f0e565b029392505050565b5f61103d60ff841683611f64565b808202811582820484141761065357610653611f0e565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b8181038181111561065357610653611f0e565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b5f826120b557634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561065357610653611f0e565b60ff818116838216019081111561065357610653611f0e565b5f602082840312156120f6575f80fd5b815161103d81611ccd565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156121635784516001600160a01b03168352938301939183019160010161213e565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612196575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220dbe4523d52d3e74c4e5cd01484a1c73d6c86a56decab8f24b87268337bfe84a464736f6c63430008150033

Deployed Bytecode Sourcemap

2443:12569:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5064:80;;;;;;;;;;-1:-1:-1;5136:5:0;;;;;;;;;;;;;;;;;5064:80;;;;;;;:::i;:::-;;;;;;;;5402:216;;;;;;;;;;-1:-1:-1;5402:216:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5402:216:0;1023:187:1;4794:88:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;4794:88:0;1215:177:1;5859:371:0;;;;;;;;;;-1:-1:-1;5859:371:0;;;;;:::i;:::-;;:::i;11024:86::-;;;;;;;;;;-1:-1:-1;11065:5:0;11090:12;-1:-1:-1;;;11090:12:0;;;;11024:86;;;2030:4:1;2018:17;;;2000:36;;1988:2;1973:18;11024:86:0;1858:184:1;14011:563:0;;;;;;;;;;-1:-1:-1;14011:563:0;;;;;:::i;:::-;;:::i;:::-;;4888:80;;;;;;;;;;-1:-1:-1;2520:1:0;4888:80;;12081:462;;;;;;;;;;-1:-1:-1;12081:462:0;;;;;:::i;:::-;;:::i;14582:425::-;;;;;;;;;;-1:-1:-1;14582:425:0;;;;;:::i;:::-;;:::i;11887:90::-;;;;;;;;;;-1:-1:-1;11958:11:0;;11887:90;;10934:84;;;;;;;;;;-1:-1:-1;10974:5:0;10999:11;-1:-1:-1;;;10999:11:0;;;;10934:84;;11983:90;;;;;;;;;;-1:-1:-1;12054:11:0;;11983:90;;11118:183;;;;;;;;;;-1:-1:-1;11118:183:0;;;;;:::i;:::-;;:::i;10676:250::-;;;;;;;;;;-1:-1:-1;10676:250:0;;;;;:::i;:::-;;:::i;10438:110::-;;;;;;;;;;-1:-1:-1;10438:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;10525:15:0;10501:4;10525:15;;;:7;:15;;;;;;;;;10438:110;5150:105;;;;;;;;;;-1:-1:-1;5150:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;5234:18:0;5216:7;5234:18;;;:9;:18;;;;;;;5150:105;2250:137;;;;;;;;;;;;;:::i;11311:101::-;;;;;;;;;;-1:-1:-1;11388:16:0;;-1:-1:-1;;;;;11388:16:0;11311:101;;;-1:-1:-1;;;;;4299:32:1;;;4281:51;;4269:2;4254:18;11311:101:0;4135:203:1;11420:254:0;;;;;;;;;;-1:-1:-1;11420:254:0;;;;;:::i;:::-;;:::i;7547:129::-;;;;;;;;;;;;;:::i;10555:114::-;;;;;;;;;;-1:-1:-1;10555:114:0;;;;;:::i;:::-;-1:-1:-1;;;;;10644:17:0;10620:4;10644:17;;;:9;:17;;;;;;;;;10555:114;2000:81;;;;;;;;;;-1:-1:-1;2038:7:0;2066:6;-1:-1:-1;;;;;2066:6:0;2000:81;;4974:84;;;;;;;;;;-1:-1:-1;5048:7:0;;;;;;;;;;;;-1:-1:-1;;;5048:7:0;;;;4974:84;;12551:436;;;;;;;;;;-1:-1:-1;12551:436:0;;;;;:::i;:::-;;:::i;5626:225::-;;;;;;;;;;-1:-1:-1;5626:225:0;;;;;:::i;:::-;;:::i;11783:96::-;;;;;;;;;;-1:-1:-1;11859:12:0;;11783:96;;5261:133;;;;;;;;;;-1:-1:-1;5261:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5363:19:0;;;5345:7;5363:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5261:133;6563:583;;;:::i;2087:157::-;;;;;;;;;;-1:-1:-1;2087:157:0;;;;;:::i;:::-;;:::i;11682:95::-;;;;;;;;;;-1:-1:-1;11753:16:0;;11682:95;;5402:216;5506:10;5477:4;5494:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5494:32:0;;;;;;;;;;:41;;;5551:37;5477:4;;5494:32;;5551:37;;;;5529:6;1361:25:1;;1349:2;1334:18;;1215:177;5551:37:0;;;;;;;;-1:-1:-1;5606:4:0;5402:216;;;;;:::o;4794:88::-;4849:7;2579:13;2520:1;2579:2;:13;:::i;:::-;2568:25;;:7;:25;:::i;:::-;4860:19;;4794:88;:::o;5859:371::-;5959:4;5984:25;6002:6;5984:17;:25::i;:::-;5976:54;;;;-1:-1:-1;;;5976:54:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;6044:19:0;;;;;;:11;:19;;;;;;;;6064:10;6044:31;;;;;;;;-1:-1:-1;;6044:52:0;6041:124;;-1:-1:-1;;;;;6112:19:0;;;;;;:11;:19;;;;;;;;6132:10;6112:31;;;;;;;:41;;6147:6;;6112:19;:41;;6147:6;;6112:41;:::i;:::-;;;;-1:-1:-1;;6041:124:0;6182:40;6196:6;6204:9;6215:6;6182:13;:40::i;:::-;6175:47;5859:371;-1:-1:-1;;;;5859:371:0:o;14011:563::-;1937:6;;-1:-1:-1;;;;;1937:6:0;1923:10;:20;1915:57;;;;-1:-1:-1;;;1915:57:0;;;;;;;:::i;:::-;4005:10:::1;:17:::0;;-1:-1:-1;;4005:17:0::1;;;::::0;;14149:3:::2;4005:17:::1;14129:23:::0;::::2;;;14121:62;;;::::0;-1:-1:-1;;;14121:62:0;;8291:2:1;14121:62:0::2;::::0;::::2;8273:21:1::0;8330:2;8310:18;;;8303:30;8369:28;8349:18;;;8342:56;8415:18;;14121:62:0::2;8089:350:1::0;14121:62:0::2;14235:4;14194:20;5234:18:::0;;;:9;:18;;;;;;14263:3:::2;::::0;14217:43:::2;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;:49;;;;:::i;:::-;14194:72:::0;-1:-1:-1;14296:15:0::2;2520:1;14296:2;:15;:::i;:::-;14281:12;:30;14277:97;;;14328:34;14349:12;14328:20;:34::i;:::-;14388:7;14384:183;;;14434:21;14478:14:::0;14470:33:::2;;;::::0;-1:-1:-1;;;14470:33:0;;8868:2:1;14470:33:0::2;::::0;::::2;8850:21:1::0;8907:1;8887:18;;;8880:29;-1:-1:-1;;;8925:18:1;;;8918:36;8971:18;;14470:33:0::2;8666:329:1::0;14470:33:0::2;14518:16;::::0;:37:::2;::::0;-1:-1:-1;;;;;14518:16:0;;::::2;::::0;:37;::::2;;;::::0;14544:10;;14518:16:::2;:37:::0;:16;:37;14544:10;14518:16;:37;::::2;;;;;;;;;;;;;::::0;::::2;;;;;;14397:170;14384:183;-1:-1:-1::0;;4047:10:0::1;:18:::0;;-1:-1:-1;;4047:18:0::1;::::0;;-1:-1:-1;14011:563:0:o;12081:462::-;1937:6;;-1:-1:-1;;;;;1937:6:0;1923:10;:20;1915:57;;;;-1:-1:-1;;;1915:57:0;;;;;;;:::i;:::-;12187:16:::1;12246:4;12206:37;::::0;::::1;2579:13;2520:1;2579:2;:13;:::i;:::-;2568:25;::::0;:7:::1;:25;:::i;:::-;12206:37;;;;:::i;:::-;:44;;;;:::i;:::-;:48;::::0;12253:1:::1;12206:48;:::i;:::-;12187:67;;12285:12;;12273:8;:24;;12265:47;;;::::0;-1:-1:-1;;;12265:47:0;;9332:2:1;12265:47:0::1;::::0;::::1;9314:21:1::0;9371:2;9351:18;;;9344:30;-1:-1:-1;;;9390:18:1;;;9383:40;9440:18;;12265:47:0::1;9130:334:1::0;12265:47:0::1;12323:12;:23:::0;;;12357:20:::1;12415:4;12380:32;::::0;::::1;2579:13;2520:1;2579:2;:13;:::i;:::-;2568:25;::::0;:7:::1;:25;:::i;:::-;12380:32;;;;:::i;:::-;:39;;;;:::i;:::-;:43;::::0;12422:1:::1;12380:43;:::i;:::-;12357:66;;12458:16;;12442:12;:32;;12434:59;;;::::0;-1:-1:-1;;;12434:59:0;;9671:2:1;12434:59:0::1;::::0;::::1;9653:21:1::0;9710:2;9690:18;;;9683:30;-1:-1:-1;;;9729:18:1;;;9722:44;9783:18;;12434:59:0::1;9469:338:1::0;12434:59:0::1;12504:16;:31:::0;-1:-1:-1;;;12081:462:0:o;14582:425::-;1937:6;;-1:-1:-1;;;;;1937:6:0;1923:10;:20;1915:57;;;;-1:-1:-1;;;1915:57:0;;;;;;;:::i;:::-;14679:10:::1;14642:24;5234:18:::0;;;:9;:18;;;;;;14709:26;;::::1;;14701:54;;;::::0;-1:-1:-1;;;14701:54:0;;10014:2:1;14701:54:0::1;::::0;::::1;9996:21:1::0;10053:2;10033:18;;;10026:30;-1:-1:-1;;;10072:18:1;;;10065:45;10127:18;;14701:54:0::1;9812:339:1::0;14701:54:0::1;14771:10:::0;;14766:234:::1;;14809:10;14799:21;::::0;;;:9:::1;:21;::::0;;;;:31;;14824:6;;14799:21;:31:::1;::::0;14824:6;;14799:31:::1;:::i;:::-;::::0;;;-1:-1:-1;;14845:21:0::1;::::0;;;:9:::1;:21;::::0;;:31;;14870:6;;14845:21;:31:::1;::::0;14870:6;;14845:31:::1;:::i;:::-;::::0;;;-1:-1:-1;;14896:40:0::1;::::0;1361:25:1;;;14925:1:0::1;::::0;14905:10:::1;::::0;14896:40:::1;::::0;1349:2:1;1334:18;14896:40:0::1;;;;;;;14956:32;::::0;1361:25:1;;;14969:10:0::1;::::0;14956:32:::1;::::0;1349:2:1;1334:18;14956:32:0::1;;;;;;;14766:234;14631:376;14582:425:::0;:::o;11118:183::-;1937:6;;-1:-1:-1;;;;;1937:6:0;1923:10;:20;1915:57;;;;-1:-1:-1;;;1915:57:0;;;;;;;:::i;:::-;11210:2:::1;11196:10;11202:4:::0;11196:3;:10:::1;:::i;:::-;:16;;;;11188:47;;;::::0;-1:-1:-1;;;11188:47:0;;10511:2:1;11188:47:0::1;::::0;::::1;10493:21:1::0;10550:2;10530:18;;;10523:30;-1:-1:-1;;;10569:18:1;;;10562:48;10627:18;;11188:47:0::1;10309:342:1::0;11188:47:0::1;11246:11;:17:::0;;-1:-1:-1;;;;11274:19:0;-1:-1:-1;;;11246:17:0::1;::::0;;::::1;;-1:-1:-1::0;;;;11274:19:0;;-1:-1:-1;;;11274:19:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;11118:183::o;10676:250::-;1937:6;;-1:-1:-1;;;;;1937:6:0;1923:10;:20;1915:57;;;;-1:-1:-1;;;1915:57:0;;;;;;;:::i;:::-;10773:8:::1;:18;;;;10785:6;10773:18;10769:72;;;-1:-1:-1::0;;;;;10804:13:0;::::1;;::::0;;;:5:::1;:13;::::0;;;;;::::1;;10803:14;10795:43;;;::::0;-1:-1:-1;;;10795:43:0;;10858:2:1;10795:43:0::1;::::0;::::1;10840:21:1::0;10897:2;10877:18;;;10870:30;-1:-1:-1;;;10916:18:1;;;10909:46;10972:18;;10795:43:0::1;10656:340:1::0;10795:43:0::1;-1:-1:-1::0;;;;;10851:17:0;;::::1;;::::0;;;:7:::1;:17;::::0;;;;;;;:26;;;::::1;;-1:-1:-1::0;;10851:26:0;;::::1;;::::0;;10888:9:::1;:19:::0;;;;;:30;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;10676:250::o;2250:137::-;1937:6;;-1:-1:-1;;;;;1937:6:0;1923:10;:20;1915:57;;;;-1:-1:-1;;;1915:57:0;;;;;;;:::i;:::-;2327:1:::1;2310:19:::0;;-1:-1:-1;;;;;;2310:19:0::1;::::0;;2346:32:::1;::::0;4281:51:1;;;2346:32:0::1;::::0;4269:2:1;4254:18;2346:32:0::1;;;;;;;2250:137::o:0;11420:254::-;1937:6;;-1:-1:-1;;;;;1937:6:0;1923:10;:20;1915:57;;;;-1:-1:-1;;;1915:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11500:16:0;::::1;;::::0;;;:5:::1;:16;::::0;;;;;::::1;;11499:17;11491:53;;;::::0;-1:-1:-1;;;11491:53:0;;11203:2:1;11491:53:0::1;::::0;::::1;11185:21:1::0;11242:2;11222:18;;;11215:30;11281:25;11261:18;;;11254:53;11324:18;;11491:53:0::1;11001:347:1::0;11491:53:0::1;11555:16;:37:::0;;-1:-1:-1;;;;;11555:37:0;;::::1;-1:-1:-1::0;;;;;;11555:37:0;;::::1;::::0;::::1;::::0;;:16:::1;11603:18:::0;;;:7:::1;:18;::::0;;;;;;;:25;;-1:-1:-1;;11603:25:0;;::::1;::::0;::::1;::::0;;;11639:9:::1;:20:::0;;;;;;:27;;;;::::1;;::::0;;11420:254::o;7547:129::-;1937:6;;-1:-1:-1;;;;;1937:6:0;1923:10;:20;1915:57;;;;-1:-1:-1;;;1915:57:0;;;;;;;:::i;:::-;7611:12:::1;::::0;::::1;;7610:13;7602:41;;;::::0;-1:-1:-1;;;7602:41:0;;11555:2:1;7602:41:0::1;::::0;::::1;11537:21:1::0;11594:2;11574:18;;;11567:30;-1:-1:-1;;;11613:18:1;;;11606:45;11668:18;;7602:41:0::1;11353:339:1::0;7602:41:0::1;7654:14;7728:12:::0;:19;;-1:-1:-1;;7728:19:0;7743:4;7728:19;;;7773:12;7758;:27;7684:109;7654:14:::1;7547:129::o:0;12551:436::-;1937:6;;-1:-1:-1;;;;;1937:6:0;1923:10;:20;1915:57;;;;-1:-1:-1;;;1915:57:0;;;;;;;:::i;:::-;12687:36:::1;::::0;;::::1;::::0;:23;::::1;2579:13;2520:1;2579:2;:13;:::i;:::-;2568:25;::::0;:7:::1;:25;:::i;:::-;12687:23;;;;:::i;:::-;:36;;;;:::i;:::-;12673:11;:50:::0;12748:36:::1;::::0;;::::1;::::0;:23;::::1;2579:13;2520:1;2579:2;:13;:::i;:::-;2568:25;::::0;:7:::1;:25;:::i;:::-;12748:23;;;;:::i;:::-;:36;;;;:::i;:::-;12734:11;:50:::0;;;12816:11:::1;::::0;-1:-1:-1;12803:24:0::1;12795:50;;;::::0;-1:-1:-1;;;12795:50:0;;11899:2:1;12795:50:0::1;::::0;::::1;11881:21:1::0;11938:2;11918:18;;;11911:30;-1:-1:-1;;;11957:18:1;;;11950:43;12010:18;;12795:50:0::1;11697:337:1::0;12795:50:0::1;12891:6;2579:13;2520:1;2579:2;:13;:::i;:::-;2568:25;::::0;:7:::1;:25;:::i;:::-;12876:21;;;;:::i;:::-;12864:11;;:33;12856:57;;;::::0;-1:-1:-1;;;12856:57:0;;12241:2:1;12856:57:0::1;::::0;::::1;12223:21:1::0;12280:2;12260:18;;;12253:30;-1:-1:-1;;;12299:18:1;;;12292:41;12350:18;;12856:57:0::1;12039:335:1::0;12856:57:0::1;12959:3;2579:13;2520:1;2579:2;:13;:::i;:::-;2568:25;::::0;:7:::1;:25;:::i;:::-;12944:18;;;;:::i;:::-;12932:11;;:30;12924:55;;;::::0;-1:-1:-1;;;12924:55:0;;12581:2:1;12924:55:0::1;::::0;::::1;12563:21:1::0;12620:2;12600:18;;;12593:30;-1:-1:-1;;;12639:18:1;;;12632:42;12691:18;;12924:55:0::1;12379:336:1::0;12924:55:0::1;12551:436:::0;;;;:::o;5626:225::-;5706:4;5731:29;5749:10;5731:17;:29::i;:::-;5723:58;;;;-1:-1:-1;;;5723:58:0;;;;;;;:::i;:::-;5799:44;5813:10;5825:9;5836:6;5799:13;:44::i;:::-;5792:51;5626:225;-1:-1:-1;;;5626:225:0:o;6563:583::-;1937:6;;-1:-1:-1;;;;;1937:6:0;1923:10;:20;1915:57;;;;-1:-1:-1;;;1915:57:0;;;;;;;:::i;:::-;4005:10:::1;:17:::0;;-1:-1:-1;;4005:17:0::1;;;::::0;;6645:10:::2;::::0;-1:-1:-1;;;;;6645:10:0::2;:24:::0;6637:46:::2;;;::::0;-1:-1:-1;;;6637:46:0;;12922:2:1;6637:46:0::2;::::0;::::2;12904:21:1::0;12961:1;12941:18;;;12934:29;-1:-1:-1;;;12979:18:1;;;12972:39;13028:18;;6637:46:0::2;12720:332:1::0;6637:46:0::2;6703:12;::::0;::::2;;6702:13;6694:41;;;::::0;-1:-1:-1;;;6694:41:0;;11555:2:1;6694:41:0::2;::::0;::::2;11537:21:1::0;11594:2;11574:18;;;11567:30;-1:-1:-1;;;11613:18:1;;;11606:45;11668:18;;6694:41:0::2;11353:339:1::0;6694:41:0::2;6766:1;6754:9;:13;:40;;;;6793:1;6771:21;:23;6754:40;6746:82;;;::::0;-1:-1:-1;;;6746:82:0;;13259:2:1;6746:82:0::2;::::0;::::2;13241:21:1::0;13298:2;13278:18;;;13271:30;13337:31;13317:18;;;13310:59;13386:18;;6746:82:0::2;13057:353:1::0;6746:82:0::2;6865:4;6872:1;6847:24:::0;;;:9:::2;:24;::::0;;;;;6839:60:::2;;;::::0;-1:-1:-1;;;6839:60:0;;13617:2:1;6839:60:0::2;::::0;::::2;13599:21:1::0;13656:2;13636:18;;;13629:30;-1:-1:-1;;;13675:18:1;;;13668:51;13736:18;;6839:60:0::2;13415:345:1::0;6839:60:0::2;6941:18;;;;;;;;;-1:-1:-1::0;;;;;6941:18:0::2;-1:-1:-1::0;;;;;6941:26:0::2;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6923:58:0::2;;6990:4;6997:18;;;;;;;;;-1:-1:-1::0;;;;;6997:18:0::2;-1:-1:-1::0;;;;;6997:23:0::2;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6923:100;::::0;-1:-1:-1;;;;;;6923:100:0::2;::::0;;;;;;-1:-1:-1;;;;;14251:15:1;;;6923:100:0::2;::::0;::::2;14233:34:1::0;14303:15;;14283:18;;;14276:43;14168:18;;6923:100:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6910:10;:113:::0;;-1:-1:-1;;;;;;6910:113:0::2;-1:-1:-1::0;;;;;6910:113:0;;;::::2;::::0;;;::::2;::::0;;7066:4:::2;-1:-1:-1::0;7048:24:0;;;:9:::2;:24;::::0;;;;;7034:69:::2;::::0;7074:21:::2;::::0;7034:13:::2;:69::i;:::-;7120:10;::::0;-1:-1:-1;;;;;7120:10:0::2;7114:17;::::0;;;:5:::2;:17;::::0;;;;:24;;-1:-1:-1;;7114:24:0::2;7134:4;7114:24;::::0;;4047:10:::1;:18:::0;;-1:-1:-1;;4047:18:0::1;::::0;;6563:583::o;2087:157::-;1937:6;;-1:-1:-1;;;;;1937:6:0;1923:10;:20;1915:57;;;;-1:-1:-1;;;1915:57:0;;;;;;;:::i;:::-;2171:6:::1;:17:::0;;-1:-1:-1;;;;;;2171:17:0::1;-1:-1:-1::0;;;;;2171:17:0;::::1;::::0;;::::1;::::0;;;2205:30:::1;::::0;4281:51:1;;;2205:30:0::1;::::0;4269:2:1;4254:18;2205:30:0::1;;;;;;;2087:157:::0;:::o;9310:277::-;9431:12;;9375:4;;;;9431:12;;9426:124;;;-1:-1:-1;9462:4:0;9426:124;;;-1:-1:-1;;;;;9489:15:0;;;;;;:7;:15;;;;;;;;:36;;;;-1:-1:-1;;;;;;9508:17:0;;;;;;:9;:17;;;;;;;;9489:36;9485:65;;;-1:-1:-1;9543:4:0;9568:11;9310:277;-1:-1:-1;;9310:277:0:o;7801:934::-;7893:4;-1:-1:-1;;;;;7918:20:0;;7910:62;;;;-1:-1:-1;;;7910:62:0;;14748:2:1;7910:62:0;;;14730:21:1;14787:2;14767:18;;;14760:30;14826:31;14806:18;;;14799:59;14875:18;;7910:62:0;14546:353:1;7910:62:0;7988:12;;;;7983:89;;-1:-1:-1;;;;;8012:15:0;;;;;;:7;:15;;;;;;;;:36;;;;-1:-1:-1;;;;;;8031:17:0;;;;;;:9;:17;;;;;;;;8012:36;8004:65;;;;-1:-1:-1;;;8004:65:0;;;;;;;:::i;:::-;8088:10;;;;;;;8087:11;:31;;;;-1:-1:-1;;;;;;8102:16:0;;;;;;:5;:16;;;;;;;;8087:31;8082:64;;;8123:20;:18;:20::i;:::-;-1:-1:-1;;;;;8171:23:0;;8189:4;8171:23;;;;:53;;-1:-1:-1;;;;;;8198:26:0;;8219:4;8198:26;;8171:53;:73;;;;-1:-1:-1;8238:6:0;;-1:-1:-1;;;;;8228:16:0;;;8238:6;;8228:16;;8171:73;8166:179;;;8271:39;8284:6;8292:9;8303:6;8271:12;:39::i;:::-;8263:69;;;;-1:-1:-1;;;8263:69:0;;15106:2:1;8263:69:0;;;15088:21:1;15145:2;15125:18;;;15118:30;-1:-1:-1;;;15164:18:1;;;15157:47;15221:18;;8263:69:0;14904:341:1;8263:69:0;8355:18;8376:40;8390:6;8398:9;8409:6;8376:13;:40::i;:::-;8355:61;-1:-1:-1;8427:23:0;8453:19;8355:61;8453:6;:19;:::i;:::-;-1:-1:-1;;;;;8503:17:0;;;;;;:9;:17;;;;;;8427:45;;-1:-1:-1;8503:26:0;;8523:6;;8503:26;:::i;:::-;-1:-1:-1;;;;;8483:17:0;;;;;;:9;:17;;;;;:46;8545:14;;8540:65;;8582:4;8564:24;;;;:9;:24;;;;;:38;;8592:10;;8564:24;:38;;8592:10;;8564:38;:::i;:::-;;;;-1:-1:-1;;8540:65:0;-1:-1:-1;;;;;8615:20:0;;;;;;:9;:20;;;;;:39;;8639:15;;8615:20;:39;;8639:15;;8615:39;:::i;:::-;;;;;;;;8687:9;-1:-1:-1;;;;;8670:35:0;8679:6;-1:-1:-1;;;;;8670:35:0;;8698:6;8670:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;8670:35:0;;;;;;;;-1:-1:-1;8723:4:0;;7801:934;-1:-1:-1;;;;;7801:934:0:o;13639:364::-;13706:24;13721:8;13706:14;:24::i;:::-;13769:16;;;13783:1;13769:16;;;;;;;;13741:25;;13769:16;;;;;;;;;;-1:-1:-1;13769:16:0;13741:44;;13818:4;13796:8;13805:1;13796:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13796:27:0;;;:11;;;;;;;;;;:27;;;;13839:18;;:25;;;-1:-1:-1;;;13839:25:0;;;;:18;;;;;:23;;:25;;;;;13796:11;;13839:25;;;;;:18;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13825:8;13834:1;13825:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13825:39:0;;;:11;;;;;;;;;:39;13875:18;;:120;;-1:-1:-1;;;13875:120:0;;:18;;;:69;;:120;;13945:8;;13875:18;;13956:8;;13973:4;;13979:15;;13875:120;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13695:308;13639:364;:::o;7154:385::-;7284:8;;-1:-1:-1;;;;;7284:8:0;7303:50;;;;-1:-1:-1;7348:1:0;7303:50;7363:28;7378:12;7363:14;:28::i;:::-;7402:18;;:129;;-1:-1:-1;;;7402:129:0;;7469:4;7402:129;;;16840:34:1;16890:18;;;16883:34;;;7402:18:0;16933::1;;;16926:34;;;16976:18;;;16969:34;-1:-1:-1;;;;;17040:15:1;;;17019:19;;;17012:44;7514:15:0;17072:19:1;;;17065:35;7402:18:0;;;;:34;;7444:13;;16774:19:1;;7402:129:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7246:293;7154:385;;;:::o;12995:636::-;4005:10;:17;;-1:-1:-1;;4005:17:0;;;;;13104:4:::1;-1:-1:-1::0;5234:18:0;;;:9;:18;;;;;;13056:54:::1;;13151:11;;13128:19;:34;;:50;;;;-1:-1:-1::0;13166:12:0::1;::::0;::::1;;13128:50;13123:501;;;13224:11;;13201:19;:34;13196:80;;-1:-1:-1::0;13262:11:0::1;::::0;13196:80:::1;13314:19:::0;13368:13:::1;2520:1;13368:2;:13;:::i;:::-;13352;:29;13348:106;;;13403:35;13424:13;13403:20;:35::i;:::-;13498:21;13537:23:::0;;13534:79:::1;;13564:16;::::0;:46:::1;::::0;-1:-1:-1;;;;;13564:16:0;;::::1;::::0;:46;::::1;;;::::0;13590:19;;13564:16:::1;:46:::0;:16;:46;13590:19;13564:16;:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13534:79;13181:443;;13123:501;-1:-1:-1::0;4047:10:0;:18;;-1:-1:-1;;4047:18:0;;;12995:636::o;8743:559::-;8908:12;;8847:4;;8888;;8908:12;;:34;;;;-1:-1:-1;;;;;;8925:17:0;;;;;;:9;:17;;;;;;;;8924:18;8908:34;:59;;;;-1:-1:-1;;;;;;8947:20:0;;;;;;:9;:20;;;;;;;;8946:21;8908:59;8903:358;;;9007:12;;8990:14;:29;8985:265;;;-1:-1:-1;9061:5:0;8985:265;;;-1:-1:-1;;;;;9108:16:0;;;;;;:5;:16;;;;;;;;9107:17;:79;;;;-1:-1:-1;9169:16:0;;-1:-1:-1;;;;;9129:20:0;;;;;;:9;:20;;;;;;:37;;9152:14;;9129:37;:::i;:::-;:56;9107:79;9102:148;;;-1:-1:-1;9228:5:0;9278:16;8743:559;-1:-1:-1;;;;8743:559:0:o;9595:835::-;9746:12;;9692:7;;;;9746:12;;9745:13;;:32;;-1:-1:-1;;;;;;9762:15:0;;;;;;:7;:15;;;;;;;;9745:32;:54;;;-1:-1:-1;;;;;;9781:18:0;;;;;;:7;:18;;;;;;;;9745:54;9740:656;;;-1:-1:-1;9830:1:0;9740:656;;;-1:-1:-1;;;;;9855:13:0;;;;;;:5;:13;;;;;;;;9850:546;;;9942:16;;9908:12;;9942:16;-1:-1:-1;;;9942:16:0;;;;;9908:31;;-1:-1:-1;;;9923:16:0;;;;;;;9908:31;:::i;:::-;:50;;;;:::i;:::-;9892:12;:66;9887:400;;10001:11;;10015:3;;9992:20;;-1:-1:-1;;;10001:11:0;;;;9992:6;:20;:::i;:::-;:26;;;;:::i;:::-;9980:38;;9850:546;;9887:400;10077:16;;10062:12;;:31;;-1:-1:-1;;;10077:16:0;;;;;10062:31;:::i;:::-;10046:12;:47;10041:246;;10136:13;;10152:3;;10127:22;;-1:-1:-1;;;10136:13:0;;;;10127:6;:22;:::i;10041:246::-;10198:12;;10182;:28;10177:110;;10252:13;;10268:3;;10243:22;;-1:-1:-1;;;10252:13:0;;;;10243:6;:22;:::i;10177:110::-;9850:546;;;-1:-1:-1;;;;;10309:16:0;;;;;;:5;:16;;;;;;;;10304:92;;;10365:12;;10380:3;;10356:21;;-1:-1:-1;;;10365:12:0;;;;10356:6;:21;:::i;:::-;:27;;;;:::i;:::-;10344:39;9595:835;-1:-1:-1;;;;;9595:835:0:o;6238:317::-;6329:4;6309:26;;;;:11;:26;;;;;;;;3676:42;6309:46;;;;;;;;:61;-1:-1:-1;6304:244:0;;;6408:4;6388:26;;;;:11;:26;;;;;;;;3676:42;6388:46;;;;;;;;;;-1:-1:-1;;6388:66:0;;;;6474:62;;1361:25:1;;;3676:42:0;;6408:4;6474:62;;1334:18:1;6474:62:0;;;;;;;6304:244;6238:317;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:156::-;2113:20;;2173:4;2162:16;;2152:27;;2142:55;;2193:1;2190;2183:12;2142:55;2047:156;;;:::o;2208:160::-;2273:20;;2329:13;;2322:21;2312:32;;2302:60;;2358:1;2355;2348:12;2373:250;2436:6;2444;2497:2;2485:9;2476:7;2472:23;2468:32;2465:52;;;2513:1;2510;2503:12;2465:52;2536:27;2553:9;2536:27;:::i;:::-;2526:37;;2582:35;2613:2;2602:9;2598:18;2582:35;:::i;:::-;2572:45;;2373:250;;;;;:::o;2628:159::-;2695:20;;2755:6;2744:18;;2734:29;;2724:57;;2777:1;2774;2767:12;2792:256;2858:6;2866;2919:2;2907:9;2898:7;2894:23;2890:32;2887:52;;;2935:1;2932;2925:12;2887:52;2958:28;2976:9;2958:28;:::i;:::-;2948:38;;3005:37;3038:2;3027:9;3023:18;3005:37;:::i;3053:180::-;3112:6;3165:2;3153:9;3144:7;3140:23;3136:32;3133:52;;;3181:1;3178;3171:12;3133:52;-1:-1:-1;3204:23:1;;3053:180;-1:-1:-1;3053:180:1:o;3238:252::-;3302:6;3310;3363:2;3351:9;3342:7;3338:23;3334:32;3331:52;;;3379:1;3376;3369:12;3331:52;3402:27;3419:9;3402:27;:::i;:::-;3392:37;;3448:36;3480:2;3469:9;3465:18;3448:36;:::i;3495:383::-;3566:6;3574;3582;3635:2;3623:9;3614:7;3610:23;3606:32;3603:52;;;3651:1;3648;3641:12;3603:52;3690:9;3677:23;3709:31;3734:5;3709:31;:::i;:::-;3759:5;-1:-1:-1;3783:35:1;3814:2;3799:18;;3783:35;:::i;:::-;3773:45;;3837:35;3868:2;3857:9;3853:18;3837:35;:::i;:::-;3827:45;;3495:383;;;;;:::o;3883:247::-;3942:6;3995:2;3983:9;3974:7;3970:23;3966:32;3963:52;;;4011:1;4008;4001:12;3963:52;4050:9;4037:23;4069:31;4094:5;4069:31;:::i;4343:163::-;4410:20;;4470:10;4459:22;;4449:33;;4439:61;;4496:1;4493;4486:12;4511:401;4593:6;4601;4609;4617;4670:3;4658:9;4649:7;4645:23;4641:33;4638:53;;;4687:1;4684;4677:12;4638:53;4710:28;4728:9;4710:28;:::i;:::-;4700:38;;4757:37;4790:2;4779:9;4775:18;4757:37;:::i;:::-;4747:47;;4813:37;4846:2;4835:9;4831:18;4813:37;:::i;:::-;4803:47;;4869:37;4902:2;4891:9;4887:18;4869:37;:::i;:::-;4859:47;;4511:401;;;;;;;:::o;4917:388::-;4985:6;4993;5046:2;5034:9;5025:7;5021:23;5017:32;5014:52;;;5062:1;5059;5052:12;5014:52;5101:9;5088:23;5120:31;5145:5;5120:31;:::i;:::-;5170:5;-1:-1:-1;5227:2:1;5212:18;;5199:32;5240:33;5199:32;5240:33;:::i;:::-;5292:7;5282:17;;;4917:388;;;;;:::o;5570:127::-;5631:10;5626:3;5622:20;5619:1;5612:31;5662:4;5659:1;5652:15;5686:4;5683:1;5676:15;5702:422;5791:1;5834:5;5791:1;5848:270;5869:7;5859:8;5856:21;5848:270;;;5928:4;5924:1;5920:6;5916:17;5910:4;5907:27;5904:53;;;5937:18;;:::i;:::-;5987:7;5977:8;5973:22;5970:55;;;6007:16;;;;5970:55;6086:22;;;;6046:15;;;;5848:270;;;5852:3;5702:422;;;;;:::o;6129:806::-;6178:5;6208:8;6198:80;;-1:-1:-1;6249:1:1;6263:5;;6198:80;6297:4;6287:76;;-1:-1:-1;6334:1:1;6348:5;;6287:76;6379:4;6397:1;6392:59;;;;6465:1;6460:130;;;;6372:218;;6392:59;6422:1;6413:10;;6436:5;;;6460:130;6497:3;6487:8;6484:17;6481:43;;;6504:18;;:::i;:::-;-1:-1:-1;;6560:1:1;6546:16;;6575:5;;6372:218;;6674:2;6664:8;6661:16;6655:3;6649:4;6646:13;6642:36;6636:2;6626:8;6623:16;6618:2;6612:4;6609:12;6605:35;6602:77;6599:159;;;-1:-1:-1;6711:19:1;;;6743:5;;6599:159;6790:34;6815:8;6809:4;6790:34;:::i;:::-;6860:6;6856:1;6852:6;6848:19;6839:7;6836:32;6833:58;;;6871:18;;:::i;:::-;6909:20;;6129:806;-1:-1:-1;;;6129:806:1:o;6940:140::-;6998:5;7027:47;7068:4;7058:8;7054:19;7048:4;7027:47;:::i;7085:168::-;7158:9;;;7189;;7206:15;;;7200:22;;7186:37;7176:71;;7227:18;;:::i;7258:340::-;7460:2;7442:21;;;7499:2;7479:18;;;7472:30;-1:-1:-1;;;7533:2:1;7518:18;;7511:46;7589:2;7574:18;;7258:340::o;7603:128::-;7670:9;;;7691:11;;;7688:37;;;7705:18;;:::i;7736:348::-;7938:2;7920:21;;;7977:2;7957:18;;;7950:30;8016:26;8011:2;7996:18;;7989:54;8075:2;8060:18;;7736:348::o;8444:217::-;8484:1;8510;8500:132;;8554:10;8549:3;8545:20;8542:1;8535:31;8589:4;8586:1;8579:15;8617:4;8614:1;8607:15;8500:132;-1:-1:-1;8646:9:1;;8444:217::o;9000:125::-;9065:9;;;9086:10;;;9083:36;;;9099:18;;:::i;10156:148::-;10244:4;10223:12;;;10237;;;10219:31;;10262:13;;10259:39;;;10278:18;;:::i;13765:251::-;13835:6;13888:2;13876:9;13867:7;13863:23;13859:32;13856:52;;;13904:1;13901;13894:12;13856:52;13936:9;13930:16;13955:31;13980:5;13955:31;:::i;15382:127::-;15443:10;15438:3;15434:20;15431:1;15424:31;15474:4;15471:1;15464:15;15498:4;15495:1;15488:15;15514:980;15776:4;15824:3;15813:9;15809:19;15855:6;15844:9;15837:25;15881:2;15919:6;15914:2;15903:9;15899:18;15892:34;15962:3;15957:2;15946:9;15942:18;15935:31;15986:6;16021;16015:13;16052:6;16044;16037:22;16090:3;16079:9;16075:19;16068:26;;16129:2;16121:6;16117:15;16103:29;;16150:1;16160:195;16174:6;16171:1;16168:13;16160:195;;;16239:13;;-1:-1:-1;;;;;16235:39:1;16223:52;;16330:15;;;;16295:12;;;;16271:1;16189:9;16160:195;;;-1:-1:-1;;;;;;;16411:32:1;;;;16406:2;16391:18;;16384:60;-1:-1:-1;;;16475:3:1;16460:19;16453:35;16372:3;15514:980;-1:-1:-1;;;15514:980:1:o;17111:306::-;17199:6;17207;17215;17268:2;17256:9;17247:7;17243:23;17239:32;17236:52;;;17284:1;17281;17274:12;17236:52;17313:9;17307:16;17297:26;;17363:2;17352:9;17348:18;17342:25;17332:35;;17407:2;17396:9;17392:18;17386:25;17376:35;;17111:306;;;;;:::o

Swarm Source

ipfs://dbe4523d52d3e74c4e5cd01484a1c73d6c86a56decab8f24b87268337bfe84a4
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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