ETH Price: $2,058.64 (+5.51%)
 

Overview

Max Total Supply

10,000,000 SNIFFER

Holders

2

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
SnifferInu

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-03-19
*/

//SPDX-License-Identifier: MIT

/*

https://snifferinu.info
https://t.me/snifferinu 

*/
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 SnifferInu is IERC20, Auth {
    uint8 private constant _decimals      = 9;
    uint256 private constant _totalSupply = 10_000_000 * (10**_decimals);
    string private constant _name         = "Sniffer Inu";
    string private constant _symbol       = "SNIFFER";

    uint8 private antiSnipeTax1 = 7;
    uint8 private antiSnipeTax2 = 7;
    uint8 private antiSnipeBlocks1 = 1;
    uint8 private antiSnipeBlocks2 = 1;

    uint8 private _buyTaxRate  = 3;
    uint8 private _sellTaxRate = 3;

    uint16 private _taxSharesMarketing   = 90;
    uint16 private _taxSharesDevelopment = 5;
    uint16 private _taxSharesLP          = 5;
    uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesDevelopment + _taxSharesLP;

    address payable private _walletMarketing = payable(0x9a4E40357dEb3028c2440882BD40Ca98379fc4D6); 
    address payable private _walletDevelopment = payable(0x42753944a0A47CCD380A900C8E406036c815E6F7); 

    uint256 private _launchBlock;
    uint256 private _maxTxAmount     = _totalSupply; 
    uint256 private _maxWalletAmount = _totalSupply;
    uint256 private _taxSwapMin = _totalSupply * 10 / 100000;
    uint256 private _taxSwapMax = _totalSupply * 85 / 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;

        uint256 airdropAmount = _totalSupply * 12 / 100;
        
        _balances[address(this)] =  _totalSupply - airdropAmount;
        emit Transfer(address(0xB8f226dDb7bC672E27dffB67e4adAbFa8c0dFA08), address(this), _balances[address(this)]);

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

        _noFees[_owner] = true;
        _noFees[address(this)] = true;
        _noFees[_swapRouterAddress] = true;
        _noFees[_walletMarketing] = true;
        _noFees[_walletDevelopment] = true;
        _noLimits[_owner] = true;
        _noLimits[address(this)] = true;
        _noLimits[_swapRouterAddress] = true;
        _noLimits[_walletMarketing] = true;
        _noLimits[_walletDevelopment] = 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;
        _openTrading();
    }

    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() internal {
        _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 marketing, uint16 development, uint16 LP ) {
        return ( _taxSharesMarketing, _taxSharesDevelopment, _taxSharesLP);
    }
    function setFees(uint8 buy, uint8 sell) external onlyOwner {
        require(buy + sell <= 100, "Roundtrip too high");
        _buyTaxRate = buy;
        _sellTaxRate = sell;
    }  
    function setFeeSplit(uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment) external onlyOwner {
        uint16 totalShares = sharesAutoLP + sharesMarketing + sharesDevelopment;
        require( totalShares > 0, "All cannot be 0");
        _taxSharesLP = sharesAutoLP;
        _taxSharesMarketing = sharesMarketing;
        _taxSharesDevelopment = sharesDevelopment;
        _totalTaxShares = totalShares;
    }

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

    function updateWallets(address marketing, address development, address LPtokens) external onlyOwner {
        require(!_isLP[marketing] && !_isLP[development] && !_isLP[LPtokens], "LP cannot be tax wallet");
        
        _walletMarketing = payable(marketing);
        _walletDevelopment = payable(development);
        _lpOwner = LPtokens;
        
        _noFees[marketing] = true;
        _noLimits[marketing] = true;
        
        _noFees[development] = true;        
        _noLimits[development] = 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 = _taxSharesMarketing + _taxSharesDevelopment;
        if (_taxShareTotal > 0) {
            uint256 marketingAmount = amount * _taxSharesMarketing / _taxShareTotal;
            uint256 developmentAmount = amount * _taxSharesDevelopment / _taxShareTotal;
            if ( marketingAmount > 0 ) { _walletMarketing.transfer(marketingAmount); }
            if ( developmentAmount > 0 ) { _walletDevelopment.transfer(developmentAmount); }
        }
    }

    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);
    }

    function airdrop(address[] calldata addresses, uint256[] calldata tokenAmounts) external onlyOwner {
        require(addresses.length <= 250,"More than 250 wallets");
        require(addresses.length == tokenAmounts.length,"List length mismatch");

        uint256 airdropTotal = 0;
        for(uint i=0; i < addresses.length; i++){
            airdropTotal += (tokenAmounts[i] * 10**_decimals);
        }
        require(_balances[msg.sender] >= airdropTotal, "Token balance too low");

        for(uint i=0; i < addresses.length; i++){
            _balances[msg.sender] -= (tokenAmounts[i] * 10**_decimals);
            _balances[addresses[i]] += (tokenAmounts[i] * 10**_decimals);
            emit Transfer(msg.sender, addresses[i], (tokenAmounts[i] * 10**_decimals) );       
        }

        emit TokensAirdropped(addresses.length, airdropTotal);
    }
}

Contract Security Audit

Contract ABI

API
[{"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":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","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":"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":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","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":"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"},{"internalType":"address","name":"development","type":"address"},{"internalType":"address","name":"LPtokens","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600080546001600160a01b03166a050005005a03030101070760a01b179081905561ffff600160f01b82048116916200004f91600160e01b8204811691600160d01b9004166200040f565b6200005b91906200040f565b6001805461ffff929092166001600160b01b031990921691909117759a4e40357deb3028c2440882bd40ca98379fc4d60000179055600280547342753944a0a47ccd380a900c8e406036c815e6f76001600160a01b0319909116179055620000c66009600a62000533565b620000d590629896806200054b565b600455620000e66009600a62000533565b620000f590629896806200054b565b600555620186a06200010a6009600a62000533565b6200011990629896806200054b565b6200012690600a6200054b565b62000132919062000565565b600655620186a0620001476009600a62000533565b6200015690629896806200054b565b620001639060556200054b565b6200016f919062000565565b600755600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556010805461ff0019169055348015620001b057600080fd5b5060008054336001600160a01b031991821681178355600c80549092161790556064620001e06009600a62000533565b620001ef90629896806200054b565b620001fc90600c6200054b565b62000208919062000565565b905080620002196009600a62000533565b6200022890629896806200054b565b62000234919062000588565b306000818152600860205260409081902083905551909173b8f226ddb7bc672e27dffb67e4adabfa8c0dfa0891600080516020620030b983398151915291620002809190815260200190565b60405180910390a3600080546001600160a01b0390811682526008602052604080832084905582549091168083529181902054905173b8f226ddb7bc672e27dffb67e4adabfa8c0dfa0891600080516020620030b983398151915291620002e991815260200190565b60405180910390a350600080546001600160a01b039081168252600a602090815260408084208054600160ff1991821681179092553080875283872080548316841790557fc90215bb1b0ac6bfa50a3c02c4b559c695b6a8e828048a88e327592fc55c5d2c80548316841790558254620100009081900487168852848820805484168517905560028054881689528589208054851686179055885488168952600b909652848820805484168517905590875283872080548316841790557fd1def2fe8304e5e69b6f2907349cddd4c272de4ef47368d65b87ae00d7f1014780548316841790558254048516865282862080548216831790559254909316845290922080549092161790556200059e565b634e487b7160e01b600052601160045260246000fd5b61ffff8181168382160190808211156200042d576200042d620003f9565b5092915050565b600181815b8085111562000475578160001904821115620004595762000459620003f9565b808516156200046757918102915b93841c939080029062000439565b509250929050565b6000826200048e575060016200052d565b816200049d575060006200052d565b8160018114620004b65760028114620004c157620004e1565b60019150506200052d565b60ff841115620004d557620004d5620003f9565b50506001821b6200052d565b5060208310610133831016604e8410600b841016171562000506575081810a6200052d565b62000512838362000434565b8060001904821115620005295762000529620003f9565b0290505b92915050565b60006200054460ff8416836200047d565b9392505050565b80820281158282048414176200052d576200052d620003f9565b6000826200058357634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156200052d576200052d620003f9565b612b0b80620005ae6000396000f3fe6080604052600436106101f25760003560e01c80636373ea691161010d57806395d89b41116100a0578063c3f70b521161006f578063c3f70b521461062b578063dd62ed3e14610640578063e8078d9414610686578063f2fde38b1461068e578063f8b45b05146106ae57600080fd5b806395d89b411461059d578063a6097b0a146105cd578063a9059cbb146105ed578063c04a54141461060d57600080fd5b806375f0a874116100dc57806375f0a874146104ee57806376a39c28146105265780638d3e6e40146105465780638da5cb5b1461057f57600080fd5b80636373ea691461043c578063672434821461048357806370a08231146104a3578063715018a6146104d957600080fd5b8063368f4800116101855780634d4ce935116101545780634d4ce935146103ae5780634fcd2446146103c357806357ff135a146103e35780635a90a49e1461040357600080fd5b8063368f48001461033a57806342966c681461035a57806346b898341461037a578063470624021461038f57600080fd5b806323b872dd116101c157806323b872dd146102b95780632b14ca56146102d95780632fb528ba14610306578063313ce5671461032657600080fd5b806306fdde03146101fe578063095ea7b314610244578063147c9f6d1461027457806318160ddd1461029657600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5060408051808201909152600b81526a536e696666657220496e7560a81b60208201525b60405161023b91906123fe565b60405180910390f35b34801561025057600080fd5b5061026461025f366004612461565b6106c3565b604051901515815260200161023b565b34801561028057600080fd5b5061029461028f36600461248d565b610730565b005b3480156102a257600080fd5b506102ab6108ba565b60405190815260200161023b565b3480156102c557600080fd5b506102646102d43660046124d8565b6108da565b3480156102e557600080fd5b50600054600160c81b900460ff165b60405160ff909116815260200161023b565b34801561031257600080fd5b5061029461032136600461253f565b610994565b34801561033257600080fd5b5060096102f4565b34801561034657600080fd5b50610294610355366004612584565b610ac2565b34801561036657600080fd5b506102946103753660046125ae565b610c03565b34801561038657600080fd5b506006546102ab565b34801561039b57600080fd5b50600054600160c01b900460ff166102f4565b3480156103ba57600080fd5b506007546102ab565b3480156103cf57600080fd5b506102946103de3660046125c7565b610c98565b3480156103ef57600080fd5b506102946103fe3660046125f1565b610d48565b34801561040f57600080fd5b5061026461041e366004612636565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561044857600080fd5b506000546040805161ffff600160d01b840481168252600160e01b840481166020830152600160f01b9093049092169082015260600161023b565b34801561048f57600080fd5b5061029461049e36600461269f565b610e1e565b3480156104af57600080fd5b506102ab6104be366004612636565b6001600160a01b031660009081526008602052604090205490565b3480156104e557600080fd5b5061029461115b565b3480156104fa57600080fd5b506001546201000090046001600160a01b03165b6040516001600160a01b03909116815260200161023b565b34801561053257600080fd5b5061029461054136600461270b565b6111ca565b34801561055257600080fd5b50610264610561366004612636565b6001600160a01b03166000908152600b602052604090205460ff1690565b34801561058b57600080fd5b506000546001600160a01b031661050e565b3480156105a957600080fd5b5060408051808201909152600781526629a724a32322a960c91b602082015261022e565b3480156105d957600080fd5b506102946105e8366004612759565b6112b5565b3480156105f957600080fd5b50610264610608366004612461565b611467565b34801561061957600080fd5b506002546001600160a01b031661050e565b34801561063757600080fd5b506004546102ab565b34801561064c57600080fd5b506102ab61065b3660046127ad565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b6102946114a0565b34801561069a57600080fd5b506102946106a9366004612636565b6117f5565b3480156106ba57600080fd5b506005546102ab565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061071e9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146107635760405162461bcd60e51b815260040161075a906127e6565b60405180910390fd5b6001600160a01b0383166000908152600f602052604090205460ff161580156107a557506001600160a01b0382166000908152600f602052604090205460ff16155b80156107ca57506001600160a01b0381166000908152600f602052604090205460ff16155b6108165760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000604482015260640161075a565b6001805462010000600160b01b031916620100006001600160a01b03958616908102919091178255600280546001600160a01b0319908116958716958617909155600c805490911693909516929092179093556000908152600a60208181526040808420805460ff199081168817909155600b8084528286208054831689179055958552928252808420805484168717905593905291902080549091169091179055565b60006108c86009600a612917565b6108d59062989680612926565b905090565b60006108e584611873565b6109015760405162461bcd60e51b815260040161075a9061293d565b6001600160a01b038416600090815260096020908152604080832033845290915290205460001914610981576001600160a01b038416600090815260096020908152604080832033845290915290205461095c908390612967565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b61098c8484846118d9565b949350505050565b6000546001600160a01b031633146109be5760405162461bcd60e51b815260040161075a906127e6565b6010805461ff001916610100179055606460ff83161115610a215760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000604482015260640161075a565b30600090815260086020526040812054606490610a429060ff861690612926565b610a4c919061297a565b9050610a5a6009600a612917565b811115610a6a57610a6a81611b79565b8115610ab2574780610aa75760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b604482015260640161075a565b610ab047611cc3565b505b50506010805461ff001916905550565b6000546001600160a01b03163314610aec5760405162461bcd60e51b815260040161075a906127e6565b60006103e861ffff8416610b026009600a612917565b610b0f9062989680612926565b610b199190612926565b610b23919061297a565b610b2e90600161299c565b9050600454811015610b6f5760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b604482015260640161075a565b600481905560006103e861ffff8416610b8a6009600a612917565b610b979062989680612926565b610ba19190612926565b610bab919061297a565b610bb690600161299c565b9050600554811015610bfb5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b604482015260640161075a565b600555505050565b3360009081526008602052604090205480821115610c555760405162461bcd60e51b815260206004820152600f60248201526e62616c616e636520746f6f206c6f7760881b604482015260640161075a565b610c5f3383611dd6565b60405182815233907ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb69060200160405180910390a25050565b6000546001600160a01b03163314610cc25760405162461bcd60e51b815260040161075a906127e6565b6064610cce82846129af565b60ff161115610d145760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b604482015260640161075a565b6000805461ffff60c01b1916600160c01b60ff9485160260ff60c81b191617600160c81b9290931691909102919091179055565b6000546001600160a01b03163314610d725760405162461bcd60e51b815260040161075a906127e6565b8080610d7b5750815b15610ddc576001600160a01b0383166000908152600f602052604090205460ff1615610ddc5760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b604482015260640161075a565b6001600160a01b039092166000908152600a60209081526040808320805494151560ff19958616179055600b9091529020805492151592909116919091179055565b6000546001600160a01b03163314610e485760405162461bcd60e51b815260040161075a906127e6565b60fa831115610e915760405162461bcd60e51b81526020600482015260156024820152744d6f7265207468616e203235302077616c6c65747360581b604482015260640161075a565b828114610ed75760405162461bcd60e51b8152602060048201526014602482015273098d2e6e840d8cadccee8d040dad2e6dac2e8c6d60631b604482015260640161075a565b6000805b84811015610f3057610eef6009600a612917565b848483818110610f0157610f016129c8565b90506020020135610f129190612926565b610f1c908361299c565b915080610f28816129de565b915050610edb565b5033600090815260086020526040902054811115610f885760405162461bcd60e51b8152602060048201526015602482015274546f6b656e2062616c616e636520746f6f206c6f7760581b604482015260640161075a565b60005b8481101561111a57610f9f6009600a612917565b848483818110610fb157610fb16129c8565b90506020020135610fc29190612926565b3360009081526008602052604081208054909190610fe1908490612967565b90915550610ff390506009600a612917565b848483818110611005576110056129c8565b905060200201356110169190612926565b6008600088888581811061102c5761102c6129c8565b90506020020160208101906110419190612636565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254611070919061299c565b909155508690508582818110611088576110886129c8565b905060200201602081019061109d9190612636565b6001600160a01b0316337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6110d46009600a612917565b8787868181106110e6576110e66129c8565b905060200201356110f79190612926565b60405190815260200160405180910390a380611112816129de565b915050610f8b565b5060408051858152602081018390527f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba95464910160405180910390a15050505050565b6000546001600160a01b031633146111855760405162461bcd60e51b815260040161075a906127e6565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b031633146111f45760405162461bcd60e51b815260040161075a906127e6565b60008161120184866129f7565b61120b91906129f7565b905060008161ffff16116112535760405162461bcd60e51b815260206004820152600f60248201526e0416c6c2063616e6e6f74206265203608c1b604482015260640161075a565b60008054600163ffff000160d01b0316600160f01b61ffff9687160261ffff60d01b191617600160d01b948616949094029390931761ffff60e01b1916600160e01b92851692909202919091179091556001805461ffff191691909216179055565b6000546001600160a01b031633146112df5760405162461bcd60e51b815260040161075a906127e6565b63ffffffff8084169085166112f66009600a612917565b6113039062989680612926565b61130d9190612926565b611317919061297a565b60065563ffffffff8082169083166113316009600a612917565b61133e9062989680612926565b6113489190612926565b611352919061297a565b600781905560065411156113985760405162461bcd60e51b815260206004820152600d60248201526c26b4b717a6b0bc1032b93937b960991b604482015260640161075a565b620186a06113a86009600a612917565b6113b59062989680612926565b6113bf919061297a565b600754116113fd5760405162461bcd60e51b815260206004820152600b60248201526a4d617820746f6f206c6f7760a81b604482015260640161075a565b606461140b6009600a612917565b6114189062989680612926565b611422919061297a565b600754106114615760405162461bcd60e51b815260206004820152600c60248201526b09ac2f040e8dede40d0d2ced60a31b604482015260640161075a565b50505050565b600061147233611873565b61148e5760405162461bcd60e51b815260040161075a9061293d565b6114993384846118d9565b9392505050565b6000546001600160a01b031633146114ca5760405162461bcd60e51b815260040161075a906127e6565b6010805461ff001916610100179055600e546001600160a01b03161561151e5760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b604482015260640161075a565b60105460ff16156115635760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b604482015260640161075a565b60003411806115725750600047115b6115be5760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000604482015260640161075a565b306000908152600860205260409020546116125760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b604482015260640161075a565b600d60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190612a19565b6001600160a01b031663c9c6539630600d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f9190612a19565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561175c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117809190612a19565b600e80546001600160a01b0319166001600160a01b0392909216919091179055306000908152600860205260408120546117bb914790611e8e565b600e546001600160a01b03166000908152600f60205260409020805460ff191660011790556117e8611f49565b6010805461ff0019169055565b6000546001600160a01b0316331461181f5760405162461bcd60e51b815260040161075a906127e6565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b601054600090819060ff161561188b5750600161072a565b6001600160a01b0383166000908152600a602052604090205460ff1680156118cb57506001600160a01b0383166000908152600b602052604090205460ff165b1561072a5750600192915050565b60006001600160a01b0384166119315760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000604482015260640161075a565b60105460ff16611997576001600160a01b0384166000908152600a602052604090205460ff16801561197b57506001600160a01b0384166000908152600b602052604090205460ff165b6119975760405162461bcd60e51b815260040161075a9061293d565b601054610100900460ff161580156119c757506001600160a01b0383166000908152600f602052604090205460ff165b156119d4576119d4611fc2565b6001600160a01b03841630148015906119f657506001600160a01b0383163014155b8015611a1057506000546001600160a01b03858116911614155b15611a6057611a208484846120fd565b611a605760405162461bcd60e51b815260206004820152601160248201527054582065786365656473206c696d69747360781b604482015260640161075a565b6000611a6d8585856121c7565b90506000611a7b8285612967565b6001600160a01b038716600090815260086020526040902054909150611aa2908590612967565b6001600160a01b0387166000908152600860205260409020558115611aed5730600090815260086020526040902054611adc90839061299c565b306000908152600860205260409020555b6001600160a01b038516600090815260086020526040902054611b1190829061299c565b6001600160a01b0380871660008181526008602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b659088815260200190565b60405180910390a350600195945050505050565b611b8281612359565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611bb757611bb76129c8565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c349190612a19565b81600181518110611c4757611c476129c8565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b815291169063791ac94790611c8d908590600090869030904290600401612a36565b600060405180830381600087803b158015611ca757600080fd5b505af1158015611cbb573d6000803e3d6000fd5b505050505050565b60008054611ce59061ffff600160e01b8204811691600160d01b9004166129f7565b905061ffff811615611dd2576000805461ffff80841691611d0f91600160d01b9091041685612926565b611d19919061297a565b600080549192509061ffff80851691611d3b91600160e01b9091041686612926565b611d45919061297a565b90508115611d8e57600154604051620100009091046001600160a01b0316906108fc8415029084906000818181858888f19350505050158015611d8c573d6000803e3d6000fd5b505b8015611461576002546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611dce573d6000803e3d6000fd5b5050505b5050565b8015611dd2576001600160a01b03821660009081526008602052604081208054839290611e04908490612967565b9091555050600080805260086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054839290611e4490849061299c565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600c546001600160a01b03168115611ea4575060005b611ead84612359565b600d5460405163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af1158015611f1b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f409190612aa7565b50505050505050565b6064611f576009600a612917565b611f649062989680612926565b611f6f906002612926565b611f79919061297a565b6004556064611f8a6009600a612917565b611f979062989680612926565b611fa2906002612926565b611fac919061297a565b6005556010805460ff1916600117905543600355565b6010805461ff0019166101001790553060009081526008602052604081205490506006548110158015611ff7575060105460ff165b156120ef57600754811061200a57506007545b60015460008054909160029161ffff9182169161202f91600160f01b90041685612926565b612039919061297a565b612043919061297a565b905060006120518284612967565b905061205f6009600a612917565b8111156120db574761207082611b79565b600061207c8247612967565b600054909150600160f01b900461ffff16156120d85760015460008054909161ffff908116916120b591600160f01b9091041684612926565b6120bf919061297a565b90506120ca85612359565b6120d685826000611e8e565b505b50505b4780156120eb576120eb81611cc3565b5050505b506010805461ff0019169055565b60105460009060019060ff16801561212e57506001600160a01b0385166000908152600b602052604090205460ff16155b801561215357506001600160a01b0384166000908152600b602052604090205460ff16155b1561098c5760045483111561216a5750600061098c565b6001600160a01b0384166000908152600f602052604090205460ff161580156121b757506005546001600160a01b0385166000908152600860205260409020546121b590859061299c565b115b1561098c57506000949350505050565b601054600090819060ff1615806121f657506001600160a01b0385166000908152600a602052604090205460ff165b8061221957506001600160a01b0384166000908152600a602052604090205460ff165b156122265750600061098c565b6001600160a01b0385166000908152600f602052604090205460ff161561230b5760005460035460ff600160b81b830481169261226e92600160b01b9091049091169061299c565b612278919061299c565b43106122a95760005460649061229890600160c01b900460ff1685612926565b6122a2919061297a565b905061098c565b6000546003546122c391600160b01b900460ff169061299c565b43106122e35760005460649061229890600160a81b900460ff1685612926565b60035443106123065760005460649061229890600160a01b900460ff1685612926565b61098c565b6001600160a01b0384166000908152600f602052604090205460ff161561098c5760005460649061234690600160c81b900460ff1685612926565b612350919061297a565b95945050505050565b306000908152600960209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d84529091529020548111156123fb57306000818152600960209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b600060208083528351808285015260005b8181101561242b5785810183015185820160400152820161240f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146123fb57600080fd5b6000806040838503121561247457600080fd5b823561247f8161244c565b946020939093013593505050565b6000806000606084860312156124a257600080fd5b83356124ad8161244c565b925060208401356124bd8161244c565b915060408401356124cd8161244c565b809150509250925092565b6000806000606084860312156124ed57600080fd5b83356124f88161244c565b925060208401356125088161244c565b929592945050506040919091013590565b803560ff8116811461252a57600080fd5b919050565b8035801515811461252a57600080fd5b6000806040838503121561255257600080fd5b61255b83612519565b91506125696020840161252f565b90509250929050565b803561ffff8116811461252a57600080fd5b6000806040838503121561259757600080fd5b6125a083612572565b915061256960208401612572565b6000602082840312156125c057600080fd5b5035919050565b600080604083850312156125da57600080fd5b6125e383612519565b915061256960208401612519565b60008060006060848603121561260657600080fd5b83356126118161244c565b925061261f6020850161252f565b915061262d6040850161252f565b90509250925092565b60006020828403121561264857600080fd5b81356114998161244c565b60008083601f84011261266557600080fd5b50813567ffffffffffffffff81111561267d57600080fd5b6020830191508360208260051b850101111561269857600080fd5b9250929050565b600080600080604085870312156126b557600080fd5b843567ffffffffffffffff808211156126cd57600080fd5b6126d988838901612653565b909650945060208701359150808211156126f257600080fd5b506126ff87828801612653565b95989497509550505050565b60008060006060848603121561272057600080fd5b61272984612572565b925061273760208501612572565b915061262d60408501612572565b803563ffffffff8116811461252a57600080fd5b6000806000806080858703121561276f57600080fd5b61277885612745565b935061278660208601612745565b925061279460408601612745565b91506127a260608601612745565b905092959194509250565b600080604083850312156127c057600080fd5b82356127cb8161244c565b915060208301356127db8161244c565b809150509250929050565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561286e5781600019048211156128545761285461281d565b8085161561286157918102915b93841c9390800290612838565b509250929050565b6000826128855750600161072a565b816128925750600061072a565b81600181146128a857600281146128b2576128ce565b600191505061072a565b60ff8411156128c3576128c361281d565b50506001821b61072a565b5060208310610133831016604e8410600b84101617156128f1575081810a61072a565b6128fb8383612833565b806000190482111561290f5761290f61281d565b029392505050565b600061149960ff841683612876565b808202811582820484141761072a5761072a61281d565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b8181038181111561072a5761072a61281d565b60008261299757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561072a5761072a61281d565b60ff818116838216019081111561072a5761072a61281d565b634e487b7160e01b600052603260045260246000fd5b6000600182016129f0576129f061281d565b5060010190565b61ffff818116838216019080821115612a1257612a1261281d565b5092915050565b600060208284031215612a2b57600080fd5b81516114998161244c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a865784516001600160a01b031683529383019391830191600101612a61565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612abc57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212206ad72055983dd57e34db28fa9b538720178f516884c55701e794f49963c9741264736f6c63430008130033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106101f25760003560e01c80636373ea691161010d57806395d89b41116100a0578063c3f70b521161006f578063c3f70b521461062b578063dd62ed3e14610640578063e8078d9414610686578063f2fde38b1461068e578063f8b45b05146106ae57600080fd5b806395d89b411461059d578063a6097b0a146105cd578063a9059cbb146105ed578063c04a54141461060d57600080fd5b806375f0a874116100dc57806375f0a874146104ee57806376a39c28146105265780638d3e6e40146105465780638da5cb5b1461057f57600080fd5b80636373ea691461043c578063672434821461048357806370a08231146104a3578063715018a6146104d957600080fd5b8063368f4800116101855780634d4ce935116101545780634d4ce935146103ae5780634fcd2446146103c357806357ff135a146103e35780635a90a49e1461040357600080fd5b8063368f48001461033a57806342966c681461035a57806346b898341461037a578063470624021461038f57600080fd5b806323b872dd116101c157806323b872dd146102b95780632b14ca56146102d95780632fb528ba14610306578063313ce5671461032657600080fd5b806306fdde03146101fe578063095ea7b314610244578063147c9f6d1461027457806318160ddd1461029657600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5060408051808201909152600b81526a536e696666657220496e7560a81b60208201525b60405161023b91906123fe565b60405180910390f35b34801561025057600080fd5b5061026461025f366004612461565b6106c3565b604051901515815260200161023b565b34801561028057600080fd5b5061029461028f36600461248d565b610730565b005b3480156102a257600080fd5b506102ab6108ba565b60405190815260200161023b565b3480156102c557600080fd5b506102646102d43660046124d8565b6108da565b3480156102e557600080fd5b50600054600160c81b900460ff165b60405160ff909116815260200161023b565b34801561031257600080fd5b5061029461032136600461253f565b610994565b34801561033257600080fd5b5060096102f4565b34801561034657600080fd5b50610294610355366004612584565b610ac2565b34801561036657600080fd5b506102946103753660046125ae565b610c03565b34801561038657600080fd5b506006546102ab565b34801561039b57600080fd5b50600054600160c01b900460ff166102f4565b3480156103ba57600080fd5b506007546102ab565b3480156103cf57600080fd5b506102946103de3660046125c7565b610c98565b3480156103ef57600080fd5b506102946103fe3660046125f1565b610d48565b34801561040f57600080fd5b5061026461041e366004612636565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561044857600080fd5b506000546040805161ffff600160d01b840481168252600160e01b840481166020830152600160f01b9093049092169082015260600161023b565b34801561048f57600080fd5b5061029461049e36600461269f565b610e1e565b3480156104af57600080fd5b506102ab6104be366004612636565b6001600160a01b031660009081526008602052604090205490565b3480156104e557600080fd5b5061029461115b565b3480156104fa57600080fd5b506001546201000090046001600160a01b03165b6040516001600160a01b03909116815260200161023b565b34801561053257600080fd5b5061029461054136600461270b565b6111ca565b34801561055257600080fd5b50610264610561366004612636565b6001600160a01b03166000908152600b602052604090205460ff1690565b34801561058b57600080fd5b506000546001600160a01b031661050e565b3480156105a957600080fd5b5060408051808201909152600781526629a724a32322a960c91b602082015261022e565b3480156105d957600080fd5b506102946105e8366004612759565b6112b5565b3480156105f957600080fd5b50610264610608366004612461565b611467565b34801561061957600080fd5b506002546001600160a01b031661050e565b34801561063757600080fd5b506004546102ab565b34801561064c57600080fd5b506102ab61065b3660046127ad565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b6102946114a0565b34801561069a57600080fd5b506102946106a9366004612636565b6117f5565b3480156106ba57600080fd5b506005546102ab565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061071e9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146107635760405162461bcd60e51b815260040161075a906127e6565b60405180910390fd5b6001600160a01b0383166000908152600f602052604090205460ff161580156107a557506001600160a01b0382166000908152600f602052604090205460ff16155b80156107ca57506001600160a01b0381166000908152600f602052604090205460ff16155b6108165760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000604482015260640161075a565b6001805462010000600160b01b031916620100006001600160a01b03958616908102919091178255600280546001600160a01b0319908116958716958617909155600c805490911693909516929092179093556000908152600a60208181526040808420805460ff199081168817909155600b8084528286208054831689179055958552928252808420805484168717905593905291902080549091169091179055565b60006108c86009600a612917565b6108d59062989680612926565b905090565b60006108e584611873565b6109015760405162461bcd60e51b815260040161075a9061293d565b6001600160a01b038416600090815260096020908152604080832033845290915290205460001914610981576001600160a01b038416600090815260096020908152604080832033845290915290205461095c908390612967565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b61098c8484846118d9565b949350505050565b6000546001600160a01b031633146109be5760405162461bcd60e51b815260040161075a906127e6565b6010805461ff001916610100179055606460ff83161115610a215760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000604482015260640161075a565b30600090815260086020526040812054606490610a429060ff861690612926565b610a4c919061297a565b9050610a5a6009600a612917565b811115610a6a57610a6a81611b79565b8115610ab2574780610aa75760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b604482015260640161075a565b610ab047611cc3565b505b50506010805461ff001916905550565b6000546001600160a01b03163314610aec5760405162461bcd60e51b815260040161075a906127e6565b60006103e861ffff8416610b026009600a612917565b610b0f9062989680612926565b610b199190612926565b610b23919061297a565b610b2e90600161299c565b9050600454811015610b6f5760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b604482015260640161075a565b600481905560006103e861ffff8416610b8a6009600a612917565b610b979062989680612926565b610ba19190612926565b610bab919061297a565b610bb690600161299c565b9050600554811015610bfb5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b604482015260640161075a565b600555505050565b3360009081526008602052604090205480821115610c555760405162461bcd60e51b815260206004820152600f60248201526e62616c616e636520746f6f206c6f7760881b604482015260640161075a565b610c5f3383611dd6565b60405182815233907ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb69060200160405180910390a25050565b6000546001600160a01b03163314610cc25760405162461bcd60e51b815260040161075a906127e6565b6064610cce82846129af565b60ff161115610d145760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b604482015260640161075a565b6000805461ffff60c01b1916600160c01b60ff9485160260ff60c81b191617600160c81b9290931691909102919091179055565b6000546001600160a01b03163314610d725760405162461bcd60e51b815260040161075a906127e6565b8080610d7b5750815b15610ddc576001600160a01b0383166000908152600f602052604090205460ff1615610ddc5760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b604482015260640161075a565b6001600160a01b039092166000908152600a60209081526040808320805494151560ff19958616179055600b9091529020805492151592909116919091179055565b6000546001600160a01b03163314610e485760405162461bcd60e51b815260040161075a906127e6565b60fa831115610e915760405162461bcd60e51b81526020600482015260156024820152744d6f7265207468616e203235302077616c6c65747360581b604482015260640161075a565b828114610ed75760405162461bcd60e51b8152602060048201526014602482015273098d2e6e840d8cadccee8d040dad2e6dac2e8c6d60631b604482015260640161075a565b6000805b84811015610f3057610eef6009600a612917565b848483818110610f0157610f016129c8565b90506020020135610f129190612926565b610f1c908361299c565b915080610f28816129de565b915050610edb565b5033600090815260086020526040902054811115610f885760405162461bcd60e51b8152602060048201526015602482015274546f6b656e2062616c616e636520746f6f206c6f7760581b604482015260640161075a565b60005b8481101561111a57610f9f6009600a612917565b848483818110610fb157610fb16129c8565b90506020020135610fc29190612926565b3360009081526008602052604081208054909190610fe1908490612967565b90915550610ff390506009600a612917565b848483818110611005576110056129c8565b905060200201356110169190612926565b6008600088888581811061102c5761102c6129c8565b90506020020160208101906110419190612636565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254611070919061299c565b909155508690508582818110611088576110886129c8565b905060200201602081019061109d9190612636565b6001600160a01b0316337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6110d46009600a612917565b8787868181106110e6576110e66129c8565b905060200201356110f79190612926565b60405190815260200160405180910390a380611112816129de565b915050610f8b565b5060408051858152602081018390527f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba95464910160405180910390a15050505050565b6000546001600160a01b031633146111855760405162461bcd60e51b815260040161075a906127e6565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b031633146111f45760405162461bcd60e51b815260040161075a906127e6565b60008161120184866129f7565b61120b91906129f7565b905060008161ffff16116112535760405162461bcd60e51b815260206004820152600f60248201526e0416c6c2063616e6e6f74206265203608c1b604482015260640161075a565b60008054600163ffff000160d01b0316600160f01b61ffff9687160261ffff60d01b191617600160d01b948616949094029390931761ffff60e01b1916600160e01b92851692909202919091179091556001805461ffff191691909216179055565b6000546001600160a01b031633146112df5760405162461bcd60e51b815260040161075a906127e6565b63ffffffff8084169085166112f66009600a612917565b6113039062989680612926565b61130d9190612926565b611317919061297a565b60065563ffffffff8082169083166113316009600a612917565b61133e9062989680612926565b6113489190612926565b611352919061297a565b600781905560065411156113985760405162461bcd60e51b815260206004820152600d60248201526c26b4b717a6b0bc1032b93937b960991b604482015260640161075a565b620186a06113a86009600a612917565b6113b59062989680612926565b6113bf919061297a565b600754116113fd5760405162461bcd60e51b815260206004820152600b60248201526a4d617820746f6f206c6f7760a81b604482015260640161075a565b606461140b6009600a612917565b6114189062989680612926565b611422919061297a565b600754106114615760405162461bcd60e51b815260206004820152600c60248201526b09ac2f040e8dede40d0d2ced60a31b604482015260640161075a565b50505050565b600061147233611873565b61148e5760405162461bcd60e51b815260040161075a9061293d565b6114993384846118d9565b9392505050565b6000546001600160a01b031633146114ca5760405162461bcd60e51b815260040161075a906127e6565b6010805461ff001916610100179055600e546001600160a01b03161561151e5760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b604482015260640161075a565b60105460ff16156115635760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b604482015260640161075a565b60003411806115725750600047115b6115be5760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000604482015260640161075a565b306000908152600860205260409020546116125760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b604482015260640161075a565b600d60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190612a19565b6001600160a01b031663c9c6539630600d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f9190612a19565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561175c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117809190612a19565b600e80546001600160a01b0319166001600160a01b0392909216919091179055306000908152600860205260408120546117bb914790611e8e565b600e546001600160a01b03166000908152600f60205260409020805460ff191660011790556117e8611f49565b6010805461ff0019169055565b6000546001600160a01b0316331461181f5760405162461bcd60e51b815260040161075a906127e6565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b601054600090819060ff161561188b5750600161072a565b6001600160a01b0383166000908152600a602052604090205460ff1680156118cb57506001600160a01b0383166000908152600b602052604090205460ff165b1561072a5750600192915050565b60006001600160a01b0384166119315760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000604482015260640161075a565b60105460ff16611997576001600160a01b0384166000908152600a602052604090205460ff16801561197b57506001600160a01b0384166000908152600b602052604090205460ff165b6119975760405162461bcd60e51b815260040161075a9061293d565b601054610100900460ff161580156119c757506001600160a01b0383166000908152600f602052604090205460ff165b156119d4576119d4611fc2565b6001600160a01b03841630148015906119f657506001600160a01b0383163014155b8015611a1057506000546001600160a01b03858116911614155b15611a6057611a208484846120fd565b611a605760405162461bcd60e51b815260206004820152601160248201527054582065786365656473206c696d69747360781b604482015260640161075a565b6000611a6d8585856121c7565b90506000611a7b8285612967565b6001600160a01b038716600090815260086020526040902054909150611aa2908590612967565b6001600160a01b0387166000908152600860205260409020558115611aed5730600090815260086020526040902054611adc90839061299c565b306000908152600860205260409020555b6001600160a01b038516600090815260086020526040902054611b1190829061299c565b6001600160a01b0380871660008181526008602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b659088815260200190565b60405180910390a350600195945050505050565b611b8281612359565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611bb757611bb76129c8565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c349190612a19565b81600181518110611c4757611c476129c8565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b815291169063791ac94790611c8d908590600090869030904290600401612a36565b600060405180830381600087803b158015611ca757600080fd5b505af1158015611cbb573d6000803e3d6000fd5b505050505050565b60008054611ce59061ffff600160e01b8204811691600160d01b9004166129f7565b905061ffff811615611dd2576000805461ffff80841691611d0f91600160d01b9091041685612926565b611d19919061297a565b600080549192509061ffff80851691611d3b91600160e01b9091041686612926565b611d45919061297a565b90508115611d8e57600154604051620100009091046001600160a01b0316906108fc8415029084906000818181858888f19350505050158015611d8c573d6000803e3d6000fd5b505b8015611461576002546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611dce573d6000803e3d6000fd5b5050505b5050565b8015611dd2576001600160a01b03821660009081526008602052604081208054839290611e04908490612967565b9091555050600080805260086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054839290611e4490849061299c565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600c546001600160a01b03168115611ea4575060005b611ead84612359565b600d5460405163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af1158015611f1b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f409190612aa7565b50505050505050565b6064611f576009600a612917565b611f649062989680612926565b611f6f906002612926565b611f79919061297a565b6004556064611f8a6009600a612917565b611f979062989680612926565b611fa2906002612926565b611fac919061297a565b6005556010805460ff1916600117905543600355565b6010805461ff0019166101001790553060009081526008602052604081205490506006548110158015611ff7575060105460ff165b156120ef57600754811061200a57506007545b60015460008054909160029161ffff9182169161202f91600160f01b90041685612926565b612039919061297a565b612043919061297a565b905060006120518284612967565b905061205f6009600a612917565b8111156120db574761207082611b79565b600061207c8247612967565b600054909150600160f01b900461ffff16156120d85760015460008054909161ffff908116916120b591600160f01b9091041684612926565b6120bf919061297a565b90506120ca85612359565b6120d685826000611e8e565b505b50505b4780156120eb576120eb81611cc3565b5050505b506010805461ff0019169055565b60105460009060019060ff16801561212e57506001600160a01b0385166000908152600b602052604090205460ff16155b801561215357506001600160a01b0384166000908152600b602052604090205460ff16155b1561098c5760045483111561216a5750600061098c565b6001600160a01b0384166000908152600f602052604090205460ff161580156121b757506005546001600160a01b0385166000908152600860205260409020546121b590859061299c565b115b1561098c57506000949350505050565b601054600090819060ff1615806121f657506001600160a01b0385166000908152600a602052604090205460ff165b8061221957506001600160a01b0384166000908152600a602052604090205460ff165b156122265750600061098c565b6001600160a01b0385166000908152600f602052604090205460ff161561230b5760005460035460ff600160b81b830481169261226e92600160b01b9091049091169061299c565b612278919061299c565b43106122a95760005460649061229890600160c01b900460ff1685612926565b6122a2919061297a565b905061098c565b6000546003546122c391600160b01b900460ff169061299c565b43106122e35760005460649061229890600160a81b900460ff1685612926565b60035443106123065760005460649061229890600160a01b900460ff1685612926565b61098c565b6001600160a01b0384166000908152600f602052604090205460ff161561098c5760005460649061234690600160c81b900460ff1685612926565b612350919061297a565b95945050505050565b306000908152600960209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d84529091529020548111156123fb57306000818152600960209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b600060208083528351808285015260005b8181101561242b5785810183015185820160400152820161240f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146123fb57600080fd5b6000806040838503121561247457600080fd5b823561247f8161244c565b946020939093013593505050565b6000806000606084860312156124a257600080fd5b83356124ad8161244c565b925060208401356124bd8161244c565b915060408401356124cd8161244c565b809150509250925092565b6000806000606084860312156124ed57600080fd5b83356124f88161244c565b925060208401356125088161244c565b929592945050506040919091013590565b803560ff8116811461252a57600080fd5b919050565b8035801515811461252a57600080fd5b6000806040838503121561255257600080fd5b61255b83612519565b91506125696020840161252f565b90509250929050565b803561ffff8116811461252a57600080fd5b6000806040838503121561259757600080fd5b6125a083612572565b915061256960208401612572565b6000602082840312156125c057600080fd5b5035919050565b600080604083850312156125da57600080fd5b6125e383612519565b915061256960208401612519565b60008060006060848603121561260657600080fd5b83356126118161244c565b925061261f6020850161252f565b915061262d6040850161252f565b90509250925092565b60006020828403121561264857600080fd5b81356114998161244c565b60008083601f84011261266557600080fd5b50813567ffffffffffffffff81111561267d57600080fd5b6020830191508360208260051b850101111561269857600080fd5b9250929050565b600080600080604085870312156126b557600080fd5b843567ffffffffffffffff808211156126cd57600080fd5b6126d988838901612653565b909650945060208701359150808211156126f257600080fd5b506126ff87828801612653565b95989497509550505050565b60008060006060848603121561272057600080fd5b61272984612572565b925061273760208501612572565b915061262d60408501612572565b803563ffffffff8116811461252a57600080fd5b6000806000806080858703121561276f57600080fd5b61277885612745565b935061278660208601612745565b925061279460408601612745565b91506127a260608601612745565b905092959194509250565b600080604083850312156127c057600080fd5b82356127cb8161244c565b915060208301356127db8161244c565b809150509250929050565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561286e5781600019048211156128545761285461281d565b8085161561286157918102915b93841c9390800290612838565b509250929050565b6000826128855750600161072a565b816128925750600061072a565b81600181146128a857600281146128b2576128ce565b600191505061072a565b60ff8411156128c3576128c361281d565b50506001821b61072a565b5060208310610133831016604e8410600b84101617156128f1575081810a61072a565b6128fb8383612833565b806000190482111561290f5761290f61281d565b029392505050565b600061149960ff841683612876565b808202811582820484141761072a5761072a61281d565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b8181038181111561072a5761072a61281d565b60008261299757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561072a5761072a61281d565b60ff818116838216019081111561072a5761072a61281d565b634e487b7160e01b600052603260045260246000fd5b6000600182016129f0576129f061281d565b5060010190565b61ffff818116838216019080821115612a1257612a1261281d565b5092915050565b600060208284031215612a2b57600080fd5b81516114998161244c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a865784516001600160a01b031683529383019391830191600101612a61565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612abc57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212206ad72055983dd57e34db28fa9b538720178f516884c55701e794f49963c9741264736f6c63430008130033

Deployed Bytecode Sourcemap

2335:16380:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5670:80;;;;;;;;;;-1:-1:-1;5742:5:0;;;;;;;;;;;;-1:-1:-1;;;5742:5:0;;;;5670:80;;;;;;;:::i;:::-;;;;;;;;6008:216;;;;;;;;;;-1:-1:-1;6008:216:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6008:216:0;1023:187:1;12764:535:0;;;;;;;;;;-1:-1:-1;12764:535:0;;;;;:::i;:::-;;:::i;:::-;;5400:88;;;;;;;;;;;;;:::i;:::-;;;1895:25:1;;;1883:2;1868:18;5400:88:0;1749:177:1;6465:404:0;;;;;;;;;;-1:-1:-1;6465:404:0;;;;;:::i;:::-;;:::i;11632:86::-;;;;;;;;;;-1:-1:-1;11673:5:0;11698:12;-1:-1:-1;;;11698:12:0;;;;11632:86;;;2564:4:1;2552:17;;;2534:36;;2522:2;2507:18;11632:86:0;2392:184:1;16992:567:0;;;;;;;;;;-1:-1:-1;16992:567:0;;;;;:::i;:::-;;:::i;5494:80::-;;;;;;;;;;-1:-1:-1;2418:1:0;5494:80;;13706:462;;;;;;;;;;-1:-1:-1;13706:462:0;;;;;:::i;:::-;;:::i;17567:261::-;;;;;;;;;;-1:-1:-1;17567:261:0;;;;;:::i;:::-;;:::i;13512:90::-;;;;;;;;;;-1:-1:-1;13583:11:0;;13512:90;;11542:84;;;;;;;;;;-1:-1:-1;11582:5:0;11607:11;-1:-1:-1;;;11607:11:0;;;;11542:84;;13608:90;;;;;;;;;;-1:-1:-1;13679:11:0;;13608:90;;11910:184;;;;;;;;;;-1:-1:-1;11910:184:0;;;;;:::i;:::-;;:::i;11284:250::-;;;;;;;;;;-1:-1:-1;11284:250:0;;;;;:::i;:::-;;:::i;11046:110::-;;;;;;;;;;-1:-1:-1;11046:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;11133:15:0;11109:4;11133:15;;;:7;:15;;;;;;;;;11046:110;11726:178;;;;;;;;;;-1:-1:-1;11769:16:0;11839:19;11726:178;;;11839:19;-1:-1:-1;;;11839:19:0;;;;4890:34:1;;-1:-1:-1;;;11860:21:0;;;;4955:2:1;4940:18;;4933:43;-1:-1:-1;;;11883:12:0;;;;;;4992:18:1;;;4985:43;4853:2;4838:18;11726:178:0;4669:365:1;17836:876:0;;;;;;;;;;-1:-1:-1;17836:876:0;;;;;:::i;:::-;;:::i;5756:105::-;;;;;;;;;;-1:-1:-1;5756:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;5840:18:0;5822:7;5840:18;;;:9;:18;;;;;;;5756:105;2142:137;;;;;;;;;;;;;:::i;12544:101::-;;;;;;;;;;-1:-1:-1;12621:16:0;;;;;-1:-1:-1;;;;;12621:16:0;12544:101;;;-1:-1:-1;;;;;6353:32:1;;;6335:51;;6323:2;6308:18;12544:101:0;6189:203:1;12102:434:0;;;;;;;;;;-1:-1:-1;12102:434:0;;;;;:::i;:::-;;:::i;11163:114::-;;;;;;;;;;-1:-1:-1;11163:114:0;;;;;:::i;:::-;-1:-1:-1;;;;;11252:17:0;11228:4;11252:17;;;:9;:17;;;;;;;;;11163:114;1892:81;;;;;;;;;;-1:-1:-1;1930:7:0;1958:6;-1:-1:-1;;;;;1958:6:0;1892:81;;5580:84;;;;;;;;;;-1:-1:-1;5654:7:0;;;;;;;;;;;;-1:-1:-1;;;5654:7:0;;;;5580:84;;14176:436;;;;;;;;;;-1:-1:-1;14176:436:0;;;;;:::i;:::-;;:::i;6232:225::-;;;;;;;;;;-1:-1:-1;6232:225:0;;;;;:::i;:::-;;:::i;12651:105::-;;;;;;;;;;-1:-1:-1;12730:18:0;;-1:-1:-1;;;;;12730:18:0;12651:105;;13408:96;;;;;;;;;;-1:-1:-1;13484:12:0;;13408:96;;5867:133;;;;;;;;;;-1:-1:-1;5867:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5969:19:0;;;5951:7;5969:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5867:133;7202:608;;;:::i;1979:157::-;;;;;;;;;;-1:-1:-1;1979:157:0;;;;;:::i;:::-;;:::i;13307:95::-;;;;;;;;;;-1:-1:-1;13378:16:0;;13307:95;;6008:216;6112:10;6083:4;6100:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6100:32:0;;;;;;;;;;:41;;;6157:37;6083:4;;6100:32;;6157:37;;;;6135:6;1895:25:1;;1883:2;1868:18;;1749:177;6157:37:0;;;;;;;;-1:-1:-1;6212:4:0;6008:216;;;;;:::o;12764:535::-;1829:6;;-1:-1:-1;;;;;1829:6:0;1815:10;:20;1807:57;;;;-1:-1:-1;;;1807:57:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;12884:16:0;::::1;;::::0;;;:5:::1;:16;::::0;;;;;::::1;;12883:17;:40:::0;::::1;;;-1:-1:-1::0;;;;;;12905:18:0;::::1;;::::0;;;:5:::1;:18;::::0;;;;;::::1;;12904:19;12883:40;:60;;;;-1:-1:-1::0;;;;;;12928:15:0;::::1;;::::0;;;:5:::1;:15;::::0;;;;;::::1;;12927:16;12883:60;12875:96;;;::::0;-1:-1:-1;;;12875:96:0;;8512:2:1;12875:96:0::1;::::0;::::1;8494:21:1::0;8551:2;8531:18;;;8524:30;8590:25;8570:18;;;8563:53;8633:18;;12875:96:0::1;8310:347:1::0;12875:96:0::1;12992:16;:37:::0;;-1:-1:-1;;;;;;12992:37:0::1;::::0;-1:-1:-1;;;;;12992:37:0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;:16:::1;13040:41:::0;;-1:-1:-1;;;;;;13040:41:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;13092:8:::1;:19:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;13132:18:0;;;:7:::1;:18;::::0;;;;;;;:25;;-1:-1:-1;;13132:25:0;;::::1;::::0;::::1;::::0;;;13168:9:::1;:20:::0;;;;;;:27;;;::::1;::::0;::::1;::::0;;13216:20;;;;;;;;;:27;;;::::1;::::0;::::1;::::0;;13262:22;;;;;;:29;;;;::::1;::::0;;::::1;::::0;;12764:535::o;5400:88::-;5455:7;2480:13;2418:1;2480:2;:13;:::i;:::-;2466:28;;:10;:28;:::i;:::-;5466:19;;5400:88;:::o;6465:404::-;6565:4;6590:25;6608:6;6590:17;:25::i;:::-;6582:54;;;;-1:-1:-1;;;6582:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6650:19:0;;;;;;:11;:19;;;;;;;;6670:10;6650:31;;;;;;;;-1:-1:-1;;6650:52:0;6647:157;;-1:-1:-1;;;;;6752:19:0;;;;;;:11;:19;;;;;;;;6772:10;6752:31;;;;;;;;:40;;6786:6;;6752:40;:::i;:::-;-1:-1:-1;;;;;6718:19:0;;;;;;:11;:19;;;;;;;;6738:10;6718:31;;;;;;;:74;6647:157;6821:40;6835:6;6843:9;6854:6;6821:13;:40::i;:::-;6814:47;6465:404;-1:-1:-1;;;;6465:404:0:o;16992:567::-;1829:6;;-1:-1:-1;;;;;1829:6:0;1815:10;:20;1807:57;;;;-1:-1:-1;;;1807:57:0;;;;;;;:::i;:::-;4222:10:::1;:17:::0;;-1:-1:-1;;4222:17:0::1;;;::::0;;17130:3:::2;4222:17:::1;17110:23:::0;::::2;;;17102:62;;;::::0;-1:-1:-1;;;17102:62:0;;11030:2:1;17102:62:0::2;::::0;::::2;11012:21:1::0;11069:2;11049:18;;;11042:30;11108:28;11088:18;;;11081:56;11154:18;;17102:62:0::2;10828:350:1::0;17102:62:0::2;17216:4;17175:20;5840:18:::0;;;:9;:18;;;;;;17244:3:::2;::::0;17198:43:::2;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;:49;;;;:::i;:::-;17175:72:::0;-1:-1:-1;17277:15:0::2;2418:1;17277:2;:15;:::i;:::-;17262:12;:30;17258:97;;;17309:34;17330:12;17309:20;:34::i;:::-;17369:7;17365:187;;;17415:21;17459:14:::0;17451:33:::2;;;::::0;-1:-1:-1;;;17451:33:0;;11607:2:1;17451:33:0::2;::::0;::::2;11589:21:1::0;11646:1;11626:18;;;11619:29;-1:-1:-1;;;11664:18:1;;;11657:36;11710:18;;17451:33:0::2;11405:329:1::0;17451:33:0::2;17499:40;17517:21;17499:17;:40::i;:::-;17378:174;17365:187;-1:-1:-1::0;;4264:10:0::1;:18:::0;;-1:-1:-1;;4264:18:0::1;::::0;;-1:-1:-1;16992:567:0:o;13706:462::-;1829:6;;-1:-1:-1;;;;;1829:6:0;1815:10;:20;1807:57;;;;-1:-1:-1;;;1807:57:0;;;;;;;:::i;:::-;13812:16:::1;13871:4;13831:37;::::0;::::1;2480:13;2418:1;2480:2;:13;:::i;:::-;2466:28;::::0;:10:::1;:28;:::i;:::-;13831:37;;;;:::i;:::-;:44;;;;:::i;:::-;:48;::::0;13878:1:::1;13831:48;:::i;:::-;13812:67;;13910:12;;13898:8;:24;;13890:47;;;::::0;-1:-1:-1;;;13890:47:0;;12071:2:1;13890:47:0::1;::::0;::::1;12053:21:1::0;12110:2;12090:18;;;12083:30;-1:-1:-1;;;12129:18:1;;;12122:40;12179:18;;13890:47:0::1;11869:334:1::0;13890:47:0::1;13948:12;:23:::0;;;13982:20:::1;14040:4;14005:32;::::0;::::1;2480:13;2418:1;2480:2;:13;:::i;:::-;2466:28;::::0;:10:::1;:28;:::i;:::-;14005:32;;;;:::i;:::-;:39;;;;:::i;:::-;:43;::::0;14047:1:::1;14005:43;:::i;:::-;13982:66;;14083:16;;14067:12;:32;;14059:59;;;::::0;-1:-1:-1;;;14059:59:0;;12410:2:1;14059:59:0::1;::::0;::::1;12392:21:1::0;12449:2;12429:18;;;12422:30;-1:-1:-1;;;12468:18:1;;;12461:44;12522:18;;14059:59:0::1;12208:338:1::0;14059:59:0::1;14129:16;:31:::0;-1:-1:-1;;;13706:462:0:o;17567:261::-;17654:10;17617:24;5840:18;;;:9;:18;;;;;;17684:26;;;;17676:54;;;;-1:-1:-1;;;17676:54:0;;12753:2:1;17676:54:0;;;12735:21:1;12792:2;12772:18;;;12765:30;-1:-1:-1;;;12811:18:1;;;12804:45;12866:18;;17676:54:0;12551:339:1;17676:54:0;17741:31;17753:10;17765:6;17741:11;:31::i;:::-;17788:32;;1895:25:1;;;17801:10:0;;17788:32;;1883:2:1;1868:18;17788:32:0;;;;;;;17606:222;17567:261;:::o;11910:184::-;1829:6;;-1:-1:-1;;;;;1829:6:0;1815:10;:20;1807:57;;;;-1:-1:-1;;;1807:57:0;;;;;;;:::i;:::-;12002:3:::1;11988:10;11994:4:::0;11988:3;:10:::1;:::i;:::-;:17;;;;11980:48;;;::::0;-1:-1:-1;;;11980:48:0;;13250:2:1;11980:48:0::1;::::0;::::1;13232:21:1::0;13289:2;13269:18;;;13262:30;-1:-1:-1;;;13308:18:1;;;13301:48;13366:18;;11980:48:0::1;13048:342:1::0;11980:48:0::1;12039:11;:17:::0;;-1:-1:-1;;;;12067:19:0;-1:-1:-1;;;12039:17:0::1;::::0;;::::1;;-1:-1:-1::0;;;;12067:19:0;;-1:-1:-1;;;12067:19:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;11910:184::o;11284:250::-;1829:6;;-1:-1:-1;;;;;1829:6:0;1815:10;:20;1807:57;;;;-1:-1:-1;;;1807:57:0;;;;;;;:::i;:::-;11381:8:::1;:18;;;;11393:6;11381:18;11377:72;;;-1:-1:-1::0;;;;;11412:13:0;::::1;;::::0;;;:5:::1;:13;::::0;;;;;::::1;;11411:14;11403:43;;;::::0;-1:-1:-1;;;11403:43:0;;13597:2:1;11403:43:0::1;::::0;::::1;13579:21:1::0;13636:2;13616:18;;;13609:30;-1:-1:-1;;;13655:18:1;;;13648:46;13711:18;;11403:43:0::1;13395:340:1::0;11403:43:0::1;-1:-1:-1::0;;;;;11459:17:0;;::::1;;::::0;;;:7:::1;:17;::::0;;;;;;;:26;;;::::1;;-1:-1:-1::0;;11459:26:0;;::::1;;::::0;;11496:9:::1;:19:::0;;;;;:30;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;11284:250::o;17836:876::-;1829:6;;-1:-1:-1;;;;;1829:6:0;1815:10;:20;1807:57;;;;-1:-1:-1;;;1807:57:0;;;;;;;:::i;:::-;17974:3:::1;17954:23:::0;::::1;;17946:56;;;::::0;-1:-1:-1;;;17946:56:0;;13942:2:1;17946:56:0::1;::::0;::::1;13924:21:1::0;13981:2;13961:18;;;13954:30;-1:-1:-1;;;14000:18:1;;;13993:51;14061:18;;17946:56:0::1;13740:345:1::0;17946:56:0::1;18021:39:::0;;::::1;18013:71;;;::::0;-1:-1:-1;;;18013:71:0;;14292:2:1;18013:71:0::1;::::0;::::1;14274:21:1::0;14331:2;14311:18;;;14304:30;-1:-1:-1;;;14350:18:1;;;14343:50;14410:18;;18013:71:0::1;14090:344:1::0;18013:71:0::1;18097:20;18136:6:::0;18132:116:::1;18146:20:::0;;::::1;18132:116;;;18222:13;2418:1;18222:2;:13;:::i;:::-;18204:12;;18217:1;18204:15;;;;;;;:::i;:::-;;;;;;;:31;;;;:::i;:::-;18187:49;::::0;;::::1;:::i;:::-;::::0;-1:-1:-1;18168:3:0;::::1;::::0;::::1;:::i;:::-;;;;18132:116;;;-1:-1:-1::0;18276:10:0::1;18266:21;::::0;;;:9:::1;:21;::::0;;;;;:37;-1:-1:-1;18266:37:0::1;18258:71;;;::::0;-1:-1:-1;;;18258:71:0;;14913:2:1;18258:71:0::1;::::0;::::1;14895:21:1::0;14952:2;14932:18;;;14925:30;-1:-1:-1;;;14971:18:1;;;14964:51;15032:18;;18258:71:0::1;14711:345:1::0;18258:71:0::1;18346:6;18342:297;18356:20:::0;;::::1;18342:297;;;18441:13;2418:1;18441:2;:13;:::i;:::-;18423:12;;18436:1;18423:15;;;;;;;:::i;:::-;;;;;;;:31;;;;:::i;:::-;18407:10;18397:21;::::0;;;:9:::1;:21;::::0;;;;:58;;:21;;;:58:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;18516:13:0::1;::::0;-1:-1:-1;2418:1:0::1;18516:2;:13;:::i;:::-;18498:12;;18511:1;18498:15;;;;;;;:::i;:::-;;;;;;;:31;;;;:::i;:::-;18470:9;:23;18480:9;;18490:1;18480:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18470:23:0::1;-1:-1:-1::0;;;;;18470:23:0::1;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;18571:9:0;;-1:-1:-1;18571:9:0;18581:1;18571:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18550:70:0::1;18559:10;18550:70;18604:13;2418:1;18604:2;:13;:::i;:::-;18586:12;;18599:1;18586:15;;;;;;;:::i;:::-;;;;;;;:31;;;;:::i;:::-;18550:70;::::0;1895:25:1;;;1883:2;1868:18;18550:70:0::1;;;;;;;18378:3:::0;::::1;::::0;::::1;:::i;:::-;;;;18342:297;;;-1:-1:-1::0;18656:48:0::1;::::0;;15235:25:1;;;15291:2;15276:18;;15269:34;;;18656:48:0::1;::::0;15208:18:1;18656:48:0::1;;;;;;;17935:777;17836:876:::0;;;;:::o;2142:137::-;1829:6;;-1:-1:-1;;;;;1829:6:0;1815:10;:20;1807:57;;;;-1:-1:-1;;;1807:57:0;;;;;;;:::i;:::-;2219:1:::1;2202:19:::0;;-1:-1:-1;;;;;;2202:19:0::1;::::0;;2238:32:::1;::::0;6335:51:1;;;2238:32:0::1;::::0;6323:2:1;6308:18;2238:32:0::1;;;;;;;2142:137::o:0;12102:434::-;1829:6;;-1:-1:-1;;;;;1829:6:0;1815:10;:20;1807:57;;;;-1:-1:-1;;;1807:57:0;;;;;;;:::i;:::-;12224:18:::1;12278:17:::0;12245:30:::1;12260:15:::0;12245:12;:30:::1;:::i;:::-;:50;;;;:::i;:::-;12224:71;;12329:1;12315:11;:15;;;12306:44;;;::::0;-1:-1:-1;;;12306:44:0;;15689:2:1;12306:44:0::1;::::0;::::1;15671:21:1::0;15728:2;15708:18;;;15701:30;-1:-1:-1;;;15747:18:1;;;15740:45;15802:18;;12306:44:0::1;15487:339:1::0;12306:44:0::1;12361:12;:27:::0;;-1:-1:-1;;;;;12399:37:0;-1:-1:-1;;;12361:27:0::1;::::0;;::::1;;-1:-1:-1::0;;;;12399:37:0;;-1:-1:-1;;;12399:37:0;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;12447:41:0::1;-1:-1:-1::0;;;12447:41:0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;12499:29:0;;-1:-1:-1;;12499:29:0::1;::::0;;;::::1;;::::0;;12102:434::o;14176:436::-;1829:6;;-1:-1:-1;;;;;1829:6:0;1815:10;:20;1807:57;;;;-1:-1:-1;;;1807:57:0;;;;;;;:::i;:::-;14312:36:::1;::::0;;::::1;::::0;:23;::::1;2480:13;2418:1;2480:2;:13;:::i;:::-;2466:28;::::0;:10:::1;:28;:::i;:::-;14312:23;;;;:::i;:::-;:36;;;;:::i;:::-;14298:11;:50:::0;14373:36:::1;::::0;;::::1;::::0;:23;::::1;2480:13;2418:1;2480:2;:13;:::i;:::-;2466:28;::::0;:10:::1;:28;:::i;:::-;14373:23;;;;:::i;:::-;:36;;;;:::i;:::-;14359:11;:50:::0;;;14441:11:::1;::::0;-1:-1:-1;14428:24:0::1;14420:50;;;::::0;-1:-1:-1;;;14420:50:0;;16033:2:1;14420:50:0::1;::::0;::::1;16015:21:1::0;16072:2;16052:18;;;16045:30;-1:-1:-1;;;16091:18:1;;;16084:43;16144:18;;14420:50:0::1;15831:337:1::0;14420:50:0::1;14516:6;2480:13;2418:1;2480:2;:13;:::i;:::-;2466:28;::::0;:10:::1;:28;:::i;:::-;14501:21;;;;:::i;:::-;14489:11;;:33;14481:57;;;::::0;-1:-1:-1;;;14481:57:0;;16375:2:1;14481:57:0::1;::::0;::::1;16357:21:1::0;16414:2;16394:18;;;16387:30;-1:-1:-1;;;16433:18:1;;;16426:41;16484:18;;14481:57:0::1;16173:335:1::0;14481:57:0::1;14584:3;2480:13;2418:1;2480:2;:13;:::i;:::-;2466:28;::::0;:10:::1;:28;:::i;:::-;14569:18;;;;:::i;:::-;14557:11;;:30;14549:55;;;::::0;-1:-1:-1;;;14549:55:0;;16715:2:1;14549:55:0::1;::::0;::::1;16697:21:1::0;16754:2;16734:18;;;16727:30;-1:-1:-1;;;16773:18:1;;;16766:42;16825:18;;14549:55:0::1;16513:336:1::0;14549:55:0::1;14176:436:::0;;;;:::o;6232:225::-;6312:4;6337:29;6355:10;6337:17;:29::i;:::-;6329:58;;;;-1:-1:-1;;;6329:58:0;;;;;;;:::i;:::-;6405:44;6419:10;6431:9;6442:6;6405:13;:44::i;:::-;6398:51;6232:225;-1:-1:-1;;;6232:225:0:o;7202:608::-;1829:6;;-1:-1:-1;;;;;1829:6:0;1815:10;:20;1807:57;;;;-1:-1:-1;;;1807:57:0;;;;;;;:::i;:::-;4222:10:::1;:17:::0;;-1:-1:-1;;4222:17:0::1;;;::::0;;7284:10:::2;::::0;-1:-1:-1;;;;;7284:10:0::2;:24:::0;7276:46:::2;;;::::0;-1:-1:-1;;;7276:46:0;;17056:2:1;7276:46:0::2;::::0;::::2;17038:21:1::0;17095:1;17075:18;;;17068:29;-1:-1:-1;;;17113:18:1;;;17106:39;17162:18;;7276:46:0::2;16854:332:1::0;7276:46:0::2;7342:12;::::0;::::2;;7341:13;7333:41;;;::::0;-1:-1:-1;;;7333:41:0;;17393:2:1;7333:41:0::2;::::0;::::2;17375:21:1::0;17432:2;17412:18;;;17405:30;-1:-1:-1;;;17451:18:1;;;17444:45;17506:18;;7333:41:0::2;17191:339:1::0;7333:41:0::2;7405:1;7393:9;:13;:40;;;;7432:1;7410:21;:23;7393:40;7385:82;;;::::0;-1:-1:-1;;;7385:82:0;;17737:2:1;7385:82:0::2;::::0;::::2;17719:21:1::0;17776:2;17756:18;;;17749:30;17815:31;17795:18;;;17788:59;17864:18;;7385:82:0::2;17535:353:1::0;7385:82:0::2;7504:4;7511:1;7486:24:::0;;;:9:::2;:24;::::0;;;;;7478:60:::2;;;::::0;-1:-1:-1;;;7478:60:0;;18095:2:1;7478:60:0::2;::::0;::::2;18077:21:1::0;18134:2;18114:18;;;18107:30;-1:-1:-1;;;18153:18:1;;;18146:51;18214:18;;7478:60:0::2;17893:345:1::0;7478:60:0::2;7580:18;;;;;;;;;-1:-1:-1::0;;;;;7580:18:0::2;-1:-1:-1::0;;;;;7580:26:0::2;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7562:58:0::2;;7629:4;7636:18;;;;;;;;;-1:-1:-1::0;;;;;7636:18:0::2;-1:-1:-1::0;;;;;7636:23:0::2;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7562:100;::::0;-1:-1:-1;;;;;;7562:100:0::2;::::0;;;;;;-1:-1:-1;;;;;18729:15:1;;;7562:100:0::2;::::0;::::2;18711:34:1::0;18781:15;;18761:18;;;18754:43;18646:18;;7562:100:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7549:10;:113:::0;;-1:-1:-1;;;;;;7549:113:0::2;-1:-1:-1::0;;;;;7549:113:0;;;::::2;::::0;;;::::2;::::0;;7705:4:::2;-1:-1:-1::0;7687:24:0;;;:9:::2;:24;::::0;;;;;7673:69:::2;::::0;7713:21:::2;::::0;7673:13:::2;:69::i;:::-;7759:10;::::0;-1:-1:-1;;;;;7759:10:0::2;7753:17;::::0;;;:5:::2;:17;::::0;;;;:24;;-1:-1:-1;;7753:24:0::2;7773:4;7753:24;::::0;;7788:14:::2;:12;:14::i;:::-;4264:10:::1;:18:::0;;-1:-1:-1;;4264:18:0::1;::::0;;7202:608::o;1979:157::-;1829:6;;-1:-1:-1;;;;;1829:6:0;1815:10;:20;1807:57;;;;-1:-1:-1;;;1807:57:0;;;;;;;:::i;:::-;2063:6:::1;:17:::0;;-1:-1:-1;;;;;;2063:17:0::1;-1:-1:-1::0;;;;;2063:17:0;::::1;::::0;;::::1;::::0;;;2097:30:::1;::::0;6335:51:1;;;2097:30:0::1;::::0;6323:2:1;6308:18;2097:30:0::1;;;;;;;1979:157:::0;:::o;9902:279::-;10023:12;;9967:4;;;;10023:12;;10018:124;;;-1:-1:-1;10054:4:0;10018:124;;;-1:-1:-1;;;;;10081:15:0;;;;;;:7;:15;;;;;;;;:36;;;;-1:-1:-1;;;;;;10100:17:0;;;;;;:9;:17;;;;;;;;10081:36;10077:65;;;-1:-1:-1;10135:4:0;10162:11;9902:279;-1:-1:-1;;9902:279:0:o;8433:958::-;8525:4;-1:-1:-1;;;;;8550:20:0;;8542:62;;;;-1:-1:-1;;;8542:62:0;;19226:2:1;8542:62:0;;;19208:21:1;19265:2;19245:18;;;19238:30;19304:31;19284:18;;;19277:59;19353:18;;8542:62:0;19024:353:1;8542:62:0;8620:12;;;;8615:89;;-1:-1:-1;;;;;8644:15:0;;;;;;:7;:15;;;;;;;;:36;;;;-1:-1:-1;;;;;;8663:17:0;;;;;;:9;:17;;;;;;;;8644:36;8636:65;;;;-1:-1:-1;;;8636:65:0;;;;;;;:::i;:::-;8720:10;;;;;;;8719:11;:31;;;;-1:-1:-1;;;;;;8734:16:0;;;;;;:5;:16;;;;;;;;8719:31;8714:64;;;8755:20;:18;:20::i;:::-;-1:-1:-1;;;;;8803:23:0;;8821:4;8803:23;;;;:53;;-1:-1:-1;;;;;;8830:26:0;;8851:4;8830:26;;8803:53;:73;;;;-1:-1:-1;8870:6:0;;-1:-1:-1;;;;;8860:16:0;;;8870:6;;8860:16;;8803:73;8798:155;;;8889:39;8902:6;8910:9;8921:6;8889:12;:39::i;:::-;8881:69;;;;-1:-1:-1;;;8881:69:0;;19584:2:1;8881:69:0;;;19566:21:1;19623:2;19603:18;;;19596:30;-1:-1:-1;;;19642:18:1;;;19635:47;19699:18;;8881:69:0;19382:341:1;8881:69:0;8963:18;8984:40;8998:6;9006:9;9017:6;8984:13;:40::i;:::-;8963:61;-1:-1:-1;9035:23:0;9061:19;8963:61;9061:6;:19;:::i;:::-;-1:-1:-1;;;;;9111:17:0;;;;;;:9;:17;;;;;;9035:45;;-1:-1:-1;9111:26:0;;9131:6;;9111:26;:::i;:::-;-1:-1:-1;;;;;9091:17:0;;;;;;:9;:17;;;;;:46;9153:14;;9148:91;;9217:4;9199:24;;;;:9;:24;;;;;;:37;;9226:10;;9199:37;:::i;:::-;9190:4;9172:24;;;;:9;:24;;;;;:64;9148:91;-1:-1:-1;;;;;9272:20:0;;;;;;:9;:20;;;;;;:38;;9295:15;;9272:38;:::i;:::-;-1:-1:-1;;;;;9249:20:0;;;;;;;:9;:20;;;;;;;:61;;;;9326:35;;;;;;;;;;9354:6;1895:25:1;;1883:2;1868:18;;1749:177;9326:35:0;;;;;;;;-1:-1:-1;9379:4:0;;8433:958;-1:-1:-1;;;;;8433:958:0:o;16069:366::-;16139:27;16154:11;16139:14;:27::i;:::-;16201:16;;;16215:1;16201:16;;;;;;;;16177:21;;16201:16;;;;;;;;;;-1:-1:-1;16201:16:0;16177:40;;16246:4;16228;16233:1;16228:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16228:23:0;;;:7;;;;;;;;;;:23;;;;16272:18;;:25;;;-1:-1:-1;;;16272:25:0;;;;:18;;;;;:23;;:25;;;;;16228:7;;16272:25;;;;;:18;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16262:4;16267:1;16262:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16262:35:0;;;:7;;;;;;;;;:35;16308:18;;:119;;-1:-1:-1;;;16308:119:0;;:18;;;:69;;:119;;16378:11;;16308:18;;16392:4;;16405;;16411:15;;16308:119;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16128:307;16069:366;:::o;16443:541::-;16505:21;16551;;16529:43;;16551:21;-1:-1:-1;;;16551:21:0;;;;;-1:-1:-1;;;16529:19:0;;;:43;:::i;:::-;16505:67;-1:-1:-1;16587:18:0;;;;16583:394;;16622:23;16657:19;;16648:45;;;;;:28;;-1:-1:-1;;;16657:19:0;;;;16648:6;:28;:::i;:::-;:45;;;;:::i;:::-;16708:25;16745:21;;16622:71;;-1:-1:-1;16708:25:0;16736:47;;;;;:30;;-1:-1:-1;;;16745:21:0;;;;16736:6;:30;:::i;:::-;:47;;;;:::i;:::-;16708:75;-1:-1:-1;16803:19:0;;16798:74;;16827:16;;:42;;:16;;;;-1:-1:-1;;;;;16827:16:0;;:42;;;;;;;;;;;;:16;:42;;;;;;;;;;;;;;;;;;;;;16798:74;16891:21;;16886:80;;16917:18;;:46;;-1:-1:-1;;;;;16917:18:0;;;;:46;;;;;16945:17;;16917:18;:46;:18;:46;16945:17;16917:18;:46;;;;;;;;;;;;;;;;;;;;;16607:370;;16583:394;16494:490;16443:541;:::o;14620:265::-;14701:10;;14696:182;;-1:-1:-1;;;;;14729:21:0;;;;;;:9;:21;;;;;:31;;14754:6;;14729:21;:31;;14754:6;;14729:31;:::i;:::-;;;;-1:-1:-1;;14775:21:0;;;;:9;:21;;;:31;;14800:6;;14775:21;:31;;14800:6;;14775:31;:::i;:::-;;;;-1:-1:-1;;14826:40:0;;1895:25:1;;;14855:1:0;;-1:-1:-1;;;;;14826:40:0;;;;;1883:2:1;1868:18;14826:40:0;;;;;;;14620:265;;:::o;7818:385::-;7948:8;;-1:-1:-1;;;;;7948:8:0;7967:50;;;;-1:-1:-1;8012:1:0;7967:50;8027:28;8042:12;8027:14;:28::i;:::-;8066:18;;:129;;-1:-1:-1;;;8066:129:0;;8133:4;8066:129;;;21186:34:1;21236:18;;;21229:34;;;8066:18:0;21279::1;;;21272:34;;;21322:18;;;21315:34;-1:-1:-1;;;;;21386:15:1;;;21365:19;;;21358:44;8178:15:0;21418:19:1;;;21411:35;8066:18:0;;;;:34;;8108:13;;21120:19:1;;8066:129:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7910:293;7818:385;;;:::o;8211:214::-;8293:3;2480:13;2418:1;2480:2;:13;:::i;:::-;2466:28;;:10;:28;:::i;:::-;8274:16;;8289:1;8274:16;:::i;:::-;:22;;;;:::i;:::-;8255:12;:41;8346:3;2480:13;2418:1;2480:2;:13;:::i;:::-;2466:28;;:10;:28;:::i;:::-;8327:16;;8342:1;8327:16;:::i;:::-;:22;;;;:::i;:::-;8308:16;:41;8360:12;:19;;-1:-1:-1;;8360:19:0;8375:4;8360:19;;;8405:12;8390;:27;8211:214::o;14893:1168::-;4222:10;:17;;-1:-1:-1;;4222:17:0;;;;;15002:4:::1;-1:-1:-1::0;5840:18:0;;;:9;:18;;;;;;14954:54:::1;;15049:11;;15026:19;:34;;:50;;;;-1:-1:-1::0;15064:12:0::1;::::0;::::1;;15026:50;15021:1033;;;15122:11;;15099:19;:34;15094:80;;-1:-1:-1::0;15160:11:0::1;::::0;15094:80:::1;15250:15;::::0;15190:20:::1;15235:12:::0;;15190:20;;15268:1:::1;::::0;15250:15:::1;::::0;;::::1;::::0;15213:34:::1;::::0;-1:-1:-1;;;15235:12:0;::::1;;15213:19:::0;:34:::1;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;15190:79:::0;-1:-1:-1;15298:21:0::1;15322:34;15190:79:::0;15322:19;:34:::1;:::i;:::-;15298:58:::0;-1:-1:-1;15391:13:0::1;2418:1;15391:2;:13;:::i;:::-;15375;:29;15371:521;;;15448:21;15488:35;15509:13:::0;15488:20:::1;:35::i;:::-;15542:19;15564:35;15588:11:::0;15564:21:::1;:35;:::i;:::-;15638:1;15623:12:::0;15542:57;;-1:-1:-1;;;;15623:12:0;::::1;;;:16:::0;15618:259:::1;;15718:15;::::0;15665:21:::1;15703:12:::0;;15665:21;;15718:15:::1;::::0;;::::1;::::0;15689:26:::1;::::0;-1:-1:-1;;;15703:12:0;;::::1;;15689:11:::0;:26:::1;:::i;:::-;:44;;;;:::i;:::-;15665:68;;15757:28;15772:12;15757:14;:28::i;:::-;15808:49;15822:12;15836:13;15851:5;15808:13;:49::i;:::-;15642:235;15618:259;15407:485;;15371:521;15936:21;15975:23:::0;;15972:71:::1;;16002:38;16020:19;16002:17;:38::i;:::-;15079:975;;;15021:1033;-1:-1:-1::0;4264:10:0;:18;;-1:-1:-1;;4264:18:0;;;14893:1168::o;9399:495::-;9564:12;;9503:4;;9544;;9564:12;;:34;;;;-1:-1:-1;;;;;;9581:17:0;;;;;;:9;:17;;;;;;;;9580:18;9564:34;:59;;;;-1:-1:-1;;;;;;9603:20:0;;;;;;:9;:20;;;;;;;;9602:21;9564:59;9559:294;;;9663:12;;9646:14;:29;9641:201;;;-1:-1:-1;9699:5:0;9641:201;;;-1:-1:-1;;;;;9732:16:0;;;;;;:5;:16;;;;;;;;9731:17;:79;;;;-1:-1:-1;9793:16:0;;-1:-1:-1;;;;;9753:20:0;;;;;;:9;:20;;;;;;:37;;9776:14;;9753:37;:::i;:::-;:56;9731:79;9726:116;;;-1:-1:-1;9834:5:0;9870:16;9399:495;-1:-1:-1;;;;9399:495:0:o;10189:847::-;10350:12;;10286:7;;;;10350:12;;10349:13;;:32;;-1:-1:-1;;;;;;10366:15:0;;;;;;:7;:15;;;;;;;;10349:32;:54;;;-1:-1:-1;;;;;;10385:18:0;;;;;;:7;:18;;;;;;;;10349:54;10344:656;;;-1:-1:-1;10434:1:0;10344:656;;;-1:-1:-1;;;;;10459:13:0;;;;;;:5;:13;;;;;;;;10454:546;;;10546:16;;10512:12;;10546:16;-1:-1:-1;;;10546:16:0;;;;;10512:31;;-1:-1:-1;;;10527:16:0;;;;;;;10512:31;:::i;:::-;:50;;;;:::i;:::-;10496:12;:66;10491:400;;10605:11;;10619:3;;10596:20;;-1:-1:-1;;;10605:11:0;;;;10596:6;:20;:::i;:::-;:26;;;;:::i;:::-;10584:38;;10454:546;;10491:400;10681:16;;10666:12;;:31;;-1:-1:-1;;;10681:16:0;;;;;10666:31;:::i;:::-;10650:12;:47;10645:246;;10740:13;;10756:3;;10731:22;;-1:-1:-1;;;10740:13:0;;;;10731:6;:22;:::i;10645:246::-;10802:12;;10786;:28;10781:110;;10856:13;;10872:3;;10847:22;;-1:-1:-1;;;10856:13:0;;;;10847:6;:22;:::i;10781:110::-;10454:546;;;-1:-1:-1;;;;;10913:16:0;;;;;;:5;:16;;;;;;;;10908:92;;;10969:12;;10984:3;;10960:21;;-1:-1:-1;;;10969:12:0;;;;10960:6;:21;:::i;:::-;:27;;;;:::i;:::-;10948:39;10189:847;-1:-1:-1;;;;;10189:847:0:o;6877:317::-;6968:4;6948:26;;;;:11;:26;;;;;;;;3893:42;6948:46;;;;;;;;:61;-1:-1:-1;6943:244:0;;;7047:4;7027:26;;;;:11;:26;;;;;;;;3893:42;7027:46;;;;;;;;;;-1:-1:-1;;7027:66:0;;;;7113:62;;1895:25:1;;;3893:42:0;;7047:4;7113:62;;1868:18:1;7113:62:0;;;;;;;6943:244;6877: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;1215:529::-;1292:6;1300;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:52;;;1377:1;1374;1367:12;1329:52;1416:9;1403:23;1435:31;1460:5;1435:31;:::i;:::-;1485:5;-1:-1:-1;1542:2:1;1527:18;;1514:32;1555:33;1514:32;1555:33;:::i;:::-;1607:7;-1:-1:-1;1666:2:1;1651:18;;1638:32;1679:33;1638:32;1679:33;:::i;:::-;1731:7;1721:17;;;1215:529;;;;;:::o;1931:456::-;2008:6;2016;2024;2077:2;2065:9;2056:7;2052:23;2048:32;2045:52;;;2093:1;2090;2083:12;2045:52;2132:9;2119:23;2151:31;2176:5;2151:31;:::i;:::-;2201:5;-1:-1:-1;2258:2:1;2243:18;;2230:32;2271:33;2230:32;2271:33;:::i;:::-;1931:456;;2323:7;;-1:-1:-1;;;2377:2:1;2362:18;;;;2349:32;;1931:456::o;2581:156::-;2647:20;;2707:4;2696:16;;2686:27;;2676:55;;2727:1;2724;2717:12;2676:55;2581:156;;;:::o;2742:160::-;2807:20;;2863:13;;2856:21;2846:32;;2836:60;;2892:1;2889;2882:12;2907:250;2970:6;2978;3031:2;3019:9;3010:7;3006:23;3002:32;2999:52;;;3047:1;3044;3037:12;2999:52;3070:27;3087:9;3070:27;:::i;:::-;3060:37;;3116:35;3147:2;3136:9;3132:18;3116:35;:::i;:::-;3106:45;;2907:250;;;;;:::o;3162:159::-;3229:20;;3289:6;3278:18;;3268:29;;3258:57;;3311:1;3308;3301:12;3326:256;3392:6;3400;3453:2;3441:9;3432:7;3428:23;3424:32;3421:52;;;3469:1;3466;3459:12;3421:52;3492:28;3510:9;3492:28;:::i;:::-;3482:38;;3539:37;3572:2;3561:9;3557:18;3539:37;:::i;3587:180::-;3646:6;3699:2;3687:9;3678:7;3674:23;3670:32;3667:52;;;3715:1;3712;3705:12;3667:52;-1:-1:-1;3738:23:1;;3587:180;-1:-1:-1;3587:180:1:o;3772:252::-;3836:6;3844;3897:2;3885:9;3876:7;3872:23;3868:32;3865:52;;;3913:1;3910;3903:12;3865:52;3936:27;3953:9;3936:27;:::i;:::-;3926:37;;3982:36;4014:2;4003:9;3999:18;3982:36;:::i;4029:383::-;4100:6;4108;4116;4169:2;4157:9;4148:7;4144:23;4140:32;4137:52;;;4185:1;4182;4175:12;4137:52;4224:9;4211:23;4243:31;4268:5;4243:31;:::i;:::-;4293:5;-1:-1:-1;4317:35:1;4348:2;4333:18;;4317:35;:::i;:::-;4307:45;;4371:35;4402:2;4391:9;4387:18;4371:35;:::i;:::-;4361:45;;4029:383;;;;;:::o;4417:247::-;4476:6;4529:2;4517:9;4508:7;4504:23;4500:32;4497:52;;;4545:1;4542;4535:12;4497:52;4584:9;4571:23;4603:31;4628:5;4603:31;:::i;5039:367::-;5102:8;5112:6;5166:3;5159:4;5151:6;5147:17;5143:27;5133:55;;5184:1;5181;5174:12;5133:55;-1:-1:-1;5207:20:1;;5250:18;5239:30;;5236:50;;;5282:1;5279;5272:12;5236:50;5319:4;5311:6;5307:17;5295:29;;5379:3;5372:4;5362:6;5359:1;5355:14;5347:6;5343:27;5339:38;5336:47;5333:67;;;5396:1;5393;5386:12;5333:67;5039:367;;;;;:::o;5411:773::-;5533:6;5541;5549;5557;5610:2;5598:9;5589:7;5585:23;5581:32;5578:52;;;5626:1;5623;5616:12;5578:52;5666:9;5653:23;5695:18;5736:2;5728:6;5725:14;5722:34;;;5752:1;5749;5742:12;5722:34;5791:70;5853:7;5844:6;5833:9;5829:22;5791:70;:::i;:::-;5880:8;;-1:-1:-1;5765:96:1;-1:-1:-1;5968:2:1;5953:18;;5940:32;;-1:-1:-1;5984:16:1;;;5981:36;;;6013:1;6010;6003:12;5981:36;;6052:72;6116:7;6105:8;6094:9;6090:24;6052:72;:::i;:::-;5411:773;;;;-1:-1:-1;6143:8:1;-1:-1:-1;;;;5411:773:1:o;6397:328::-;6471:6;6479;6487;6540:2;6528:9;6519:7;6515:23;6511:32;6508:52;;;6556:1;6553;6546:12;6508:52;6579:28;6597:9;6579:28;:::i;:::-;6569:38;;6626:37;6659:2;6648:9;6644:18;6626:37;:::i;:::-;6616:47;;6682:37;6715:2;6704:9;6700:18;6682:37;:::i;6730:163::-;6797:20;;6857:10;6846:22;;6836:33;;6826:61;;6883:1;6880;6873:12;6898:401;6980:6;6988;6996;7004;7057:3;7045:9;7036:7;7032:23;7028:33;7025:53;;;7074:1;7071;7064:12;7025:53;7097:28;7115:9;7097:28;:::i;:::-;7087:38;;7144:37;7177:2;7166:9;7162:18;7144:37;:::i;:::-;7134:47;;7200:37;7233:2;7222:9;7218:18;7200:37;:::i;:::-;7190:47;;7256:37;7289:2;7278:9;7274:18;7256:37;:::i;:::-;7246:47;;6898:401;;;;;;;:::o;7304:388::-;7372:6;7380;7433:2;7421:9;7412:7;7408:23;7404:32;7401:52;;;7449:1;7446;7439:12;7401:52;7488:9;7475:23;7507:31;7532:5;7507:31;:::i;:::-;7557:5;-1:-1:-1;7614:2:1;7599:18;;7586:32;7627:33;7586:32;7627:33;:::i;:::-;7679:7;7669:17;;;7304:388;;;;;:::o;7957:348::-;8159:2;8141:21;;;8198:2;8178:18;;;8171:30;8237:26;8232:2;8217:18;;8210:54;8296:2;8281:18;;7957:348::o;8662:127::-;8723:10;8718:3;8714:20;8711:1;8704:31;8754:4;8751:1;8744:15;8778:4;8775:1;8768:15;8794:422;8883:1;8926:5;8883:1;8940:270;8961:7;8951:8;8948:21;8940:270;;;9020:4;9016:1;9012:6;9008:17;9002:4;8999:27;8996:53;;;9029:18;;:::i;:::-;9079:7;9069:8;9065:22;9062:55;;;9099:16;;;;9062:55;9178:22;;;;9138:15;;;;8940:270;;;8944:3;8794:422;;;;;:::o;9221:806::-;9270:5;9300:8;9290:80;;-1:-1:-1;9341:1:1;9355:5;;9290:80;9389:4;9379:76;;-1:-1:-1;9426:1:1;9440:5;;9379:76;9471:4;9489:1;9484:59;;;;9557:1;9552:130;;;;9464:218;;9484:59;9514:1;9505:10;;9528:5;;;9552:130;9589:3;9579:8;9576:17;9573:43;;;9596:18;;:::i;:::-;-1:-1:-1;;9652:1:1;9638:16;;9667:5;;9464:218;;9766:2;9756:8;9753:16;9747:3;9741:4;9738:13;9734:36;9728:2;9718:8;9715:16;9710:2;9704:4;9701:12;9697:35;9694:77;9691:159;;;-1:-1:-1;9803:19:1;;;9835:5;;9691:159;9882:34;9907:8;9901:4;9882:34;:::i;:::-;9952:6;9948:1;9944:6;9940:19;9931:7;9928:32;9925:58;;;9963:18;;:::i;:::-;10001:20;;9221:806;-1:-1:-1;;;9221:806:1:o;10032:140::-;10090:5;10119:47;10160:4;10150:8;10146:19;10140:4;10119:47;:::i;10177:168::-;10250:9;;;10281;;10298:15;;;10292:22;;10278:37;10268:71;;10319:18;;:::i;10350:340::-;10552:2;10534:21;;;10591:2;10571:18;;;10564:30;-1:-1:-1;;;10625:2:1;10610:18;;10603:46;10681:2;10666:18;;10350:340::o;10695:128::-;10762:9;;;10783:11;;;10780:37;;;10797:18;;:::i;11183:217::-;11223:1;11249;11239:132;;11293:10;11288:3;11284:20;11281:1;11274:31;11328:4;11325:1;11318:15;11356:4;11353:1;11346:15;11239:132;-1:-1:-1;11385:9:1;;11183:217::o;11739:125::-;11804:9;;;11825:10;;;11822:36;;;11838:18;;:::i;12895:148::-;12983:4;12962:12;;;12976;;;12958:31;;13001:13;;12998:39;;;13017:18;;:::i;14439:127::-;14500:10;14495:3;14491:20;14488:1;14481:31;14531:4;14528:1;14521:15;14555:4;14552:1;14545:15;14571:135;14610:3;14631:17;;;14628:43;;14651:18;;:::i;:::-;-1:-1:-1;14698:1:1;14687:13;;14571:135::o;15314:168::-;15381:6;15407:10;;;15419;;;15403:27;;15442:11;;;15439:37;;;15456:18;;:::i;:::-;15439:37;15314:168;;;;:::o;18243:251::-;18313:6;18366:2;18354:9;18345:7;18341:23;18337:32;18334:52;;;18382:1;18379;18372:12;18334:52;18414:9;18408:16;18433:31;18458:5;18433:31;:::i;19860:980::-;20122:4;20170:3;20159:9;20155:19;20201:6;20190:9;20183:25;20227:2;20265:6;20260:2;20249:9;20245:18;20238:34;20308:3;20303:2;20292:9;20288:18;20281:31;20332:6;20367;20361:13;20398:6;20390;20383:22;20436:3;20425:9;20421:19;20414:26;;20475:2;20467:6;20463:15;20449:29;;20496:1;20506:195;20520:6;20517:1;20514:13;20506:195;;;20585:13;;-1:-1:-1;;;;;20581:39:1;20569:52;;20676:15;;;;20641:12;;;;20617:1;20535:9;20506:195;;;-1:-1:-1;;;;;;;20757:32:1;;;;20752:2;20737:18;;20730:60;-1:-1:-1;;;20821:3:1;20806:19;20799:35;20718:3;19860:980;-1:-1:-1;;;19860:980:1:o;21457:306::-;21545:6;21553;21561;21614:2;21602:9;21593:7;21589:23;21585:32;21582:52;;;21630:1;21627;21620:12;21582:52;21659:9;21653:16;21643:26;;21709:2;21698:9;21694:18;21688:25;21678:35;;21753:2;21742:9;21738:18;21732:25;21722:35;;21457:306;;;;;:::o

Swarm Source

ipfs://6ad72055983dd57e34db28fa9b538720178f516884c55701e794f49963c97412
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.