ETH Price: $2,729.08 (+4.67%)

Token

NEKO NENJA (NENJA)
 

Overview

Max Total Supply

100,000,000 NENJA

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
445,000 NENJA

Value
$0.00
0x76e39a9ac0ad6ab4269589f528ce82fe8d86d523
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:
NENJA

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 9999 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-30
*/

// Website : https://NekoNenja.com
// Telegram : https://t.me/NENJA_PORTAL
// Twitter : https://twitter.com/NekoNenja

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

abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract NENJA is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public isExcludedFromMaxWalletRestrictions;

    mapping (address => bool) private _isSniperOrBlacklisted;
    
    mapping (address => uint256) firstBuy;
    
    uint256 private startingSupply = 100_000_000;

    string private _name = "NEKO NENJA";
    string private _symbol = "NENJA";
//==========================
    // FEES
    struct taxes {
    uint buyFee;
    uint sellFee;
    uint transferFee;
    uint antiDumpLT;
    }

    taxes public Fees = taxes(
    {buyFee: 1100, sellFee: 1500, transferFee: 2000, antiDumpLT: 2200});
//==========================
    // Maxima

    struct Maxima {
    uint maxBuy;
    uint maxSell;
    uint maxTransfer;
    uint maxAntiDump;
    }

    Maxima public maxFees = Maxima(
    {maxBuy: 1300, maxSell: 1750, maxTransfer: 2500, maxAntiDump: 2500});
//==========================    
    //Proportions of Taxes
    struct feeProportions {
    uint liquidity;
    uint burn;
    uint operations;
    uint developer;
    }

    feeProportions public Ratios = feeProportions(
    { liquidity: 150, burn: 50, operations: 600, developer: 300});
//==========================
    // Anti-Dump
    struct jeetParameters {
    uint longTerm;
    bool enabled;
    }
    jeetParameters public terms = jeetParameters(
    {longTerm: 24 hours, enabled: true});
    // Anti-Dump
//==========================
    uint256 private constant masterTaxDivisor = 10000;
    uint256 private constant MAX = ~uint256(0);
    uint8 constant private _decimals = 9;
 
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // UNI ROUTER
    address constant private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD; // Receives tokens, deflates supply, increases price floor.
    
    address payable public _operationsWallet = payable(0x32Ca3870FcA32927D142691792321bbD4F3510b7);
    address payable public _developerWallet = payable(0x83279B0794865e163B7f3c18bb23e809a14b8F68);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent = 5;
    uint256 private maxTxDivisor = 1_000;
    uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    
    uint256 private maxWalletPercent = 15;
    uint256 private maxWalletDivisor = 1_000;
    uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
    
    uint256 private swapThreshold = (_tTotal * 5) / 10_000;
    uint256 private swapAmount = (_tTotal * 5) / 1_000;

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0; // make constant
    uint256 private snipeBlockAmt = 0;
    uint256 public snipersCaught = 0;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller != owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

        // Set the owner.
        _owner = msg.sender;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

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

        // Approve the owner for Uniswap, timesaver.
        _approve(_msgSender(), _routerAddress, _tTotal);

        // Event regarding the tTotal transferred to the _msgSender.
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (_operationsWallet == payable(_owner))
            _operationsWallet = payable(newOwner);
        
        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner() {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
    
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

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

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

    function getFirstBuy(address account) public view returns (uint256) {
        return firstBuy[account];
    }

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

        return _transfer(sender, recipient, amount);
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 1 weeks, "One week cooldown.");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

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

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


    function excludeFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = true;
    }

    function revokeExcludedFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = false;
    }

    function isSniperOrBlacklisted(address account) public view returns (bool) {
        return _isSniperOrBlacklisted[account];
    }

    function isProtected(uint256 rInitializer) external onlyOwner {
        require (_liqAddStatus == 0, "Error.");
        _liqAddStatus = rInitializer;
        snipeBlockAmt = 2;
    }

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

    function setRatios(uint _liquidity, uint _operations, uint _developer, uint _burn) external onlyOwner {
        require ( (_liquidity+_operations+_developer+_burn) == 1100, "!(1K)");
        Ratios.liquidity = _liquidity;
        Ratios.operations = _operations;
        Ratios.developer = _developer;
        Ratios.burn = _burn;}

    function antiDumpParameters(bool _enabled, uint _longTerm) external onlyOwner {
        require(_longTerm <= 24);
        terms.longTerm = _longTerm * 1 hours;
        terms.enabled = _enabled;}

    function setTaxes(uint _buyFee, uint _sellFee, uint _transferFee, uint _antiDumpLT) external onlyOwner {
        require(_buyFee <= maxFees.maxBuy
                && _sellFee <= maxFees.maxSell
                && _transferFee <= maxFees.maxTransfer
                && _antiDumpLT <= maxFees.maxAntiDump,
                "Cannot exceed maximums.");
         Fees.buyFee = _buyFee;
         Fees.sellFee = _sellFee;
         Fees.transferFee = _transferFee;
         Fees.antiDumpLT= _antiDumpLT;

    }

    function setMaxTxPercent(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxTxAmount = check;
    }

    function setMaxWalletSize(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxWalletSize = check;

    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setWallets(address payable operationsWallet, address payable developerWallet) external onlyOwner {
        _operationsWallet = payable(operationsWallet);
        _developerWallet = payable(developerWallet);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        if(_hasLimits(from, to)) {
            if(!(isExcludedFromMaxWalletRestrictions[from] || isExcludedFromMaxWalletRestrictions[to])) {
                if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
                }
                if(to != _routerAddress && !lpPairs[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                }

            }
            
        }


        if (_tOwned[to] == 0) {
            firstBuy[to] = block.timestamp;
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (Ratios.liquidity + Ratios.operations + Ratios.developer == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.operations + Ratios.developer) ) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.operations + Ratios.developer) ) / 2;

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {
            _operationsWallet.transfer(((currentBalance - liquidityBalance) * Ratios.developer) / (Ratios.operations + Ratios.developer));
            _developerWallet.transfer(address(this).balance);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            if (snipeBlockAmt != 2) {
                _liqAddBlock = block.number + 5000;
            } else {
                _liqAddBlock = block.number;
            }

            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (sniperProtection){
            if (isSniperOrBlacklisted(from) || isSniperOrBlacklisted(to)) {
                revert("Sniper rejected.");
            }

            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
            } else {
                if (_liqAddBlock > 0 
                    && lpPairs[from] 
                    && _hasLimits(from, to)
                ) {
                    if (block.number - _liqAddBlock < snipeBlockAmt) {
                        _isSniperOrBlacklisted[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }
            }
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount; //A
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;

        if (to == lpPair) {
            if (terms.enabled){
                if (firstBuy[from] + terms.longTerm > block.timestamp) {currentFee = Fees.antiDumpLT;}

                else {currentFee = Fees.sellFee;}
            }
            else {currentFee=Fees.sellFee;}
            } 

        else if (from == lpPair) {currentFee = Fees.buyFee;} 

        else {currentFee = Fees.transferFee;}

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != (20*_decimals+36)) {
                revert();
            }
        }
        uint256 burnAmt = (amount * currentFee * Ratios.burn) / (Ratios.burn + Ratios.liquidity + Ratios.operations + Ratios.developer ) / masterTaxDivisor;
        uint256 feeAmount = (amount * currentFee / masterTaxDivisor) - burnAmt;
        _tOwned[DEAD] += burnAmt;
        _tOwned[address(this)] += (feeAmount);
        emit Transfer(from, DEAD, burnAmt);
        emit Transfer(from, address(this), feeAmount);
        return amount - feeAmount - burnAmt;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Fees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"},{"internalType":"uint256","name":"antiDumpLT","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ratios","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"operations","type":"uint256"},{"internalType":"uint256","name":"developer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developerWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_operationsWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_longTerm","type":"uint256"}],"name":"antiDumpParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"excludeFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getFirstBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxWalletRestrictions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rInitializer","type":"uint256"}],"name":"isProtected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniperOrBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFees","outputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxTransfer","type":"uint256"},{"internalType":"uint256","name":"maxAntiDump","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"revokeExcludedFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_operations","type":"uint256"},{"internalType":"uint256","name":"_developer","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"},{"internalType":"uint256","name":"_antiDumpLT","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"operationsWallet","type":"address"},{"internalType":"address payable","name":"developerWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"terms","outputs":[{"internalType":"uint256","name":"longTerm","type":"uint256"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006003556305f5e100600a90815560c06040526080819052694e454b4f204e454e4a4160b01b60a09081526200003a91600b919062000700565b50604080518082019091526005808252644e454e4a4160d81b60209092019182526200006991600c9162000700565b50604080516080808201835261044c8083526105dc60208085018290526107d08587018190526108986060968701819052600d94909455600e92909255600f91909155601091909155835180830185526105148082526106d68284018190526109c48388018190529286018390526011919091556012556013819055601455835191820184526096808352603283830181905261025884870181905261012c94909501849052601591909155601655601792909255601855815180830190925262015180808352600192909101829052601955601a805460ff19169091179055620001576009600a62000844565b600a5462000166919062000905565b601b819055601f80546001600160a01b0319167332ca3870fca32927d142691792321bbd4f3510b717905560208054600161ff0160a01b0319167383279b0794865e163b7f3c18bb23e809a14b8f68179055600560218190556103e8602281905591620001d4919062000905565b620001e09190620007d8565b602355600f6024556103e8602555602554602454601b5462000203919062000905565b6200020f9190620007d8565b602655612710601b54600562000226919062000905565b620002329190620007d8565b6027556103e8601b54600562000249919062000905565b620002559190620007d8565b6028556029805461ffff191660019081179091556000602a819055602b819055602c819055602d819055602e819055602f819055601b549190620002963390565b6001600160a01b0316815260208082019290925260409081016000908120939093558254336001600160a01b031991821617909355601d8054737a250d5630b4cf539739df2c5dacb4c659f2488d941684179055805163c45a015560e01b8152905163c45a015592600480840193919291829003018186803b1580156200031c57600080fd5b505afa15801562000331573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003579190620007a6565b6001600160a01b031663c9c65396601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b457600080fd5b505afa158015620003c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ef9190620007a6565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200043757600080fd5b505af11580156200044c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004729190620007a6565b601e80546001600160a01b0319166001600160a01b039283169081179091556000908152600260209081526040808320805460ff1916600190811790915530845260048352818420601d5490951684529390915281206000199055600690620004e36000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252812080548316600190811790915561dead82527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805490931681179092556005906200056b6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620005be6200059f3390565b601b54737a250d5630b4cf539739df2c5dacb4c659f2488d90620005ff565b601b5460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36200097a565b6001600160a01b038316620006515760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200069f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000648565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8280546200070e9062000927565b90600052602060002090601f0160209004810192826200073257600085556200077d565b82601f106200074d57805160ff19168380011785556200077d565b828001600101855582156200077d579182015b828111156200077d57825182559160200191906001019062000760565b506200078b9291506200078f565b5090565b5b808211156200078b576000815560010162000790565b600060208284031215620007b957600080fd5b81516001600160a01b0381168114620007d157600080fd5b9392505050565b600082620007f657634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200083c57816000190482111562000820576200082062000964565b808516156200082e57918102915b93841c939080029062000800565b509250929050565b6000620007d160ff8416836000826200086057506001620008ff565b816200086f57506000620008ff565b81600181146200088857600281146200089357620008b3565b6001915050620008ff565b60ff841115620008a757620008a762000964565b50506001821b620008ff565b5060208310610133831016604e8410600b8410161715620008d8575081810a620008ff565b620008e48383620007fb565b8060001904821115620008fb57620008fb62000964565b0290505b92915050565b600081600019048311821515161562000922576200092262000964565b500290565b600181811c908216806200093c57607f821691505b602082108114156200095e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6133c8806200098a6000396000f3fe60806040526004361061030c5760003560e01c806380c581d11161019a578063bc1323e8116100e1578063e5b55c6b1161008a578063eafb5a3c11610064578063eafb5a3c1461095a578063eec2744e1461097a578063fb78680d1461099a57600080fd5b8063e5b55c6b14610901578063e79d416014610921578063e83e34b11461093757600080fd5b8063d3f6a157116100bb578063d3f6a15714610868578063d502562514610888578063dd62ed3e146108bb57600080fd5b8063bc1323e814610808578063c49b9a8014610828578063ce8b79c91461084857600080fd5b806395d89b4111610143578063a457c2d71161011d578063a457c2d7146107a5578063a9059cbb146107c5578063b5f7bfa2146107e557600080fd5b806395d89b411461073a578063a12a7d611461074f578063a13ce2c61461076f57600080fd5b806389fd9bc11161017457806389fd9bc1146106d15780638c7321ad1461070a5780638da5cb5b146106b357600080fd5b806380c581d11461067357806381c6f11b14610693578063893d20e8146106b357600080fd5b80633aaa36e61161025e5780634fbee19311610207578063590ffdce116101e1578063590ffdce1461060857806370a0823114610628578063715018a61461065e57600080fd5b80634fbee1931461059057806350a8e016146105c9578063571ac8b0146105e857600080fd5b8063452ed4f111610238578063452ed4f11461051d5780634a74bb021461053d5780634fb2e45d1461057057600080fd5b80633aaa36e61461049a5780633da87806146104dd5780633f3cf56c146104fd57600080fd5b806318160ddd116102c0578063313ce5671161029a578063313ce5671461043e578063355b74de1461045a578063395093511461047a57600080fd5b806318160ddd146103df57806323b872dd146103fe578063260039571461041e57600080fd5b80630758d924116102f15780630758d9241461036d578063095ea7b31461038d5780631793fe4e146103bd57600080fd5b806303fd2a451461031857806306fdde031461034b57600080fd5b3661031357005b600080fd5b34801561032457600080fd5b5061032e61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561035757600080fd5b506103606109ba565b60405161034291906130b6565b34801561037957600080fd5b50601d5461032e906001600160a01b031681565b34801561039957600080fd5b506103ad6103a8366004612fb8565b610a4c565b6040519015158152602001610342565b3480156103c957600080fd5b506103dd6103d8366004613084565b610a62565b005b3480156103eb57600080fd5b50601b545b604051908152602001610342565b34801561040a57600080fd5b506103ad610419366004612f42565b610b45565b34801561042a57600080fd5b506103dd610439366004613034565b610bdb565b34801561044a57600080fd5b5060405160098152602001610342565b34801561046657600080fd5b506103dd610475366004612fff565b610cde565b34801561048657600080fd5b506103ad610495366004612fb8565b610d69565b3480156104a657600080fd5b50600d54600e54600f546010546104bd9392919084565b604080519485526020850193909352918301526060820152608001610342565b3480156104e957600080fd5b50601f5461032e906001600160a01b031681565b34801561050957600080fd5b506103dd610518366004613034565b610da5565b34801561052957600080fd5b50601e5461032e906001600160a01b031681565b34801561054957600080fd5b506020546103ad907501000000000000000000000000000000000000000000900460ff1681565b34801561057c57600080fd5b506103dd61058b366004612ecf565b610ea8565b34801561059c57600080fd5b506103ad6105ab366004612ecf565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105d557600080fd5b506029546103ad90610100900460ff1681565b3480156105f457600080fd5b506103ad610603366004612ecf565b61113c565b34801561061457600080fd5b506103dd610623366004612f83565b61116e565b34801561063457600080fd5b506103f0610643366004612ecf565b6001600160a01b031660009081526001602052604090205490565b34801561066a57600080fd5b506103dd6111f3565b34801561067f57600080fd5b506103dd61068e366004612f83565b6112ba565b34801561069f57600080fd5b506103dd6106ae36600461301b565b6113ce565b3480156106bf57600080fd5b506000546001600160a01b031661032e565b3480156106dd57600080fd5b506103ad6106ec366004612ecf565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561071657600080fd5b506103ad610725366004612ecf565b60076020526000908152604090205460ff1681565b34801561074657600080fd5b50610360611482565b34801561075b57600080fd5b506103dd61076a366004613084565b611491565b34801561077b57600080fd5b506103f061078a366004612ecf565b6001600160a01b031660009081526009602052604090205490565b3480156107b157600080fd5b506103ad6107c0366004612fb8565b61157b565b3480156107d157600080fd5b506103ad6107e0366004612fb8565b6115b2565b3480156107f157600080fd5b506015546016546017546018546104bd9392919084565b34801561081457600080fd5b506103dd610823366004612ecf565b6115c9565b34801561083457600080fd5b506103dd610843366004612fe4565b611644565b34801561085457600080fd5b506103dd610863366004612ecf565b61171b565b34801561087457600080fd5b506103dd610883366004612f09565b611799565b34801561089457600080fd5b50601954601a546108a6919060ff1682565b60408051928352901515602083015201610342565b3480156108c757600080fd5b506103f06108d6366004612f09565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561090d57600080fd5b5060205461032e906001600160a01b031681565b34801561092d57600080fd5b506103f0602f5481565b34801561094357600080fd5b506011546012546013546014546104bd9392919084565b34801561096657600080fd5b506103dd610975366004612ecf565b611839565b34801561098657600080fd5b506103dd610995366004612f83565b611c67565b3480156109a657600080fd5b506103dd6109b5366004613084565b611cec565b6060600b80546109c99061328f565b80601f01602080910402602001604051908101604052809291908181526020018280546109f59061328f565b8015610a425780601f10610a1757610100808354040283529160200191610a42565b820191906000526020600020905b815481529060010190602001808311610a2557829003601f168201915b5050505050905090565b6000610a59338484611d85565b50600192915050565b6000546001600160a01b03163314610ac15760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e0000000000000000000000000000000060448201526064015b60405180910390fd5b8082610acd858761319a565b610ad7919061319a565b610ae1919061319a565b61044c14610b315760405162461bcd60e51b815260206004820152600560248201527f2128314b290000000000000000000000000000000000000000000000000000006044820152606401610ab8565b601593909355601791909155601855601655565b6001600160a01b03831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610bc8576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610bc2908490613278565b90915550505b610bd3848484611e92565b949350505050565b6000546001600160a01b03163314610c355760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b60008183601b54610c469190613212565b610c5091906131d7565b905061012c601b54610c6291906131d7565b811015610cd75760405162461bcd60e51b815260206004820152602560248201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560448201527f70706c792e0000000000000000000000000000000000000000000000000000006064820152608401610ab8565b6026555050565b6000546001600160a01b03163314610d385760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b6018811115610d4657600080fd5b610d5281610e10613212565b60195550601a805460ff1916911515919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610a59918590610da090869061319a565b611d85565b6000546001600160a01b03163314610dff5760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b60008183601b54610e109190613212565b610e1a91906131d7565b905061012c601b54610e2c91906131d7565b811015610ea15760405162461bcd60e51b815260206004820152602560248201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560448201527f70706c792e0000000000000000000000000000000000000000000000000000006064820152608401610ab8565b6023555050565b6000546001600160a01b03163314610f025760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b6001600160a01b038116610f7e5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ab8565b6001600160a01b03811661dead1415610fff5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ab8565b60008054611018916001600160a01b039091169061116e565b61102381600161116e565b600054601f546001600160a01b039081169116141561107057601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600080546001600160a01b039081168252600160208181526040808520546004835281862087861687528352818620558454909316845252902054156110d957600080546001600160a01b031680825260016020526040909120546110d791908390611e92565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000611168827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a4c565b92915050565b6000546001600160a01b031633146111c85760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461124d5760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b60008054611266916001600160a01b039091169061116e565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146113145760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b8061133b57506001600160a01b03166000908152600260205260409020805460ff19169055565b600354156113a25762093a80600354426113559190613278565b116113a25760405162461bcd60e51b815260206004820152601260248201527f4f6e65207765656b20636f6f6c646f776e2e00000000000000000000000000006044820152606401610ab8565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b031633146114285760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b602a54156114785760405162461bcd60e51b815260206004820152600660248201527f4572726f722e00000000000000000000000000000000000000000000000000006044820152606401610ab8565b602a556002602e55565b6060600c80546109c99061328f565b6000546001600160a01b031633146114eb5760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b60115484118015906114ff57506012548311155b801561150d57506013548211155b801561151b57506014548111155b6115675760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ab8565b600d93909355600e91909155600f55601055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610a59918590610da0908690613278565b60006115bf338484611e92565b5060019392505050565b6000546001600160a01b031633146116235760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b0316331461169e5760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b602080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000008315159081029190911782556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a150565b6000546001600160a01b031633146117755760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b031633146117f35760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b601f80546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560208054929093169116179055565b6000546001600160a01b031633146118935760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118d357600080fd5b505afa1580156118e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190b9190612eec565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561195357600080fd5b505afa158015611967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198b9190612eec565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a219190612eec565b90506001600160a01b038116611bf757816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a6a57600080fd5b505afa158015611a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa29190612eec565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611aea57600080fd5b505afa158015611afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b229190612eec565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015611b8257600080fd5b505af1158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba9190612eec565b601e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055611c2b565b601e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b50601d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6000546001600160a01b03163314611cc15760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611d465760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b8284601b54611d559190613212565b611d5f91906131d7565b602755601b548190611d72908490613212565b611d7c91906131d7565b60285550505050565b6001600160a01b038316611ddb5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ab8565b6001600160a01b038216611e315760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ab8565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611eea5760405162461bcd60e51b815260206004820152601460248201527f45524332303a205a65726f20616464726573732e0000000000000000000000006044820152606401610ab8565b6001600160a01b038316611f405760405162461bcd60e51b815260206004820152601460248201527f45524332303a205a65726f20616464726573732e0000000000000000000000006044820152606401610ab8565b60008211611f905760405162461bcd60e51b815260206004820152600860248201527f4d757374203e302e0000000000000000000000000000000000000000000000006044820152606401610ab8565b611f9a8484612275565b1561213e576001600160a01b03841660009081526007602052604090205460ff1680611fde57506001600160a01b03831660009081526007602052604090205460ff165b61213e576001600160a01b03841660009081526002602052604090205460ff168061202157506001600160a01b03831660009081526002602052604090205460ff165b15612078576023548211156120785760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e00000000000000006044820152606401610ab8565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d148015906120be57506001600160a01b03831660009081526002602052604090205460ff16155b1561213e57602654826120e6856001600160a01b031660009081526001602052604090205490565b6120f0919061319a565b111561213e5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610ab8565b6001600160a01b038316600090815260016020526040902054612177576001600160a01b03831660009081526009602052604090204290555b6001600160a01b03841660009081526006602052604090205460019060ff16806121b957506001600160a01b03841660009081526006602052604090205460ff165b156121c2575060005b6001600160a01b03841660009081526002602052604090205460ff16156122605760205474010000000000000000000000000000000000000000900460ff1615801561222957506020547501000000000000000000000000000000000000000000900460ff165b156122605730600090815260016020526040902054602754811061225e57602854811061225557506028545b61225e81612333565b505b61226c8585858461257a565b95945050505050565b600080546001600160a01b038481169116148015906122a257506000546001600160a01b03838116911614155b80156122c757506001600160a01b03821660009081526005602052604090205460ff16155b80156122ec57506001600160a01b03831660009081526005602052604090205460ff16155b801561230357506001600160a01b03821661dead14155b801561231757506001600160a01b03821615155b801561232c57506001600160a01b0383163014155b9392505050565b602080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055601854601754601554612385919061319a565b61238f919061319a565b6123985761254f565b60185460175460155460009260029290916123b3919061319a565b6123bd919061319a565b6015546123ca9085613212565b6123d491906131d7565b6123de91906131d7565b905060006123ec8284613278565b90506123f78161285e565b6018546017546015544792600092600292612412919061319a565b61241c919061319a565b6015546124299085613212565b61243391906131d7565b61243d91906131d7565b905083156124915761244f84826129e0565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b600061249d8587613278565b111561254a57601f546018546017546001600160a01b03909216916108fc916124c59161319a565b6018546124d28587613278565b6124dc9190613212565b6124e691906131d7565b6040518115909202916000818181858888f1935050505015801561250e573d6000803e3d6000fd5b506020546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612548573d6000803e3d6000fd5b505b505050505b50602080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60295460009060ff161561278b576001600160a01b03851660009081526008602052604090205460ff16806125c757506001600160a01b03841660009081526008602052604090205460ff165b156126145760405162461bcd60e51b815260206004820152601060248201527f536e697065722072656a65637465642e000000000000000000000000000000006044820152606401610ab8565b602954610100900460ff166126c25761262d8585612ac4565b602954610100900460ff1615801561264a575061264a8585612275565b156126bd5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610ab8565b61278b565b6000602b541180156126ec57506001600160a01b03851660009081526002602052604090205460ff165b80156126fd57506126fd8585612275565b1561278b57602e54602b546127129043613278565b101561278b576001600160a01b0384166000908152600860205260408120805460ff19166001179055602f805491612749836132e3565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b038516600090815260016020526040812080548592906127b3908490613278565b9091555060009050826127c657836127d1565b6127d1868686612c5a565b6001600160a01b0386166000908152600160205260408120805492935083929091906127fe90849061319a565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161284a91815260200190565b60405180910390a350600195945050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106128935761289361334b565b6001600160a01b03928316602091820292909201810191909152601d54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b15801561290057600080fd5b505afa158015612914573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129389190612eec565b8160018151811061294b5761294b61334b565b6001600160a01b039283166020918202929092010152601d546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906129aa908590600090869030904290600401613129565b600060405180830381600087803b1580156129c457600080fd5b505af11580156129d8573d6000803e3d6000fd5b505050505050565b601d546001600160a01b031663f305d719823085600080612a096000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015612a8457600080fd5b505af1158015612a98573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612abd9190613056565b5050505050565b602954610100900460ff1615612b425760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610ab8565b612b4c8282612275565b158015612b665750601e546001600160a01b038281169116145b156113ca57602e54600214612b8957612b814361138861319a565b602b55612b8e565b43602b555b6001600160a01b038216600090815260056020908152604091829020805460ff19166001908117909155602980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905542602c5581547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000017825591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b601e5460009081906001600160a01b0385811691161415612cbf57601a5460ff1615612cb6576019546001600160a01b0386166000908152600960205260409020544291612ca79161319a565b1115612cb65750601054612ce3565b50600e54612ce3565b601e546001600160a01b0386811691161415612cde5750600d54612ce3565b50600f545b612ced8585612275565b15612d2657602a541580612d1c5750612d086009601461324f565b612d139060246131b2565b60ff16602a5414155b15612d2657600080fd5b6018546017546015546016546000936127109390929091612d47919061319a565b612d51919061319a565b612d5b919061319a565b601654612d688588613212565b612d729190613212565b612d7c91906131d7565b612d8691906131d7565b9050600081612710612d988588613212565b612da291906131d7565b612dac9190613278565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d80549293508492909190612def90849061319a565b90915550503060009081526001602052604081208054839290612e1390849061319a565b909155505060405182815261dead906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a381612ea58287613278565b612eaf9190613278565b979650505050505050565b80358015158114612eca57600080fd5b919050565b600060208284031215612ee157600080fd5b813561232c8161337a565b600060208284031215612efe57600080fd5b815161232c8161337a565b60008060408385031215612f1c57600080fd5b8235612f278161337a565b91506020830135612f378161337a565b809150509250929050565b600080600060608486031215612f5757600080fd5b8335612f628161337a565b92506020840135612f728161337a565b929592945050506040919091013590565b60008060408385031215612f9657600080fd5b8235612fa18161337a565b9150612faf60208401612eba565b90509250929050565b60008060408385031215612fcb57600080fd5b8235612fd68161337a565b946020939093013593505050565b600060208284031215612ff657600080fd5b61232c82612eba565b6000806040838503121561301257600080fd5b612fd683612eba565b60006020828403121561302d57600080fd5b5035919050565b6000806040838503121561304757600080fd5b50508035926020909101359150565b60008060006060848603121561306b57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561309a57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b818110156130e3578581018301518582016040015282016130c7565b818111156130f5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131795784516001600160a01b031683529383019391830191600101613154565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156131ad576131ad61331c565b500190565b600060ff821660ff84168060ff038211156131cf576131cf61331c565b019392505050565b60008261320d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561324a5761324a61331c565b500290565b600060ff821660ff84168160ff04811182151516156132705761327061331c565b029392505050565b60008282101561328a5761328a61331c565b500390565b600181811c908216806132a357607f821691505b602082108114156132dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133155761331561331c565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6001600160a01b038116811461338f57600080fd5b5056fea264697066735822122060ce70a3f4e7c4a7827ce22b69a2ce0740eba242f5594e2c726b98d25df3b15c64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061030c5760003560e01c806380c581d11161019a578063bc1323e8116100e1578063e5b55c6b1161008a578063eafb5a3c11610064578063eafb5a3c1461095a578063eec2744e1461097a578063fb78680d1461099a57600080fd5b8063e5b55c6b14610901578063e79d416014610921578063e83e34b11461093757600080fd5b8063d3f6a157116100bb578063d3f6a15714610868578063d502562514610888578063dd62ed3e146108bb57600080fd5b8063bc1323e814610808578063c49b9a8014610828578063ce8b79c91461084857600080fd5b806395d89b4111610143578063a457c2d71161011d578063a457c2d7146107a5578063a9059cbb146107c5578063b5f7bfa2146107e557600080fd5b806395d89b411461073a578063a12a7d611461074f578063a13ce2c61461076f57600080fd5b806389fd9bc11161017457806389fd9bc1146106d15780638c7321ad1461070a5780638da5cb5b146106b357600080fd5b806380c581d11461067357806381c6f11b14610693578063893d20e8146106b357600080fd5b80633aaa36e61161025e5780634fbee19311610207578063590ffdce116101e1578063590ffdce1461060857806370a0823114610628578063715018a61461065e57600080fd5b80634fbee1931461059057806350a8e016146105c9578063571ac8b0146105e857600080fd5b8063452ed4f111610238578063452ed4f11461051d5780634a74bb021461053d5780634fb2e45d1461057057600080fd5b80633aaa36e61461049a5780633da87806146104dd5780633f3cf56c146104fd57600080fd5b806318160ddd116102c0578063313ce5671161029a578063313ce5671461043e578063355b74de1461045a578063395093511461047a57600080fd5b806318160ddd146103df57806323b872dd146103fe578063260039571461041e57600080fd5b80630758d924116102f15780630758d9241461036d578063095ea7b31461038d5780631793fe4e146103bd57600080fd5b806303fd2a451461031857806306fdde031461034b57600080fd5b3661031357005b600080fd5b34801561032457600080fd5b5061032e61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561035757600080fd5b506103606109ba565b60405161034291906130b6565b34801561037957600080fd5b50601d5461032e906001600160a01b031681565b34801561039957600080fd5b506103ad6103a8366004612fb8565b610a4c565b6040519015158152602001610342565b3480156103c957600080fd5b506103dd6103d8366004613084565b610a62565b005b3480156103eb57600080fd5b50601b545b604051908152602001610342565b34801561040a57600080fd5b506103ad610419366004612f42565b610b45565b34801561042a57600080fd5b506103dd610439366004613034565b610bdb565b34801561044a57600080fd5b5060405160098152602001610342565b34801561046657600080fd5b506103dd610475366004612fff565b610cde565b34801561048657600080fd5b506103ad610495366004612fb8565b610d69565b3480156104a657600080fd5b50600d54600e54600f546010546104bd9392919084565b604080519485526020850193909352918301526060820152608001610342565b3480156104e957600080fd5b50601f5461032e906001600160a01b031681565b34801561050957600080fd5b506103dd610518366004613034565b610da5565b34801561052957600080fd5b50601e5461032e906001600160a01b031681565b34801561054957600080fd5b506020546103ad907501000000000000000000000000000000000000000000900460ff1681565b34801561057c57600080fd5b506103dd61058b366004612ecf565b610ea8565b34801561059c57600080fd5b506103ad6105ab366004612ecf565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105d557600080fd5b506029546103ad90610100900460ff1681565b3480156105f457600080fd5b506103ad610603366004612ecf565b61113c565b34801561061457600080fd5b506103dd610623366004612f83565b61116e565b34801561063457600080fd5b506103f0610643366004612ecf565b6001600160a01b031660009081526001602052604090205490565b34801561066a57600080fd5b506103dd6111f3565b34801561067f57600080fd5b506103dd61068e366004612f83565b6112ba565b34801561069f57600080fd5b506103dd6106ae36600461301b565b6113ce565b3480156106bf57600080fd5b506000546001600160a01b031661032e565b3480156106dd57600080fd5b506103ad6106ec366004612ecf565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561071657600080fd5b506103ad610725366004612ecf565b60076020526000908152604090205460ff1681565b34801561074657600080fd5b50610360611482565b34801561075b57600080fd5b506103dd61076a366004613084565b611491565b34801561077b57600080fd5b506103f061078a366004612ecf565b6001600160a01b031660009081526009602052604090205490565b3480156107b157600080fd5b506103ad6107c0366004612fb8565b61157b565b3480156107d157600080fd5b506103ad6107e0366004612fb8565b6115b2565b3480156107f157600080fd5b506015546016546017546018546104bd9392919084565b34801561081457600080fd5b506103dd610823366004612ecf565b6115c9565b34801561083457600080fd5b506103dd610843366004612fe4565b611644565b34801561085457600080fd5b506103dd610863366004612ecf565b61171b565b34801561087457600080fd5b506103dd610883366004612f09565b611799565b34801561089457600080fd5b50601954601a546108a6919060ff1682565b60408051928352901515602083015201610342565b3480156108c757600080fd5b506103f06108d6366004612f09565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561090d57600080fd5b5060205461032e906001600160a01b031681565b34801561092d57600080fd5b506103f0602f5481565b34801561094357600080fd5b506011546012546013546014546104bd9392919084565b34801561096657600080fd5b506103dd610975366004612ecf565b611839565b34801561098657600080fd5b506103dd610995366004612f83565b611c67565b3480156109a657600080fd5b506103dd6109b5366004613084565b611cec565b6060600b80546109c99061328f565b80601f01602080910402602001604051908101604052809291908181526020018280546109f59061328f565b8015610a425780601f10610a1757610100808354040283529160200191610a42565b820191906000526020600020905b815481529060010190602001808311610a2557829003601f168201915b5050505050905090565b6000610a59338484611d85565b50600192915050565b6000546001600160a01b03163314610ac15760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e0000000000000000000000000000000060448201526064015b60405180910390fd5b8082610acd858761319a565b610ad7919061319a565b610ae1919061319a565b61044c14610b315760405162461bcd60e51b815260206004820152600560248201527f2128314b290000000000000000000000000000000000000000000000000000006044820152606401610ab8565b601593909355601791909155601855601655565b6001600160a01b03831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610bc8576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610bc2908490613278565b90915550505b610bd3848484611e92565b949350505050565b6000546001600160a01b03163314610c355760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b60008183601b54610c469190613212565b610c5091906131d7565b905061012c601b54610c6291906131d7565b811015610cd75760405162461bcd60e51b815260206004820152602560248201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560448201527f70706c792e0000000000000000000000000000000000000000000000000000006064820152608401610ab8565b6026555050565b6000546001600160a01b03163314610d385760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b6018811115610d4657600080fd5b610d5281610e10613212565b60195550601a805460ff1916911515919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610a59918590610da090869061319a565b611d85565b6000546001600160a01b03163314610dff5760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b60008183601b54610e109190613212565b610e1a91906131d7565b905061012c601b54610e2c91906131d7565b811015610ea15760405162461bcd60e51b815260206004820152602560248201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560448201527f70706c792e0000000000000000000000000000000000000000000000000000006064820152608401610ab8565b6023555050565b6000546001600160a01b03163314610f025760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b6001600160a01b038116610f7e5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ab8565b6001600160a01b03811661dead1415610fff5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ab8565b60008054611018916001600160a01b039091169061116e565b61102381600161116e565b600054601f546001600160a01b039081169116141561107057601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600080546001600160a01b039081168252600160208181526040808520546004835281862087861687528352818620558454909316845252902054156110d957600080546001600160a01b031680825260016020526040909120546110d791908390611e92565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000611168827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a4c565b92915050565b6000546001600160a01b031633146111c85760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461124d5760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b60008054611266916001600160a01b039091169061116e565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146113145760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b8061133b57506001600160a01b03166000908152600260205260409020805460ff19169055565b600354156113a25762093a80600354426113559190613278565b116113a25760405162461bcd60e51b815260206004820152601260248201527f4f6e65207765656b20636f6f6c646f776e2e00000000000000000000000000006044820152606401610ab8565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b031633146114285760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b602a54156114785760405162461bcd60e51b815260206004820152600660248201527f4572726f722e00000000000000000000000000000000000000000000000000006044820152606401610ab8565b602a556002602e55565b6060600c80546109c99061328f565b6000546001600160a01b031633146114eb5760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b60115484118015906114ff57506012548311155b801561150d57506013548211155b801561151b57506014548111155b6115675760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ab8565b600d93909355600e91909155600f55601055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610a59918590610da0908690613278565b60006115bf338484611e92565b5060019392505050565b6000546001600160a01b031633146116235760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b0316331461169e5760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b602080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000008315159081029190911782556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a150565b6000546001600160a01b031633146117755760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b031633146117f35760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b601f80546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560208054929093169116179055565b6000546001600160a01b031633146118935760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118d357600080fd5b505afa1580156118e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190b9190612eec565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561195357600080fd5b505afa158015611967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198b9190612eec565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a219190612eec565b90506001600160a01b038116611bf757816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a6a57600080fd5b505afa158015611a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa29190612eec565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611aea57600080fd5b505afa158015611afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b229190612eec565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015611b8257600080fd5b505af1158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba9190612eec565b601e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055611c2b565b601e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b50601d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6000546001600160a01b03163314611cc15760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611d465760405162461bcd60e51b815260206004820152601060248201527f43616c6c657220213d206f776e65722e000000000000000000000000000000006044820152606401610ab8565b8284601b54611d559190613212565b611d5f91906131d7565b602755601b548190611d72908490613212565b611d7c91906131d7565b60285550505050565b6001600160a01b038316611ddb5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ab8565b6001600160a01b038216611e315760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ab8565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611eea5760405162461bcd60e51b815260206004820152601460248201527f45524332303a205a65726f20616464726573732e0000000000000000000000006044820152606401610ab8565b6001600160a01b038316611f405760405162461bcd60e51b815260206004820152601460248201527f45524332303a205a65726f20616464726573732e0000000000000000000000006044820152606401610ab8565b60008211611f905760405162461bcd60e51b815260206004820152600860248201527f4d757374203e302e0000000000000000000000000000000000000000000000006044820152606401610ab8565b611f9a8484612275565b1561213e576001600160a01b03841660009081526007602052604090205460ff1680611fde57506001600160a01b03831660009081526007602052604090205460ff165b61213e576001600160a01b03841660009081526002602052604090205460ff168061202157506001600160a01b03831660009081526002602052604090205460ff165b15612078576023548211156120785760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e00000000000000006044820152606401610ab8565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d148015906120be57506001600160a01b03831660009081526002602052604090205460ff16155b1561213e57602654826120e6856001600160a01b031660009081526001602052604090205490565b6120f0919061319a565b111561213e5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610ab8565b6001600160a01b038316600090815260016020526040902054612177576001600160a01b03831660009081526009602052604090204290555b6001600160a01b03841660009081526006602052604090205460019060ff16806121b957506001600160a01b03841660009081526006602052604090205460ff165b156121c2575060005b6001600160a01b03841660009081526002602052604090205460ff16156122605760205474010000000000000000000000000000000000000000900460ff1615801561222957506020547501000000000000000000000000000000000000000000900460ff165b156122605730600090815260016020526040902054602754811061225e57602854811061225557506028545b61225e81612333565b505b61226c8585858461257a565b95945050505050565b600080546001600160a01b038481169116148015906122a257506000546001600160a01b03838116911614155b80156122c757506001600160a01b03821660009081526005602052604090205460ff16155b80156122ec57506001600160a01b03831660009081526005602052604090205460ff16155b801561230357506001600160a01b03821661dead14155b801561231757506001600160a01b03821615155b801561232c57506001600160a01b0383163014155b9392505050565b602080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055601854601754601554612385919061319a565b61238f919061319a565b6123985761254f565b60185460175460155460009260029290916123b3919061319a565b6123bd919061319a565b6015546123ca9085613212565b6123d491906131d7565b6123de91906131d7565b905060006123ec8284613278565b90506123f78161285e565b6018546017546015544792600092600292612412919061319a565b61241c919061319a565b6015546124299085613212565b61243391906131d7565b61243d91906131d7565b905083156124915761244f84826129e0565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b600061249d8587613278565b111561254a57601f546018546017546001600160a01b03909216916108fc916124c59161319a565b6018546124d28587613278565b6124dc9190613212565b6124e691906131d7565b6040518115909202916000818181858888f1935050505015801561250e573d6000803e3d6000fd5b506020546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612548573d6000803e3d6000fd5b505b505050505b50602080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60295460009060ff161561278b576001600160a01b03851660009081526008602052604090205460ff16806125c757506001600160a01b03841660009081526008602052604090205460ff165b156126145760405162461bcd60e51b815260206004820152601060248201527f536e697065722072656a65637465642e000000000000000000000000000000006044820152606401610ab8565b602954610100900460ff166126c25761262d8585612ac4565b602954610100900460ff1615801561264a575061264a8585612275565b156126bd5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610ab8565b61278b565b6000602b541180156126ec57506001600160a01b03851660009081526002602052604090205460ff165b80156126fd57506126fd8585612275565b1561278b57602e54602b546127129043613278565b101561278b576001600160a01b0384166000908152600860205260408120805460ff19166001179055602f805491612749836132e3565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b038516600090815260016020526040812080548592906127b3908490613278565b9091555060009050826127c657836127d1565b6127d1868686612c5a565b6001600160a01b0386166000908152600160205260408120805492935083929091906127fe90849061319a565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161284a91815260200190565b60405180910390a350600195945050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106128935761289361334b565b6001600160a01b03928316602091820292909201810191909152601d54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b15801561290057600080fd5b505afa158015612914573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129389190612eec565b8160018151811061294b5761294b61334b565b6001600160a01b039283166020918202929092010152601d546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906129aa908590600090869030904290600401613129565b600060405180830381600087803b1580156129c457600080fd5b505af11580156129d8573d6000803e3d6000fd5b505050505050565b601d546001600160a01b031663f305d719823085600080612a096000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015612a8457600080fd5b505af1158015612a98573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612abd9190613056565b5050505050565b602954610100900460ff1615612b425760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610ab8565b612b4c8282612275565b158015612b665750601e546001600160a01b038281169116145b156113ca57602e54600214612b8957612b814361138861319a565b602b55612b8e565b43602b555b6001600160a01b038216600090815260056020908152604091829020805460ff19166001908117909155602980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905542602c5581547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000017825591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b601e5460009081906001600160a01b0385811691161415612cbf57601a5460ff1615612cb6576019546001600160a01b0386166000908152600960205260409020544291612ca79161319a565b1115612cb65750601054612ce3565b50600e54612ce3565b601e546001600160a01b0386811691161415612cde5750600d54612ce3565b50600f545b612ced8585612275565b15612d2657602a541580612d1c5750612d086009601461324f565b612d139060246131b2565b60ff16602a5414155b15612d2657600080fd5b6018546017546015546016546000936127109390929091612d47919061319a565b612d51919061319a565b612d5b919061319a565b601654612d688588613212565b612d729190613212565b612d7c91906131d7565b612d8691906131d7565b9050600081612710612d988588613212565b612da291906131d7565b612dac9190613278565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d80549293508492909190612def90849061319a565b90915550503060009081526001602052604081208054839290612e1390849061319a565b909155505060405182815261dead906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a381612ea58287613278565b612eaf9190613278565b979650505050505050565b80358015158114612eca57600080fd5b919050565b600060208284031215612ee157600080fd5b813561232c8161337a565b600060208284031215612efe57600080fd5b815161232c8161337a565b60008060408385031215612f1c57600080fd5b8235612f278161337a565b91506020830135612f378161337a565b809150509250929050565b600080600060608486031215612f5757600080fd5b8335612f628161337a565b92506020840135612f728161337a565b929592945050506040919091013590565b60008060408385031215612f9657600080fd5b8235612fa18161337a565b9150612faf60208401612eba565b90509250929050565b60008060408385031215612fcb57600080fd5b8235612fd68161337a565b946020939093013593505050565b600060208284031215612ff657600080fd5b61232c82612eba565b6000806040838503121561301257600080fd5b612fd683612eba565b60006020828403121561302d57600080fd5b5035919050565b6000806040838503121561304757600080fd5b50508035926020909101359150565b60008060006060848603121561306b57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561309a57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b818110156130e3578581018301518582016040015282016130c7565b818111156130f5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131795784516001600160a01b031683529383019391830191600101613154565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156131ad576131ad61331c565b500190565b600060ff821660ff84168060ff038211156131cf576131cf61331c565b019392505050565b60008261320d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561324a5761324a61331c565b500290565b600060ff821660ff84168160ff04811182151516156132705761327061331c565b029392505050565b60008282101561328a5761328a61331c565b500390565b600181811c908216806132a357607f821691505b602082108114156132dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133155761331561331c565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6001600160a01b038116811461338f57600080fd5b5056fea264697066735822122060ce70a3f4e7c4a7827ce22b69a2ce0740eba242f5594e2c726b98d25df3b15c64736f6c63430008070033

Deployed Bytecode Sourcemap

3751:20506:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6078:73;;;;;;;;;;;;6109:42;6078:73;;;;;-1:-1:-1;;;;;4331:55:1;;;4313:74;;4301:2;4286:18;6078:73:0;;;;;;;;11069:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5890:35::-;;;;;;;;;;-1:-1:-1;5890:35:0;;;;-1:-1:-1;;;;;5890:35:0;;;11682:161;;;;;;;;;;-1:-1:-1;11682:161:0;;;;;:::i;:::-;;:::i;:::-;;;5777:14:1;;5770:22;5752:41;;5740:2;5725:18;11682:161:0;5612:187:1;15212:336:0;;;;;;;;;;-1:-1:-1;15212:336:0;;;;;:::i;:::-;;:::i;:::-;;10804:83;;;;;;;;;;-1:-1:-1;10877:7:0;;10804:83;;;12311:25:1;;;12299:2;12284:18;10804:83:0;12165:177:1;12415:306:0;;;;;;;;;;-1:-1:-1;12415:306:0;;;;;:::i;:::-;;:::i;16541:257::-;;;;;;;;;;-1:-1:-1;16541:257:0;;;;;:::i;:::-;;:::i;10893:80::-;;;;;;;;;;-1:-1:-1;10893:80:0;;5781:1;14503:36:1;;14491:2;14476:18;10893:80:0;14361:184:1;15556:197:0;;;;;;;;;;-1:-1:-1;15556:197:0;;;;;:::i;:::-;;:::i;12729:215::-;;;;;;;;;;-1:-1:-1;12729:215:0;;;;;:::i;:::-;;:::i;4698:99::-;;;;;;;;;;-1:-1:-1;4698:99:0;;;;;;;;;;;;;;;;;;;14196:25:1;;;14252:2;14237:18;;14230:34;;;;14280:18;;;14273:34;14338:2;14323:18;;14316:34;14183:3;14168:19;4698:99:0;13965:391:1;6224:94:0;;;;;;;;;;-1:-1:-1;6224:94:0;;;;-1:-1:-1;;;;;6224:94:0;;;16281:252;;;;;;;;;;-1:-1:-1;16281:252:0;;;;;:::i;:::-;;:::i;5932:21::-;;;;;;;;;;-1:-1:-1;5932:21:0;;;;-1:-1:-1;;;;;5932:21:0;;;6459:41;;;;;;;;;;-1:-1:-1;6459:41:0;;;;;;;;;;;9479:763;;;;;;;;;;-1:-1:-1;9479:763:0;;;;;:::i;:::-;;:::i;14112:125::-;;;;;;;;;;-1:-1:-1;14112:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;14201:28:0;14177:4;14201:28;;;:19;:28;;;;;;;;;14112:125;7025:36;;;;;;;;;;-1:-1:-1;7025:36:0;;;;;;;;;;;12168:120;;;;;;;;;;-1:-1:-1;12168:120:0;;;;;:::i;:::-;;:::i;14245:134::-;;;;;;;;;;-1:-1:-1;14245:134:0;;;;;:::i;:::-;;:::i;11382:117::-;;;;;;;;;;-1:-1:-1;11382:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;11475:16:0;11448:7;11475:16;;;:7;:16;;;;;;;11382:117;10250:195;;;;;;;;;;;;;:::i;13694:410::-;;;;;;;;;;-1:-1:-1;13694:410:0;;;;;:::i;:::-;;:::i;14869:186::-;;;;;;;;;;-1:-1:-1;14869:186:0;;;;;:::i;:::-;;:::i;11155:80::-;;;;;;;;;;-1:-1:-1;11207:7:0;9457:6;-1:-1:-1;;;;;9457:6:0;11155:80;;14729:132;;;;;;;;;;-1:-1:-1;14729:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;14822:31:0;14798:4;14822:31;;;:22;:31;;;;;;;;;14729:132;4214:68;;;;;;;;;;-1:-1:-1;4214:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10979:84;;;;;;;;;;;;;:::i;15761:512::-;;;;;;;;;;-1:-1:-1;15761:512:0;;;;;:::i;:::-;;:::i;12296:111::-;;;;;;;;;;-1:-1:-1;12296:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;12382:17:0;12355:7;12382:17;;;:8;:17;;;;;;;12296:111;12952:225;;;;;;;;;;-1:-1:-1;12952:225:0;;;;;:::i;:::-;;:::i;11507:167::-;;;;;;;;;;-1:-1:-1;11507:167:0;;;;;:::i;:::-;;:::i;5256:113::-;;;;;;;;;;-1:-1:-1;5256:113:0;;;;;;;;;;;;;;;14555:166;;;;;;;;;;-1:-1:-1;14555:166:0;;;;;:::i;:::-;;:::i;17335:171::-;;;;;;;;;;-1:-1:-1;17335:171:0;;;;;:::i;:::-;;:::i;14389:158::-;;;;;;;;;;-1:-1:-1;14389:158:0;;;;;:::i;:::-;;:::i;17103:224::-;;;;;;;;;;-1:-1:-1;17103:224:0;;;;;:::i;:::-;;:::i;5499:87::-;;;;;;;;;;-1:-1:-1;5499:87:0;;;;;;;;;;;;;;;12515:25:1;;;12583:14;;12576:22;12571:2;12556:18;;12549:50;12488:18;5499:87:0;12347:258:1;11241:133:0;;;;;;;;;;-1:-1:-1;11241:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11343:19:0;;;11325:7;11343:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11241:133;6325:93;;;;;;;;;;-1:-1:-1;6325:93:0;;;;-1:-1:-1;;;;;6325:93:0;;;7293:32;;;;;;;;;;;;;;;;4964:105;;;;;;;;;;-1:-1:-1;4964:105:0;;;;;;;;;;;;;;;13185:501;;;;;;;;;;-1:-1:-1;13185:501:0;;;;;:::i;:::-;;:::i;15063:141::-;;;;;;;;;;-1:-1:-1;15063:141:0;;;;;:::i;:::-;;:::i;16806:289::-;;;;;;;;;;-1:-1:-1;16806:289:0;;;;;:::i;:::-;;:::i;11069:80::-;11117:13;11141:5;11134:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11069:80;:::o;11682:161::-;11757:4;11774:39;303:10;11797:7;11806:6;11774:8;:39::i;:::-;-1:-1:-1;11831:4:0;11682:161;;;;:::o;15212:336::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;;;;;;;;;15370:5;15359:10;15336:22:::1;15347:11:::0;15336:10;:22:::1;:::i;:::-;:33;;;;:::i;:::-;:39;;;;:::i;:::-;15380:4;15335:49;15325:69;;;::::0;-1:-1:-1;;;15325:69:0;;12034:2:1;15325:69:0::1;::::0;::::1;12016:21:1::0;12073:1;12053:18;;;12046:29;12111:7;12091:18;;;12084:35;12136:18;;15325:69:0::1;11832:328:1::0;15325:69:0::1;15405:6;:29:::0;;;;15445:17;:31;;;;15487:16;:29;15527:11;:19;15212:336::o;12415:306::-;-1:-1:-1;;;;;12536:19:0;;12515:4;12536:19;;;:11;:19;;;;;;;;12556:10;12536:31;;;;;;;;12571:17;12536:52;12532:126;;-1:-1:-1;;;;;12605:19:0;;;;;;:11;:19;;;;;;;;12625:10;12605:31;;;;;;;:41;;12640:6;;12605:19;:41;;12640:6;;12605:41;:::i;:::-;;;;-1:-1:-1;;12532:126:0;12677:36;12687:6;12695:9;12706:6;12677:9;:36::i;:::-;12670:43;12415:306;-1:-1:-1;;;;12415:306:0:o;16541:257::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;16625:13:::1;16663:7;16652;16642;;:17;;;;:::i;:::-;16641:29;;;;:::i;:::-;16625:45;;16709:3;16699:7;;:13;;;;:::i;:::-;16689:5;:24;;16681:74;;;::::0;-1:-1:-1;;;16681:74:0;;11198:2:1;16681:74:0::1;::::0;::::1;11180:21:1::0;11237:2;11217:18;;;11210:30;11276:34;11256:18;;;11249:62;11347:7;11327:18;;;11320:35;11372:19;;16681:74:0::1;10996:401:1::0;16681:74:0::1;16766:14;:22:::0;-1:-1:-1;;16541:257:0:o;15556:197::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;15666:2:::1;15653:9;:15;;15645:24;;;::::0;::::1;;15697:19;:9:::0;15709:7:::1;15697:19;:::i;:::-;15680:5;:36:::0;-1:-1:-1;15727:13:0;:24;;-1:-1:-1;;15727:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15556:197::o;12729:215::-;303:10;12817:4;12866:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12866:34:0;;;;;;;;;;12817:4;;12834:80;;12857:7;;12866:47;;12903:10;;12866:47;:::i;:::-;12834:8;:80::i;16281:252::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;16364:13:::1;16402:7;16391;16381;;:17;;;;:::i;:::-;16380:29;;;;:::i;:::-;16364:45;;16448:3;16438:7;;:13;;;;:::i;:::-;16428:5;:24;;16420:74;;;::::0;-1:-1:-1;;;16420:74:0;;11198:2:1;16420:74:0::1;::::0;::::1;11180:21:1::0;11237:2;11217:18;;;11210:30;11276:34;11256:18;;;11249:62;11347:7;11327:18;;;11320:35;11372:19;;16420:74:0::1;10996:401:1::0;16420:74:0::1;16505:12;:20:::0;-1:-1:-1;;16281:252:0:o;9479:763::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;-1:-1:-1;;;;;9560:22:0;::::1;9552:96;;;::::0;-1:-1:-1;;;9552:96:0;;11604:2:1;9552:96:0::1;::::0;::::1;11586:21:1::0;11643:2;11623:18;;;11616:30;11682:34;11662:18;;;11655:62;11753:31;11733:18;;;11726:59;11802:19;;9552:96:0::1;11402:425:1::0;9552:96:0::1;-1:-1:-1::0;;;;;9667:16:0;::::1;6109:42;9667:16;;9659:90;;;::::0;-1:-1:-1;;;9659:90:0;;11604:2:1;9659:90:0::1;::::0;::::1;11586:21:1::0;11643:2;11623:18;;;11616:30;11682:34;11662:18;;;11655:62;11753:31;11733:18;;;11726:59;11802:19;;9659:90:0::1;11402:425:1::0;9659:90:0::1;9780:6;::::0;;9760:34:::1;::::0;-1:-1:-1;;;;;9780:6:0;;::::1;::::0;9760:19:::1;:34::i;:::-;9805:35;9825:8;9835:4;9805:19;:35::i;:::-;9894:6;::::0;9865:17:::1;::::0;-1:-1:-1;;;;;9865:17:0;;::::1;9894:6:::0;::::1;9865:36;9861:92;;;9916:17;:37:::0;;;::::1;-1:-1:-1::0;;;;;9916:37:0;::::1;;::::0;;9861:92:::1;10016:6;::::0;;-1:-1:-1;;;;;10016:6:0;;::::1;11475:16:::0;;:7;:16;;;;;;;;;9974:11:::1;:19:::0;;;;;:29;;::::1;::::0;;;;;;;:49;10047:6;;;;::::1;11475:16:::0;;;;;;10037:21;10034:99:::1;;10085:6;::::0;;-1:-1:-1;;;;;10085:6:0::1;11475:16:::0;;;:7;:16;;;;;;;10075:46:::1;::::0;10085:6;10093:8;;10075:9:::1;:46::i;:::-;;10034:99;10153:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;10153:17:0;::::1;::::0;;::::1;::::0;;10186:38:::1;::::0;10153:17;;;;10186:38:::1;::::0;10153:6;10186:38:::1;9479:763:::0;:::o;12168:120::-;12221:4;12245:35;12253:7;12262:17;12245:7;:35::i;:::-;12238:42;12168:120;-1:-1:-1;;12168:120:0:o;14245:134::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;-1:-1:-1;;;;;14333:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14333:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14245:134::o;10250:195::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;10337:6:::1;::::0;;10317:34:::1;::::0;-1:-1:-1;;;;;10337:6:0;;::::1;::::0;10317:19:::1;:34::i;:::-;10379:1;10362:19:::0;;;::::1;::::0;;10397:40:::1;::::0;10379:1;;10397:40:::1;::::0;10379:1;;10397:40:::1;10250:195::o:0;13694:410::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;13775:16;13771:326:::1;;-1:-1:-1::0;;;;;;13808:13:0::1;13824:5;13808:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;13808:21:0::1;::::0;;13694:410::o;13771:326::-:1;13866:17;::::0;:22;13862:139:::1;;13955:7;13935:17;;13917:15;:35;;;;:::i;:::-;:45;13909:76;;;::::0;-1:-1:-1;;;13909:76:0;;8780:2:1;13909:76:0::1;::::0;::::1;8762:21:1::0;8819:2;8799:18;;;8792:30;8858:20;8838:18;;;8831:48;8896:18;;13909:76:0::1;8578:342:1::0;13909:76:0::1;-1:-1:-1::0;;;;;14015:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;14015:20:0::1;14031:4;14015:20;::::0;;14070:15:::1;14050:17;:35:::0;13771:326:::1;13694:410:::0;;:::o;14869:186::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;14951:13:::1;::::0;:18;14942:38:::1;;;::::0;-1:-1:-1;;;14942:38:0;;10156:2:1;14942:38:0::1;::::0;::::1;10138:21:1::0;10195:1;10175:18;;;10168:29;10233:8;10213:18;;;10206:36;10259:18;;14942:38:0::1;9954:329:1::0;14942:38:0::1;14991:13;:28:::0;15046:1:::1;15030:13;:17:::0;14869:186::o;10979:84::-;11029:13;11053:7;11046:14;;;;;:::i;15761:512::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;15894:7:::1;:14:::0;15883:25;::::1;::::0;::::1;::::0;:73:::1;;-1:-1:-1::0;15941:15:0;;15929:27;::::1;;15883:73;:129;;;;-1:-1:-1::0;15993:19:0;;15977:35;::::1;;15883:129;:184;;;;-1:-1:-1::0;16048:19:0;;16033:34;::::1;;15883:184;15875:237;;;::::0;-1:-1:-1;;;15875:237:0;;8079:2:1;15875:237:0::1;::::0;::::1;8061:21:1::0;8118:2;8098:18;;;8091:30;8157:25;8137:18;;;8130:53;8200:18;;15875:237:0::1;7877:347:1::0;15875:237:0::1;16124:4;:21:::0;;;;16157:12;:23;;;;16192:16;:31;16235:15;:28;15761:512::o;12952:225::-;303:10;13045:4;13094:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13094:34:0;;;;;;;;;;13045:4;;13062:85;;13085:7;;13094:52;;13131:15;;13094:52;:::i;11507:167::-;11585:4;11602:42;303:10;11626:9;11637:6;11602:9;:42::i;:::-;-1:-1:-1;11662:4:0;;11507:167;-1:-1:-1;;;11507:167:0:o;14555:166::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;-1:-1:-1;;;;;14653:52:0::1;14708:5;14653:52:::0;;;:35:::1;:52;::::0;;;;:60;;-1:-1:-1;;14653:60:0::1;::::0;;14555:166::o;17335:171::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;17412:21:::1;:32:::0;;;::::1;::::0;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;17460:38:::1;::::0;5752:41:1;;;17460:38:0::1;::::0;5725:18:1;17460:38:0::1;;;;;;;17335:171:::0;:::o;14389:158::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;-1:-1:-1;;;;;14480:52:0::1;;::::0;;;:35:::1;:52;::::0;;;;:59;;-1:-1:-1;;14480:59:0::1;14535:4;14480:59;::::0;;14389:158::o;17103:224::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;17220:17:::1;:45:::0;;-1:-1:-1;;;;;17220:45:0;;::::1;::::0;;;::::1;;::::0;;;17276:16:::1;:43:::0;;;;;::::1;::::0;::::1;;::::0;;17103:224::o;13185:501::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;13256:29:::1;13307:9;13256:61;;13328:16;13365:10;-1:-1:-1::0;;;;;13365:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13347:47:0::1;;13403:4;13410:10;-1:-1:-1::0;;;;;13410:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13347:81;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;4898:15:1;;;13347:81:0::1;::::0;::::1;4880:34:1::0;4950:15;;4930:18;;;4923:43;4792:18;;13347:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13328:100:::0;-1:-1:-1;;;;;;13443:22:0;::::1;13439:207;;13509:10;-1:-1:-1::0;;;;;13509:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13491:50:0::1;;13550:4;13557:10;-1:-1:-1::0;;;;;13557:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13491:84;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;4898:15:1;;;13491:84:0::1;::::0;::::1;4880:34:1::0;4950:15;;4930:18;;;4923:43;4792:18;;13491:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13482:6;:93:::0;;;::::1;-1:-1:-1::0;;;;;13482:93:0;;;::::1;::::0;;;::::1;::::0;;13439:207:::1;;;13617:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;13617:17:0;::::1;;::::0;;13439:207:::1;-1:-1:-1::0;13656:9:0::1;:22:::0;;;::::1;-1:-1:-1::0;;;;;13656:22:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;13185:501:0:o;15063:141::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;-1:-1:-1;;;;;15155:31:0;;;::::1;;::::0;;;:22:::1;:31;::::0;;;;:41;;-1:-1:-1;;15155:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15063:141::o;16806:289::-;7892:6;;-1:-1:-1;;;;;7892:6:0;303:10;7892:22;7884:51;;;;-1:-1:-1;;;7884:51:0;;6924:2:1;7884:51:0;;;6906:21:1;6963:2;6943:18;;;6936:30;7002:18;6982;;;6975:46;7038:18;;7884:51:0;6722:340:1;7884:51:0;17006:16:::1;16986;16976:7;;:26;;;;:::i;:::-;16975:47;;;;:::i;:::-;16959:13;:63:::0;17047:7:::1;::::0;17074:13;;17047:23:::1;::::0;17057:13;;17047:23:::1;:::i;:::-;17046:41;;;;:::i;:::-;17033:10;:54:::0;-1:-1:-1;;;;16806:289:0:o;11851:309::-;-1:-1:-1;;;;;11945:20:0;;11937:52;;;;-1:-1:-1;;;11937:52:0;;9463:2:1;11937:52:0;;;9445:21:1;9502:2;9482:18;;;9475:30;9541:21;9521:18;;;9514:49;9580:18;;11937:52:0;9261:343:1;11937:52:0;-1:-1:-1;;;;;12008:21:0;;12000:53;;;;-1:-1:-1;;;12000:53:0;;9463:2:1;12000:53:0;;;9445:21:1;9502:2;9482:18;;;9475:30;9541:21;9521:18;;;9514:49;9580:18;;12000:53:0;9261:343:1;12000:53:0;-1:-1:-1;;;;;12066:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;12119:33;;12311:25:1;;;12119:33:0;;12284:18:1;12119:33:0;;;;;;;11851:309;;;:::o;17845:1536::-;17924:4;-1:-1:-1;;;;;17949:18:0;;17941:51;;;;-1:-1:-1;;;17941:51:0;;8431:2:1;17941:51:0;;;8413:21:1;8470:2;8450:18;;;8443:30;8509:22;8489:18;;;8482:50;8549:18;;17941:51:0;8229:344:1;17941:51:0;-1:-1:-1;;;;;18011:16:0;;18003:49;;;;-1:-1:-1;;;18003:49:0;;8431:2:1;18003:49:0;;;8413:21:1;8470:2;8450:18;;;8443:30;8509:22;8489:18;;;8482:50;8549:18;;18003:49:0;8229:344:1;18003:49:0;18080:1;18071:6;:10;18063:31;;;;-1:-1:-1;;;18063:31:0;;9127:2:1;18063:31:0;;;9109:21:1;9166:1;9146:18;;;9139:29;9204:10;9184:18;;;9177:38;9232:18;;18063:31:0;8925:331:1;18063:31:0;18108:20;18119:4;18125:2;18108:10;:20::i;:::-;18105:504;;;-1:-1:-1;;;;;18150:41:0;;;;;;:35;:41;;;;;;;;;:84;;-1:-1:-1;;;;;;18195:39:0;;;;;;:35;:39;;;;;;;;18150:84;18145:439;;-1:-1:-1;;;;;18259:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;18276:11:0;;;;;;:7;:11;;;;;;;;18259:28;18256:130;;;18325:12;;18315:6;:22;;18307:59;;;;-1:-1:-1;;;18307:59:0;;10845:2:1;18307:59:0;;;10827:21:1;10884:2;10864:18;;;10857:30;10923:26;10903:18;;;10896:54;10967:18;;18307:59:0;10643:348:1;18307:59:0;-1:-1:-1;;;;;18407:20:0;;6023:42;18407:20;;;;:36;;-1:-1:-1;;;;;;18432:11:0;;;;;;:7;:11;;;;;;;;18431:12;18407:36;18404:163;;;18502:14;;18492:6;18476:13;18486:2;-1:-1:-1;;;;;11475:16:0;11448:7;11475:16;;;:7;:16;;;;;;;11382:117;18476:13;:22;;;;:::i;:::-;:40;;18468:79;;;;-1:-1:-1;;;18468:79:0;;10490:2:1;18468:79:0;;;10472:21:1;10529:2;10509:18;;;10502:30;10568:28;10548:18;;;10541:56;10614:18;;18468:79:0;10288:350:1;18468:79:0;-1:-1:-1;;;;;18627:11:0;;;;;;:7;:11;;;;;;18623:79;;-1:-1:-1;;;;;18660:12:0;;;;;;:8;:12;;;;;18675:15;18660:30;;18623:79;-1:-1:-1;;;;;18747:25:0;;18714:12;18747:25;;;:19;:25;;;;;;18729:4;;18747:25;;;:52;;-1:-1:-1;;;;;;18776:23:0;;;;;;:19;:23;;;;;;;;18747:52;18744:98;;;-1:-1:-1;18825:5:0;18744:98;-1:-1:-1;;;;;18858:11:0;;;;;;:7;:11;;;;;;;;18854:457;;;18891:16;;;;;;;18890:17;:59;;;;-1:-1:-1;18928:21:0;;;;;;;18890:59;18886:408;;;19033:4;18984:28;11475:16;;;:7;:16;;;;;;19086:13;;19062:37;;19058:221;;19151:10;;19127:20;:34;19124:77;;-1:-1:-1;19188:10:0;;19124:77;19223:36;19238:20;19223:14;:36::i;:::-;18965:329;18886:408;19329:44;19347:4;19353:2;19357:6;19365:7;19329:17;:44::i;:::-;19322:51;17845:1536;-1:-1:-1;;;;;17845:1536:0:o;17514:323::-;17582:4;9457:6;;-1:-1:-1;;;;;17606:15:0;;;9457:6;;17606:15;;;;:45;;-1:-1:-1;9430:7:0;9457:6;-1:-1:-1;;;;;17638:13:0;;;9457:6;;17638:13;;17606:45;:84;;;;-1:-1:-1;;;;;;17669:21:0;;;;;;:17;:21;;;;;;;;17668:22;17606:84;:125;;;;-1:-1:-1;;;;;;17708:23:0;;;;;;:17;:23;;;;;;;;17707:24;17606:125;:152;;;;-1:-1:-1;;;;;;17748:10:0;;6109:42;17748:10;;17606:152;:185;;;;-1:-1:-1;;;;;;17775:16:0;;;;17606:185;:223;;;;-1:-1:-1;;;;;;17808:21:0;;17824:4;17808:21;;17606:223;17599:230;17514:323;-1:-1:-1;;;17514:323:0:o;19389:1065::-;7766:16;:23;;;;;;;;19517:16;;19497:17;;19517:6:::1;19478:16:::0;:36:::1;::::0;19497:17;19478:36:::1;:::i;:::-;:55;;;;:::i;:::-;19474:86;;19553:7;;19474:86;19675:16:::0;;19655:17;;19675:6:::1;19636:16:::0;19570:17:::1;::::0;19697:1:::1;::::0;19675:16;;19636:36:::1;::::0;19655:17;19636:36:::1;:::i;:::-;:55;;;;:::i;:::-;19615:6;:16:::0;19592:39:::1;::::0;:20;:39:::1;:::i;:::-;19591:101;;;;:::i;:::-;19590:108;;;;:::i;:::-;19570:128:::0;-1:-1:-1;19711:20:0::1;19734:32;19570:128:::0;19734:20;:32:::1;:::i;:::-;19711:55;;19777:30;19794:12;19777:16;:30::i;:::-;19983:16:::0;;19963:17;;19983:6:::1;19944:16:::0;19845:21:::1;::::0;19820:22:::1;::::0;20005:1:::1;::::0;19944:36:::1;::::0;19963:17;19944:36:::1;:::i;:::-;:55;;;;:::i;:::-;19923:6;:16:::0;19906:33:::1;::::0;:14;:33:::1;:::i;:::-;19905:95;;;;:::i;:::-;19904:102;;;;:::i;:::-;19877:129:::0;-1:-1:-1;20023:13:0;;20019:161:::1;;20053:41;20066:9;20077:16;20053:12;:41::i;:::-;20114:54;::::0;;13843:25:1;;;13899:2;13884:18;;13877:34;;;13927:18;;;13920:34;;;20114:54:0::1;::::0;13831:2:1;13816:18;20114:54:0::1;;;;;;;20019:161;20229:1;20194:32;20217:9:::0;20194:20;:32:::1;:::i;:::-;:36;20190:257;;;20247:17;::::0;20354:16;;20334:17;;-1:-1:-1;;;;;20247:17:0;;::::1;::::0;:125:::1;::::0;20334:36:::1;::::0;::::1;:::i;:::-;20313:16:::0;;20276:33:::1;20293:16:::0;20276:14;:33:::1;:::i;:::-;20275:54;;;;:::i;:::-;20274:97;;;;:::i;:::-;20247:125;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;20387:16:0::1;::::0;:48:::1;::::0;-1:-1:-1;;;;;20387:16:0;;::::1;::::0;20413:21:::1;20387:48:::0;::::1;;;::::0;:16:::1;:48:::0;:16;:48;20413:21;20387:16;:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20190:257;19463:991;;;;7800:1;-1:-1:-1::0;7812:16:0;:24;;;;;;19389:1065::o;21853:1220::-;21974:16;;21953:4;;21974:16;;21970:858;;;-1:-1:-1;;;;;14822:31:0;;14798:4;14822:31;;;:22;:31;;;;;;;;22010:56;;;-1:-1:-1;;;;;;14822:31:0;;14798:4;14822:31;;;:22;:31;;;;;;;;22041:25;22006:123;;;22087:26;;-1:-1:-1;;;22087:26:0;;9811:2:1;22087:26:0;;;9793:21:1;9850:2;9830:18;;;9823:30;9889:18;9869;;;9862:46;9925:18;;22087:26:0;9609:340:1;22006:123:0;22150:16;;;;;;;22145:672;;22187:28;22206:4;22212:2;22187:18;:28::i;:::-;22239:16;;;;;;;22238:17;:41;;;;;22259:20;22270:4;22276:2;22259:10;:20::i;:::-;22234:137;;;22304:47;;-1:-1:-1;;;22304:47:0;;7673:2:1;22304:47:0;;;7655:21:1;7712:2;7692:18;;;7685:30;7751:34;7731:18;;;7724:62;7822:7;7802:18;;;7795:35;7847:19;;22304:47:0;7471:401:1;22234:137:0;22145:672;;;22430:1;22415:12;;:16;:55;;;;-1:-1:-1;;;;;;22457:13:0;;;;;;:7;:13;;;;;;;;22415:55;:101;;;;;22496:20;22507:4;22513:2;22496:10;:20::i;:::-;22411:391;;;22593:13;;22578:12;;22563:27;;:12;:27;:::i;:::-;:43;22559:224;;;-1:-1:-1;;;;;22635:26:0;;;;;;:22;:26;;;;;:33;;-1:-1:-1;;22635:33:0;22664:4;22635:33;;;22695:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;22743:16:0;;-1:-1:-1;;;;;4331:55:1;;4313:74;;22743:16:0;;4301:2:1;4286:18;22743:16:0;;;;;;;22559:224;-1:-1:-1;;;;;22840:13:0;;;;;;:7;:13;;;;;:23;;22857:6;;22840:13;:23;;22857:6;;22840:23;:::i;:::-;;;;-1:-1:-1;22874:22:0;;-1:-1:-1;22900:7:0;22899:48;;22941:6;22899:48;;;22911:27;22921:4;22927:2;22931:6;22911:9;:27::i;:::-;-1:-1:-1;;;;;22962:11:0;;;;;;:7;:11;;;;;:29;;22874:73;;-1:-1:-1;22874:73:0;;22962:11;;;:29;;22874:73;;22962:29;:::i;:::-;;;;;;;;23024:2;-1:-1:-1;;;;;23009:34:0;23018:4;-1:-1:-1;;;;;23009:34:0;;23028:14;23009:34;;;;12311:25:1;;12299:2;12284:18;;12165:177;23009:34:0;;;;;;;;-1:-1:-1;23061:4:0;;21853:1220;-1:-1:-1;;;;;21853:1220:0:o;20462:417::-;20553:16;;;20567:1;20553:16;;;;;;;;20529:21;;20553:16;;;;;;;;;;-1:-1:-1;20553:16:0;20529:40;;20598:4;20580;20585:1;20580:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20580:23:0;;;:7;;;;;;;;;;:23;;;;20624:9;;:16;;;;;;;;:9;;;;;:14;;:16;;;;;20580:7;;20624:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20614:4;20619:1;20614:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20614:26:0;;;:7;;;;;;;;;:26;20653:9;;:218;;;;;:9;;;:60;;:218;;20728:11;;20653:9;;20798:4;;20825;;20845:15;;20653:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20518:361;20462:417;:::o;20887:335::-;20968:9;;-1:-1:-1;;;;;20968:9:0;:25;21001:9;21034:4;21054:11;20968:9;;21166:7;9430;9457:6;-1:-1:-1;;;;;9457:6:0;;9392:79;21166:7;20968:246;;;;;;;;;;-1:-1:-1;;;;;5359:15:1;;;20968:246:0;;;5341:34:1;5391:18;;;5384:34;;;;5434:18;;;5427:34;;;;5477:18;;;5470:34;5541:15;;;5520:19;;;5513:44;21188:15:0;5573:19:1;;;5566:35;5252:19;;20968:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20887:335;;:::o;21230:615::-;21312:16;;;;;;;21311:17;21303:65;;;;-1:-1:-1;;;21303:65:0;;7269:2:1;21303:65:0;;;7251:21:1;7308:2;7288:18;;;7281:30;7347:34;7327:18;;;7320:62;7418:5;7398:18;;;7391:33;7441:19;;21303:65:0;7067:399:1;21303:65:0;21384:20;21395:4;21401:2;21384:10;:20::i;:::-;21383:21;:37;;;;-1:-1:-1;21414:6:0;;-1:-1:-1;;;;;21408:12:0;;;21414:6;;21408:12;21383:37;21379:459;;;21441:13;;21458:1;21441:18;21437:161;;21495:19;:12;21510:4;21495:19;:::i;:::-;21480:12;:34;21437:161;;;21570:12;21555;:27;21437:161;-1:-1:-1;;;;;21614:23:0;;;;;;:17;:23;;;;;;;;;:30;;-1:-1:-1;;21614:30:0;21640:4;21614:30;;;;;;21659:16;:23;;;;21614:30;21659:23;;;21712:15;21697:12;:30;21744:28;;;;;;;;21792:34;;5752:41:1;;;21792:34:0;;5725:18:1;21792:34:0;;;;;;;21230:615;;:::o;23081:1173::-;23221:6;;23160:7;;;;-1:-1:-1;;;;;23215:12:0;;;23221:6;;23215:12;23211:399;;;23248:13;;;;23244:236;;;23302:5;:14;-1:-1:-1;;;;;23285:14:0;;23302;23285;;;:8;:14;;;;;;23319:15;;23285:31;;;:::i;:::-;:49;23281:139;;;-1:-1:-1;23350:15:0;;23211:399;;23281:139;-1:-1:-1;23406:12:0;;23211:399;;;23525:6;;-1:-1:-1;;;;;23517:14:0;;;23525:6;;23517:14;23513:97;;;-1:-1:-1;23547:4:0;:11;23513:97;;;-1:-1:-1;23592:16:0;;23513:97;23626:20;23637:4;23643:2;23626:10;:20::i;:::-;23622:156;;;23666:13;;:18;;:56;;-1:-1:-1;23706:12:0;5781:1;23706:2;:12;:::i;:::-;:15;;23719:2;23706:15;:::i;:::-;23688:34;;:13;;:34;;23666:56;23662:105;;;23743:8;;;23662:105;23898:16;;23878:17;;23898:6;23859:16;23845:11;;23788:15;;5685:5;;23898:16;;23878:17;;23845:30;;23859:16;23845:30;:::i;:::-;:50;;;;:::i;:::-;:69;;;;:::i;:::-;23829:11;;23807:19;23816:10;23807:6;:19;:::i;:::-;:33;;;;:::i;:::-;23806:110;;;;:::i;:::-;:129;;;;:::i;:::-;23788:147;-1:-1:-1;23946:17:0;23788:147;5685:5;23967:19;23976:10;23967:6;:19;:::i;:::-;:38;;;;:::i;:::-;23966:50;;;;:::i;:::-;6109:42;24027:13;;;;:7;:13;;;:24;;23946:70;;-1:-1:-1;24044:7:0;;24027:13;;;:24;;24044:7;;24027:24;:::i;:::-;;;;-1:-1:-1;;24078:4:0;24062:22;;;;:7;:22;;;;;:37;;24089:9;;24062:22;:37;;24089:9;;24062:37;:::i;:::-;;;;-1:-1:-1;;24115:29:0;;12311:25:1;;;6109:42:0;;-1:-1:-1;;;;;24115:29:0;;;;;12299:2:1;12284:18;24115:29:0;;;;;;;24160:40;;12311:25:1;;;24183:4:0;;-1:-1:-1;;;;;24160:40:0;;;;;12299:2:1;12284:18;24160:40:0;;;;;;;24239:7;24218:18;24227:9;24218:6;:18;:::i;:::-;:28;;;;:::i;:::-;24211:35;23081:1173;-1:-1:-1;;;;;;;23081:1173:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:404::-;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;-1:-1:-1;1013:2:1;998:18;;985:32;1026:33;985:32;1026:33;:::i;:::-;1078:7;1068:17;;;687:404;;;;;:::o;1489:456::-;1566:6;1574;1582;1635:2;1623:9;1614:7;1610:23;1606:32;1603:52;;;1651:1;1648;1641:12;1603:52;1690:9;1677:23;1709:31;1734:5;1709:31;:::i;:::-;1759:5;-1:-1:-1;1816:2:1;1801:18;;1788:32;1829:33;1788:32;1829:33;:::i;:::-;1489:456;;1881:7;;-1:-1:-1;;;1935:2:1;1920:18;;;;1907:32;;1489:456::o;1950:315::-;2015:6;2023;2076:2;2064:9;2055:7;2051:23;2047:32;2044:52;;;2092:1;2089;2082:12;2044:52;2131:9;2118:23;2150:31;2175:5;2150:31;:::i;:::-;2200:5;-1:-1:-1;2224:35:1;2255:2;2240:18;;2224:35;:::i;:::-;2214:45;;1950:315;;;;;:::o;2270:::-;2338:6;2346;2399:2;2387:9;2378:7;2374:23;2370:32;2367:52;;;2415:1;2412;2405:12;2367:52;2454:9;2441:23;2473:31;2498:5;2473:31;:::i;:::-;2523:5;2575:2;2560:18;;;;2547:32;;-1:-1:-1;;;2270:315:1:o;2590:180::-;2646:6;2699:2;2687:9;2678:7;2674:23;2670:32;2667:52;;;2715:1;2712;2705:12;2667:52;2738:26;2754:9;2738:26;:::i;2775:248::-;2840:6;2848;2901:2;2889:9;2880:7;2876:23;2872:32;2869:52;;;2917:1;2914;2907:12;2869:52;2940:26;2956:9;2940:26;:::i;3028:180::-;3087:6;3140:2;3128:9;3119:7;3115:23;3111:32;3108:52;;;3156:1;3153;3146:12;3108:52;-1:-1:-1;3179:23:1;;3028:180;-1:-1:-1;3028:180:1:o;3213:248::-;3281:6;3289;3342:2;3330:9;3321:7;3317:23;3313:32;3310:52;;;3358:1;3355;3348:12;3310:52;-1:-1:-1;;3381:23:1;;;3451:2;3436:18;;;3423:32;;-1:-1:-1;3213:248:1:o;3466:306::-;3554:6;3562;3570;3623:2;3611:9;3602:7;3598:23;3594:32;3591:52;;;3639:1;3636;3629:12;3591:52;3668:9;3662:16;3652:26;;3718:2;3707:9;3703:18;3697:25;3687:35;;3762:2;3751:9;3747:18;3741:25;3731:35;;3466:306;;;;;:::o;3777:385::-;3863:6;3871;3879;3887;3940:3;3928:9;3919:7;3915:23;3911:33;3908:53;;;3957:1;3954;3947:12;3908:53;-1:-1:-1;;3980:23:1;;;4050:2;4035:18;;4022:32;;-1:-1:-1;4101:2:1;4086:18;;4073:32;;4152:2;4137:18;4124:32;;-1:-1:-1;3777:385:1;-1:-1:-1;3777:385:1:o;6061:656::-;6173:4;6202:2;6231;6220:9;6213:21;6263:6;6257:13;6306:6;6301:2;6290:9;6286:18;6279:34;6331:1;6341:140;6355:6;6352:1;6349:13;6341:140;;;6450:14;;;6446:23;;6440:30;6416:17;;;6435:2;6412:26;6405:66;6370:10;;6341:140;;;6499:6;6496:1;6493:13;6490:91;;;6569:1;6564:2;6555:6;6544:9;6540:22;6536:31;6529:42;6490:91;-1:-1:-1;6633:2:1;6621:15;6638:66;6617:88;6602:104;;;;6708:2;6598:113;;6061:656;-1:-1:-1;;;6061:656:1:o;12610:1026::-;12872:4;12920:3;12909:9;12905:19;12951:6;12940:9;12933:25;12977:2;13015:6;13010:2;12999:9;12995:18;12988:34;13058:3;13053:2;13042:9;13038:18;13031:31;13082:6;13117;13111:13;13148:6;13140;13133:22;13186:3;13175:9;13171:19;13164:26;;13225:2;13217:6;13213:15;13199:29;;13246:1;13256:218;13270:6;13267:1;13264:13;13256:218;;;13335:13;;-1:-1:-1;;;;;13331:62:1;13319:75;;13449:15;;;;13414:12;;;;13292:1;13285:9;13256:218;;;-1:-1:-1;;;;;;;13530:55:1;;;;13525:2;13510:18;;13503:83;-1:-1:-1;;;13617:3:1;13602:19;13595:35;13491:3;12610:1026;-1:-1:-1;;;12610:1026:1:o;14550:128::-;14590:3;14621:1;14617:6;14614:1;14611:13;14608:39;;;14627:18;;:::i;:::-;-1:-1:-1;14663:9:1;;14550:128::o;14683:204::-;14721:3;14757:4;14754:1;14750:12;14789:4;14786:1;14782:12;14824:3;14818:4;14814:14;14809:3;14806:23;14803:49;;;14832:18;;:::i;:::-;14868:13;;14683:204;-1:-1:-1;;;14683:204:1:o;14892:274::-;14932:1;14958;14948:189;;14993:77;14990:1;14983:88;15094:4;15091:1;15084:15;15122:4;15119:1;15112:15;14948:189;-1:-1:-1;15151:9:1;;14892:274::o;15171:228::-;15211:7;15337:1;15269:66;15265:74;15262:1;15259:81;15254:1;15247:9;15240:17;15236:105;15233:131;;;15344:18;;:::i;:::-;-1:-1:-1;15384:9:1;;15171:228::o;15404:238::-;15442:7;15482:4;15479:1;15475:12;15514:4;15511:1;15507:12;15574:3;15568:4;15564:14;15559:3;15556:23;15549:3;15542:11;15535:19;15531:49;15528:75;;;15583:18;;:::i;:::-;15623:13;;15404:238;-1:-1:-1;;;15404:238:1:o;15647:125::-;15687:4;15715:1;15712;15709:8;15706:34;;;15720:18;;:::i;:::-;-1:-1:-1;15757:9:1;;15647:125::o;15777:437::-;15856:1;15852:12;;;;15899;;;15920:61;;15974:4;15966:6;15962:17;15952:27;;15920:61;16027:2;16019:6;16016:14;15996:18;15993:38;15990:218;;;16064:77;16061:1;16054:88;16165:4;16162:1;16155:15;16193:4;16190:1;16183:15;15990:218;;15777:437;;;:::o;16219:195::-;16258:3;16289:66;16282:5;16279:77;16276:103;;;16359:18;;:::i;:::-;-1:-1:-1;16406:1:1;16395:13;;16219:195::o;16419:184::-;16471:77;16468:1;16461:88;16568:4;16565:1;16558:15;16592:4;16589:1;16582:15;16608:184;16660:77;16657:1;16650:88;16757:4;16754:1;16747:15;16781:4;16778:1;16771:15;16986:154;-1:-1:-1;;;;;17065:5:1;17061:54;17054:5;17051:65;17041:93;;17130:1;17127;17120:12;17041:93;16986:154;:::o

Swarm Source

ipfs://60ce70a3f4e7c4a7827ce22b69a2ce0740eba242f5594e2c726b98d25df3b15c
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.