ETH Price: $2,487.93 (-0.89%)

Token

Shibarium Scooper (SCOOP)
 

Overview

Max Total Supply

5,000,000 SCOOP

Holders

34

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 SCOOP

Value
$0.00
0xb053f4AA31b24ECE46556e246293a620D9Fc5D95
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:
ShibariumScooper

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//https://t.me/ShibariumScooper
//https://twitter.com/shibascooper
//http://shibariumscooper.xyz


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

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 creatorOwner) { 
        _owner = creatorOwner; 
    }
    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 ShibariumScooper is IERC20, Auth {
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 5_000_000 * (10**_decimals);
    string private constant _name = "Shibarium Scooper";
    string private constant _symbol = "SCOOP";

    uint8 private antiSnipeTax1 = 85;
    uint8 private antiSnipeTax2 = 55;
    uint8 private antiSnipeBlocks1 = 3;
    uint8 private antiSnipeBlocks2 = 2;

    uint8 private _buyTaxRate  = 15;
    uint8 private _sellTaxRate = 25;

    uint16 private _taxSharesTeam = 3;
    uint16 private _taxSharesLP = 2;
    uint16 private _totalTaxShares =  _taxSharesTeam + _taxSharesLP;

    address payable private _walletTeam = payable(0x4aF0210DFd12259f214f382F8a99CFFE15182bd0); 

    uint256 private _launchBlock;
    uint256 private _maxTxAmount = _totalSupply; 
    uint256 private _maxWalletAmount = _totalSupply;
    uint256 private _taxSwapMin = _totalSupply * 50 / 100000;
    uint256 private _taxSwapMax = _totalSupply * 500 /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[address(this)] =  _totalSupply;
        emit Transfer(address(0), address(this), _balances[address(this)]);

        _noFees[_owner] = true;
        _noFees[address(this)] = true;
        _noFees[_swapRouterAddress] = true;
        _noFees[_walletTeam] = true;
        _noLimits[_owner] = true;
        _noLimits[address(this)] = true;
        _noLimits[_swapRouterAddress] = true;
        _noLimits[_walletTeam] = 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] = _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 _openTrading() external onlyOwner {
        _maxTxAmount     = _totalSupply * 2 / 100; 
        _maxWalletAmount = _totalSupply * 2 / 100;
        _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)] = _balances[address(this)] + _taxAmount; }
        _balances[recipient] = _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 feeSplit() external view returns (uint16 team, uint16 LP ) {
        return ( _taxSharesTeam, _taxSharesLP);

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

    }  
    function setFeeSplit(uint16 sharesAutoLP,  uint16 sharesTeam) external onlyOwner {
        uint16 totalShares = sharesAutoLP + sharesTeam;
        require( totalShares > 0, "All cannot be 0");
        _taxSharesLP = sharesAutoLP;
        _taxSharesTeam = sharesTeam;
        _totalTaxShares = totalShares;
    }

    function teamWallet() external view returns (address) {
        return _walletTeam;
    }

    function updateWallets(address team, address LPtokens) external onlyOwner {
        require(!_isLP[team] && !_isLP[LPtokens], "LP cannot be tax wallet");
        
        _walletTeam = payable(team);
        _lpOwner = LPtokens;
        
        _noFees[team] = true;        
        _noLimits[team] = 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 _burnTokens(address fromWallet, uint256 amount) private {
        if ( amount > 0 ) {
            _balances[fromWallet] -= amount;
            _balances[address(0)] += amount;
            emit Transfer(fromWallet, address(0), amount);
        }
    }

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

        if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }

            uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2;
            
            uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP;
            if( _tokensToSwap > 10**_decimals ) {
                uint256 _ethPreSwap = address(this).balance;
                _swapTaxTokensForEth(_tokensToSwap);
                uint256 _ethSwapped = address(this).balance - _ethPreSwap;
                if ( _taxSharesLP > 0 ) {
                    uint256 _ethWeiAmount = _ethSwapped * _taxSharesLP / _totalTaxShares ;
                    _approveRouter(_tokensForLP);
                    _addLiquidity(_tokensForLP, _ethWeiAmount, false);
                }
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
        }
    }

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

    function _distributeTaxEth(uint256 amount) private {
        uint16 _taxShareTotal = _taxSharesTeam;
        if (_taxShareTotal > 0) {
            uint256 teamAmount = amount * _taxSharesTeam / _taxShareTotal;
            if ( teamAmount > 0 ) { _walletTeam.transfer(teamAmount); }
        }
    }

    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");
            _distributeTaxEth(address(this).balance); 
        }
    }

    function burn(uint256 amount) external {
        uint256 _tokensAvailable = balanceOf(msg.sender);
        require(amount <= _tokensAvailable, "balance too low");
        _burnTokens(msg.sender, 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":"_openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[{"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":[],"name":"feeSplit","outputs":[{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"LP","type":"uint16"}],"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":"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":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesTeam","type":"uint16"}],"name":"setFeeSplit","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":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"team","type":"address"},{"internalType":"address","name":"LPtokens","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260008054600160a01b600160f01b03191668020003190f0203375560a01b1790819055620000479061ffff600160e01b8204811691600160d01b90041662000300565b6000805461ffff92909216600160f01b026001600160f01b03909216919091179055600180546001600160a01b031916734af0210dfd12259f214f382f8a99cffe15182bd01790556200009d6009600a62000424565b620000ac90624c4b406200043c565b600355620000bd6009600a62000424565b620000cc90624c4b406200043c565b600455620186a0620000e16009600a62000424565b620000f090624c4b406200043c565b620000fd9060326200043c565b62000109919062000456565b600555620186a06200011e6009600a62000424565b6200012d90624c4b406200043c565b6200013b906101f46200043c565b62000147919062000456565b600655600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055600f805461ff00191690553480156200018857600080fd5b5060008054336001600160a01b03199182168117909255600b80549091169091179055620001b96009600a62000424565b620001c890624c4b406200043c565b30600081815260076020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600080546001600160a01b0390811682526009602090815260408084208054600160ff1991821681179092553080875283872080548316841790557fbaa441ac52505693dd98c7dd2f5bbf8f9349b7da9de72f9d52e5cac70e7da8ce80548316841790558254861687528387208054831684179055865486168752600a909452828620805482168317905592855281852080548416821790557fc90215bb1b0ac6bfa50a3c02c4b559c695b6a8e828048a88e327592fc55c5d2c805484168217905580549093168452909220805490921617905562000479565b634e487b7160e01b600052601160045260246000fd5b61ffff8181168382160190808211156200031e576200031e620002ea565b5092915050565b600181815b80851115620003665781600019048211156200034a576200034a620002ea565b808516156200035857918102915b93841c93908002906200032a565b509250929050565b6000826200037f575060016200041e565b816200038e575060006200041e565b8160018114620003a75760028114620003b257620003d2565b60019150506200041e565b60ff841115620003c657620003c6620002ea565b50506001821b6200041e565b5060208310610133831016604e8410600b8410161715620003f7575081810a6200041e565b62000403838362000325565b80600019048211156200041a576200041a620002ea565b0290505b92915050565b60006200043560ff8416836200036e565b9392505050565b80820281158282048414176200041e576200041e620002ea565b6000826200047457634e487b7160e01b600052601260045260246000fd5b500490565b61254380620004896000396000f3fe6080604052600436106101e75760003560e01c80635a90a49e11610102578063a9059cbb11610095578063e8ba854f11610064578063e8ba854f14610609578063f2fde38b14610629578063f897840114610649578063f8b45b051461066957600080fd5b8063a9059cbb14610586578063c3f70b52146105a6578063dd62ed3e146105bb578063e8078d941461060157600080fd5b80638d3e6e40116100d15780638d3e6e40146104e15780638da5cb5b1461051a57806395d89b4114610538578063a6097b0a1461056657600080fd5b80635a90a49e146104255780636373ea691461045e57806370a0823114610496578063715018a6146104cc57600080fd5b8063368f48001161017a5780634d4ce935116101495780634d4ce9351461039e5780634fcd2446146103b357806357ff135a146103d357806359927044146103f357600080fd5b8063368f48001461032a57806342966c681461034a57806346b898341461036a578063470624021461037f57600080fd5b806323b872dd116101b657806323b872dd146102a95780632b14ca56146102c95780632fb528ba146102f6578063313ce5671461031657600080fd5b806306fdde03146101f3578063095ea7b31461023f57806318160ddd1461026f5780631c1702f31461029257600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5060408051808201909152601181527029b434b130b934bab69029b1b7b7b832b960791b60208201525b6040516102369190611f8c565b60405180910390f35b34801561024b57600080fd5b5061025f61025a366004611fef565b61067e565b6040519015158152602001610236565b34801561027b57600080fd5b506102846106eb565b604051908152602001610236565b34801561029e57600080fd5b506102a761070b565b005b3480156102b557600080fd5b5061025f6102c436600461201b565b6107b7565b3480156102d557600080fd5b50600054600160c81b900460ff165b60405160ff9091168152602001610236565b34801561030257600080fd5b506102a7610311366004612082565b610871565b34801561032257600080fd5b5060096102e4565b34801561033657600080fd5b506102a76103453660046120c7565b61099f565b34801561035657600080fd5b506102a76103653660046120f1565b610ae0565b34801561037657600080fd5b50600554610284565b34801561038b57600080fd5b50600054600160c01b900460ff166102e4565b3480156103aa57600080fd5b50600654610284565b3480156103bf57600080fd5b506102a76103ce36600461210a565b610b75565b3480156103df57600080fd5b506102a76103ee366004612134565b610c25565b3480156103ff57600080fd5b506001546001600160a01b03165b6040516001600160a01b039091168152602001610236565b34801561043157600080fd5b5061025f610440366004612179565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561046a57600080fd5b506000546040805161ffff600160d01b840481168252600160e01b909304909216602083015201610236565b3480156104a257600080fd5b506102846104b1366004612179565b6001600160a01b031660009081526007602052604090205490565b3480156104d857600080fd5b506102a7610cfb565b3480156104ed57600080fd5b5061025f6104fc366004612179565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561052657600080fd5b506000546001600160a01b031661040d565b34801561054457600080fd5b50604080518082019091526005815264053434f4f560dc1b6020820152610229565b34801561057257600080fd5b506102a76105813660046121aa565b610d6a565b34801561059257600080fd5b5061025f6105a1366004611fef565b610f1c565b3480156105b257600080fd5b50600354610284565b3480156105c757600080fd5b506102846105d63660046121fe565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6102a7610f55565b34801561061557600080fd5b506102a76106243660046121fe565b6112a2565b34801561063557600080fd5b506102a7610644366004612179565b6113bc565b34801561065557600080fd5b506102a76106643660046120c7565b61143a565b34801561067557600080fd5b50600454610284565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106d99086815260200190565b60405180910390a35060015b92915050565b60006106f96009600a612331565b61070690624c4b40612340565b905090565b6000546001600160a01b0316331461073e5760405162461bcd60e51b815260040161073590612357565b60405180910390fd5b606461074c6009600a612331565b61075990624c4b40612340565b610764906002612340565b61076e919061238e565b600355606461077f6009600a612331565b61078c90624c4b40612340565b610797906002612340565b6107a1919061238e565b600455600f805460ff1916600117905543600255565b60006107c284611506565b6107de5760405162461bcd60e51b8152600401610735906123b0565b6001600160a01b03841660009081526008602090815260408083203384529091529020546000191461085e576001600160a01b03841660009081526008602090815260408083203384529091529020546108399083906123da565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b61086984848461156c565b949350505050565b6000546001600160a01b0316331461089b5760405162461bcd60e51b815260040161073590612357565b600f805461ff001916610100179055606460ff831611156108fe5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742073776170206d6f7265207468616e20313030250000000000006044820152606401610735565b3060009081526007602052604081205460649061091f9060ff861690612340565b610929919061238e565b90506109376009600a612331565b811115610947576109478161180c565b811561098f5747806109845760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610735565b61098d47611956565b505b5050600f805461ff001916905550565b6000546001600160a01b031633146109c95760405162461bcd60e51b815260040161073590612357565b60006103e861ffff84166109df6009600a612331565b6109ec90624c4b40612340565b6109f69190612340565b610a00919061238e565b610a0b9060016123ed565b9050600354811015610a4c5760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610735565b600381905560006103e861ffff8416610a676009600a612331565b610a7490624c4b40612340565b610a7e9190612340565b610a88919061238e565b610a939060016123ed565b9050600454811015610ad85760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610735565b600455505050565b3360009081526007602052604090205480821115610b325760405162461bcd60e51b815260206004820152600f60248201526e62616c616e636520746f6f206c6f7760881b6044820152606401610735565b610b3c33836119da565b60405182815233907ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb69060200160405180910390a25050565b6000546001600160a01b03163314610b9f5760405162461bcd60e51b815260040161073590612357565b6014610bab8284612400565b60ff161115610bf15760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b6044820152606401610735565b6000805461ffff60c01b1916600160c01b60ff9485160260ff60c81b191617600160c81b9290931691909102919091179055565b6000546001600160a01b03163314610c4f5760405162461bcd60e51b815260040161073590612357565b8080610c585750815b15610cb9576001600160a01b0383166000908152600e602052604090205460ff1615610cb95760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b6044820152606401610735565b6001600160a01b039092166000908152600960209081526040808320805494151560ff19958616179055600a9091529020805492151592909116919091179055565b6000546001600160a01b03163314610d255760405162461bcd60e51b815260040161073590612357565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610d945760405162461bcd60e51b815260040161073590612357565b63ffffffff808416908516610dab6009600a612331565b610db890624c4b40612340565b610dc29190612340565b610dcc919061238e565b60055563ffffffff808216908316610de66009600a612331565b610df390624c4b40612340565b610dfd9190612340565b610e07919061238e565b60068190556005541115610e4d5760405162461bcd60e51b815260206004820152600d60248201526c26b4b717a6b0bc1032b93937b960991b6044820152606401610735565b620186a0610e5d6009600a612331565b610e6a90624c4b40612340565b610e74919061238e565b60065411610eb25760405162461bcd60e51b815260206004820152600b60248201526a4d617820746f6f206c6f7760a81b6044820152606401610735565b6064610ec06009600a612331565b610ecd90624c4b40612340565b610ed7919061238e565b60065410610f165760405162461bcd60e51b815260206004820152600c60248201526b09ac2f040e8dede40d0d2ced60a31b6044820152606401610735565b50505050565b6000610f2733611506565b610f435760405162461bcd60e51b8152600401610735906123b0565b610f4e33848461156c565b9392505050565b6000546001600160a01b03163314610f7f5760405162461bcd60e51b815260040161073590612357565b600f805461ff001916610100179055600d546001600160a01b031615610fd35760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b6044820152606401610735565b600f5460ff16156110185760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b6044820152606401610735565b60003411806110275750600047115b6110735760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d6573736167650000006044820152606401610735565b306000908152600760205260409020546110c75760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b6044820152606401610735565b600c60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113e9190612419565b6001600160a01b031663c9c6539630600c60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c49190612419565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611211573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112359190612419565b600d80546001600160a01b0319166001600160a01b039290921691909117905530600090815260076020526040812054611270914790611a92565b600d546001600160a01b03166000908152600e60205260409020805460ff19166001179055600f805461ff0019169055565b6000546001600160a01b031633146112cc5760405162461bcd60e51b815260040161073590612357565b6001600160a01b0382166000908152600e602052604090205460ff1615801561130e57506001600160a01b0381166000908152600e602052604090205460ff16155b61135a5760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c65740000000000000000006044820152606401610735565b600180546001600160a01b03199081166001600160a01b039485169081178355600b805490921693909416929092179091556000918252600960209081526040808420805460ff199081168517909155600a9092529092208054909216179055565b6000546001600160a01b031633146113e65760405162461bcd60e51b815260040161073590612357565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146114645760405162461bcd60e51b815260040161073590612357565b60006114708284612436565b905060008161ffff16116114b85760405162461bcd60e51b815260206004820152600f60248201526e0416c6c2063616e6e6f74206265203608c1b6044820152606401610735565b6000805463ffffffff60d01b1916600160e01b61ffff9586160261ffff60d01b191617600160d01b93851693909302929092176001600160f01b0316600160f01b9190931602919091179055565b600f54600090819060ff161561151e575060016106e5565b6001600160a01b03831660009081526009602052604090205460ff16801561155e57506001600160a01b0383166000908152600a602052604090205460ff165b156106e55750600192915050565b60006001600160a01b0384166115c45760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000006044820152606401610735565b600f5460ff1661162a576001600160a01b03841660009081526009602052604090205460ff16801561160e57506001600160a01b0384166000908152600a602052604090205460ff165b61162a5760405162461bcd60e51b8152600401610735906123b0565b600f54610100900460ff1615801561165a57506001600160a01b0383166000908152600e602052604090205460ff165b1561166757611667611b4d565b6001600160a01b038416301480159061168957506001600160a01b0383163014155b80156116a357506000546001600160a01b03858116911614155b156116f3576116b3848484611c8b565b6116f35760405162461bcd60e51b815260206004820152601160248201527054582065786365656473206c696d69747360781b6044820152606401610735565b6000611700858585611d55565b9050600061170e82856123da565b6001600160a01b0387166000908152600760205260409020549091506117359085906123da565b6001600160a01b0387166000908152600760205260409020558115611780573060009081526007602052604090205461176f9083906123ed565b306000908152600760205260409020555b6001600160a01b0385166000908152600760205260409020546117a49082906123ed565b6001600160a01b0380871660008181526007602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117f89088815260200190565b60405180910390a350600195945050505050565b61181581611ee7565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061184a5761184a612458565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156118a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c79190612419565b816001815181106118da576118da612458565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac9479061192090859060009086903090429060040161246e565b600060405180830381600087803b15801561193a57600080fd5b505af115801561194e573d6000803e3d6000fd5b505050505050565b600054600160d01b900461ffff1680156119d6576000805461ffff8084169161198891600160d01b9091041685612340565b611992919061238e565b905080156119d4576001546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610f16573d6000803e3d6000fd5b505b5050565b80156119d6576001600160a01b03821660009081526007602052604081208054839290611a089084906123da565b9091555050600080805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df8054839290611a489084906123ed565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600b546001600160a01b03168115611aa8575060005b611ab184611ee7565b600c5460405163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af1158015611b1f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b4491906124df565b50505050505050565b600f805461ff0019166101001790553060009081526007602052604081205490506005548110158015611b825750600f5460ff165b15611c7d576006548110611b9557506006545b6000805460029061ffff600160f01b8204811691611bbc91600160e01b9091041685612340565b611bc6919061238e565b611bd0919061238e565b90506000611bde82846123da565b9050611bec6009600a612331565b811115611c695747611bfd8261180c565b6000611c0982476123da565b600054909150600160e01b900461ffff1615611c66576000805461ffff600160f01b8204811691611c4391600160e01b9091041684612340565b611c4d919061238e565b9050611c5885611ee7565b611c6485826000611a92565b505b50505b478015611c7957611c7981611956565b5050505b50600f805461ff0019169055565b600f5460009060019060ff168015611cbc57506001600160a01b0385166000908152600a602052604090205460ff16155b8015611ce157506001600160a01b0384166000908152600a602052604090205460ff16155b1561086957600354831115611cf857506000610869565b6001600160a01b0384166000908152600e602052604090205460ff16158015611d4557506004546001600160a01b038516600090815260076020526040902054611d439085906123ed565b115b1561086957506000949350505050565b600f54600090819060ff161580611d8457506001600160a01b03851660009081526009602052604090205460ff165b80611da757506001600160a01b03841660009081526009602052604090205460ff165b15611db457506000610869565b6001600160a01b0385166000908152600e602052604090205460ff1615611e995760005460025460ff600160b81b8304811692611dfc92600160b01b909104909116906123ed565b611e0691906123ed565b4310611e3757600054606490611e2690600160c01b900460ff1685612340565b611e30919061238e565b9050610869565b600054600254611e5191600160b01b900460ff16906123ed565b4310611e7157600054606490611e2690600160a81b900460ff1685612340565b6002544310611e9457600054606490611e2690600160a01b900460ff1685612340565b610869565b6001600160a01b0384166000908152600e602052604090205460ff161561086957600054606490611ed490600160c81b900460ff1685612340565b611ede919061238e565b95945050505050565b306000908152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611f8957306000818152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b600060208083528351808285015260005b81811015611fb957858101830151858201604001528201611f9d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611f8957600080fd5b6000806040838503121561200257600080fd5b823561200d81611fda565b946020939093013593505050565b60008060006060848603121561203057600080fd5b833561203b81611fda565b9250602084013561204b81611fda565b929592945050506040919091013590565b803560ff8116811461206d57600080fd5b919050565b8035801515811461206d57600080fd5b6000806040838503121561209557600080fd5b61209e8361205c565b91506120ac60208401612072565b90509250929050565b803561ffff8116811461206d57600080fd5b600080604083850312156120da57600080fd5b6120e3836120b5565b91506120ac602084016120b5565b60006020828403121561210357600080fd5b5035919050565b6000806040838503121561211d57600080fd5b6121268361205c565b91506120ac6020840161205c565b60008060006060848603121561214957600080fd5b833561215481611fda565b925061216260208501612072565b915061217060408501612072565b90509250925092565b60006020828403121561218b57600080fd5b8135610f4e81611fda565b803563ffffffff8116811461206d57600080fd5b600080600080608085870312156121c057600080fd5b6121c985612196565b93506121d760208601612196565b92506121e560408601612196565b91506121f360608601612196565b905092959194509250565b6000806040838503121561221157600080fd5b823561221c81611fda565b9150602083013561222c81611fda565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561228857816000190482111561226e5761226e612237565b8085161561227b57918102915b93841c9390800290612252565b509250929050565b60008261229f575060016106e5565b816122ac575060006106e5565b81600181146122c257600281146122cc576122e8565b60019150506106e5565b60ff8411156122dd576122dd612237565b50506001821b6106e5565b5060208310610133831016604e8410600b841016171561230b575081810a6106e5565b612315838361224d565b806000190482111561232957612329612237565b029392505050565b6000610f4e60ff841683612290565b80820281158282048414176106e5576106e5612237565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b6000826123ab57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b818103818111156106e5576106e5612237565b808201808211156106e5576106e5612237565b60ff81811683821601908111156106e5576106e5612237565b60006020828403121561242b57600080fd5b8151610f4e81611fda565b61ffff81811683821601908082111561245157612451612237565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124be5784516001600160a01b031683529383019391830191600101612499565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156124f457600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208bef48d7bc1527ce5e1ba922f801579c97f11f5ed2237e6357ac31d71e14720f64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c80635a90a49e11610102578063a9059cbb11610095578063e8ba854f11610064578063e8ba854f14610609578063f2fde38b14610629578063f897840114610649578063f8b45b051461066957600080fd5b8063a9059cbb14610586578063c3f70b52146105a6578063dd62ed3e146105bb578063e8078d941461060157600080fd5b80638d3e6e40116100d15780638d3e6e40146104e15780638da5cb5b1461051a57806395d89b4114610538578063a6097b0a1461056657600080fd5b80635a90a49e146104255780636373ea691461045e57806370a0823114610496578063715018a6146104cc57600080fd5b8063368f48001161017a5780634d4ce935116101495780634d4ce9351461039e5780634fcd2446146103b357806357ff135a146103d357806359927044146103f357600080fd5b8063368f48001461032a57806342966c681461034a57806346b898341461036a578063470624021461037f57600080fd5b806323b872dd116101b657806323b872dd146102a95780632b14ca56146102c95780632fb528ba146102f6578063313ce5671461031657600080fd5b806306fdde03146101f3578063095ea7b31461023f57806318160ddd1461026f5780631c1702f31461029257600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5060408051808201909152601181527029b434b130b934bab69029b1b7b7b832b960791b60208201525b6040516102369190611f8c565b60405180910390f35b34801561024b57600080fd5b5061025f61025a366004611fef565b61067e565b6040519015158152602001610236565b34801561027b57600080fd5b506102846106eb565b604051908152602001610236565b34801561029e57600080fd5b506102a761070b565b005b3480156102b557600080fd5b5061025f6102c436600461201b565b6107b7565b3480156102d557600080fd5b50600054600160c81b900460ff165b60405160ff9091168152602001610236565b34801561030257600080fd5b506102a7610311366004612082565b610871565b34801561032257600080fd5b5060096102e4565b34801561033657600080fd5b506102a76103453660046120c7565b61099f565b34801561035657600080fd5b506102a76103653660046120f1565b610ae0565b34801561037657600080fd5b50600554610284565b34801561038b57600080fd5b50600054600160c01b900460ff166102e4565b3480156103aa57600080fd5b50600654610284565b3480156103bf57600080fd5b506102a76103ce36600461210a565b610b75565b3480156103df57600080fd5b506102a76103ee366004612134565b610c25565b3480156103ff57600080fd5b506001546001600160a01b03165b6040516001600160a01b039091168152602001610236565b34801561043157600080fd5b5061025f610440366004612179565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561046a57600080fd5b506000546040805161ffff600160d01b840481168252600160e01b909304909216602083015201610236565b3480156104a257600080fd5b506102846104b1366004612179565b6001600160a01b031660009081526007602052604090205490565b3480156104d857600080fd5b506102a7610cfb565b3480156104ed57600080fd5b5061025f6104fc366004612179565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561052657600080fd5b506000546001600160a01b031661040d565b34801561054457600080fd5b50604080518082019091526005815264053434f4f560dc1b6020820152610229565b34801561057257600080fd5b506102a76105813660046121aa565b610d6a565b34801561059257600080fd5b5061025f6105a1366004611fef565b610f1c565b3480156105b257600080fd5b50600354610284565b3480156105c757600080fd5b506102846105d63660046121fe565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6102a7610f55565b34801561061557600080fd5b506102a76106243660046121fe565b6112a2565b34801561063557600080fd5b506102a7610644366004612179565b6113bc565b34801561065557600080fd5b506102a76106643660046120c7565b61143a565b34801561067557600080fd5b50600454610284565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106d99086815260200190565b60405180910390a35060015b92915050565b60006106f96009600a612331565b61070690624c4b40612340565b905090565b6000546001600160a01b0316331461073e5760405162461bcd60e51b815260040161073590612357565b60405180910390fd5b606461074c6009600a612331565b61075990624c4b40612340565b610764906002612340565b61076e919061238e565b600355606461077f6009600a612331565b61078c90624c4b40612340565b610797906002612340565b6107a1919061238e565b600455600f805460ff1916600117905543600255565b60006107c284611506565b6107de5760405162461bcd60e51b8152600401610735906123b0565b6001600160a01b03841660009081526008602090815260408083203384529091529020546000191461085e576001600160a01b03841660009081526008602090815260408083203384529091529020546108399083906123da565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b61086984848461156c565b949350505050565b6000546001600160a01b0316331461089b5760405162461bcd60e51b815260040161073590612357565b600f805461ff001916610100179055606460ff831611156108fe5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742073776170206d6f7265207468616e20313030250000000000006044820152606401610735565b3060009081526007602052604081205460649061091f9060ff861690612340565b610929919061238e565b90506109376009600a612331565b811115610947576109478161180c565b811561098f5747806109845760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610735565b61098d47611956565b505b5050600f805461ff001916905550565b6000546001600160a01b031633146109c95760405162461bcd60e51b815260040161073590612357565b60006103e861ffff84166109df6009600a612331565b6109ec90624c4b40612340565b6109f69190612340565b610a00919061238e565b610a0b9060016123ed565b9050600354811015610a4c5760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610735565b600381905560006103e861ffff8416610a676009600a612331565b610a7490624c4b40612340565b610a7e9190612340565b610a88919061238e565b610a939060016123ed565b9050600454811015610ad85760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610735565b600455505050565b3360009081526007602052604090205480821115610b325760405162461bcd60e51b815260206004820152600f60248201526e62616c616e636520746f6f206c6f7760881b6044820152606401610735565b610b3c33836119da565b60405182815233907ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb69060200160405180910390a25050565b6000546001600160a01b03163314610b9f5760405162461bcd60e51b815260040161073590612357565b6014610bab8284612400565b60ff161115610bf15760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b6044820152606401610735565b6000805461ffff60c01b1916600160c01b60ff9485160260ff60c81b191617600160c81b9290931691909102919091179055565b6000546001600160a01b03163314610c4f5760405162461bcd60e51b815260040161073590612357565b8080610c585750815b15610cb9576001600160a01b0383166000908152600e602052604090205460ff1615610cb95760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b6044820152606401610735565b6001600160a01b039092166000908152600960209081526040808320805494151560ff19958616179055600a9091529020805492151592909116919091179055565b6000546001600160a01b03163314610d255760405162461bcd60e51b815260040161073590612357565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610d945760405162461bcd60e51b815260040161073590612357565b63ffffffff808416908516610dab6009600a612331565b610db890624c4b40612340565b610dc29190612340565b610dcc919061238e565b60055563ffffffff808216908316610de66009600a612331565b610df390624c4b40612340565b610dfd9190612340565b610e07919061238e565b60068190556005541115610e4d5760405162461bcd60e51b815260206004820152600d60248201526c26b4b717a6b0bc1032b93937b960991b6044820152606401610735565b620186a0610e5d6009600a612331565b610e6a90624c4b40612340565b610e74919061238e565b60065411610eb25760405162461bcd60e51b815260206004820152600b60248201526a4d617820746f6f206c6f7760a81b6044820152606401610735565b6064610ec06009600a612331565b610ecd90624c4b40612340565b610ed7919061238e565b60065410610f165760405162461bcd60e51b815260206004820152600c60248201526b09ac2f040e8dede40d0d2ced60a31b6044820152606401610735565b50505050565b6000610f2733611506565b610f435760405162461bcd60e51b8152600401610735906123b0565b610f4e33848461156c565b9392505050565b6000546001600160a01b03163314610f7f5760405162461bcd60e51b815260040161073590612357565b600f805461ff001916610100179055600d546001600160a01b031615610fd35760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b6044820152606401610735565b600f5460ff16156110185760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b6044820152606401610735565b60003411806110275750600047115b6110735760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d6573736167650000006044820152606401610735565b306000908152600760205260409020546110c75760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b6044820152606401610735565b600c60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113e9190612419565b6001600160a01b031663c9c6539630600c60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c49190612419565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611211573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112359190612419565b600d80546001600160a01b0319166001600160a01b039290921691909117905530600090815260076020526040812054611270914790611a92565b600d546001600160a01b03166000908152600e60205260409020805460ff19166001179055600f805461ff0019169055565b6000546001600160a01b031633146112cc5760405162461bcd60e51b815260040161073590612357565b6001600160a01b0382166000908152600e602052604090205460ff1615801561130e57506001600160a01b0381166000908152600e602052604090205460ff16155b61135a5760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c65740000000000000000006044820152606401610735565b600180546001600160a01b03199081166001600160a01b039485169081178355600b805490921693909416929092179091556000918252600960209081526040808420805460ff199081168517909155600a9092529092208054909216179055565b6000546001600160a01b031633146113e65760405162461bcd60e51b815260040161073590612357565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146114645760405162461bcd60e51b815260040161073590612357565b60006114708284612436565b905060008161ffff16116114b85760405162461bcd60e51b815260206004820152600f60248201526e0416c6c2063616e6e6f74206265203608c1b6044820152606401610735565b6000805463ffffffff60d01b1916600160e01b61ffff9586160261ffff60d01b191617600160d01b93851693909302929092176001600160f01b0316600160f01b9190931602919091179055565b600f54600090819060ff161561151e575060016106e5565b6001600160a01b03831660009081526009602052604090205460ff16801561155e57506001600160a01b0383166000908152600a602052604090205460ff165b156106e55750600192915050565b60006001600160a01b0384166115c45760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000006044820152606401610735565b600f5460ff1661162a576001600160a01b03841660009081526009602052604090205460ff16801561160e57506001600160a01b0384166000908152600a602052604090205460ff165b61162a5760405162461bcd60e51b8152600401610735906123b0565b600f54610100900460ff1615801561165a57506001600160a01b0383166000908152600e602052604090205460ff165b1561166757611667611b4d565b6001600160a01b038416301480159061168957506001600160a01b0383163014155b80156116a357506000546001600160a01b03858116911614155b156116f3576116b3848484611c8b565b6116f35760405162461bcd60e51b815260206004820152601160248201527054582065786365656473206c696d69747360781b6044820152606401610735565b6000611700858585611d55565b9050600061170e82856123da565b6001600160a01b0387166000908152600760205260409020549091506117359085906123da565b6001600160a01b0387166000908152600760205260409020558115611780573060009081526007602052604090205461176f9083906123ed565b306000908152600760205260409020555b6001600160a01b0385166000908152600760205260409020546117a49082906123ed565b6001600160a01b0380871660008181526007602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117f89088815260200190565b60405180910390a350600195945050505050565b61181581611ee7565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061184a5761184a612458565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156118a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c79190612419565b816001815181106118da576118da612458565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac9479061192090859060009086903090429060040161246e565b600060405180830381600087803b15801561193a57600080fd5b505af115801561194e573d6000803e3d6000fd5b505050505050565b600054600160d01b900461ffff1680156119d6576000805461ffff8084169161198891600160d01b9091041685612340565b611992919061238e565b905080156119d4576001546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610f16573d6000803e3d6000fd5b505b5050565b80156119d6576001600160a01b03821660009081526007602052604081208054839290611a089084906123da565b9091555050600080805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df8054839290611a489084906123ed565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600b546001600160a01b03168115611aa8575060005b611ab184611ee7565b600c5460405163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af1158015611b1f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b4491906124df565b50505050505050565b600f805461ff0019166101001790553060009081526007602052604081205490506005548110158015611b825750600f5460ff165b15611c7d576006548110611b9557506006545b6000805460029061ffff600160f01b8204811691611bbc91600160e01b9091041685612340565b611bc6919061238e565b611bd0919061238e565b90506000611bde82846123da565b9050611bec6009600a612331565b811115611c695747611bfd8261180c565b6000611c0982476123da565b600054909150600160e01b900461ffff1615611c66576000805461ffff600160f01b8204811691611c4391600160e01b9091041684612340565b611c4d919061238e565b9050611c5885611ee7565b611c6485826000611a92565b505b50505b478015611c7957611c7981611956565b5050505b50600f805461ff0019169055565b600f5460009060019060ff168015611cbc57506001600160a01b0385166000908152600a602052604090205460ff16155b8015611ce157506001600160a01b0384166000908152600a602052604090205460ff16155b1561086957600354831115611cf857506000610869565b6001600160a01b0384166000908152600e602052604090205460ff16158015611d4557506004546001600160a01b038516600090815260076020526040902054611d439085906123ed565b115b1561086957506000949350505050565b600f54600090819060ff161580611d8457506001600160a01b03851660009081526009602052604090205460ff165b80611da757506001600160a01b03841660009081526009602052604090205460ff165b15611db457506000610869565b6001600160a01b0385166000908152600e602052604090205460ff1615611e995760005460025460ff600160b81b8304811692611dfc92600160b01b909104909116906123ed565b611e0691906123ed565b4310611e3757600054606490611e2690600160c01b900460ff1685612340565b611e30919061238e565b9050610869565b600054600254611e5191600160b01b900460ff16906123ed565b4310611e7157600054606490611e2690600160a81b900460ff1685612340565b6002544310611e9457600054606490611e2690600160a01b900460ff1685612340565b610869565b6001600160a01b0384166000908152600e602052604090205460ff161561086957600054606490611ed490600160c81b900460ff1685612340565b611ede919061238e565b95945050505050565b306000908152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611f8957306000818152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b600060208083528351808285015260005b81811015611fb957858101830151858201604001528201611f9d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611f8957600080fd5b6000806040838503121561200257600080fd5b823561200d81611fda565b946020939093013593505050565b60008060006060848603121561203057600080fd5b833561203b81611fda565b9250602084013561204b81611fda565b929592945050506040919091013590565b803560ff8116811461206d57600080fd5b919050565b8035801515811461206d57600080fd5b6000806040838503121561209557600080fd5b61209e8361205c565b91506120ac60208401612072565b90509250929050565b803561ffff8116811461206d57600080fd5b600080604083850312156120da57600080fd5b6120e3836120b5565b91506120ac602084016120b5565b60006020828403121561210357600080fd5b5035919050565b6000806040838503121561211d57600080fd5b6121268361205c565b91506120ac6020840161205c565b60008060006060848603121561214957600080fd5b833561215481611fda565b925061216260208501612072565b915061217060408501612072565b90509250925092565b60006020828403121561218b57600080fd5b8135610f4e81611fda565b803563ffffffff8116811461206d57600080fd5b600080600080608085870312156121c057600080fd5b6121c985612196565b93506121d760208601612196565b92506121e560408601612196565b91506121f360608601612196565b905092959194509250565b6000806040838503121561221157600080fd5b823561221c81611fda565b9150602083013561222c81611fda565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561228857816000190482111561226e5761226e612237565b8085161561227b57918102915b93841c9390800290612252565b509250929050565b60008261229f575060016106e5565b816122ac575060006106e5565b81600181146122c257600281146122cc576122e8565b60019150506106e5565b60ff8411156122dd576122dd612237565b50506001821b6106e5565b5060208310610133831016604e8410600b841016171561230b575081810a6106e5565b612315838361224d565b806000190482111561232957612329612237565b029392505050565b6000610f4e60ff841683612290565b80820281158282048414176106e5576106e5612237565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b6000826123ab57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b818103818111156106e5576106e5612237565b808201808211156106e5576106e5612237565b60ff81811683821601908111156106e5576106e5612237565b60006020828403121561242b57600080fd5b8151610f4e81611fda565b61ffff81811683821601908082111561245157612451612237565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124be5784516001600160a01b031683529383019391830191600101612499565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156124f457600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208bef48d7bc1527ce5e1ba922f801579c97f11f5ed2237e6357ac31d71e14720f64736f6c63430008130033

Deployed Bytecode Sourcemap

2373:14161:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5128:80;;;;;;;;;;-1:-1:-1;5200:5:0;;;;;;;;;;;;-1:-1:-1;;;5200:5:0;;;;5128:80;;;;;;;:::i;:::-;;;;;;;;5466:216;;;;;;;;;;-1:-1:-1;5466:216:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5466:216:0;1023:187:1;4858:88:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;4858:88:0;1215:177:1;7644:224:0;;;;;;;;;;;;;:::i;:::-;;5923:404;;;;;;;;;;-1:-1:-1;5923:404:0;;;;;:::i;:::-;;:::i;11075:86::-;;;;;;;;;;-1:-1:-1;11116:5:0;11141:12;-1:-1:-1;;;11141:12:0;;;;11075:86;;;2030:4:1;2018:17;;;2000:36;;1988:2;1973:18;11075:86:0;1858:184:1;15695:567:0;;;;;;;;;;-1:-1:-1;15695:567:0;;;;;:::i;:::-;;:::i;4952:80::-;;;;;;;;;;-1:-1:-1;2457:1:0;4952:80;;12647:462;;;;;;;;;;-1:-1:-1;12647:462:0;;;;;:::i;:::-;;:::i;16270:261::-;;;;;;;;;;-1:-1:-1;16270:261:0;;;;;:::i;:::-;;:::i;12453:90::-;;;;;;;;;;-1:-1:-1;12524:11:0;;12453:90;;10985:84;;;;;;;;;;-1:-1:-1;11025:5:0;11050:11;-1:-1:-1;;;11050:11:0;;;;10985:84;;12549:90;;;;;;;;;;-1:-1:-1;12620:11:0;;12549:90;;11302:185;;;;;;;;;;-1:-1:-1;11302:185:0;;;;;:::i;:::-;;:::i;10727:250::-;;;;;;;;;;-1:-1:-1;10727:250:0;;;;;:::i;:::-;;:::i;11820:91::-;;;;;;;;;;-1:-1:-1;11892:11:0;;-1:-1:-1;;;;;11892:11:0;11820:91;;;-1:-1:-1;;;;;4047:32:1;;;4029:51;;4017:2;4002:18;11820:91:0;3883:203:1;10489:110:0;;;;;;;;;;-1:-1:-1;10489:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;10576:15:0;10552:4;10576:15;;;:7;:15;;;;;;;;;10489:110;11169:127;;;;;;;;;;-1:-1:-1;11212:11:0;11257:14;11169:127;;;11257:14;-1:-1:-1;;;11257:14:0;;;;4538:34:1;;-1:-1:-1;;;11273:12:0;;;;;;4603:2:1;4588:18;;4581:43;4486:18;11169:127:0;4343:287:1;5214:105:0;;;;;;;;;;-1:-1:-1;5214:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;5298:18:0;5280:7;5298:18;;;:9;:18;;;;;;;5214:105;2180:137;;;;;;;;;;;;;:::i;10606:114::-;;;;;;;;;;-1:-1:-1;10606:114:0;;;;;:::i;:::-;-1:-1:-1;;;;;10695:17:0;10671:4;10695:17;;;:9;:17;;;;;;;;;10606:114;1930:81;;;;;;;;;;-1:-1:-1;1968:7:0;1996:6;-1:-1:-1;;;;;1996:6:0;1930:81;;5038:84;;;;;;;;;;-1:-1:-1;5112:7:0;;;;;;;;;;;;-1:-1:-1;;;5112:7:0;;;;5038:84;;13117:436;;;;;;;;;;-1:-1:-1;13117:436:0;;;;;:::i;:::-;;:::i;5690:225::-;;;;;;;;;;-1:-1:-1;5690:225:0;;;;;:::i;:::-;;:::i;12349:96::-;;;;;;;;;;-1:-1:-1;12425:12:0;;12349:96;;5325:133;;;;;;;;;;-1:-1:-1;5325:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5427:19:0;;;5409:7;5427:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5325:133;6660:583;;;:::i;11919:321::-;;;;;;;;;;-1:-1:-1;11919:321:0;;;;;:::i;:::-;;:::i;2017:157::-;;;;;;;;;;-1:-1:-1;2017:157:0;;;;;:::i;:::-;;:::i;11495:317::-;;;;;;;;;;-1:-1:-1;11495:317:0;;;;;:::i;:::-;;:::i;12248:95::-;;;;;;;;;;-1:-1:-1;12319:16:0;;12248:95;;5466:216;5570:10;5541:4;5558:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5558:32:0;;;;;;;;;;:41;;;5615:37;5541:4;;5558:32;;5615:37;;;;5593:6;1361:25:1;;1349:2;1334:18;;1215:177;5615:37:0;;;;;;;;-1:-1:-1;5670:4:0;5466:216;;;;;:::o;4858:88::-;4913:7;2518:13;2457:1;2518:2;:13;:::i;:::-;2505:27;;:9;:27;:::i;:::-;4924:19;;4858:88;:::o;7644:224::-;1867:6;;-1:-1:-1;;;;;1867:6:0;1853:10;:20;1845:57;;;;-1:-1:-1;;;1845:57:0;;;;;;;:::i;:::-;;;;;;;;;7736:3:::1;2518:13;2457:1;2518:2;:13;:::i;:::-;2505:27;::::0;:9:::1;:27;:::i;:::-;7717:16;::::0;7732:1:::1;7717:16;:::i;:::-;:22;;;;:::i;:::-;7698:12;:41:::0;7789:3:::1;2518:13;2457:1;2518:2;:13;:::i;:::-;2505:27;::::0;:9:::1;:27;:::i;:::-;7770:16;::::0;7785:1:::1;7770:16;:::i;:::-;:22;;;;:::i;:::-;7751:16;:41:::0;7803:12:::1;:19:::0;;-1:-1:-1;;7803:19:0::1;7818:4;7803:19;::::0;;7848:12:::1;7833;:27:::0;7644:224::o;5923:404::-;6023:4;6048:25;6066:6;6048:17;:25::i;:::-;6040:54;;;;-1:-1:-1;;;6040:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6108:19:0;;;;;;:11;:19;;;;;;;;6128:10;6108:31;;;;;;;;-1:-1:-1;;6108:52:0;6105:157;;-1:-1:-1;;;;;6210:19:0;;;;;;:11;:19;;;;;;;;6230:10;6210:31;;;;;;;;:40;;6244:6;;6210:40;:::i;:::-;-1:-1:-1;;;;;6176:19:0;;;;;;:11;:19;;;;;;;;6196:10;6176:31;;;;;;;:74;6105:157;6279:40;6293:6;6301:9;6312:6;6279:13;:40::i;:::-;6272:47;5923:404;-1:-1:-1;;;;5923:404:0:o;15695:567::-;1867:6;;-1:-1:-1;;;;;1867:6:0;1853:10;:20;1845:57;;;;-1:-1:-1;;;1845:57:0;;;;;;;:::i;:::-;4049:10:::1;:17:::0;;-1:-1:-1;;4049:17:0::1;;;::::0;;15833:3:::2;4049:17:::1;15813:23:::0;::::2;;;15805:62;;;::::0;-1:-1:-1;;;15805:62:0;;8805:2:1;15805:62:0::2;::::0;::::2;8787:21:1::0;8844:2;8824:18;;;8817:30;8883:28;8863:18;;;8856:56;8929:18;;15805:62:0::2;8603:350:1::0;15805:62:0::2;15919:4;15878:20;5298:18:::0;;;:9;:18;;;;;;15947:3:::2;::::0;15901:43:::2;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;:49;;;;:::i;:::-;15878:72:::0;-1:-1:-1;15980:15:0::2;2457:1;15980:2;:15;:::i;:::-;15965:12;:30;15961:97;;;16012:34;16033:12;16012:20;:34::i;:::-;16072:7;16068:187;;;16118:21;16162:14:::0;16154:33:::2;;;::::0;-1:-1:-1;;;16154:33:0;;9160:2:1;16154:33:0::2;::::0;::::2;9142:21:1::0;9199:1;9179:18;;;9172:29;-1:-1:-1;;;9217:18:1;;;9210:36;9263:18;;16154:33:0::2;8958:329:1::0;16154:33:0::2;16202:40;16220:21;16202:17;:40::i;:::-;16081:174;16068:187;-1:-1:-1::0;;4091:10:0::1;:18:::0;;-1:-1:-1;;4091:18:0::1;::::0;;-1:-1:-1;15695:567:0:o;12647:462::-;1867:6;;-1:-1:-1;;;;;1867:6:0;1853:10;:20;1845:57;;;;-1:-1:-1;;;1845:57:0;;;;;;;:::i;:::-;12753:16:::1;12812:4;12772:37;::::0;::::1;2518:13;2457:1;2518:2;:13;:::i;:::-;2505:27;::::0;:9:::1;:27;:::i;:::-;12772:37;;;;:::i;:::-;:44;;;;:::i;:::-;:48;::::0;12819:1:::1;12772:48;:::i;:::-;12753:67;;12851:12;;12839:8;:24;;12831:47;;;::::0;-1:-1:-1;;;12831:47:0;;9624:2:1;12831:47:0::1;::::0;::::1;9606:21:1::0;9663:2;9643:18;;;9636:30;-1:-1:-1;;;9682:18:1;;;9675:40;9732:18;;12831:47:0::1;9422:334:1::0;12831:47:0::1;12889:12;:23:::0;;;12923:20:::1;12981:4;12946:32;::::0;::::1;2518:13;2457:1;2518:2;:13;:::i;:::-;2505:27;::::0;:9:::1;:27;:::i;:::-;12946:32;;;;:::i;:::-;:39;;;;:::i;:::-;:43;::::0;12988:1:::1;12946:43;:::i;:::-;12923:66;;13024:16;;13008:12;:32;;13000:59;;;::::0;-1:-1:-1;;;13000:59:0;;9963:2:1;13000:59:0::1;::::0;::::1;9945:21:1::0;10002:2;9982:18;;;9975:30;-1:-1:-1;;;10021:18:1;;;10014:44;10075:18;;13000:59:0::1;9761:338:1::0;13000:59:0::1;13070:16;:31:::0;-1:-1:-1;;;12647:462:0:o;16270:261::-;16357:10;16320:24;5298:18;;;:9;:18;;;;;;16387:26;;;;16379:54;;;;-1:-1:-1;;;16379:54:0;;10306:2:1;16379:54:0;;;10288:21:1;10345:2;10325:18;;;10318:30;-1:-1:-1;;;10364:18:1;;;10357:45;10419:18;;16379:54:0;10104:339:1;16379:54:0;16444:31;16456:10;16468:6;16444:11;:31::i;:::-;16491:32;;1361:25:1;;;16504:10:0;;16491:32;;1349:2:1;1334:18;16491:32:0;;;;;;;16309:222;16270:261;:::o;11302:185::-;1867:6;;-1:-1:-1;;;;;1867:6:0;1853:10;:20;1845:57;;;;-1:-1:-1;;;1845:57:0;;;;;;;:::i;:::-;11394:2:::1;11380:10;11386:4:::0;11380:3;:10:::1;:::i;:::-;:16;;;;11372:47;;;::::0;-1:-1:-1;;;11372:47:0;;10803:2:1;11372:47:0::1;::::0;::::1;10785:21:1::0;10842:2;10822:18;;;10815:30;-1:-1:-1;;;10861:18:1;;;10854:48;10919:18;;11372:47:0::1;10601:342:1::0;11372:47:0::1;11430:11;:17:::0;;-1:-1:-1;;;;11458:19:0;-1:-1:-1;;;11430:17:0::1;::::0;;::::1;;-1:-1:-1::0;;;;11458:19:0;;-1:-1:-1;;;11458:19:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;11302:185::o;10727:250::-;1867:6;;-1:-1:-1;;;;;1867:6:0;1853:10;:20;1845:57;;;;-1:-1:-1;;;1845:57:0;;;;;;;:::i;:::-;10824:8:::1;:18;;;;10836:6;10824:18;10820:72;;;-1:-1:-1::0;;;;;10855:13:0;::::1;;::::0;;;:5:::1;:13;::::0;;;;;::::1;;10854:14;10846:43;;;::::0;-1:-1:-1;;;10846:43:0;;11150:2:1;10846:43:0::1;::::0;::::1;11132:21:1::0;11189:2;11169:18;;;11162:30;-1:-1:-1;;;11208:18:1;;;11201:46;11264:18;;10846:43:0::1;10948:340:1::0;10846:43:0::1;-1:-1:-1::0;;;;;10902:17:0;;::::1;;::::0;;;:7:::1;:17;::::0;;;;;;;:26;;;::::1;;-1:-1:-1::0;;10902:26:0;;::::1;;::::0;;10939:9:::1;:19:::0;;;;;:30;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;10727:250::o;2180:137::-;1867:6;;-1:-1:-1;;;;;1867:6:0;1853:10;:20;1845:57;;;;-1:-1:-1;;;1845:57:0;;;;;;;:::i;:::-;2257:1:::1;2240:19:::0;;-1:-1:-1;;;;;;2240:19:0::1;::::0;;2276:32:::1;::::0;4029:51:1;;;2276:32:0::1;::::0;4017:2:1;4002:18;2276:32:0::1;;;;;;;2180:137::o:0;13117:436::-;1867:6;;-1:-1:-1;;;;;1867:6:0;1853:10;:20;1845:57;;;;-1:-1:-1;;;1845:57:0;;;;;;;:::i;:::-;13253:36:::1;::::0;;::::1;::::0;:23;::::1;2518:13;2457:1;2518:2;:13;:::i;:::-;2505:27;::::0;:9:::1;:27;:::i;:::-;13253:23;;;;:::i;:::-;:36;;;;:::i;:::-;13239:11;:50:::0;13314:36:::1;::::0;;::::1;::::0;:23;::::1;2518:13;2457:1;2518:2;:13;:::i;:::-;2505:27;::::0;:9:::1;:27;:::i;:::-;13314:23;;;;:::i;:::-;:36;;;;:::i;:::-;13300:11;:50:::0;;;13382:11:::1;::::0;-1:-1:-1;13369:24:0::1;13361:50;;;::::0;-1:-1:-1;;;13361:50:0;;11495:2:1;13361:50:0::1;::::0;::::1;11477:21:1::0;11534:2;11514:18;;;11507:30;-1:-1:-1;;;11553:18:1;;;11546:43;11606:18;;13361:50:0::1;11293:337:1::0;13361:50:0::1;13457:6;2518:13;2457:1;2518:2;:13;:::i;:::-;2505:27;::::0;:9:::1;:27;:::i;:::-;13442:21;;;;:::i;:::-;13430:11;;:33;13422:57;;;::::0;-1:-1:-1;;;13422:57:0;;11837:2:1;13422:57:0::1;::::0;::::1;11819:21:1::0;11876:2;11856:18;;;11849:30;-1:-1:-1;;;11895:18:1;;;11888:41;11946:18;;13422:57:0::1;11635:335:1::0;13422:57:0::1;13525:3;2518:13;2457:1;2518:2;:13;:::i;:::-;2505:27;::::0;:9:::1;:27;:::i;:::-;13510:18;;;;:::i;:::-;13498:11;;:30;13490:55;;;::::0;-1:-1:-1;;;13490:55:0;;12177:2:1;13490:55:0::1;::::0;::::1;12159:21:1::0;12216:2;12196:18;;;12189:30;-1:-1:-1;;;12235:18:1;;;12228:42;12287:18;;13490:55:0::1;11975:336:1::0;13490:55:0::1;13117:436:::0;;;;:::o;5690:225::-;5770:4;5795:29;5813:10;5795:17;:29::i;:::-;5787:58;;;;-1:-1:-1;;;5787:58:0;;;;;;;:::i;:::-;5863:44;5877:10;5889:9;5900:6;5863:13;:44::i;:::-;5856:51;5690:225;-1:-1:-1;;;5690:225:0:o;6660:583::-;1867:6;;-1:-1:-1;;;;;1867:6:0;1853:10;:20;1845:57;;;;-1:-1:-1;;;1845:57:0;;;;;;;:::i;:::-;4049:10:::1;:17:::0;;-1:-1:-1;;4049:17:0::1;;;::::0;;6742:10:::2;::::0;-1:-1:-1;;;;;6742:10:0::2;:24:::0;6734:46:::2;;;::::0;-1:-1:-1;;;6734:46:0;;12518:2:1;6734:46:0::2;::::0;::::2;12500:21:1::0;12557:1;12537:18;;;12530:29;-1:-1:-1;;;12575:18:1;;;12568:39;12624:18;;6734:46:0::2;12316:332:1::0;6734:46:0::2;6800:12;::::0;::::2;;6799:13;6791:41;;;::::0;-1:-1:-1;;;6791:41:0;;12855:2:1;6791:41:0::2;::::0;::::2;12837:21:1::0;12894:2;12874:18;;;12867:30;-1:-1:-1;;;12913:18:1;;;12906:45;12968:18;;6791:41:0::2;12653:339:1::0;6791:41:0::2;6863:1;6851:9;:13;:40;;;;6890:1;6868:21;:23;6851:40;6843:82;;;::::0;-1:-1:-1;;;6843:82:0;;13199:2:1;6843:82:0::2;::::0;::::2;13181:21:1::0;13238:2;13218:18;;;13211:30;13277:31;13257:18;;;13250:59;13326:18;;6843:82:0::2;12997:353:1::0;6843:82:0::2;6962:4;6969:1;6944:24:::0;;;:9:::2;:24;::::0;;;;;6936:60:::2;;;::::0;-1:-1:-1;;;6936:60:0;;13557:2:1;6936:60:0::2;::::0;::::2;13539:21:1::0;13596:2;13576:18;;;13569:30;-1:-1:-1;;;13615:18:1;;;13608:51;13676:18;;6936:60:0::2;13355:345:1::0;6936:60:0::2;7038:18;;;;;;;;;-1:-1:-1::0;;;;;7038:18:0::2;-1:-1:-1::0;;;;;7038:26:0::2;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7020:58:0::2;;7087:4;7094:18;;;;;;;;;-1:-1:-1::0;;;;;7094:18:0::2;-1:-1:-1::0;;;;;7094:23:0::2;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7020:100;::::0;-1:-1:-1;;;;;;7020:100:0::2;::::0;;;;;;-1:-1:-1;;;;;14191:15:1;;;7020:100:0::2;::::0;::::2;14173:34:1::0;14243:15;;14223:18;;;14216:43;14108:18;;7020:100:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7007:10;:113:::0;;-1:-1:-1;;;;;;7007:113:0::2;-1:-1:-1::0;;;;;7007:113:0;;;::::2;::::0;;;::::2;::::0;;7163:4:::2;-1:-1:-1::0;7145:24:0;;;:9:::2;:24;::::0;;;;;7131:69:::2;::::0;7171:21:::2;::::0;7131:13:::2;:69::i;:::-;7217:10;::::0;-1:-1:-1;;;;;7217:10:0::2;7211:17;::::0;;;:5:::2;:17;::::0;;;;:24;;-1:-1:-1;;7211:24:0::2;7231:4;7211:24;::::0;;4091:10:::1;:18:::0;;-1:-1:-1;;4091:18:0::1;::::0;;6660:583::o;11919:321::-;1867:6;;-1:-1:-1;;;;;1867:6:0;1853:10;:20;1845:57;;;;-1:-1:-1;;;1845:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12013:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;::::1;;12012:12;:32:::0;::::1;;;-1:-1:-1::0;;;;;;12029:15:0;::::1;;::::0;;;:5:::1;:15;::::0;;;;;::::1;;12028:16;12012:32;12004:68;;;::::0;-1:-1:-1;;;12004:68:0;;14472:2:1;12004:68:0::1;::::0;::::1;14454:21:1::0;14511:2;14491:18;;;14484:30;14550:25;14530:18;;;14523:53;14593:18;;12004:68:0::1;14270:347:1::0;12004:68:0::1;12093:11;:27:::0;;-1:-1:-1;;;;;;12093:27:0;;::::1;-1:-1:-1::0;;;;;12093:27:0;;::::1;::::0;;::::1;::::0;;12131:8:::1;:19:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;12171:13:0;;;:7:::1;:13;::::0;;;;;;;:20;;-1:-1:-1;;12171:20:0;;::::1;::::0;::::1;::::0;;;12210:9:::1;:15:::0;;;;;;:22;;;;::::1;;::::0;;11919:321::o;2017:157::-;1867:6;;-1:-1:-1;;;;;1867:6:0;1853:10;:20;1845:57;;;;-1:-1:-1;;;1845:57:0;;;;;;;:::i;:::-;2101:6:::1;:17:::0;;-1:-1:-1;;;;;;2101:17:0::1;-1:-1:-1::0;;;;;2101:17:0;::::1;::::0;;::::1;::::0;;;2135:30:::1;::::0;4029:51:1;;;2135:30:0::1;::::0;4017:2:1;4002:18;2135:30:0::1;;;;;;;2017:157:::0;:::o;11495:317::-;1867:6;;-1:-1:-1;;;;;1867:6:0;1853:10;:20;1845:57;;;;-1:-1:-1;;;1845:57:0;;;;;;;:::i;:::-;11587:18:::1;11608:25;11623:10:::0;11608:12;:25:::1;:::i;:::-;11587:46;;11667:1;11653:11;:15;;;11644:44;;;::::0;-1:-1:-1;;;11644:44:0;;15213:2:1;11644:44:0::1;::::0;::::1;15195:21:1::0;15252:2;15232:18;;;15225:30;-1:-1:-1;;;15271:18:1;;;15264:45;15326:18;;11644:44:0::1;15011:339:1::0;11644:44:0::1;11699:12;:27:::0;;-1:-1:-1;;;;11737:27:0;-1:-1:-1;;;11699:27:0::1;::::0;;::::1;;-1:-1:-1::0;;;;11737:27:0;;-1:-1:-1;;;11737:27:0;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;11775:29:0::1;-1:-1:-1::0;;;11775:29:0;;;::::1;;::::0;;;::::1;::::0;;11495:317::o;9345:279::-;9466:12;;9410:4;;;;9466:12;;9461:124;;;-1:-1:-1;9497:4:0;9461:124;;;-1:-1:-1;;;;;9524:15:0;;;;;;:7;:15;;;;;;;;:36;;;;-1:-1:-1;;;;;;9543:17:0;;;;;;:9;:17;;;;;;;;9524:36;9520:65;;;-1:-1:-1;9578:4:0;9605:11;9345:279;-1:-1:-1;;9345:279:0:o;7876:958::-;7968:4;-1:-1:-1;;;;;7993:20:0;;7985:62;;;;-1:-1:-1;;;7985:62:0;;15557:2:1;7985:62:0;;;15539:21:1;15596:2;15576:18;;;15569:30;15635:31;15615:18;;;15608:59;15684:18;;7985:62:0;15355:353:1;7985:62:0;8063:12;;;;8058:89;;-1:-1:-1;;;;;8087:15:0;;;;;;:7;:15;;;;;;;;:36;;;;-1:-1:-1;;;;;;8106:17:0;;;;;;:9;:17;;;;;;;;8087:36;8079:65;;;;-1:-1:-1;;;8079:65:0;;;;;;;:::i;:::-;8163:10;;;;;;;8162:11;:31;;;;-1:-1:-1;;;;;;8177:16:0;;;;;;:5;:16;;;;;;;;8162:31;8157:64;;;8198:20;:18;:20::i;:::-;-1:-1:-1;;;;;8246:23:0;;8264:4;8246:23;;;;:53;;-1:-1:-1;;;;;;8273:26:0;;8294:4;8273:26;;8246:53;:73;;;;-1:-1:-1;8313:6:0;;-1:-1:-1;;;;;8303:16:0;;;8313:6;;8303:16;;8246:73;8241:155;;;8332:39;8345:6;8353:9;8364:6;8332:12;:39::i;:::-;8324:69;;;;-1:-1:-1;;;8324:69:0;;15915:2:1;8324:69:0;;;15897:21:1;15954:2;15934:18;;;15927:30;-1:-1:-1;;;15973:18:1;;;15966:47;16030:18;;8324:69:0;15713:341:1;8324:69:0;8406:18;8427:40;8441:6;8449:9;8460:6;8427:13;:40::i;:::-;8406:61;-1:-1:-1;8478:23:0;8504:19;8406:61;8504:6;:19;:::i;:::-;-1:-1:-1;;;;;8554:17:0;;;;;;:9;:17;;;;;;8478:45;;-1:-1:-1;8554:26:0;;8574:6;;8554:26;:::i;:::-;-1:-1:-1;;;;;8534:17:0;;;;;;:9;:17;;;;;:46;8596:14;;8591:91;;8660:4;8642:24;;;;:9;:24;;;;;;:37;;8669:10;;8642:37;:::i;:::-;8633:4;8615:24;;;;:9;:24;;;;;:64;8591:91;-1:-1:-1;;;;;8715:20:0;;;;;;:9;:20;;;;;;:38;;8738:15;;8715:38;:::i;:::-;-1:-1:-1;;;;;8692:20:0;;;;;;;:9;:20;;;;;;;:61;;;;8769:35;;;;;;;;;;8797:6;1361:25:1;;1349:2;1334:18;;1215:177;8769:35:0;;;;;;;;-1:-1:-1;8822:4:0;;7876:958;-1:-1:-1;;;;;7876:958:0:o;15010:366::-;15080:27;15095:11;15080:14;:27::i;:::-;15142:16;;;15156:1;15142:16;;;;;;;;15118:21;;15142:16;;;;;;;;;;-1:-1:-1;15142:16:0;15118:40;;15187:4;15169;15174:1;15169:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15169:23:0;;;:7;;;;;;;;;;:23;;;;15213:18;;:25;;;-1:-1:-1;;;15213:25:0;;;;:18;;;;;:23;;:25;;;;;15169:7;;15213:25;;;;;:18;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15203:4;15208:1;15203:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15203:35:0;;;:7;;;;;;;;;:35;15249:18;;:119;;-1:-1:-1;;;15249:119:0;;:18;;;:69;;:119;;15319:11;;15249:18;;15333:4;;15346;;15352:15;;15249:119;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15069:307;15010:366;:::o;15384:303::-;15446:21;15470:14;-1:-1:-1;;;15470:14:0;;;;15499:18;;15495:185;;15534:18;15564:14;;15555:40;;;;;:23;;-1:-1:-1;;;15564:14:0;;;;15555:6;:23;:::i;:::-;:40;;;;:::i;:::-;15534:61;-1:-1:-1;15615:14:0;;15610:59;;15634:11;;:32;;-1:-1:-1;;;;;15634:11:0;;;;:32;;;;;15655:10;;15634:11;:32;:11;:32;15655:10;15634:11;:32;;;;;;;;;;;;;;;;;;;15610:59;15519:161;15495:185;15435:252;15384:303;:::o;13561:265::-;13642:10;;13637:182;;-1:-1:-1;;;;;13670:21:0;;;;;;:9;:21;;;;;:31;;13695:6;;13670:21;:31;;13695:6;;13670:31;:::i;:::-;;;;-1:-1:-1;;13716:21:0;;;;:9;:21;;;:31;;13741:6;;13716:21;:31;;13741:6;;13716:31;:::i;:::-;;;;-1:-1:-1;;13767:40:0;;1361:25:1;;;13796:1:0;;-1:-1:-1;;;;;13767:40:0;;;;;1349:2:1;1334:18;13767:40:0;;;;;;;13561:265;;:::o;7251:385::-;7381:8;;-1:-1:-1;;;;;7381:8:0;7400:50;;;;-1:-1:-1;7445:1:0;7400:50;7460:28;7475:12;7460:14;:28::i;:::-;7499:18;;:129;;-1:-1:-1;;;7499:129:0;;7566:4;7499:129;;;17649:34:1;17699:18;;;17692:34;;;7499:18:0;17742::1;;;17735:34;;;17785:18;;;17778:34;-1:-1:-1;;;;;17849:15:1;;;17828:19;;;17821:44;7611:15:0;17881:19:1;;;17874:35;7499:18:0;;;;:34;;7541:13;;17583:19:1;;7499:129:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7343:293;7251:385;;;:::o;13834:1168::-;4049:10;:17;;-1:-1:-1;;4049:17:0;;;;;13943:4:::1;-1:-1:-1::0;5298:18:0;;;:9;:18;;;;;;13895:54:::1;;13990:11;;13967:19;:34;;:50;;;;-1:-1:-1::0;14005:12:0::1;::::0;::::1;;13967:50;13962:1033;;;14063:11;;14040:19;:34;14035:80;;-1:-1:-1::0;14101:11:0::1;::::0;14035:80:::1;14131:20;14191:15:::0;;14209:1:::1;::::0;14191:15:::1;-1:-1:-1::0;;;14191:15:0;::::1;::::0;::::1;::::0;14154:34:::1;::::0;-1:-1:-1;;;14176:12:0;;::::1;;14154:19:::0;:34:::1;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;14131:79:::0;-1:-1:-1;14239:21:0::1;14263:34;14131:79:::0;14263:19;:34:::1;:::i;:::-;14239:58:::0;-1:-1:-1;14332:13:0::1;2457:1;14332:2;:13;:::i;:::-;14316;:29;14312:521;;;14389:21;14429:35;14450:13:::0;14429:20:::1;:35::i;:::-;14483:19;14505:35;14529:11:::0;14505:21:::1;:35;:::i;:::-;14579:1;14564:12:::0;14483:57;;-1:-1:-1;;;;14564:12:0;::::1;;;:16:::0;14559:259:::1;;14606:21;14659:15:::0;;::::1;-1:-1:-1::0;;;14659:15:0;::::1;::::0;::::1;::::0;14630:26:::1;::::0;-1:-1:-1;;;14644:12:0;;::::1;;14630:11:::0;:26:::1;:::i;:::-;:44;;;;:::i;:::-;14606:68;;14698:28;14713:12;14698:14;:28::i;:::-;14749:49;14763:12;14777:13;14792:5;14749:13;:49::i;:::-;14583:235;14559:259;14348:485;;14312:521;14877:21;14916:23:::0;;14913:71:::1;;14943:38;14961:19;14943:17;:38::i;:::-;14020:975;;;13962:1033;-1:-1:-1::0;4091:10:0;:18;;-1:-1:-1;;4091:18:0;;;13834:1168::o;8842:495::-;9007:12;;8946:4;;8987;;9007:12;;:34;;;;-1:-1:-1;;;;;;9024:17:0;;;;;;:9;:17;;;;;;;;9023:18;9007:34;:59;;;;-1:-1:-1;;;;;;9046:20:0;;;;;;:9;:20;;;;;;;;9045:21;9007:59;9002:294;;;9106:12;;9089:14;:29;9084:201;;;-1:-1:-1;9142:5:0;9084:201;;;-1:-1:-1;;;;;9175:16:0;;;;;;:5;:16;;;;;;;;9174:17;:79;;;;-1:-1:-1;9236:16:0;;-1:-1:-1;;;;;9196:20:0;;;;;;:9;:20;;;;;;:37;;9219:14;;9196:37;:::i;:::-;:56;9174:79;9169:116;;;-1:-1:-1;9277:5:0;9313:16;8842:495;-1:-1:-1;;;;8842:495:0:o;9632:847::-;9793:12;;9729:7;;;;9793:12;;9792:13;;:32;;-1:-1:-1;;;;;;9809:15:0;;;;;;:7;:15;;;;;;;;9792:32;:54;;;-1:-1:-1;;;;;;9828:18:0;;;;;;:7;:18;;;;;;;;9792:54;9787:656;;;-1:-1:-1;9877:1:0;9787:656;;;-1:-1:-1;;;;;9902:13:0;;;;;;:5;:13;;;;;;;;9897:546;;;9989:16;;9955:12;;9989:16;-1:-1:-1;;;9989:16:0;;;;;9955:31;;-1:-1:-1;;;9970:16:0;;;;;;;9955:31;:::i;:::-;:50;;;;:::i;:::-;9939:12;:66;9934:400;;10048:11;;10062:3;;10039:20;;-1:-1:-1;;;10048:11:0;;;;10039:6;:20;:::i;:::-;:26;;;;:::i;:::-;10027:38;;9897:546;;9934:400;10124:16;;10109:12;;:31;;-1:-1:-1;;;10124:16:0;;;;;10109:31;:::i;:::-;10093:12;:47;10088:246;;10183:13;;10199:3;;10174:22;;-1:-1:-1;;;10183:13:0;;;;10174:6;:22;:::i;10088:246::-;10245:12;;10229;:28;10224:110;;10299:13;;10315:3;;10290:22;;-1:-1:-1;;;10299:13:0;;;;10290:6;:22;:::i;10224:110::-;9897:546;;;-1:-1:-1;;;;;10356:16:0;;;;;;:5;:16;;;;;;;;10351:92;;;10412:12;;10427:3;;10403:21;;-1:-1:-1;;;10412:12:0;;;;10403:6;:21;:::i;:::-;:27;;;;:::i;:::-;10391:39;9632:847;-1:-1:-1;;;;;9632:847:0:o;6335:317::-;6426:4;6406:26;;;;:11;:26;;;;;;;;3720:42;6406:46;;;;;;;;:61;-1:-1:-1;6401:244:0;;;6505:4;6485:26;;;;:11;:26;;;;;;;;3720:42;6485:46;;;;;;;;;;-1:-1:-1;;6485:66:0;;;;6571:62;;1361:25:1;;;3720:42:0;;6505:4;6571:62;;1334:18:1;6571:62:0;;;;;;;6401:244;6335: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;4091:247::-;4150:6;4203:2;4191:9;4182:7;4178:23;4174:32;4171:52;;;4219:1;4216;4209:12;4171:52;4258:9;4245:23;4277:31;4302:5;4277:31;:::i;4635:163::-;4702:20;;4762:10;4751:22;;4741:33;;4731:61;;4788:1;4785;4778:12;4803:401;4885:6;4893;4901;4909;4962:3;4950:9;4941:7;4937:23;4933:33;4930:53;;;4979:1;4976;4969:12;4930:53;5002:28;5020:9;5002:28;:::i;:::-;4992:38;;5049:37;5082:2;5071:9;5067:18;5049:37;:::i;:::-;5039:47;;5105:37;5138:2;5127:9;5123:18;5105:37;:::i;:::-;5095:47;;5161:37;5194:2;5183:9;5179:18;5161:37;:::i;:::-;5151:47;;4803:401;;;;;;;:::o;5209:388::-;5277:6;5285;5338:2;5326:9;5317:7;5313:23;5309:32;5306:52;;;5354:1;5351;5344:12;5306:52;5393:9;5380:23;5412:31;5437:5;5412:31;:::i;:::-;5462:5;-1:-1:-1;5519:2:1;5504:18;;5491:32;5532:33;5491:32;5532:33;:::i;:::-;5584:7;5574:17;;;5209:388;;;;;:::o;5862:127::-;5923:10;5918:3;5914:20;5911:1;5904:31;5954:4;5951:1;5944:15;5978:4;5975:1;5968:15;5994:422;6083:1;6126:5;6083:1;6140:270;6161:7;6151:8;6148:21;6140:270;;;6220:4;6216:1;6212:6;6208:17;6202:4;6199:27;6196:53;;;6229:18;;:::i;:::-;6279:7;6269:8;6265:22;6262:55;;;6299:16;;;;6262:55;6378:22;;;;6338:15;;;;6140:270;;;6144:3;5994:422;;;;;:::o;6421:806::-;6470:5;6500:8;6490:80;;-1:-1:-1;6541:1:1;6555:5;;6490:80;6589:4;6579:76;;-1:-1:-1;6626:1:1;6640:5;;6579:76;6671:4;6689:1;6684:59;;;;6757:1;6752:130;;;;6664:218;;6684:59;6714:1;6705:10;;6728:5;;;6752:130;6789:3;6779:8;6776:17;6773:43;;;6796:18;;:::i;:::-;-1:-1:-1;;6852:1:1;6838:16;;6867:5;;6664:218;;6966:2;6956:8;6953:16;6947:3;6941:4;6938:13;6934:36;6928:2;6918:8;6915:16;6910:2;6904:4;6901:12;6897:35;6894:77;6891:159;;;-1:-1:-1;7003:19:1;;;7035:5;;6891:159;7082:34;7107:8;7101:4;7082:34;:::i;:::-;7152:6;7148:1;7144:6;7140:19;7131:7;7128:32;7125:58;;;7163:18;;:::i;:::-;7201:20;;6421:806;-1:-1:-1;;;6421:806:1:o;7232:140::-;7290:5;7319:47;7360:4;7350:8;7346:19;7340:4;7319:47;:::i;7377:168::-;7450:9;;;7481;;7498:15;;;7492:22;;7478:37;7468:71;;7519:18;;:::i;7550:348::-;7752:2;7734:21;;;7791:2;7771:18;;;7764:30;7830:26;7825:2;7810:18;;7803:54;7889:2;7874:18;;7550:348::o;7903:217::-;7943:1;7969;7959:132;;8013:10;8008:3;8004:20;8001:1;7994:31;8048:4;8045:1;8038:15;8076:4;8073:1;8066:15;7959:132;-1:-1:-1;8105:9:1;;7903:217::o;8125:340::-;8327:2;8309:21;;;8366:2;8346:18;;;8339:30;-1:-1:-1;;;8400:2:1;8385:18;;8378:46;8456:2;8441:18;;8125:340::o;8470:128::-;8537:9;;;8558:11;;;8555:37;;;8572:18;;:::i;9292:125::-;9357:9;;;9378:10;;;9375:36;;;9391:18;;:::i;10448:148::-;10536:4;10515:12;;;10529;;;10511:31;;10554:13;;10551:39;;;10570:18;;:::i;13705:251::-;13775:6;13828:2;13816:9;13807:7;13803:23;13799:32;13796:52;;;13844:1;13841;13834:12;13796:52;13876:9;13870:16;13895:31;13920:5;13895:31;:::i;14838:168::-;14905:6;14931:10;;;14943;;;14927:27;;14966:11;;;14963:37;;;14980:18;;:::i;:::-;14963:37;14838:168;;;;:::o;16191:127::-;16252:10;16247:3;16243:20;16240:1;16233:31;16283:4;16280:1;16273:15;16307:4;16304:1;16297:15;16323:980;16585:4;16633:3;16622:9;16618:19;16664:6;16653:9;16646:25;16690:2;16728:6;16723:2;16712:9;16708:18;16701:34;16771:3;16766:2;16755:9;16751:18;16744:31;16795:6;16830;16824:13;16861:6;16853;16846:22;16899:3;16888:9;16884:19;16877:26;;16938:2;16930:6;16926:15;16912:29;;16959:1;16969:195;16983:6;16980:1;16977:13;16969:195;;;17048:13;;-1:-1:-1;;;;;17044:39:1;17032:52;;17139:15;;;;17104:12;;;;17080:1;16998:9;16969:195;;;-1:-1:-1;;;;;;;17220:32:1;;;;17215:2;17200:18;;17193:60;-1:-1:-1;;;17284:3:1;17269:19;17262:35;17181:3;16323:980;-1:-1:-1;;;16323:980:1:o;17920:306::-;18008:6;18016;18024;18077:2;18065:9;18056:7;18052:23;18048:32;18045:52;;;18093:1;18090;18083:12;18045:52;18122:9;18116:16;18106:26;;18172:2;18161:9;18157:18;18151:25;18141:35;;18216:2;18205:9;18201:18;18195:25;18185:35;;17920:306;;;;;:::o

Swarm Source

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