ETH Price: $3,964.61 (+3.12%)

Token

ERC-20: Volcano Doge (KAZAN)
 

Overview

Max Total Supply

142,969,280,220.513322623 KAZAN

Holders

102

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: KAZAN 2
Balance
1,931,638,622.799068701 KAZAN

Value
$0.00
0x3b7cf32ed379b2a6440c9b8f3bc2549d90f86f7c
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:
Kazan

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-14
*/

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

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 IFactoryV2 {
    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 IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    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);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

contract Kazan is IERC20 {
    mapping (address => uint256) private _rOwned;
    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) private _isExcludedFromLimits;
    mapping (address => bool) private bots;

   
    uint256 constant private startingSupply = 150_000_000_000;
    string constant private _name = "Volcano Doge";
    string constant private _symbol = "KAZAN";
    uint8 constant private _decimals = 9;

    uint256 private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee; uint16 sellFee; uint16 transferFee;
    }

    struct Ratios {
        uint16 liquidity; uint16 marketing; uint16 development; uint16 burn; uint16 buyback; uint16 totalSwap;
    }

    Fees public _taxRates = Fees({buyFee: 2000,sellFee: 2000,transferFee: 0
    });

    Ratios public _ratios = Ratios({liquidity: 0,marketing: 250,development: 250,burn: 250,buyback: 0,totalSwap: 1000
    });

    uint256 constant public maxBuyTaxes = 3000;
    uint256 constant public maxSellTaxes = 3000;
    uint256 constant public maxTransferTaxes = 3000;
    uint256 constant public maxRoundtripTax = 6000;
    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable development;
        address payable liquidity;
        address payable buyback;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x96D3309Ce4E0DC72718ff75F82aEd61cfBa5528A), 
        development: payable(0x39Ae22506933BF519016953dc89b28c9D2a717B4),
        liquidity: payable(0x0f3B0812D0eD111B3Ad686Aa0D1F33e607943B70),
        buyback: payable(DEAD)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount = (_tTotal * 10) / 10000;
    uint256 private _maxWalletSize = (_tTotal * 10) / 10000;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;

    address public buyback = address(this);

    uint256 public _totalBuyback;
    uint256 public _totalBurned;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    
    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Command only available for owner.");
        _;
    }

    constructor () payable {
        // Set the owner.
        _owner = _taxWallets.development;
        dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

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

    receive() external payable {}

    address private _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 (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function 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(msg.sender, recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

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

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

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

        return _transfer(sender, recipient, amount);
    }

    function isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

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

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

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

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

    function setTaxFees(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        require(buyFee + sellFee <= maxRoundtripTax, "Cannot exceed max roundtrip tax.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setTaxRatios(uint16 liquidity, uint16 marketing, uint16 development, uint16 burn, uint16 _buyBack) external onlyOwner {
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.development = development;
        _ratios.burn = burn;
        _ratios.buyback = _buyBack;
        _ratios.totalSwap = liquidity + marketing + development + _buyBack;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.totalSwap + _ratios.burn <= total, "Cannot exceed sum of buy and sell fees.");
    }

    function setTeamWallets(address payable marketing, address payable development, address payable liquidity) external onlyOwner {
        _taxWallets.marketing = payable(marketing);
        _taxWallets.development = payable(development);
        _taxWallets.liquidity = payable(liquidity);
    }

    function setPrimaryParameters() external onlyOwner {
        _maxWalletSize = (_tTotal * 10) / 1000;
        _maxTxAmount = (_tTotal * 10) / 1000;
        _taxRates.buyFee = 1000;
        _taxRates.sellFee = 1000;
        _taxRates.transferFee = 0;
        _ratios.development = 250;
        _ratios.marketing = 250;
        _ratios.burn = 500;

    }

    function setSecondaryParameters() external onlyOwner {
        _maxWalletSize = (_tTotal * 10) / 1000;
        _maxTxAmount = (_tTotal * 10) / 1000;
        _taxRates.buyFee = 400;
        _taxRates.sellFee = 400;
        _taxRates.transferFee = 0;
        _ratios.development = 250;
        _ratios.marketing = 250;
        _ratios.burn = 500;

    }

    function setBuyBackWallet(address payable _buyBack) external onlyOwner {
        _taxWallets.buyback = payable(_buyBack);
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal * 5 / 1000), "Max Transaction amt must be above 0.5% of total supply.");
        _maxTxAmount = (_tTotal * percent) / divisor;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 100), "Max Wallet amt must be above 1% of total supply.");
        _maxWalletSize = (_tTotal * percent) / divisor;
    }

    function getMaxTX() external view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

    function getMaxWallet() external view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }

    function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

    function setRouterSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current LP.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
    }

    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%.");
        piSwapPercent = priceImpactSwapPercent;
    }

    function setSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    function getTotalAmountBuyBack() external view returns (uint256 buybackBoughtTotal) {
        buybackBoughtTotal = _totalBuyback;
    }

    function getTotalAmountBurned() external view returns (uint256 burnedTotal) {
        burnedTotal = _totalBurned;
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _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: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!bots[from] && !bots[to]);

        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if (_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if (buy || sell){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if (to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / ratios.totalSwap) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapAmt,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        uint256 amtBalance = address(this).balance;
        uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt;

        if (toLiquify > 0) {
            try dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                _taxWallets.liquidity,
                block.timestamp
            ) {
                emit AutoLiquify(liquidityBalance, toLiquify);
            } catch {
                return;
            }
        }

        amtBalance -= liquidityBalance;
        ratios.totalSwap -= ratios.liquidity;
        bool success;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 buybackBalance = (buyback != address(0)) ? (amtBalance * ratios.buyback) / ratios.totalSwap : 0;
        uint256 marketingBalance = amtBalance - (developmentBalance + buybackBalance);
        if (marketingBalance > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 35000}("");
        }
        if (developmentBalance > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 35000}("");
        }
        if (buybackBalance > 0) {
            path[0] = dexRouter.WETH();
            path[1] = buyback;
            buyTokens(path, buybackBalance, _taxWallets.buyback);
        }
    }

    function buyTokens(address[] memory path, uint256 amount, address payable destination) internal {
        try dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}
        (
            0,
            path,
            destination,
            block.timestamp
        ) {
            if (path[1] ==  buyback) {
                _totalBuyback += amount;
            }
        } catch {
            return;
        }
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity added.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _isExcludedFromFees[from] = true;
            _hasLiqBeenAdded = true;
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enablePublicTrading() public onlyOwner {
        require(!tradingEnabled, "Trading is already enabled!");
        require(_hasLiqBeenAdded, "Liquidity not added yet.");
        tradingEnabled = true;
        swapThreshold = (balanceOf(lpPair) * 10) / 10000;
        swapAmount = (balanceOf(lpPair) * 30) / 10000;
        _approve(address(this), address(dexRouter), type(uint256).max);

    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !other) {
                revert("Liquidity has not been added yet.");
            }
        }

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

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

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

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        Ratios memory ratios = _ratios;
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        uint256 burnAmount = (feeAmount * ratios.burn) / (ratios.burn + ratios.totalSwap);
        uint256 swapAmt = feeAmount - burnAmount;
        if (swapAmt > 0) {
            _tOwned[address(this)] += swapAmt;
            emit Transfer(from, address(this), swapAmt);
        }
        if (burnAmount > 0) {
            _tTotal -= burnAmount;
            _totalBurned += burnAmount;
            emit Transfer(from, address(0), burnAmount);
        }
        
        

        return amount - feeAmount;
    }

    function blacklist (address _address) external onlyOwner {
        bots[_address] = true;
    }
    
    function removeFromBlacklist (address _address) external onlyOwner {
        bots[_address] = false;
    }
    
    function getIsBlacklistedStatus (address _address) external view returns (bool) {
        return bots[_address];
    }

}

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":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","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":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":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"buyback","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"liquidity","type":"address"},{"internalType":"address payable","name":"buyback","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBuyback","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyback","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enablePublicTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getIsBlacklistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","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":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalAmountBurned","outputs":[{"internalType":"uint256","name":"burnedTotal","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalAmountBuyBack","outputs":[{"internalType":"uint256","name":"buybackBoughtTotal","type":"uint256"}],"stateMutability":"view","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":"account","type":"address"}],"name":"isExcludedFromLimits","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":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoundtripTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_buyBack","type":"address"}],"name":"setBuyBackWallet","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":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","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":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPrimaryParameters","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":"setRouterSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setSecondaryParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"_buyBack","type":"uint16"}],"name":"setTaxRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"liquidity","type":"address"}],"name":"setTeamWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"}]

60806040526000600355620000176009600a62000702565b62000028906422ecb25c006200071a565b600981905560408051606080820183526107d08083526020808401919091526000928401839052600a805465ffffffffffff19166307d007d0178155845160c08101865284815260fa818401819052818701819052818501526080808201959095526103e860a090910152600b80546b03e8000000fa00fa00fa00006001600160601b0319909116179055845193840185527396d3309ce4e0dc72718ff75f82aed61cfba5528a8085527339ae22506933bf519016953dc89b28c9d2a717b4928501839052730f3b0812d0ed111b3ad686aa0d1f33e607943b7095850186905261dead94909301849052600e80546001600160a01b03199081169094179055600f805484169092179091556010805483169094179093556011805490911690911790556012805461ff00191690556016819055612710916200016a916200071a565b6200017691906200073c565b601755612710600954600a6200018d91906200071a565b6200019991906200073c565b601855601980546001600160b01b031916306201000002179055600f54601c80546001600160a01b039283166001600160a01b031990911681178255600c8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d00179055600954600091825260016020908152604080842083905593549351918252929093169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600c60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029c57600080fd5b505afa158015620002b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d791906200075f565b6001600160a01b031663c9c65396600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033457600080fd5b505afa15801562000349573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036f91906200075f565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620003b757600080fd5b505af1158015620003cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f291906200075f565b600d80546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260409020805460ff19166001179055601c54600c5462000449929182169161010090910416600019620004ec565b600c546200046a90309061010090046001600160a01b0316600019620004ec565b601c80546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055955490941683526005909152902080549092161790556200078a565b6001600160a01b0383166200053e5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200058c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000535565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000644578160001904821115620006285762000628620005ed565b808516156200063657918102915b93841c939080029062000608565b509250929050565b6000826200065d57506001620006fc565b816200066c57506000620006fc565b81600181146200068557600281146200069057620006b0565b6001915050620006fc565b60ff841115620006a457620006a4620005ed565b50506001821b620006fc565b5060208310610133831016604e8410600b8410161715620006d5575081810a620006fc565b620006e1838362000603565b8060001904821115620006f857620006f8620005ed565b0290505b92915050565b60006200071360ff8416836200064c565b9392505050565b6000816000190483118215151615620007375762000737620005ed565b500290565b6000826200075a57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200077257600080fd5b81516001600160a01b03811681146200071357600080fd5b61335f806200079a6000396000f3fe6080604052600436106103855760003560e01c8063537df3b6116101d1578063b1b08f7111610102578063f555eb02116100a0578063f9f92be41161006f578063f9f92be414610b19578063fcfee5e214610b39578063fd01bd4c14610b4e578063fdb78c0e14610b6457600080fd5b8063f555eb0214610a58578063f7d3c5cb14610a6d578063f8ec691114610a8d578063f94aa1b414610ab357600080fd5b8063c4d34f7b116100dc578063c4d34f7b14610948578063cf84770614610968578063d72d9544146109f2578063dd62ed3e14610a1257600080fd5b8063b1b08f71146105cf578063b3d514fb146105cf578063b7df8b361461092e57600080fd5b806370a082311161016f57806395d89b411161014957806395d89b41146108ab57806395ef99e9146108d9578063a4640b82146108ee578063a9059cbb1461090e57600080fd5b806370a0823114610858578063715018a614610878578063893d20e81461088d57600080fd5b80635cce86cd116101ab5780635cce86cd146107ca5780635f49ea34146108035780636abcca04146108235780636ebd00781461084357600080fd5b8063537df3b6146107755780635717ff9314610795578063590ffdce146107aa57600080fd5b80632b112e49116102b657806346ea7ac8116102545780634e718e48116102235780634e718e48146106dd5780634fb2e45d146106fd5780634fbee1931461071d57806350a8e0161461075657600080fd5b806346ea7ac8146106775780634ada218b1461068d5780634b3c109a146106a75780634bbb93eb146106bd57600080fd5b8063313ce56711610290578063313ce567146105fb57806336fddb04146106175780633f3cf56c14610637578063452ed4f11461065757600080fd5b80632b112e49146105ba5780632b28fc7a146105cf5780632e8fa821146105e557600080fd5b8063095ea7b31161032357806321346959116102fd578063213469591461054d57806323b872dd14610562578063260039571461058257806328577751146105a457600080fd5b8063095ea7b3146105035780630fa604e41461052357806318160ddd1461053857600080fd5b806306fdde031161035f57806306fdde031461043d5780630758d9241461047b57806307dd79e0146104a0578063084e4f8a146104ca57600080fd5b806303fd2a45146103915780630445b667146103c4578063069d955f146103e857600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a761dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103d057600080fd5b506103da60135481565b6040519081526020016103bb565b3480156103f457600080fd5b50600a546104189061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103bb565b34801561044957600080fd5b5060408051808201909152600c81526b566f6c63616e6f20446f676560a01b60208201525b6040516103bb9190612c5d565b34801561048757600080fd5b50600c546103a79061010090046001600160a01b031681565b3480156104ac57600080fd5b50600c546104ba9060ff1681565b60405190151581526020016103bb565b3480156104d657600080fd5b506104ba6104e5366004612cca565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561050f57600080fd5b506104ba61051e366004612ce7565b610b83565b34801561052f57600080fd5b506103da610b9a565b34801561054457600080fd5b506009546103da565b34801561055957600080fd5b50601a546103da565b34801561056e57600080fd5b506104ba61057d366004612d13565b610bba565b34801561058e57600080fd5b506105a261059d366004612d54565b610c32565b005b3480156105b057600080fd5b506103da60165481565b3480156105c657600080fd5b506103da610d14565b3480156105db57600080fd5b506103da610bb881565b3480156105f157600080fd5b506103da60145481565b34801561060757600080fd5b50604051600981526020016103bb565b34801561062357600080fd5b506105a2610632366004612d8b565b610d42565b34801561064357600080fd5b506105a2610652366004612d54565b610d97565b34801561066357600080fd5b50600d546103a7906001600160a01b031681565b34801561068357600080fd5b506103da61177081565b34801561069957600080fd5b506019546104ba9060ff1681565b3480156106b357600080fd5b506103da601a5481565b3480156106c957600080fd5b506103da6106d8366004612dc0565b610e8a565b3480156106e957600080fd5b506105a26106f8366004612dc0565b610ebc565b34801561070957600080fd5b506105a2610718366004612cca565b610f35565b34801561072957600080fd5b506104ba610738366004612cca565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561076257600080fd5b506019546104ba90610100900460ff1681565b34801561078157600080fd5b506105a2610790366004612cca565b611068565b3480156107a157600080fd5b506105a26110b3565b3480156107b657600080fd5b506105a26107c5366004612d8b565b61114f565b3480156107d657600080fd5b506104ba6107e5366004612cca565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561080f57600080fd5b506105a261081e366004612dd9565b6111a4565b34801561082f57600080fd5b506105a261083e366004612e36565b61120d565b34801561084f57600080fd5b506103da61134e565b34801561086457600080fd5b506103da610873366004612cca565b611369565b34801561088457600080fd5b506105a2611384565b34801561089957600080fd5b50601c546001600160a01b03166103a7565b3480156108b757600080fd5b5060408051808201909152600581526425a0ad20a760d91b602082015261046e565b3480156108e557600080fd5b50601b546103da565b3480156108fa57600080fd5b506105a2610909366004612cca565b611413565b34801561091a57600080fd5b506104ba610929366004612ce7565b61145f565b34801561093a57600080fd5b506015546104ba9060ff1681565b34801561095457600080fd5b506105a2610963366004612e79565b611476565b34801561097457600080fd5b50600b546109b59061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0016103bb565b3480156109fe57600080fd5b506105a2610a0d366004612ede565b6115ed565b348015610a1e57600080fd5b506103da610a2d366004612efa565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a6457600080fd5b506105a2611676565b348015610a7957600080fd5b506105a2610a88366004612f33565b611712565b348015610a9957600080fd5b506019546103a7906201000090046001600160a01b031681565b348015610abf57600080fd5b50600e54600f54601054601154610ae6936001600160a01b03908116938116928116911684565b604080516001600160a01b03958616815293851660208501529184169183019190915290911660608201526080016103bb565b348015610b2557600080fd5b506105a2610b34366004612cca565b6118c7565b348015610b4557600080fd5b506105a2611915565b348015610b5a57600080fd5b506103da601b5481565b348015610b7057600080fd5b506012546104ba90610100900460ff1681565b6000610b90338484611a79565b5060015b92915050565b6000610ba86009600a61305f565b601854610bb5919061306e565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610c1f576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610c19908490613090565b90915550505b610c2a848484611b72565b949350505050565b601c546001600160a01b03163314610c655760405162461bcd60e51b8152600401610c5c906130a7565b60405180910390fd5b6064600954610c74919061306e565b8183600954610c8391906130e8565b610c8d919061306e565b1015610cf45760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610c5c565b8082600954610d0391906130e8565b610d0d919061306e565b6018555050565b6000610d206000611369565b610d2b61dead611369565b610d359190613107565b600954610bb59190613090565b601c546001600160a01b03163314610d6c5760405162461bcd60e51b8152600401610c5c906130a7565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c546001600160a01b03163314610dc15760405162461bcd60e51b8152600401610c5c906130a7565b6103e86009546005610dd391906130e8565b610ddd919061306e565b8183600954610dec91906130e8565b610df6919061306e565b1015610e6a5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c5c565b8082600954610e7991906130e8565b610e83919061306e565b6017555050565b600d54600090612710908390610ea8906001600160a01b0316611369565b610eb291906130e8565b610b94919061306e565b601c546001600160a01b03163314610ee65760405162461bcd60e51b8152600401610c5c906130a7565b6096811115610f305760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610c5c565b601655565b601c546001600160a01b03163314610f5f5760405162461bcd60e51b8152600401610c5c906130a7565b6001600160a01b038116610f855760405162461bcd60e51b8152600401610c5c9061311f565b6001600160a01b03811661dead1415610fb05760405162461bcd60e51b8152600401610c5c9061311f565b601c54610fc7906001600160a01b0316600061114f565b610fd281600161114f565b601c54600090610fea906001600160a01b0316611369565b111561101657601c54611014906001600160a01b03168261100a82611369565b6000806001611fc3565b505b601c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601c546001600160a01b031633146110925760405162461bcd60e51b8152600401610c5c906130a7565b6001600160a01b03166000908152600860205260409020805460ff19169055565b601c546001600160a01b031633146110dd5760405162461bcd60e51b8152600401610c5c906130a7565b6103e8600954600a6110ef91906130e8565b6110f9919061306e565b6018556009546103e89061110e90600a6130e8565b611118919061306e565b601755600a805465ffffffffffff19166303e803e8179055600b80546701f400fa00fa000067ffffffffffff000019909116179055565b601c546001600160a01b031633146111795760405162461bcd60e51b8152600401610c5c906130a7565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601c546001600160a01b031633146111ce5760405162461bcd60e51b8152600401610c5c906130a7565b600e80546001600160a01b039485166001600160a01b031991821617909155600f80549385169382169390931790925560108054919093169116179055565b601c546001600160a01b031633146112375760405162461bcd60e51b8152600401610c5c906130a7565b610bb88361ffff16111580156112535750610bb88261ffff1611155b80156112655750610bb88161ffff1611155b6112b15760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c5c565b6117706112be838561317c565b61ffff1611156113105760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f7420657863656564206d617820726f756e6474726970207461782e6044820152606401610c5c565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b600061135c6009600a61305f565b601754610bb5919061306e565b6001600160a01b031660009081526001602052604090205490565b601c546001600160a01b031633146113ae5760405162461bcd60e51b8152600401610c5c906130a7565b601c546113c5906001600160a01b0316600061114f565b601c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c546001600160a01b0316331461143d5760405162461bcd60e51b8152600401610c5c906130a7565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600061146c338484611b72565b5060019392505050565b601c546001600160a01b031633146114a05760405162461bcd60e51b8152600401610c5c906130a7565b600b805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff000000001916600160201b8683160267ffff000000000000191617600160301b858316021769ffff00000000000000001916600160401b918416919091021790558083611512868861317c565b61151c919061317c565b611526919061317c565b600b805461ffff60501b1916600160501b61ffff93841602179055600a5460009161155a916201000081048216911661317c565b600b5461ffff9182169250829161158391600160301b8104821691600160501b9091041661317c565b61ffff1611156115e55760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610c5c565b505050505050565b601c546001600160a01b031633146116175760405162461bcd60e51b8152600401610c5c906130a7565b6012805461ff001916610100841515908102919091179091556015805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601c546001600160a01b031633146116a05760405162461bcd60e51b8152600401610c5c906130a7565b6103e8600954600a6116b291906130e8565b6116bc919061306e565b6018556009546103e8906116d190600a6130e8565b6116db919061306e565b601755600a805465ffffffffffff19166301900190179055600b80546701f400fa00fa000067ffffffffffff000019909116179055565b601c546001600160a01b0316331461173c5760405162461bcd60e51b8152600401610c5c906130a7565b828460095461174b91906130e8565b611755919061306e565b60135560095481906117689084906130e8565b611772919061306e565b601481905560135411156117d25760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610c5c565b600d54612710906117eb906001600160a01b0316611369565b6117f69060966130e8565b611800919061306e565b601454111561185d5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526226281760e91b6064820152608401610c5c565b620f424060095461186e919061306e565b601454101561188f5760405162461bcd60e51b8152600401610c5c906131a2565b620f42406009546118a0919061306e565b60135410156118c15760405162461bcd60e51b8152600401610c5c906131a2565b50505050565b601c546001600160a01b031633146118f15760405162461bcd60e51b8152600401610c5c906130a7565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b601c546001600160a01b0316331461193f5760405162461bcd60e51b8152600401610c5c906130a7565b60195460ff16156119925760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720697320616c726561647920656e61626c65642100000000006044820152606401610c5c565b601954610100900460ff166119e95760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610c5c565b6019805460ff19166001179055600d5461271090611a0f906001600160a01b0316611369565b611a1a90600a6130e8565b611a24919061306e565b601355600d5461271090611a40906001600160a01b0316611369565b611a4b90601e6130e8565b611a55919061306e565b601455600c54611a7790309061010090046001600160a01b0316600019611a79565b565b6001600160a01b038316611ac55760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c5c565b6001600160a01b038216611b115760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c5c565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611bd85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c5c565b6001600160a01b038316611c3a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c5c565b60008211611c9c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c5c565b6001600160a01b03841660009081526008602052604090205460ff16158015611cde57506001600160a01b03831660009081526008602052604090205460ff16155b611ce757600080fd5b6001600160a01b0384166000908152600260205260408120548190819060ff1615611d155760019250611d43565b6001600160a01b03861660009081526002602052604090205460ff1615611d3f5760019150611d43565b5060015b611d4d878761217f565b15611f1a5760195460ff16611da45760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c5c565b8280611dad5750815b15611e5c576001600160a01b03871660009081526007602052604090205460ff16158015611df457506001600160a01b03861660009081526007602052604090205460ff16155b15611e5c57601754851115611e5c5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c5c565b600c546001600160a01b038781166101009092041614801590611e7d575081155b15611f1a576001600160a01b03861660009081526007602052604090205460ff16611f1a5760185485611eaf88611369565b611eb99190613107565b1115611f1a5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610c5c565b8115611faa5760125460ff16611faa57601254610100900460ff1615611faa576000611f4530611369565b90506013548110611fa85760145460155460ff1615611f9257601654600d546127109190611f7b906001600160a01b0316611369565b611f8591906130e8565b611f8f919061306e565b90505b808210611f9d578091505b611fa682612256565b505b505b611fb8878787868686611fc3565b979650505050505050565b601954600090610100900460ff1661205d57611fdf878761288c565b601954610100900460ff16158015611ffc5750611ffc878761217f565b8015612006575081155b1561205d5760405162461bcd60e51b815260206004820152602160248201527f4c697175696469747920686173206e6f74206265656e206164646564207965746044820152601760f91b6064820152608401610c5c565b6001600160a01b03871660009081526006602052604090205460019060ff168061209f57506001600160a01b03871660009081526006602052604090205460ff165b156120a8575060005b6001600160a01b038816600090815260016020526040812080548892906120d0908490613090565b9091555060009050816120e357866120ef565b6120ef8987878a61298b565b6001600160a01b03891660009081526001602052604081208054929350839290919061211c908490613107565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161216891815260200190565b60405180910390a350600198975050505050505050565b601c546000906001600160a01b038481169116148015906121ae5750601c546001600160a01b03838116911614155b80156121c55750601c546001600160a01b03163214155b80156121ea57506001600160a01b03821660009081526005602052604090205460ff16155b801561220f57506001600160a01b03831660009081526005602052604090205460ff16155b801561222657506001600160a01b03821661dead14155b801561223a57506001600160a01b03821615155b801561224f57506001600160a01b0383163014155b9392505050565b6012805460ff191660011790556040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a082018190526122cc575061287f565b306000908152600460209081526040808320600c5461010090046001600160a01b031684529091529020546000191461232f57306000908152600460209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836000015161ffff168561235091906130e8565b61235a919061306e565b612364919061306e565b905060006123728285613090565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106123ac576123ac6131f0565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561241a57600080fd5b505afa15801561242e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124529190613206565b81600181518110612465576124656131f0565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac947906124b2908590600090869030904290600401613267565b600060405180830381600087803b1580156124cc57600080fd5b505af19250505080156124dd575060015b6124ea575050505061287f565b476000836124f886846130e8565b612502919061306e565b905084156125f757600c5460105460405163f305d71960e01b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c4016060604051808303818588803b15801561257a57600080fd5b505af1935050505080156125ab575060408051601f3d908101601f191682019092526125a8918101906132a3565b60015b6125ba5750505050505061287f565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6126018183613090565b915085600001518660a00181815161261991906132d1565b61ffff90811690915260a08801516040890151600093508392918216916126419116866130e8565b61264b919061306e565b6019549091506000906201000090046001600160a01b031661266e576000612695565b8860a0015161ffff16896080015161ffff168661268b91906130e8565b612695919061306e565b905060006126a38284613107565b6126ad9087613090565b9050801561271257600e546040516001600160a01b03909116906188b89083906000818181858888f193505050503d8060008114612707576040519150601f19603f3d011682016040523d82523d6000602084013e61270c565b606091505b50909450505b821561277557600f546040516001600160a01b03909116906188b89085906000818181858888f193505050503d806000811461276a576040519150601f19603f3d011682016040523d82523d6000602084013e61276f565b606091505b50909450505b811561287457600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156127c957600080fd5b505afa1580156127dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128019190613206565b87600081518110612814576128146131f0565b6001600160a01b039283166020918202929092010152601954885162010000909104909116908890600190811061284d5761284d6131f0565b6001600160a01b039283166020918202929092010152601154612874918991859116612b86565b505050505050505050505b506012805460ff19169055565b601954610100900460ff16156128d75760405162461bcd60e51b815260206004820152601060248201526f2634b8bab4b234ba3c9030b23232b21760811b6044820152606401610c5c565b6128e1828261217f565b1580156128fb5750600d546001600160a01b038281169116145b15612987576001600160a01b03821660009081526005602090815260408083208054600160ff1991821681179092556006845293829020805490941681179093556019805461010061ff00199182168117909255601280549091169091179055519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257910161166a565b5050565b6040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201526000908185156129ff5750600a5461ffff16612a28565b8415612a185750600a5462010000900461ffff16612a28565b50600a54600160201b900461ffff165b6000612710612a3783876130e8565b612a41919061306e565b905060008360a001518460600151612a59919061317c565b61ffff16846060015161ffff1683612a7191906130e8565b612a7b919061306e565b90506000612a898284613090565b90508015612af6573060009081526001602052604081208054839290612ab0908490613107565b909155505060405181815230906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b8115612b6e578160096000828254612b0e9190613090565b9250508190555081601b6000828254612b279190613107565b90915550506040518281526000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612b788388613090565b9a9950505050505050505050565b600c5460405163b6f9de9560e01b81526101009091046001600160a01b03169063b6f9de95908490612bc3906000908890879042906004016132f4565b6000604051808303818588803b158015612bdc57600080fd5b505af193505050508015612bee575060015b612bf757505050565b601960029054906101000a90046001600160a01b03166001600160a01b031683600181518110612c2957612c296131f0565b60200260200101516001600160a01b03161415612c585781601a6000828254612c529190613107565b90915550505b505050565b600060208083528351808285015260005b81811015612c8a57858101830151858201604001528201612c6e565b81811115612c9c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612cc757600080fd5b50565b600060208284031215612cdc57600080fd5b813561224f81612cb2565b60008060408385031215612cfa57600080fd5b8235612d0581612cb2565b946020939093013593505050565b600080600060608486031215612d2857600080fd5b8335612d3381612cb2565b92506020840135612d4381612cb2565b929592945050506040919091013590565b60008060408385031215612d6757600080fd5b50508035926020909101359150565b80358015158114612d8657600080fd5b919050565b60008060408385031215612d9e57600080fd5b8235612da981612cb2565b9150612db760208401612d76565b90509250929050565b600060208284031215612dd257600080fd5b5035919050565b600080600060608486031215612dee57600080fd5b8335612df981612cb2565b92506020840135612e0981612cb2565b91506040840135612e1981612cb2565b809150509250925092565b803561ffff81168114612d8657600080fd5b600080600060608486031215612e4b57600080fd5b612e5484612e24565b9250612e6260208501612e24565b9150612e7060408501612e24565b90509250925092565b600080600080600060a08688031215612e9157600080fd5b612e9a86612e24565b9450612ea860208701612e24565b9350612eb660408701612e24565b9250612ec460608701612e24565b9150612ed260808701612e24565b90509295509295909350565b60008060408385031215612ef157600080fd5b612da983612d76565b60008060408385031215612f0d57600080fd5b8235612f1881612cb2565b91506020830135612f2881612cb2565b809150509250929050565b60008060008060808587031215612f4957600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612fb6578160001904821115612f9c57612f9c612f65565b80851615612fa957918102915b93841c9390800290612f80565b509250929050565b600082612fcd57506001610b94565b81612fda57506000610b94565b8160018114612ff05760028114612ffa57613016565b6001915050610b94565b60ff84111561300b5761300b612f65565b50506001821b610b94565b5060208310610133831016604e8410600b8410161715613039575081810a610b94565b6130438383612f7b565b806000190482111561305757613057612f65565b029392505050565b600061224f60ff841683612fbe565b60008261308b57634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156130a2576130a2612f65565b500390565b60208082526021908201527f436f6d6d616e64206f6e6c7920617661696c61626c6520666f72206f776e65726040820152601760f91b606082015260800190565b600081600019048311821515161561310257613102612f65565b500290565b6000821982111561311a5761311a612f65565b500190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600061ffff80831681851680830382111561319957613199612f65565b01949350505050565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561321857600080fd5b815161224f81612cb2565b600081518084526020808501945080840160005b8381101561325c5781516001600160a01b031687529582019590820190600101613237565b509495945050505050565b85815284602082015260a06040820152600061328660a0830186613223565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156132b857600080fd5b8351925060208401519150604084015190509250925092565b600061ffff838116908316818110156132ec576132ec612f65565b039392505050565b84815260806020820152600061330d6080830186613223565b6001600160a01b0394909416604083015250606001529291505056fea2646970667358221220cae1aa9860d0c3c1ec96887c81814d6dd9f885c71da3c28bd657ae1d8c576da964736f6c63430008090033

Deployed Bytecode

0x6080604052600436106103855760003560e01c8063537df3b6116101d1578063b1b08f7111610102578063f555eb02116100a0578063f9f92be41161006f578063f9f92be414610b19578063fcfee5e214610b39578063fd01bd4c14610b4e578063fdb78c0e14610b6457600080fd5b8063f555eb0214610a58578063f7d3c5cb14610a6d578063f8ec691114610a8d578063f94aa1b414610ab357600080fd5b8063c4d34f7b116100dc578063c4d34f7b14610948578063cf84770614610968578063d72d9544146109f2578063dd62ed3e14610a1257600080fd5b8063b1b08f71146105cf578063b3d514fb146105cf578063b7df8b361461092e57600080fd5b806370a082311161016f57806395d89b411161014957806395d89b41146108ab57806395ef99e9146108d9578063a4640b82146108ee578063a9059cbb1461090e57600080fd5b806370a0823114610858578063715018a614610878578063893d20e81461088d57600080fd5b80635cce86cd116101ab5780635cce86cd146107ca5780635f49ea34146108035780636abcca04146108235780636ebd00781461084357600080fd5b8063537df3b6146107755780635717ff9314610795578063590ffdce146107aa57600080fd5b80632b112e49116102b657806346ea7ac8116102545780634e718e48116102235780634e718e48146106dd5780634fb2e45d146106fd5780634fbee1931461071d57806350a8e0161461075657600080fd5b806346ea7ac8146106775780634ada218b1461068d5780634b3c109a146106a75780634bbb93eb146106bd57600080fd5b8063313ce56711610290578063313ce567146105fb57806336fddb04146106175780633f3cf56c14610637578063452ed4f11461065757600080fd5b80632b112e49146105ba5780632b28fc7a146105cf5780632e8fa821146105e557600080fd5b8063095ea7b31161032357806321346959116102fd578063213469591461054d57806323b872dd14610562578063260039571461058257806328577751146105a457600080fd5b8063095ea7b3146105035780630fa604e41461052357806318160ddd1461053857600080fd5b806306fdde031161035f57806306fdde031461043d5780630758d9241461047b57806307dd79e0146104a0578063084e4f8a146104ca57600080fd5b806303fd2a45146103915780630445b667146103c4578063069d955f146103e857600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a761dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103d057600080fd5b506103da60135481565b6040519081526020016103bb565b3480156103f457600080fd5b50600a546104189061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103bb565b34801561044957600080fd5b5060408051808201909152600c81526b566f6c63616e6f20446f676560a01b60208201525b6040516103bb9190612c5d565b34801561048757600080fd5b50600c546103a79061010090046001600160a01b031681565b3480156104ac57600080fd5b50600c546104ba9060ff1681565b60405190151581526020016103bb565b3480156104d657600080fd5b506104ba6104e5366004612cca565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561050f57600080fd5b506104ba61051e366004612ce7565b610b83565b34801561052f57600080fd5b506103da610b9a565b34801561054457600080fd5b506009546103da565b34801561055957600080fd5b50601a546103da565b34801561056e57600080fd5b506104ba61057d366004612d13565b610bba565b34801561058e57600080fd5b506105a261059d366004612d54565b610c32565b005b3480156105b057600080fd5b506103da60165481565b3480156105c657600080fd5b506103da610d14565b3480156105db57600080fd5b506103da610bb881565b3480156105f157600080fd5b506103da60145481565b34801561060757600080fd5b50604051600981526020016103bb565b34801561062357600080fd5b506105a2610632366004612d8b565b610d42565b34801561064357600080fd5b506105a2610652366004612d54565b610d97565b34801561066357600080fd5b50600d546103a7906001600160a01b031681565b34801561068357600080fd5b506103da61177081565b34801561069957600080fd5b506019546104ba9060ff1681565b3480156106b357600080fd5b506103da601a5481565b3480156106c957600080fd5b506103da6106d8366004612dc0565b610e8a565b3480156106e957600080fd5b506105a26106f8366004612dc0565b610ebc565b34801561070957600080fd5b506105a2610718366004612cca565b610f35565b34801561072957600080fd5b506104ba610738366004612cca565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561076257600080fd5b506019546104ba90610100900460ff1681565b34801561078157600080fd5b506105a2610790366004612cca565b611068565b3480156107a157600080fd5b506105a26110b3565b3480156107b657600080fd5b506105a26107c5366004612d8b565b61114f565b3480156107d657600080fd5b506104ba6107e5366004612cca565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561080f57600080fd5b506105a261081e366004612dd9565b6111a4565b34801561082f57600080fd5b506105a261083e366004612e36565b61120d565b34801561084f57600080fd5b506103da61134e565b34801561086457600080fd5b506103da610873366004612cca565b611369565b34801561088457600080fd5b506105a2611384565b34801561089957600080fd5b50601c546001600160a01b03166103a7565b3480156108b757600080fd5b5060408051808201909152600581526425a0ad20a760d91b602082015261046e565b3480156108e557600080fd5b50601b546103da565b3480156108fa57600080fd5b506105a2610909366004612cca565b611413565b34801561091a57600080fd5b506104ba610929366004612ce7565b61145f565b34801561093a57600080fd5b506015546104ba9060ff1681565b34801561095457600080fd5b506105a2610963366004612e79565b611476565b34801561097457600080fd5b50600b546109b59061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0016103bb565b3480156109fe57600080fd5b506105a2610a0d366004612ede565b6115ed565b348015610a1e57600080fd5b506103da610a2d366004612efa565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a6457600080fd5b506105a2611676565b348015610a7957600080fd5b506105a2610a88366004612f33565b611712565b348015610a9957600080fd5b506019546103a7906201000090046001600160a01b031681565b348015610abf57600080fd5b50600e54600f54601054601154610ae6936001600160a01b03908116938116928116911684565b604080516001600160a01b03958616815293851660208501529184169183019190915290911660608201526080016103bb565b348015610b2557600080fd5b506105a2610b34366004612cca565b6118c7565b348015610b4557600080fd5b506105a2611915565b348015610b5a57600080fd5b506103da601b5481565b348015610b7057600080fd5b506012546104ba90610100900460ff1681565b6000610b90338484611a79565b5060015b92915050565b6000610ba86009600a61305f565b601854610bb5919061306e565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610c1f576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610c19908490613090565b90915550505b610c2a848484611b72565b949350505050565b601c546001600160a01b03163314610c655760405162461bcd60e51b8152600401610c5c906130a7565b60405180910390fd5b6064600954610c74919061306e565b8183600954610c8391906130e8565b610c8d919061306e565b1015610cf45760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610c5c565b8082600954610d0391906130e8565b610d0d919061306e565b6018555050565b6000610d206000611369565b610d2b61dead611369565b610d359190613107565b600954610bb59190613090565b601c546001600160a01b03163314610d6c5760405162461bcd60e51b8152600401610c5c906130a7565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c546001600160a01b03163314610dc15760405162461bcd60e51b8152600401610c5c906130a7565b6103e86009546005610dd391906130e8565b610ddd919061306e565b8183600954610dec91906130e8565b610df6919061306e565b1015610e6a5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c5c565b8082600954610e7991906130e8565b610e83919061306e565b6017555050565b600d54600090612710908390610ea8906001600160a01b0316611369565b610eb291906130e8565b610b94919061306e565b601c546001600160a01b03163314610ee65760405162461bcd60e51b8152600401610c5c906130a7565b6096811115610f305760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610c5c565b601655565b601c546001600160a01b03163314610f5f5760405162461bcd60e51b8152600401610c5c906130a7565b6001600160a01b038116610f855760405162461bcd60e51b8152600401610c5c9061311f565b6001600160a01b03811661dead1415610fb05760405162461bcd60e51b8152600401610c5c9061311f565b601c54610fc7906001600160a01b0316600061114f565b610fd281600161114f565b601c54600090610fea906001600160a01b0316611369565b111561101657601c54611014906001600160a01b03168261100a82611369565b6000806001611fc3565b505b601c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601c546001600160a01b031633146110925760405162461bcd60e51b8152600401610c5c906130a7565b6001600160a01b03166000908152600860205260409020805460ff19169055565b601c546001600160a01b031633146110dd5760405162461bcd60e51b8152600401610c5c906130a7565b6103e8600954600a6110ef91906130e8565b6110f9919061306e565b6018556009546103e89061110e90600a6130e8565b611118919061306e565b601755600a805465ffffffffffff19166303e803e8179055600b80546701f400fa00fa000067ffffffffffff000019909116179055565b601c546001600160a01b031633146111795760405162461bcd60e51b8152600401610c5c906130a7565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601c546001600160a01b031633146111ce5760405162461bcd60e51b8152600401610c5c906130a7565b600e80546001600160a01b039485166001600160a01b031991821617909155600f80549385169382169390931790925560108054919093169116179055565b601c546001600160a01b031633146112375760405162461bcd60e51b8152600401610c5c906130a7565b610bb88361ffff16111580156112535750610bb88261ffff1611155b80156112655750610bb88161ffff1611155b6112b15760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c5c565b6117706112be838561317c565b61ffff1611156113105760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f7420657863656564206d617820726f756e6474726970207461782e6044820152606401610c5c565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b600061135c6009600a61305f565b601754610bb5919061306e565b6001600160a01b031660009081526001602052604090205490565b601c546001600160a01b031633146113ae5760405162461bcd60e51b8152600401610c5c906130a7565b601c546113c5906001600160a01b0316600061114f565b601c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c546001600160a01b0316331461143d5760405162461bcd60e51b8152600401610c5c906130a7565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600061146c338484611b72565b5060019392505050565b601c546001600160a01b031633146114a05760405162461bcd60e51b8152600401610c5c906130a7565b600b805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff000000001916600160201b8683160267ffff000000000000191617600160301b858316021769ffff00000000000000001916600160401b918416919091021790558083611512868861317c565b61151c919061317c565b611526919061317c565b600b805461ffff60501b1916600160501b61ffff93841602179055600a5460009161155a916201000081048216911661317c565b600b5461ffff9182169250829161158391600160301b8104821691600160501b9091041661317c565b61ffff1611156115e55760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610c5c565b505050505050565b601c546001600160a01b031633146116175760405162461bcd60e51b8152600401610c5c906130a7565b6012805461ff001916610100841515908102919091179091556015805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601c546001600160a01b031633146116a05760405162461bcd60e51b8152600401610c5c906130a7565b6103e8600954600a6116b291906130e8565b6116bc919061306e565b6018556009546103e8906116d190600a6130e8565b6116db919061306e565b601755600a805465ffffffffffff19166301900190179055600b80546701f400fa00fa000067ffffffffffff000019909116179055565b601c546001600160a01b0316331461173c5760405162461bcd60e51b8152600401610c5c906130a7565b828460095461174b91906130e8565b611755919061306e565b60135560095481906117689084906130e8565b611772919061306e565b601481905560135411156117d25760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610c5c565b600d54612710906117eb906001600160a01b0316611369565b6117f69060966130e8565b611800919061306e565b601454111561185d5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526226281760e91b6064820152608401610c5c565b620f424060095461186e919061306e565b601454101561188f5760405162461bcd60e51b8152600401610c5c906131a2565b620f42406009546118a0919061306e565b60135410156118c15760405162461bcd60e51b8152600401610c5c906131a2565b50505050565b601c546001600160a01b031633146118f15760405162461bcd60e51b8152600401610c5c906130a7565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b601c546001600160a01b0316331461193f5760405162461bcd60e51b8152600401610c5c906130a7565b60195460ff16156119925760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720697320616c726561647920656e61626c65642100000000006044820152606401610c5c565b601954610100900460ff166119e95760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610c5c565b6019805460ff19166001179055600d5461271090611a0f906001600160a01b0316611369565b611a1a90600a6130e8565b611a24919061306e565b601355600d5461271090611a40906001600160a01b0316611369565b611a4b90601e6130e8565b611a55919061306e565b601455600c54611a7790309061010090046001600160a01b0316600019611a79565b565b6001600160a01b038316611ac55760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c5c565b6001600160a01b038216611b115760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c5c565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611bd85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c5c565b6001600160a01b038316611c3a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c5c565b60008211611c9c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c5c565b6001600160a01b03841660009081526008602052604090205460ff16158015611cde57506001600160a01b03831660009081526008602052604090205460ff16155b611ce757600080fd5b6001600160a01b0384166000908152600260205260408120548190819060ff1615611d155760019250611d43565b6001600160a01b03861660009081526002602052604090205460ff1615611d3f5760019150611d43565b5060015b611d4d878761217f565b15611f1a5760195460ff16611da45760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c5c565b8280611dad5750815b15611e5c576001600160a01b03871660009081526007602052604090205460ff16158015611df457506001600160a01b03861660009081526007602052604090205460ff16155b15611e5c57601754851115611e5c5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c5c565b600c546001600160a01b038781166101009092041614801590611e7d575081155b15611f1a576001600160a01b03861660009081526007602052604090205460ff16611f1a5760185485611eaf88611369565b611eb99190613107565b1115611f1a5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610c5c565b8115611faa5760125460ff16611faa57601254610100900460ff1615611faa576000611f4530611369565b90506013548110611fa85760145460155460ff1615611f9257601654600d546127109190611f7b906001600160a01b0316611369565b611f8591906130e8565b611f8f919061306e565b90505b808210611f9d578091505b611fa682612256565b505b505b611fb8878787868686611fc3565b979650505050505050565b601954600090610100900460ff1661205d57611fdf878761288c565b601954610100900460ff16158015611ffc5750611ffc878761217f565b8015612006575081155b1561205d5760405162461bcd60e51b815260206004820152602160248201527f4c697175696469747920686173206e6f74206265656e206164646564207965746044820152601760f91b6064820152608401610c5c565b6001600160a01b03871660009081526006602052604090205460019060ff168061209f57506001600160a01b03871660009081526006602052604090205460ff165b156120a8575060005b6001600160a01b038816600090815260016020526040812080548892906120d0908490613090565b9091555060009050816120e357866120ef565b6120ef8987878a61298b565b6001600160a01b03891660009081526001602052604081208054929350839290919061211c908490613107565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161216891815260200190565b60405180910390a350600198975050505050505050565b601c546000906001600160a01b038481169116148015906121ae5750601c546001600160a01b03838116911614155b80156121c55750601c546001600160a01b03163214155b80156121ea57506001600160a01b03821660009081526005602052604090205460ff16155b801561220f57506001600160a01b03831660009081526005602052604090205460ff16155b801561222657506001600160a01b03821661dead14155b801561223a57506001600160a01b03821615155b801561224f57506001600160a01b0383163014155b9392505050565b6012805460ff191660011790556040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a082018190526122cc575061287f565b306000908152600460209081526040808320600c5461010090046001600160a01b031684529091529020546000191461232f57306000908152600460209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836000015161ffff168561235091906130e8565b61235a919061306e565b612364919061306e565b905060006123728285613090565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106123ac576123ac6131f0565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561241a57600080fd5b505afa15801561242e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124529190613206565b81600181518110612465576124656131f0565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac947906124b2908590600090869030904290600401613267565b600060405180830381600087803b1580156124cc57600080fd5b505af19250505080156124dd575060015b6124ea575050505061287f565b476000836124f886846130e8565b612502919061306e565b905084156125f757600c5460105460405163f305d71960e01b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c4016060604051808303818588803b15801561257a57600080fd5b505af1935050505080156125ab575060408051601f3d908101601f191682019092526125a8918101906132a3565b60015b6125ba5750505050505061287f565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6126018183613090565b915085600001518660a00181815161261991906132d1565b61ffff90811690915260a08801516040890151600093508392918216916126419116866130e8565b61264b919061306e565b6019549091506000906201000090046001600160a01b031661266e576000612695565b8860a0015161ffff16896080015161ffff168661268b91906130e8565b612695919061306e565b905060006126a38284613107565b6126ad9087613090565b9050801561271257600e546040516001600160a01b03909116906188b89083906000818181858888f193505050503d8060008114612707576040519150601f19603f3d011682016040523d82523d6000602084013e61270c565b606091505b50909450505b821561277557600f546040516001600160a01b03909116906188b89085906000818181858888f193505050503d806000811461276a576040519150601f19603f3d011682016040523d82523d6000602084013e61276f565b606091505b50909450505b811561287457600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156127c957600080fd5b505afa1580156127dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128019190613206565b87600081518110612814576128146131f0565b6001600160a01b039283166020918202929092010152601954885162010000909104909116908890600190811061284d5761284d6131f0565b6001600160a01b039283166020918202929092010152601154612874918991859116612b86565b505050505050505050505b506012805460ff19169055565b601954610100900460ff16156128d75760405162461bcd60e51b815260206004820152601060248201526f2634b8bab4b234ba3c9030b23232b21760811b6044820152606401610c5c565b6128e1828261217f565b1580156128fb5750600d546001600160a01b038281169116145b15612987576001600160a01b03821660009081526005602090815260408083208054600160ff1991821681179092556006845293829020805490941681179093556019805461010061ff00199182168117909255601280549091169091179055519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257910161166a565b5050565b6040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201526000908185156129ff5750600a5461ffff16612a28565b8415612a185750600a5462010000900461ffff16612a28565b50600a54600160201b900461ffff165b6000612710612a3783876130e8565b612a41919061306e565b905060008360a001518460600151612a59919061317c565b61ffff16846060015161ffff1683612a7191906130e8565b612a7b919061306e565b90506000612a898284613090565b90508015612af6573060009081526001602052604081208054839290612ab0908490613107565b909155505060405181815230906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b8115612b6e578160096000828254612b0e9190613090565b9250508190555081601b6000828254612b279190613107565b90915550506040518281526000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612b788388613090565b9a9950505050505050505050565b600c5460405163b6f9de9560e01b81526101009091046001600160a01b03169063b6f9de95908490612bc3906000908890879042906004016132f4565b6000604051808303818588803b158015612bdc57600080fd5b505af193505050508015612bee575060015b612bf757505050565b601960029054906101000a90046001600160a01b03166001600160a01b031683600181518110612c2957612c296131f0565b60200260200101516001600160a01b03161415612c585781601a6000828254612c529190613107565b90915550505b505050565b600060208083528351808285015260005b81811015612c8a57858101830151858201604001528201612c6e565b81811115612c9c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612cc757600080fd5b50565b600060208284031215612cdc57600080fd5b813561224f81612cb2565b60008060408385031215612cfa57600080fd5b8235612d0581612cb2565b946020939093013593505050565b600080600060608486031215612d2857600080fd5b8335612d3381612cb2565b92506020840135612d4381612cb2565b929592945050506040919091013590565b60008060408385031215612d6757600080fd5b50508035926020909101359150565b80358015158114612d8657600080fd5b919050565b60008060408385031215612d9e57600080fd5b8235612da981612cb2565b9150612db760208401612d76565b90509250929050565b600060208284031215612dd257600080fd5b5035919050565b600080600060608486031215612dee57600080fd5b8335612df981612cb2565b92506020840135612e0981612cb2565b91506040840135612e1981612cb2565b809150509250925092565b803561ffff81168114612d8657600080fd5b600080600060608486031215612e4b57600080fd5b612e5484612e24565b9250612e6260208501612e24565b9150612e7060408501612e24565b90509250925092565b600080600080600060a08688031215612e9157600080fd5b612e9a86612e24565b9450612ea860208701612e24565b9350612eb660408701612e24565b9250612ec460608701612e24565b9150612ed260808701612e24565b90509295509295909350565b60008060408385031215612ef157600080fd5b612da983612d76565b60008060408385031215612f0d57600080fd5b8235612f1881612cb2565b91506020830135612f2881612cb2565b809150509250929050565b60008060008060808587031215612f4957600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612fb6578160001904821115612f9c57612f9c612f65565b80851615612fa957918102915b93841c9390800290612f80565b509250929050565b600082612fcd57506001610b94565b81612fda57506000610b94565b8160018114612ff05760028114612ffa57613016565b6001915050610b94565b60ff84111561300b5761300b612f65565b50506001821b610b94565b5060208310610133831016604e8410600b8410161715613039575081810a610b94565b6130438383612f7b565b806000190482111561305757613057612f65565b029392505050565b600061224f60ff841683612fbe565b60008261308b57634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156130a2576130a2612f65565b500390565b60208082526021908201527f436f6d6d616e64206f6e6c7920617661696c61626c6520666f72206f776e65726040820152601760f91b606082015260800190565b600081600019048311821515161561310257613102612f65565b500290565b6000821982111561311a5761311a612f65565b500190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600061ffff80831681851680830382111561319957613199612f65565b01949350505050565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561321857600080fd5b815161224f81612cb2565b600081518084526020808501945080840160005b8381101561325c5781516001600160a01b031687529582019590820190600101613237565b509495945050505050565b85815284602082015260a06040820152600061328660a0830186613223565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156132b857600080fd5b8351925060208401519150604084015190509250925092565b600061ffff838116908316818110156132ec576132ec612f65565b039392505050565b84815260806020820152600061330d6080830186613223565b6001600160a01b0394909416604083015250606001529291505056fea2646970667358221220cae1aa9860d0c3c1ec96887c81814d6dd9f885c71da3c28bd657ae1d8c576da964736f6c63430008090033

Deployed Bytecode Sourcemap

3538:20098:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5139:73;;;;;;;;;;;;5170:42;5139:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5139:73:0;;;;;;;;5782:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;5782:28:0;222:177:1;4571:79:0;;;;;;;;;;-1:-1:-1;4571:79:0;;;;;;;;;;;;;;;-1:-1:-1;;;4571:79:0;;;;;;;;;;610:6:1;643:15;;;625:34;;695:15;;;690:2;675:18;;668:43;747:15;;727:18;;;720:43;;;;588:2;573:18;4571:79:0;404:365:1;8666:80:0;;;;;;;;;;-1:-1:-1;8738:5:0;;;;;;;;;;;;-1:-1:-1;;;8738:5:0;;;;8666:80;;;;;;;:::i;5078:26::-;;;;;;;;;;-1:-1:-1;5078:26:0;;;;;;;-1:-1:-1;;;;;5078:26:0;;;5045;;;;;;;;;;-1:-1:-1;5045:26:0;;;;;;;;;;;1766:14:1;;1759:22;1741:41;;1729:2;1714:18;5045:26:0;1601:187:1;23511:120:0;;;;;;;;;;-1:-1:-1;23511:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;23609:14:0;23585:4;23609:14;;;:4;:14;;;;;;;;;23511:120;9274:161;;;;;;;;;;-1:-1:-1;9274:161:0;;;;;:::i;:::-;;:::i;13714:114::-;;;;;;;;;;;;;:::i;8401:83::-;;;;;;;;;;-1:-1:-1;8474:7:0;;8401:83;;15234:137;;;;;;;;;;-1:-1:-1;15350:13:0;;15234:137;;9761:306;;;;;;;;;;-1:-1:-1;9761:306:0;;;;;:::i;:::-;;:::i;13326:264::-;;;;;;;;;;-1:-1:-1;13326:264:0;;;;;:::i;:::-;;:::i;:::-;;5890:33;;;;;;;;;;;;;;;;10640:141;;;;;;;;;;;;;:::i;4789:42::-;;;;;;;;;;;;4827:4;4789:42;;5817:25;;;;;;;;;;;;;;;;8490:80;;;;;;;;;;-1:-1:-1;8490:80:0;;4266:1;3357:36:1;;3345:2;3330:18;8490:80:0;3215:184:1;10350:140:0;;;;;;;;;;-1:-1:-1;10350:140:0;;;;;:::i;:::-;;:::i;13045:273::-;;;;;;;;;;-1:-1:-1;13045:273:0;;;;;:::i;:::-;;:::i;5111:21::-;;;;;;;;;;-1:-1:-1;5111:21:0;;;;-1:-1:-1;;;;;5111:21:0;;;4942:46;;;;;;;;;;;;4984:4;4942:46;;6060:34;;;;;;;;;;-1:-1:-1;6060:34:0;;;;;;;;6193:28;;;;;;;;;;;;;;;;13836:189;;;;;;;;;;-1:-1:-1;13836:189:0;;;;;:::i;:::-;;:::i;14746:217::-;;;;;;;;;;-1:-1:-1;14746:217:0;;;;;:::i;:::-;;:::i;7506:654::-;;;;;;;;;;-1:-1:-1;7506:654:0;;;;;:::i;:::-;;:::i;10215:127::-;;;;;;;;;;-1:-1:-1;10215:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10306:28:0;10282:4;10306:28;;;:19;:28;;;;;;;;;10215:127;6101:36;;;;;;;;;;-1:-1:-1;6101:36:0;;;;;;;;;;;23391:108;;;;;;;;;;-1:-1:-1;23391:108:0;;;;;:::i;:::-;;:::i;12170:361::-;;;;;;;;;;;;;:::i;10498:134::-;;;;;;;;;;-1:-1:-1;10498:134:0;;;;;:::i;:::-;;:::i;10075:132::-;;;;;;;;;;-1:-1:-1;10075:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;10169:30:0;10145:4;10169:30;;;:21;:30;;;;;;;;;10075:132;11865:297;;;;;;;;;;-1:-1:-1;11865:297:0;;;;;:::i;:::-;;:::i;10789:490::-;;;;;;;;;;-1:-1:-1;10789:490:0;;;;;:::i;:::-;;:::i;13598:108::-;;;;;;;;;;;;;:::i;8976:117::-;;;;;;;;;;-1:-1:-1;8976:117:0;;;;;:::i;:::-;;:::i;8168:225::-;;;;;;;;;;;;;:::i;8752:79::-;;;;;;;;;;-1:-1:-1;8822:6:0;;-1:-1:-1;;;;;8822:6:0;8752:79;;8576:84;;;;;;;;;;-1:-1:-1;8650:7:0;;;;;;;;;;;;-1:-1:-1;;;8650:7:0;;;;8576:84;;15379:121;;;;;;;;;;-1:-1:-1;15480:12:0;;15379:121;;12908:129;;;;;;;;;;-1:-1:-1;12908:129:0;;;;;:::i;:::-;;:::i;9101:165::-;;;;;;;;;;-1:-1:-1;9101:165:0;;;;;:::i;:::-;;:::i;5849:34::-;;;;;;;;;;-1:-1:-1;5849:34:0;;;;;;;;11287:570;;;;;;;;;;-1:-1:-1;11287:570:0;;;;;:::i;:::-;;:::i;4659:121::-;;;;;;;;;;-1:-1:-1;4659:121:0;;;;;;;;;;;;;;;-1:-1:-1;;;4659:121:0;;;;;-1:-1:-1;;;4659:121:0;;;;;-1:-1:-1;;;4659:121:0;;;;;-1:-1:-1;;;4659:121:0;;;;;;;;;6153:6:1;6186:15;;;6168:34;;6238:15;;;6233:2;6218:18;;6211:43;6290:15;;;6270:18;;;6263:43;;;;6342:15;;;6337:2;6322:18;;6315:43;6395:15;;6389:3;6374:19;;6367:44;6448:15;;;6442:3;6427:19;;6420:44;6130:3;6115:19;4659:121:0;5868:602:1;14971:255:0;;;;;;;;;;-1:-1:-1;14971:255:0;;;;;:::i;:::-;;:::i;8837:133::-;;;;;;;;;;-1:-1:-1;8837:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8939:19:0;;;8921:7;8939:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8837:133;12539:361;;;;;;;;;;;;;:::i;14033:705::-;;;;;;;;;;-1:-1:-1;14033:705:0;;;;;:::i;:::-;;:::i;6146:38::-;;;;;;;;;;-1:-1:-1;6146:38:0;;;;;;;-1:-1:-1;;;;;6146:38:0;;;5399:306;;;;;;;;;;-1:-1:-1;5399:306:0;;;;;;;;;;-1:-1:-1;;;;;5399:306:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7862:15:1;;;7844:34;;7914:15;;;7909:2;7894:18;;7887:43;7966:15;;;7946:18;;;7939:43;;;;8018:15;;;8013:2;7998:18;;7991:43;7793:3;7778:19;5399:306:0;7511:529:1;23282:97:0;;;;;;;;;;-1:-1:-1;23282:97:0;;;;;:::i;:::-;;:::i;21116:408::-;;;;;;;;;;;;;:::i;6228:27::-;;;;;;;;;;;;;;;;5736:39;;;;;;;;;;-1:-1:-1;5736:39:0;;;;;;;;;;;9274:161;9351:4;9368:37;9377:10;9389:7;9398:6;9368:8;:37::i;:::-;-1:-1:-1;9423:4:0;9274:161;;;;;:::o;13714:114::-;13761:7;13806:13;4266:1;13806:2;:13;:::i;:::-;13788:14;;:32;;;;:::i;:::-;13781:39;;13714:114;:::o;9761:306::-;-1:-1:-1;;;;;9882:19:0;;9861:4;9882:19;;;:11;:19;;;;;;;;9902:10;9882:31;;;;;;;;-1:-1:-1;;9882:52:0;9878:126;;-1:-1:-1;;;;;9951:19:0;;;;;;:11;:19;;;;;;;;9971:10;9951:31;;;;;;;:41;;9986:6;;9951:19;:41;;9986:6;;9951:41;:::i;:::-;;;;-1:-1:-1;;9878:126:0;10023:36;10033:6;10041:9;10052:6;10023:9;:36::i;:::-;10016:43;9761:306;-1:-1:-1;;;;9761:306:0:o;13326:264::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;;;;;;;;;13468:3:::1;13458:7;;:13;;;;:::i;:::-;13446:7;13435;13425;;:17;;;;:::i;:::-;13424:29;;;;:::i;:::-;:48;;13416:109;;;::::0;-1:-1:-1;;;13416:109:0;;10689:2:1;13416:109:0::1;::::0;::::1;10671:21:1::0;10728:2;10708:18;;;10701:30;10767:34;10747:18;;;10740:62;-1:-1:-1;;;10818:18:1;;;10811:46;10874:19;;13416:109:0::1;10487:412:1::0;13416:109:0::1;13575:7;13564;13554;;:17;;;;:::i;:::-;13553:29;;;;:::i;:::-;13536:14;:46:::0;-1:-1:-1;;13326:264:0:o;10640:141::-;10693:7;10750:21;10768:1;10750:9;:21::i;:::-;10732:15;5170:42;10732:9;:15::i;:::-;:39;;;;:::i;:::-;10721:7;;:51;;;;:::i;10350:140::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10442:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;10442:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10350:140::o;13045:273::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;13190:4:::1;13176:7;;13186:1;13176:11;;;;:::i;:::-;:18;;;;:::i;:::-;13164:7;13153;13143;;:17;;;;:::i;:::-;13142:29;;;;:::i;:::-;:53;;13134:121;;;::::0;-1:-1:-1;;;13134:121:0;;11239:2:1;13134:121:0::1;::::0;::::1;11221:21:1::0;11278:2;11258:18;;;11251:30;11317:34;11297:18;;;11290:62;11388:25;11368:18;;;11361:53;11431:19;;13134:121:0::1;11037:419:1::0;13134:121:0::1;13303:7;13292;13282;;:17;;;;:::i;:::-;13281:29;;;;:::i;:::-;13266:12;:44:::0;-1:-1:-1;;13045:273:0:o;13836:189::-;13965:6;;13927:7;;5031:5;;13975:21;;13955:17;;-1:-1:-1;;;;;13965:6:0;13955:9;:17::i;:::-;:41;;;;:::i;:::-;13954:62;;;;:::i;14746:217::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;14876:3:::1;14850:22;:29;;14842:64;;;::::0;-1:-1:-1;;;14842:64:0;;11663:2:1;14842:64:0::1;::::0;::::1;11645:21:1::0;11702:2;11682:18;;;11675:30;-1:-1:-1;;;11721:18:1;;;11714:52;11783:18;;14842:64:0::1;11461:346:1::0;14842:64:0::1;14917:13;:38:::0;14746:217::o;7506:654::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7585:22:0;::::1;7577:96;;;;-1:-1:-1::0;;;7577:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7692:16:0;::::1;5170:42;7692:16;;7684:90;;;;-1:-1:-1::0;;;7684:90:0::1;;;;;;;:::i;:::-;7805:6;::::0;7785:34:::1;::::0;-1:-1:-1;;;;;7805:6:0::1;;7785:19;:34::i;:::-;7830:35;7850:8;7860:4;7830:19;:35::i;:::-;7900:6;::::0;7910:1:::1;::::0;7890:17:::1;::::0;-1:-1:-1;;;;;7900:6:0::1;7890:9;:17::i;:::-;:21;7886:127;;;7945:6;::::0;7928:73:::1;::::0;-1:-1:-1;;;;;7945:6:0::1;7953:8:::0;7963:17:::1;7945:6:::0;7963:9:::1;:17::i;:::-;7982:5;7989::::0;7996:4:::1;7928:16;:73::i;:::-;;7886:127;8052:6;::::0;;-1:-1:-1;;;;;8069:17:0;;::::1;-1:-1:-1::0;;;;;;8069:17:0;::::1;::::0;::::1;::::0;;;8102:40:::1;::::0;8052:6;::::1;::::0;8069:17;8052:6;;8102:40:::1;::::0;8033:16:::1;::::0;8102:40:::1;7566:594;7506:654:::0;:::o;23391:108::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23469:14:0::1;23486:5;23469:14:::0;;;:4:::1;:14;::::0;;;;:22;;-1:-1:-1;;23469:22:0::1;::::0;;23391:108::o;12170:361::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;12266:4:::1;12250:7;;12260:2;12250:12;;;;:::i;:::-;12249:21;;;;:::i;:::-;12232:14;:38:::0;12297:7:::1;::::0;12313:4:::1;::::0;12297:12:::1;::::0;12307:2:::1;12297:12;:::i;:::-;12296:21;;;;:::i;:::-;12281:12;:36:::0;12328:9:::1;:23:::0;;-1:-1:-1;;12397:25:0;12362:24;12397:25;;;12433:7:::1;:25:::0;;12503:18;-1:-1:-1;;12503:18:0;;;;;;12170:361::o;10498:134::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10586:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;10586:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10498:134::o;11865:297::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;12002:11:::1;:42:::0;;-1:-1:-1;;;;;12002:42:0;;::::1;-1:-1:-1::0;;;;;;12002:42:0;;::::1;;::::0;;;12055:23;:46;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;12112:21;:42;;;;;::::1;::::0;::::1;;::::0;;11865:297::o;10789:490::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;4827:4:::1;10898:6;:21;;;;:65;;;;;4877:4;10940:7;:23;;;;10898:65;:117;;;;;4931:4;10984:11;:31;;;;10898:117;10890:170;;;::::0;-1:-1:-1;;;10890:170:0;;12444:2:1;10890:170:0::1;::::0;::::1;12426:21:1::0;12483:2;12463:18;;;12456:30;12522:25;12502:18;;;12495:53;12565:18;;10890:170:0::1;12242:347:1::0;10890:170:0::1;4984:4;11079:16;11088:7:::0;11079:6;:16:::1;:::i;:::-;:35;;;;11071:80;;;::::0;-1:-1:-1;;;11071:80:0;;13025:2:1;11071:80:0::1;::::0;::::1;13007:21:1::0;;;13044:18;;;13037:30;13103:34;13083:18;;;13076:62;13155:18;;11071:80:0::1;12823:356:1::0;11071:80:0::1;11162:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;11198:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;11236:35:0::1;-1:-1:-1::0;;;11236:35:0;;;::::1;;::::0;;;::::1;::::0;;10789:490::o;13598:108::-;13641:7;13684:13;4266:1;13684:2;:13;:::i;:::-;13668:12;;:30;;;;:::i;8976:117::-;-1:-1:-1;;;;;9069:16:0;9042:7;9069:16;;;:7;:16;;;;;;;8976:117::o;8168:225::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;8247:6:::1;::::0;8227:34:::1;::::0;-1:-1:-1;;;;;8247:6:0::1;;8227:19;:34::i;:::-;8291:6;::::0;;-1:-1:-1;;;;;;8308:19:0;::::1;::::0;;;8343:42:::1;::::0;-1:-1:-1;;;;;8291:6:0;;::::1;::::0;8272:16:::1;::::0;8291:6;;8343:42:::1;::::0;8272:16;;8343:42:::1;8216:177;8168:225::o:0;12908:129::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;12990:19;:39;;-1:-1:-1;;;;;;12990:39:0::1;-1:-1:-1::0;;;;;12990:39:0;;;::::1;::::0;;;::::1;::::0;;12908:129::o;9101:165::-;9179:4;9196:40;9206:10;9218:9;9229:6;9196:9;:40::i;:::-;-1:-1:-1;9254:4:0;;9101:165;-1:-1:-1;;;9101:165:0:o;11287:570::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;11425:7:::1;:29:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;11465:29:0;;;;;;;;;;::::1;;;-1:-1:-1::0;;11549:19:0;-1:-1:-1;;;11505:33:0;;::::1;;-1:-1:-1::0;;11549:19:0;;-1:-1:-1;;;11549:19:0;;::::1;;;-1:-1:-1::0;;11579:26:0::1;-1:-1:-1::0;;;11579:26:0;;::::1;::::0;;;::::1;;::::0;;;11505:33;11636:21:::1;11465:29:::0;11425;11636:21:::1;:::i;:::-;:35;;;;:::i;:::-;:46;;;;:::i;:::-;11616:7;:66:::0;;-1:-1:-1;;;;11616:66:0::1;-1:-1:-1::0;;;11616:66:0::1;::::0;;::::1;;;::::0;;:17:::1;11728::::0;-1:-1:-1;;11709:36:0::1;::::0;11728:17;;::::1;::::0;::::1;::::0;11709:16:::1;:36;:::i;:::-;11784:7;:12:::0;11693:52:::1;::::0;;::::1;::::0;-1:-1:-1;11693:52:0;;11764:32:::1;::::0;-1:-1:-1;;;11784:12:0;::::1;::::0;::::1;::::0;-1:-1:-1;;;11764:17:0;;::::1;;:32;:::i;:::-;:41;;;;11756:93;;;::::0;-1:-1:-1;;;11756:93:0;;13386:2:1;11756:93:0::1;::::0;::::1;13368:21:1::0;13425:2;13405:18;;;13398:30;13464:34;13444:18;;;13437:62;-1:-1:-1;;;13515:18:1;;;13508:37;13562:19;;11756:93:0::1;13184:403:1::0;11756:93:0::1;11414:443;11287:570:::0;;;;;:::o;14971:255::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;15072:19:::1;:33:::0;;-1:-1:-1;;15072:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;15116:22:::1;:47:::0;;-1:-1:-1;;15116:47:0::1;::::0;::::1;;;::::0;;15179:39:::1;::::0;1741:41:1;;;15179:39:0::1;::::0;1729:2:1;1714:18;15179:39:0::1;;;;;;;;14971:255:::0;;:::o;12539:361::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;12637:4:::1;12621:7;;12631:2;12621:12;;;;:::i;:::-;12620:21;;;;:::i;:::-;12603:14;:38:::0;12668:7:::1;::::0;12684:4:::1;::::0;12668:12:::1;::::0;12678:2:::1;12668:12;:::i;:::-;12667:21;;;;:::i;:::-;12652:12;:36:::0;12699:9:::1;:22:::0;;-1:-1:-1;;12766:25:0;12732:23;12766:25;;;12802:7:::1;:25:::0;;12872:18;-1:-1:-1;;12872:18:0;;;;;;12539:361::o;14033:705::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;14239:16:::1;14219;14209:7;;:26;;;;:::i;:::-;14208:47;;;;:::i;:::-;14192:13;:63:::0;14280:7:::1;::::0;14307:13;;14280:23:::1;::::0;14290:13;;14280:23:::1;:::i;:::-;14279:41;;;;:::i;:::-;14266:10;:54:::0;;;14339:13:::1;::::0;:27:::1;;14331:73;;;::::0;-1:-1:-1;;;14331:73:0;;13794:2:1;14331:73:0::1;::::0;::::1;13776:21:1::0;13833:2;13813:18;;;13806:30;13872:34;13852:18;;;13845:62;-1:-1:-1;;;13923:18:1;;;13916:31;13964:19;;14331:73:0::1;13592:397:1::0;14331:73:0::1;14448:6;::::0;5031:5:::1;::::0;14438:17:::1;::::0;-1:-1:-1;;;;;14448:6:0::1;14438:9;:17::i;:::-;:23;::::0;14458:3:::1;14438:23;:::i;:::-;14437:44;;;;:::i;:::-;14423:10;;:58;;14415:106;;;::::0;-1:-1:-1;;;14415:106:0;;14196:2:1;14415:106:0::1;::::0;::::1;14178:21:1::0;14235:2;14215:18;;;14208:30;14274:34;14254:18;;;14247:62;-1:-1:-1;;;14325:18:1;;;14318:33;14368:19;;14415:106:0::1;13994:399:1::0;14415:106:0::1;14564:9;14554:7;;:19;;;;:::i;:::-;14540:10;;:33;;14532:92;;;;-1:-1:-1::0;;;14532:92:0::1;;;;;;;:::i;:::-;14670:9;14660:7;;:19;;;;:::i;:::-;14643:13;;:36;;14635:95;;;;-1:-1:-1::0;;;14635:95:0::1;;;;;;;:::i;:::-;14033:705:::0;;;;:::o;23282:97::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23350:14:0::1;;::::0;;;:4:::1;:14;::::0;;;;:21;;-1:-1:-1;;23350:21:0::1;23367:4;23350:21;::::0;;23282:97::o;21116:408::-;6620:6;;-1:-1:-1;;;;;6620:6:0;6630:10;6620:20;6612:66;;;;-1:-1:-1;;;6612:66:0;;;;;;;:::i;:::-;21184:14:::1;::::0;::::1;;21183:15;21175:55;;;::::0;-1:-1:-1;;;21175:55:0;;15015:2:1;21175:55:0::1;::::0;::::1;14997:21:1::0;15054:2;15034:18;;;15027:30;15093:29;15073:18;;;15066:57;15140:18;;21175:55:0::1;14813:351:1::0;21175:55:0::1;21249:16;::::0;::::1;::::0;::::1;;;21241:53;;;::::0;-1:-1:-1;;;21241:53:0;;15371:2:1;21241:53:0::1;::::0;::::1;15353:21:1::0;15410:2;15390:18;;;15383:30;15449:26;15429:18;;;15422:54;15493:18;;21241:53:0::1;15169:348:1::0;21241:53:0::1;21305:14;:21:::0;;-1:-1:-1;;21305:21:0::1;21322:4;21305:21;::::0;;21364:6:::1;::::0;21380:5:::1;::::0;21354:17:::1;::::0;-1:-1:-1;;;;;21364:6:0::1;21354:9;:17::i;:::-;:22;::::0;21374:2:::1;21354:22;:::i;:::-;21353:32;;;;:::i;:::-;21337:13;:48:::0;21420:6:::1;::::0;21436:5:::1;::::0;21410:17:::1;::::0;-1:-1:-1;;;;;21420:6:0::1;21410:9;:17::i;:::-;:22;::::0;21430:2:::1;21410:22;:::i;:::-;21409:32;;;;:::i;:::-;21396:10;:45:::0;21484:9:::1;::::0;21452:62:::1;::::0;21469:4:::1;::::0;21484:9:::1;::::0;::::1;-1:-1:-1::0;;;;;21484:9:0::1;-1:-1:-1::0;;21452:8:0::1;:62::i;:::-;21116:408::o:0;9443:310::-;-1:-1:-1;;;;;9538:20:0;;9530:52;;;;-1:-1:-1;;;9530:52:0;;15724:2:1;9530:52:0;;;15706:21:1;15763:2;15743:18;;;15736:30;-1:-1:-1;;;15782:18:1;;;15775:49;15841:18;;9530:52:0;15522:343:1;9530:52:0;-1:-1:-1;;;;;9601:21:0;;9593:53;;;;-1:-1:-1;;;9593:53:0;;15724:2:1;9593:53:0;;;15706:21:1;15763:2;15743:18;;;15736:30;-1:-1:-1;;;15782:18:1;;;15775:49;15841:18;;9593:53:0;15522:343:1;9593:53:0;-1:-1:-1;;;;;9659:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;9712:33;;368:25:1;;;9712:33:0;;341:18:1;9712:33:0;;;;;;;9443:310;;;:::o;15874:1992::-;15953:4;-1:-1:-1;;;;;15978:18:0;;15970:68;;;;-1:-1:-1;;;15970:68:0;;16072:2:1;15970:68:0;;;16054:21:1;16111:2;16091:18;;;16084:30;16150:34;16130:18;;;16123:62;-1:-1:-1;;;16201:18:1;;;16194:35;16246:19;;15970:68:0;15870:401:1;15970:68:0;-1:-1:-1;;;;;16057:16:0;;16049:64;;;;-1:-1:-1;;;16049:64:0;;16478:2:1;16049:64:0;;;16460:21:1;16517:2;16497:18;;;16490:30;16556:34;16536:18;;;16529:62;-1:-1:-1;;;16607:18:1;;;16600:33;16650:19;;16049:64:0;16276:399:1;16049:64:0;16141:1;16132:6;:10;16124:64;;;;-1:-1:-1;;;16124:64:0;;16882:2:1;16124:64:0;;;16864:21:1;16921:2;16901:18;;;16894:30;16960:34;16940:18;;;16933:62;-1:-1:-1;;;17011:18:1;;;17004:39;17060:19;;16124:64:0;16680:405:1;16124:64:0;-1:-1:-1;;;;;16208:10:0;;;;;;:4;:10;;;;;;;;16207:11;:24;;;;-1:-1:-1;;;;;;16223:8:0;;;;;;:4;:8;;;;;;;;16222:9;16207:24;16199:33;;;;;;-1:-1:-1;;;;;16333:13:0;;16245:8;16333:13;;;:7;:13;;;;;;16245:8;;;;16333:13;;16329:162;;;16369:4;16363:10;;16329:162;;;-1:-1:-1;;;;;16395:11:0;;;;;;:7;:11;;;;;;;;16391:100;;;16430:4;16423:11;;16391:100;;;-1:-1:-1;16475:4:0;16391:100;16505:20;16516:4;16522:2;16505:10;:20::i;:::-;16501:644;;;16546:14;;;;16542:89;;16581:34;;-1:-1:-1;;;16581:34:0;;17292:2:1;16581:34:0;;;17274:21:1;17331:2;17311:18;;;17304:30;17370:26;17350:18;;;17343:54;17414:18;;16581:34:0;17090:348:1;16542:89:0;16649:3;:11;;;;16656:4;16649:11;16645:232;;;-1:-1:-1;;;;;16685:27:0;;;;;;:21;:27;;;;;;;;16684:28;:58;;;;-1:-1:-1;;;;;;16717:25:0;;;;;;:21;:25;;;;;;;;16716:26;16684:58;16680:182;;;16785:12;;16775:6;:22;;16767:75;;;;-1:-1:-1;;;16767:75:0;;17645:2:1;16767:75:0;;;17627:21:1;17684:2;17664:18;;;17657:30;17723:34;17703:18;;;17696:62;-1:-1:-1;;;17774:18:1;;;17767:38;17822:19;;16767:75:0;17443:404:1;16767:75:0;16909:9;;-1:-1:-1;;;;;16895:24:0;;;16909:9;;;;;16895:24;;;;:33;;;16924:4;16923:5;16895:33;16891:243;;;-1:-1:-1;;;;;16954:25:0;;;;;;:21;:25;;;;;;;;16949:170;;17038:14;;17028:6;17012:13;17022:2;17012:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17004:95;;;;-1:-1:-1;;;17004:95:0;;18054:2:1;17004:95:0;;;18036:21:1;18093:2;18073:18;;;18066:30;18132:34;18112:18;;;18105:62;-1:-1:-1;;;18183:18:1;;;18176:40;18233:19;;17004:95:0;17852:406:1;17004:95:0;17161:4;17157:632;;;17187:6;;;;17182:596;;17218:19;;;;;;;17214:549;;;17262:28;17293:24;17311:4;17293:9;:24::i;:::-;17262:55;;17368:13;;17344:20;:37;17340:404;;17428:10;;17469:22;;;;17465:97;;;17526:13;;17516:6;;5031:5;;17526:13;17506:17;;-1:-1:-1;;;;;17516:6:0;17506:9;:17::i;:::-;:33;;;;:::i;:::-;17505:54;;;;:::i;:::-;17495:64;;17465:97;17616:7;17592:20;:31;17588:72;;17650:7;17627:30;;17588:72;17686:34;17699:20;17686:12;:34::i;:::-;17383:361;17340:404;17239:524;17214:549;17806:52;17823:4;17829:2;17833:6;17841:3;17846:4;17852:5;17806:16;:52::i;:::-;17799:59;15874:1992;-1:-1:-1;;;;;;;15874:1992:0:o;21532:752::-;21673:16;;21651:4;;21673:16;;;;;21668:227;;21706:28;21725:4;21731:2;21706:18;:28::i;:::-;21754:16;;;;;;;21753:17;:41;;;;;21774:20;21785:4;21791:2;21774:10;:20::i;:::-;21753:51;;;;;21799:5;21798:6;21753:51;21749:135;;;21825:43;;-1:-1:-1;;;21825:43:0;;18465:2:1;21825:43:0;;;18447:21:1;18504:2;18484:18;;;18477:30;18543:34;18523:18;;;18516:62;-1:-1:-1;;;18594:18:1;;;18587:31;18635:19;;21825:43:0;18263:397:1;21749:135:0;-1:-1:-1;;;;;21941:25:0;;21907:12;21941:25;;;:19;:25;;;;;;21922:4;;21941:25;;;:52;;-1:-1:-1;;;;;;21970:23:0;;;;;;:19;:23;;;;;;;;21941:52;21937:99;;;-1:-1:-1;22019:5:0;21937:99;-1:-1:-1;;;;;22048:13:0;;;;;;:7;:13;;;;;:23;;22065:6;;22048:13;:23;;22065:6;;22048:23;:::i;:::-;;;;-1:-1:-1;22082:22:0;;-1:-1:-1;22108:7:0;22107:55;;22156:6;22107:55;;;22119:34;22129:4;22135:3;22140:4;22146:6;22119:9;:34::i;:::-;-1:-1:-1;;;;;22173:11:0;;;;;;:7;:11;;;;;:29;;22082:80;;-1:-1:-1;22082:80:0;;22173:11;;;:29;;22082:80;;22173:29;:::i;:::-;;;;;;;;22235:2;-1:-1:-1;;;;;22220:34:0;22229:4;-1:-1:-1;;;;;22220:34:0;;22239:14;22220:34;;;;368:25:1;;356:2;341:18;;222:177;22220:34:0;;;;;;;;-1:-1:-1;22272:4:0;;21532:752;-1:-1:-1;;;;;;;;21532:752:0:o;15508:358::-;15609:6;;15577:4;;-1:-1:-1;;;;;15601:14:0;;;15609:6;;15601:14;;;;:43;;-1:-1:-1;15638:6:0;;-1:-1:-1;;;;;15632:12:0;;;15638:6;;15632:12;;15601:43;:79;;;;-1:-1:-1;15674:6:0;;-1:-1:-1;;;;;15674:6:0;15661:9;:19;;15601:79;:118;;;;-1:-1:-1;;;;;;15698:21:0;;;;;;:17;:21;;;;;;;;15697:22;15601:118;:159;;;;-1:-1:-1;;;;;;15737:23:0;;;;;;:17;:23;;;;;;;;15736:24;15601:159;:186;;;;-1:-1:-1;;;;;;15777:10:0;;5170:42;15777:10;;15601:186;:219;;;;-1:-1:-1;;;;;;15804:16:0;;;;15601:219;:257;;;;-1:-1:-1;;;;;;15837:21:0;;15853:4;15837:21;;15601:257;15594:264;15508:358;-1:-1:-1;;;15508:358:0:o;17874:2347::-;6514:6;:13;;-1:-1:-1;;6514:13:0;6523:4;6514:13;;;17957:30:::1;::::0;;::::1;::::0;::::1;::::0;;17980:7:::1;17957:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;-1:-1:-1;;;17957:30:0;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;17957:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17957:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17957:30:0;::::1;::::0;;::::1;::::0;;;;;;17998:60:::1;;18040:7;;;17998:60;18094:4;18074:26;::::0;;;:11:::1;:26;::::0;;;;;;;18109:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;18109:9:0::1;18074:46:::0;;;;;;;;-1:-1:-1;;18074:67:0::1;18070:166;;18178:4;18158:26;::::0;;;:11:::1;:26;::::0;;;;;;;18193:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;18193:9:0::1;18158:46:::0;;;;;;;-1:-1:-1;;18158:66:0;;18070:166:::1;18248:17;18333:1;18313:6;:16;;;18269:60;;18293:6;:16;;;18270:39;;:20;:39;;;;:::i;:::-;18269:60;;;;:::i;:::-;18268:66;;;;:::i;:::-;18248:86:::0;-1:-1:-1;18345:15:0::1;18363:32;18248:86:::0;18363:20;:32:::1;:::i;:::-;18440:16;::::0;;18454:1:::1;18440:16:::0;;;;;::::1;::::0;;18345:50;;-1:-1:-1;18416:21:0::1;::::0;18440:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18440:16:0::1;18416:40;;18485:4;18467;18472:1;18467:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;18467:23:0::1;;;-1:-1:-1::0;;;;;18467:23:0::1;;;::::0;::::1;18511:9;;;;;;;;;-1:-1:-1::0;;;;;18511:9:0::1;-1:-1:-1::0;;;;;18511:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18501:4;18506:1;18501:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18501:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;18544:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;18544:186:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:186:::1;::::0;18619:7;;18641:1:::1;::::0;18657:4;;18684::::1;::::0;18704:15:::1;::::0;18544:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;18540:233;;18755:7;;;;;;18540:233;18806:21;18785:18;18892:7:::0;18866:22:::1;18879:9:::0;18806:21;18866:22:::1;:::i;:::-;18865:34;;;;:::i;:::-;18838:61:::0;-1:-1:-1;18916:13:0;;18912:417:::1;;18950:9;::::0;19119:21;;18950:239:::1;::::0;-1:-1:-1;;;18950:239:0;;19027:4:::1;18950:239;::::0;::::1;20587:34:1::0;20637:18;;;20630:34;;;19079:1:0::1;20680:18:1::0;;;20673:34;;;20723:18;;;20716:34;-1:-1:-1;;;;;19119:21:0;;::::1;20766:19:1::0;;;20759:44;19159:15:0::1;20819:19:1::0;;;20812:35;18950:9:0::1;::::0;;::::1;;::::0;:25:::1;::::0;18983:16;;20521:19:1;;18950:239:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;-1:-1:-1::0;18950:239:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;18950:239:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;18946:372;;19296:7;;;;;;;;18946:372;-1:-1:-1::0;;19214:40:0::1;::::0;;21343:25:1;;;21399:2;21384:18;;21377:34;;;19214:40:0::1;::::0;-1:-1:-1;21316:18:1;19214:40:0::1;;;;;;;18946:372;19341:30;19355:16:::0;19341:30;::::1;:::i;:::-;;;19402:6;:16;;;19382:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;19517:16:::1;::::0;::::1;::::0;19495:18:::1;::::0;::::1;::::0;19429:12:::1;::::0;-1:-1:-1;19429:12:0;;19481:52;;::::1;::::0;19482:31:::1;::::0;::::1;:10:::0;:31:::1;:::i;:::-;19481:52;;;;:::i;:::-;19570:7;::::0;19452:81;;-1:-1:-1;19544:22:0::1;::::0;19570:7;;::::1;-1:-1:-1::0;;;;;19570:7:0::1;19569:78;;19646:1;19569:78;;;19627:6;:16;;;19595:48;;19609:6;:14;;;19596:27;;:10;:27;;;;:::i;:::-;19595:48;;;;:::i;:::-;19544:103:::0;-1:-1:-1;19658:24:0::1;19699:35;19544:103:::0;19699:18;:35:::1;:::i;:::-;19685:50;::::0;:10;:50:::1;:::i;:::-;19658:77:::0;-1:-1:-1;19750:20:0;;19746:133:::1;;19800:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;19800:21:0;;::::1;::::0;19857:5:::1;::::0;19834:16;;19800:67:::1;::::0;;;19834:16;19800:21;19857:5;19800:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;19787:80:0;;-1:-1:-1;;19746:133:0::1;19893:22:::0;;19889:139:::1;;19945:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;19945:23:0;;::::1;::::0;20006:5:::1;::::0;19981:18;;19945:71:::1;::::0;;;19981:18;19945:23;20006:5;19945:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;19932:84:0;;-1:-1:-1;;19889:139:0::1;20042:18:::0;;20038:176:::1;;20087:9;;;;;;;;;-1:-1:-1::0;;;;;20087:9:0::1;-1:-1:-1::0;;;;;20087:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20077:4;20082:1;20077:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20077:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;20128:7:::1;::::0;20118;;20128;;;::::1;::::0;;::::1;::::0;20118:4;;20123:1:::1;::::0;20118:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;20118:17:0;;::::1;:7;::::0;;::::1;::::0;;;;;:17;20182:19;;20150:52:::1;::::0;20160:4;;20166:14;;20182:19:::1;20150:9;:52::i;:::-;17946:2275;;;;;;;;;;6538:1;-1:-1:-1::0;6550:6:0;:14;;-1:-1:-1;;6550:14:0;;;17874:2347::o;20692:416::-;20775:16;;;;;;;20774:17;20766:46;;;;-1:-1:-1;;;20766:46:0;;22056:2:1;20766:46:0;;;22038:21:1;22095:2;22075:18;;;22068:30;-1:-1:-1;;;22114:18:1;;;22107:46;22170:18;;20766:46:0;21854:340:1;20766:46:0;20828:20;20839:4;20845:2;20828:10;:20::i;:::-;20827:21;:37;;;;-1:-1:-1;20858:6:0;;-1:-1:-1;;;;;20852:12:0;;;20858:6;;20852:12;20827:37;20823:278;;;-1:-1:-1;;;;;20881:23:0;;;;;;:17;:23;;;;;;;;:30;;20907:4;-1:-1:-1;;20881:30:0;;;;;;;;20926:19;:25;;;;;;:32;;;;;;;;;;20973:16;:23;;20881:30;-1:-1:-1;;20973:23:0;;;;;;;;21011:19;:26;;;;;;;;;;21057:32;1741:41:1;;;21057:32:0;;1714:18:1;21057:32:0;1601:187:1;20823:278:0;20692:416;;:::o;22292:982::-;22400:30;;;;;;;;22423:7;22400:30;;;;;;;;;;;;;;;;-1:-1:-1;;;22400:30:0;;;;;;;;;;;-1:-1:-1;;;22400:30:0;;;;;;;;-1:-1:-1;;;22400:30:0;;;;;;;;-1:-1:-1;;;22400:30:0;;;;;;;;;22380:7;;;22470:205;;;;-1:-1:-1;22507:9:0;:16;;;22470:205;;;22545:4;22541:134;;;-1:-1:-1;22579:9:0;:17;;;;;;22541:134;;;-1:-1:-1;22642:9:0;:21;-1:-1:-1;;;22642:21:0;;;;22541:134;22685:17;5031:5;22705:19;22714:10;22705:6;:19;:::i;:::-;:38;;;;:::i;:::-;22685:58;;22754:18;22818:6;:16;;;22804:6;:11;;;:30;;;;:::i;:::-;22775:60;;22788:6;:11;;;22776:23;;:9;:23;;;;:::i;:::-;22775:60;;;;:::i;:::-;22754:81;-1:-1:-1;22846:15:0;22864:22;22754:81;22864:9;:22;:::i;:::-;22846:40;-1:-1:-1;22901:11:0;;22897:135;;22945:4;22929:22;;;;:7;:22;;;;;:33;;22955:7;;22929:22;:33;;22955:7;;22929:33;:::i;:::-;;;;-1:-1:-1;;22982:38:0;;368:25:1;;;23005:4:0;;-1:-1:-1;;;;;22982:38:0;;;;;356:2:1;341:18;22982:38:0;;;;;;;22897:135;23046:14;;23042:167;;23088:10;23077:7;;:21;;;;;;;:::i;:::-;;;;;;;;23129:10;23113:12;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;23159:38:0;;368:25:1;;;23182:1:0;;-1:-1:-1;;;;;23159:38:0;;;;;356:2:1;341:18;23159:38:0;;;;;;;23042:167;23248:18;23257:9;23248:6;:18;:::i;:::-;23241:25;22292:982;-1:-1:-1;;;;;;;;;;22292:982:0:o;20229:455::-;20340:9;;:187;;-1:-1:-1;;;20340:187:0;;:9;;;;-1:-1:-1;;;;;20340:9:0;;:60;;20408:6;;20340:187;;20440:1;;20456:4;;20475:11;;20501:15;;20340:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20336:341;;20229:455;;;:::o;20336:341::-;20559:7;;;;;;;;;-1:-1:-1;;;;;20559:7:0;-1:-1:-1;;;;;20547:19:0;:4;20552:1;20547:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20547:19:0;;20543:83;;;20604:6;20587:13;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;20543:83:0;20229:455;;;:::o;774:597:1:-;886:4;915:2;944;933:9;926:21;976:6;970:13;1019:6;1014:2;1003:9;999:18;992:34;1044:1;1054:140;1068:6;1065:1;1062:13;1054:140;;;1163:14;;;1159:23;;1153:30;1129:17;;;1148:2;1125:26;1118:66;1083:10;;1054:140;;;1212:6;1209:1;1206:13;1203:91;;;1282:1;1277:2;1268:6;1257:9;1253:22;1249:31;1242:42;1203:91;-1:-1:-1;1355:2:1;1334:15;-1:-1:-1;;1330:29:1;1315:45;;;;1362:2;1311:54;;774:597;-1:-1:-1;;;774:597:1:o;1793:131::-;-1:-1:-1;;;;;1868:31:1;;1858:42;;1848:70;;1914:1;1911;1904:12;1848:70;1793:131;:::o;1929:247::-;1988:6;2041:2;2029:9;2020:7;2016:23;2012:32;2009:52;;;2057:1;2054;2047:12;2009:52;2096:9;2083:23;2115:31;2140:5;2115:31;:::i;2181:315::-;2249:6;2257;2310:2;2298:9;2289:7;2285:23;2281:32;2278:52;;;2326:1;2323;2316:12;2278:52;2365:9;2352:23;2384:31;2409:5;2384:31;:::i;:::-;2434:5;2486:2;2471:18;;;;2458:32;;-1:-1:-1;;;2181:315:1:o;2501:456::-;2578:6;2586;2594;2647:2;2635:9;2626:7;2622:23;2618:32;2615:52;;;2663:1;2660;2653:12;2615:52;2702:9;2689:23;2721:31;2746:5;2721:31;:::i;:::-;2771:5;-1:-1:-1;2828:2:1;2813:18;;2800:32;2841:33;2800:32;2841:33;:::i;:::-;2501:456;;2893:7;;-1:-1:-1;;;2947:2:1;2932:18;;;;2919:32;;2501:456::o;2962:248::-;3030:6;3038;3091:2;3079:9;3070:7;3066:23;3062:32;3059:52;;;3107:1;3104;3097:12;3059:52;-1:-1:-1;;3130:23:1;;;3200:2;3185:18;;;3172:32;;-1:-1:-1;2962:248:1:o;3404:160::-;3469:20;;3525:13;;3518:21;3508:32;;3498:60;;3554:1;3551;3544:12;3498:60;3404:160;;;:::o;3569:315::-;3634:6;3642;3695:2;3683:9;3674:7;3670:23;3666:32;3663:52;;;3711:1;3708;3701:12;3663:52;3750:9;3737:23;3769:31;3794:5;3769:31;:::i;:::-;3819:5;-1:-1:-1;3843:35:1;3874:2;3859:18;;3843:35;:::i;:::-;3833:45;;3569:315;;;;;:::o;3889:180::-;3948:6;4001:2;3989:9;3980:7;3976:23;3972:32;3969:52;;;4017:1;4014;4007:12;3969:52;-1:-1:-1;4040:23:1;;3889:180;-1:-1:-1;3889:180:1:o;4074:553::-;4175:6;4183;4191;4244:2;4232:9;4223:7;4219:23;4215:32;4212:52;;;4260:1;4257;4250:12;4212:52;4299:9;4286:23;4318:31;4343:5;4318:31;:::i;:::-;4368:5;-1:-1:-1;4425:2:1;4410:18;;4397:32;4438:33;4397:32;4438:33;:::i;:::-;4490:7;-1:-1:-1;4549:2:1;4534:18;;4521:32;4562:33;4521:32;4562:33;:::i;:::-;4614:7;4604:17;;;4074:553;;;;;:::o;4632:159::-;4699:20;;4759:6;4748:18;;4738:29;;4728:57;;4781:1;4778;4771:12;4796:328;4870:6;4878;4886;4939:2;4927:9;4918:7;4914:23;4910:32;4907:52;;;4955:1;4952;4945:12;4907:52;4978:28;4996:9;4978:28;:::i;:::-;4968:38;;5025:37;5058:2;5047:9;5043:18;5025:37;:::i;:::-;5015:47;;5081:37;5114:2;5103:9;5099:18;5081:37;:::i;:::-;5071:47;;4796:328;;;;;:::o;5389:474::-;5479:6;5487;5495;5503;5511;5564:3;5552:9;5543:7;5539:23;5535:33;5532:53;;;5581:1;5578;5571:12;5532:53;5604:28;5622:9;5604:28;:::i;:::-;5594:38;;5651:37;5684:2;5673:9;5669:18;5651:37;:::i;:::-;5641:47;;5707:37;5740:2;5729:9;5725:18;5707:37;:::i;:::-;5697:47;;5763:37;5796:2;5785:9;5781:18;5763:37;:::i;:::-;5753:47;;5819:38;5852:3;5841:9;5837:19;5819:38;:::i;:::-;5809:48;;5389:474;;;;;;;;:::o;6475:248::-;6537:6;6545;6598:2;6586:9;6577:7;6573:23;6569:32;6566:52;;;6614:1;6611;6604:12;6566:52;6637:26;6653:9;6637:26;:::i;6728:388::-;6796:6;6804;6857:2;6845:9;6836:7;6832:23;6828:32;6825:52;;;6873:1;6870;6863:12;6825:52;6912:9;6899:23;6931:31;6956:5;6931:31;:::i;:::-;6981:5;-1:-1:-1;7038:2:1;7023:18;;7010:32;7051:33;7010:32;7051:33;:::i;:::-;7103:7;7093:17;;;6728:388;;;;;:::o;7121:385::-;7207:6;7215;7223;7231;7284:3;7272:9;7263:7;7259:23;7255:33;7252:53;;;7301:1;7298;7291:12;7252:53;-1:-1:-1;;7324:23:1;;;7394:2;7379:18;;7366:32;;-1:-1:-1;7445:2:1;7430:18;;7417:32;;7496:2;7481:18;7468:32;;-1:-1:-1;7121:385:1;-1:-1:-1;7121:385:1:o;8045:127::-;8106:10;8101:3;8097:20;8094:1;8087:31;8137:4;8134:1;8127:15;8161:4;8158:1;8151:15;8177:422;8266:1;8309:5;8266:1;8323:270;8344:7;8334:8;8331:21;8323:270;;;8403:4;8399:1;8395:6;8391:17;8385:4;8382:27;8379:53;;;8412:18;;:::i;:::-;8462:7;8452:8;8448:22;8445:55;;;8482:16;;;;8445:55;8561:22;;;;8521:15;;;;8323:270;;;8327:3;8177:422;;;;;:::o;8604:806::-;8653:5;8683:8;8673:80;;-1:-1:-1;8724:1:1;8738:5;;8673:80;8772:4;8762:76;;-1:-1:-1;8809:1:1;8823:5;;8762:76;8854:4;8872:1;8867:59;;;;8940:1;8935:130;;;;8847:218;;8867:59;8897:1;8888:10;;8911:5;;;8935:130;8972:3;8962:8;8959:17;8956:43;;;8979:18;;:::i;:::-;-1:-1:-1;;9035:1:1;9021:16;;9050:5;;8847:218;;9149:2;9139:8;9136:16;9130:3;9124:4;9121:13;9117:36;9111:2;9101:8;9098:16;9093:2;9087:4;9084:12;9080:35;9077:77;9074:159;;;-1:-1:-1;9186:19:1;;;9218:5;;9074:159;9265:34;9290:8;9284:4;9265:34;:::i;:::-;9335:6;9331:1;9327:6;9323:19;9314:7;9311:32;9308:58;;;9346:18;;:::i;:::-;9384:20;;8604:806;-1:-1:-1;;;8604:806:1:o;9415:140::-;9473:5;9502:47;9543:4;9533:8;9529:19;9523:4;9502:47;:::i;9560:217::-;9600:1;9626;9616:132;;9670:10;9665:3;9661:20;9658:1;9651:31;9705:4;9702:1;9695:15;9733:4;9730:1;9723:15;9616:132;-1:-1:-1;9762:9:1;;9560:217::o;9782:125::-;9822:4;9850:1;9847;9844:8;9841:34;;;9855:18;;:::i;:::-;-1:-1:-1;9892:9:1;;9782:125::o;9912:397::-;10114:2;10096:21;;;10153:2;10133:18;;;10126:30;10192:34;10187:2;10172:18;;10165:62;-1:-1:-1;;;10258:2:1;10243:18;;10236:31;10299:3;10284:19;;9912:397::o;10314:168::-;10354:7;10420:1;10416;10412:6;10408:14;10405:1;10402:21;10397:1;10390:9;10383:17;10379:45;10376:71;;;10427:18;;:::i;:::-;-1:-1:-1;10467:9:1;;10314:168::o;10904:128::-;10944:3;10975:1;10971:6;10968:1;10965:13;10962:39;;;10981:18;;:::i;:::-;-1:-1:-1;11017:9:1;;10904:128::o;11812:425::-;12014:2;11996:21;;;12053:2;12033:18;;;12026:30;12092:34;12087:2;12072:18;;12065:62;12163:31;12158:2;12143:18;;12136:59;12227:3;12212:19;;11812:425::o;12594:224::-;12633:3;12661:6;12694:2;12691:1;12687:10;12724:2;12721:1;12717:10;12755:3;12751:2;12747:12;12742:3;12739:21;12736:47;;;12763:18;;:::i;:::-;12799:13;;12594:224;-1:-1:-1;;;;12594:224:1:o;14398:410::-;14600:2;14582:21;;;14639:2;14619:18;;;14612:30;14678:34;14673:2;14658:18;;14651:62;-1:-1:-1;;;14744:2:1;14729:18;;14722:44;14798:3;14783:19;;14398:410::o;18797:127::-;18858:10;18853:3;18849:20;18846:1;18839:31;18889:4;18886:1;18879:15;18913:4;18910:1;18903:15;18929:251;18999:6;19052:2;19040:9;19031:7;19027:23;19023:32;19020:52;;;19068:1;19065;19058:12;19020:52;19100:9;19094:16;19119:31;19144:5;19119:31;:::i;19185:461::-;19238:3;19276:5;19270:12;19303:6;19298:3;19291:19;19329:4;19358:2;19353:3;19349:12;19342:19;;19395:2;19388:5;19384:14;19416:1;19426:195;19440:6;19437:1;19434:13;19426:195;;;19505:13;;-1:-1:-1;;;;;19501:39:1;19489:52;;19561:12;;;;19596:15;;;;19537:1;19455:9;19426:195;;;-1:-1:-1;19637:3:1;;19185:461;-1:-1:-1;;;;;19185:461:1:o;19651:582::-;19950:6;19939:9;19932:25;19993:6;19988:2;19977:9;19973:18;19966:34;20036:3;20031:2;20020:9;20016:18;20009:31;19913:4;20057:57;20109:3;20098:9;20094:19;20086:6;20057:57;:::i;:::-;-1:-1:-1;;;;;20150:32:1;;;;20145:2;20130:18;;20123:60;-1:-1:-1;20214:3:1;20199:19;20192:35;20049:65;19651:582;-1:-1:-1;;;19651:582:1:o;20858:306::-;20946:6;20954;20962;21015:2;21003:9;20994:7;20990:23;20986:32;20983:52;;;21031:1;21028;21021:12;20983:52;21060:9;21054:16;21044:26;;21110:2;21099:9;21095:18;21089:25;21079:35;;21154:2;21143:9;21139:18;21133:25;21123:35;;20858:306;;;;;:::o;21422:217::-;21461:4;21490:6;21546:10;;;;21516;;21568:12;;;21565:38;;;21583:18;;:::i;:::-;21620:13;;21422:217;-1:-1:-1;;;21422:217:1:o;22199:518::-;22478:6;22467:9;22460:25;22521:3;22516:2;22505:9;22501:18;22494:31;22441:4;22542:57;22594:3;22583:9;22579:19;22571:6;22542:57;:::i;:::-;-1:-1:-1;;;;;22635:32:1;;;;22630:2;22615:18;;22608:60;-1:-1:-1;22699:2:1;22684:18;22677:34;22534:65;22199:518;-1:-1:-1;;22199:518:1:o

Swarm Source

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