ETH Price: $3,322.81 (+1.77%)
Gas: 5 Gwei

Token

Chinu ($CHINU)
 

Overview

Max Total Supply

1,000,000,000 $CHINU

Holders

548

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
814,522.3952 $CHINU

Value
$0.00
0x4d6789ada4bb287308b2b1044c997cf77c450f55
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:
CHINU

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 999 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-18
*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.7;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    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);
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface InterfaceLP {
    function sync() external;
}

contract CHINU is ERC20, Auth {
    using SafeMath for uint256;

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Chinu";
    string constant _symbol = "$CHINU";
    uint8 constant _decimals = 4;

    uint256 _totalSupply = 1 * 10**9 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply / 1000;
    uint256 public _maxWalletToken = _totalSupply / 1000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    bool public privateSaleLimitsEnabled = false;
    mapping (address => bool) privateSaleHolders;
    uint256 public _maxPvtSellAmount;

    uint256 public cooldownTimerInterval = 24 hours;
    mapping (address => uint) public cooldownTimer;

    bool public blacklistMode = true;
    mapping (address => bool) public isBlacklisted;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 public liquidityFee    = 1;
    uint256 public marketingFee    = 3;
    uint256 public buybackFee      = 2;
    uint256 public teamFee         = 3;
    uint256 public burnFee         = 0;
    uint256 public totalFee        = teamFee + marketingFee + liquidityFee + buybackFee + burnFee;
    uint256 public feeDenominator  = 100;

    uint256 public sellMultiplier  = 266;

    uint256 public percentForLPBurn = 10; //.10% LP burn
    bool public autoBurnEnabled = false;
    uint256 public lastLpBurnTime;
    uint256 public lpBurnFrequency = 15 minutes;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address public buybackFeeReceiver;
    address public teamFeeReceiver;
    address public burnFeeReceiver;

    uint256 targetLiquidity = 5;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;
    InterfaceLP public pairContract;

    bool public tradingOpen = false;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 1 / 5000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x3CBb10cED5A50D95042bbe9a21209BE67F9B3C36;
        buybackFeeReceiver = 0x7b12f81Cff87df25863BD793dA6F8E2AD18a53b8;
        teamFeeReceiver = 0x1dc605A2C016e6eCFAeBEa299C46A0CcC469063a;
        burnFeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, 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] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base10000(uint256 maxWallPercent_base10000) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent_base10000 ) / 10000;
    }
    function setMaxTxPercent_base10000(uint256 maxTXPercentage_base10000) external onlyOwner() {
        _maxTxAmount = (_totalSupply * maxTXPercentage_base10000 ) / 10000;
    }

    function setPvtSaleRestrictions(uint256 maxPvtSellPercentage_base10000, bool _restricted, uint256 _interval) external onlyOwner() {
        _maxPvtSellAmount = (_totalSupply * maxPvtSellPercentage_base10000 ) / 10000;
        privateSaleLimitsEnabled = _restricted;
        cooldownTimerInterval = _interval;
    }

    function manage_pvtseller(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            privateSaleHolders[addresses[i]] = status;
        }
    }

    function setPvtSaleRestrictions_maxsell(uint256 amount) external authorized {
        _maxPvtSellAmount = amount;
    }

    function setTxLimit(uint256 amount) external authorized {
        _maxTxAmount = amount;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

        // Blacklist
        if(blacklistMode){
            require(!isBlacklisted[sender],"Blacklisted");    
        }

        // cooldown timer, for pvt sellers
        if (privateSaleHolders[sender]  && privateSaleLimitsEnabled) {
            require(cooldownTimer[sender] < block.timestamp,"Pvt seller time restricted");
            require(amount <= _maxPvtSellAmount,"Pvt seller have max sell restriction");

            cooldownTimer[sender] = block.timestamp + cooldownTimerInterval;
        }

        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}


        // Checks max transaction limit
        checkTxLimit(sender, amount);

        if(shouldSwapBack()){ swapBack(); }
        else if(!authorizations[sender] && !authorizations[recipient] 
                && !isFeeExempt[sender]
                && recipient == pair
                && autoBurnEnabled
                && block.timestamp >= lastLpBurnTime + lpBurnFrequency){
                autoburn_LP();
        }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? amount : takeFee(sender, amount,(recipient == pair));
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {
        
        uint256 multiplier = isSell ? sellMultiplier : 100;
        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        if(burnTokens > 0){
            emit Transfer(sender, burnFeeReceiver, burnTokens);    
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external authorized {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool) {
     if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function set_sell_multiplier(uint256 _multiplier) external onlyOwner{
        sellMultiplier = _multiplier;        
    }

    // switch Trading
    function tradingStatus(bool _status) public onlyOwner {
        tradingOpen = _status;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHteam = amountETH.mul(teamFee).div(totalETHFee);
        uint256 amountETHBuyback = amountETH.mul(buybackFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(buybackFeeReceiver).call{value: amountETHBuyback}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        
        // life sucks
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
    }

    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
    }

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _buybackFee, uint256 _burnFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        buybackFee = _buybackFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee).add(_buybackFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/2, "Fees cannot be more than 50%");
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _buybackFeeReceiver, address _burnFeeReceiver, address _teamFeeReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        buybackFeeReceiver = _buybackFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }



/* Airdrop Begins */
function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

    require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    uint256 SCCC = 0;

    for(uint i=0; i < addresses.length; i++){
        SCCC = SCCC + tokens[i];
    }

    require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
    }
}
function autoburn_config(uint256 _freq, uint256 _percent, bool _enabled) external onlyOwner {
    require(_percent < 1000,"max value for autoburn is 10%");
    
    lpBurnFrequency = _freq;
    percentForLPBurn = _percent;
    autoBurnEnabled = _enabled;
}

function burn_and_moon(uint256 percent_base10000) public onlyOwner returns (bool){
        require(percent_base10000 <= 1000, "May not nuke more than 10% of tokens in LP");
    
        uint256 lp_tokens = this.balanceOf(pair);
        uint256 lp_burn = lp_tokens.mul(percent_base10000).div(10000);
        
        if (lp_burn > 0){
            _basicTransfer(pair,DEAD,lp_burn);
            pairContract.sync();
            return true;
        }
        
        return false;
    }

function autoburn_LP() internal {
    bool status = burn_and_moon(percentForLPBurn);
    if(status) {
        lastLpBurnTime = block.timestamp;
    }

}

event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"_maxPvtSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_freq","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"autoburn_config","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent_base10000","type":"uint256"}],"name":"burn_and_moon","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"cooldownTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_pvtseller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract InterfaceLP","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleLimitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_buybackFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base10000","type":"uint256"}],"name":"setMaxTxPercent_base10000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base10000","type":"uint256"}],"name":"setMaxWalletPercent_base10000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxPvtSellPercentage_base10000","type":"uint256"},{"internalType":"bool","name":"_restricted","type":"bool"},{"internalType":"uint256","name":"_interval","type":"uint256"}],"name":"setPvtSaleRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setPvtSaleRestrictions_maxsell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead179091556004805490911681556200003190600a62000529565b6200004190633b9aca00620005ea565b6005556103e8600554620000569190620004bd565b6006556103e86005546200006b9190620004bd565b600755600a805460ff1990811690915562015180600d55600f8054909116600190811790915560138190556003601481905560026015819055601682905560006017819055929091620000bf9080620004a2565b620000cb9190620004a2565b620000d79190620004a2565b620000e39190620004a2565b6018556064601981905561010a601a55600a601b55601c805460ff19169055610384601e55600560248190556025919091556028805461ffff60a01b1916600160a81b17905554611388906200013b906001620005ea565b620001479190620004bd565b6029553480156200015757600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560268054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c46489260048083019392829003018186803b158015620001d957600080fd5b505afa158015620001ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000214919062000470565b600280546001600160a01b0319166001600160a01b039283161790556026546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b1580156200026e57600080fd5b505afa15801562000283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a9919062000470565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b158015620002f657600080fd5b505af11580156200030b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000331919062000470565b602780546001600160a01b039283166001600160a01b0319918216811790925560288054821690921790915530600090815260096020908152604080832060265486168452825280832060001990553380845260118352818420805460ff1990811660019081179092556012855283862080549091169091179055601f805486168217905582548516733cbb10ced5a50d95042bbe9a21209be67f9b3c36178355602180548616737b12f81cff87df25863bd793da6f8e2ad18a53b8179055602280548616731dc605a2c016e6ecfaebea299c46a0ccc469063a179055600354602380549096169616959095179093556005546008909152828220819055915190917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200046291815260200190565b60405180910390a362000622565b6000602082840312156200048357600080fd5b81516001600160a01b03811681146200049b57600080fd5b9392505050565b60008219821115620004b857620004b86200060c565b500190565b600082620004db57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620005215781600019048211156200050557620005056200060c565b808516156200051357918102915b93841c9390800290620004e5565b509250929050565b60006200049b60ff8416836000826200054557506001620005e4565b816200055457506000620005e4565b81600181146200056d5760028114620005785762000598565b6001915050620005e4565b60ff8411156200058c576200058c6200060c565b50506001821b620005e4565b5060208310610133831016604e8410600b8410161715620005bd575081810a620005e4565b620005c98383620004e0565b8060001904821115620005e057620005e06200060c565b0290505b92915050565b60008160001904831182151516156200060757620006076200060c565b500290565b634e487b7160e01b600052601160045260246000fd5b6134f780620006326000396000f3fe6080604052600436106104845760003560e01c806386f6c3c11161025e578063d7c94efd11610143578063f2fde38b116100bb578063fce589d81161008a578063fe9fbb801161006f578063fe9fbb8014610d47578063fed0d2a114610d80578063ffb54a9914610d9657600080fd5b8063fce589d814610d01578063fe575a8714610d1757600080fd5b8063f2fde38b14610c8b578063f821f17f14610cab578063f84ba65d14610cc1578063f887ea4014610ce157600080fd5b8063e96fada211610112578063ecabcf61116100f7578063ecabcf6114610c2b578063f0b37c0414610c4b578063f12418a814610c6b57600080fd5b8063e96fada214610beb578063ec72d65f14610c0b57600080fd5b8063d7c94efd14610b4f578063dd62ed3e14610b65578063df20fd4914610bab578063e3763ded14610bcb57600080fd5b80639dd255da116101d6578063a9059cbb116101a5578063ca33e64c1161018a578063ca33e64c14610aef578063d32fd25214610b0f578063d51ed1c814610b2f57600080fd5b8063a9059cbb14610aaf578063b6a5d7de14610acf57600080fd5b80639dd255da14610a32578063a4a4b19b14610a4c578063a4c82a0014610a79578063a8aa1b3114610a8f57600080fd5b80638e2eee841161022d57806395d89b411161021257806395d89b41146109b6578063976b7e12146109fc57806398118cb414610a1c57600080fd5b80638e2eee841461097c5780639242b7591461099c57600080fd5b806386f6c3c1146109045780638714f95714610924578063893d20e814610944578063896648c11461096257600080fd5b80632f54bf6e116103845780636b67c4df116102fc578063722b62ad116102cb57806378109e54116102b057806378109e54146108b85780637d1db4a5146108ce57806384b1d1ef146108e457600080fd5b8063722b62ad1461088257806377b54bad1461089857600080fd5b80636b67c4df146107f55780636ddd17131461080b5780637090ceaa1461082c57806370a082311461084c57600080fd5b80634d709adf116103535780635c85974f116103385780635c85974f146107955780635e562f3b146107b5578063658d4b7f146107d557600080fd5b80634d709adf14610755578063571ac8b01461077557600080fd5b80632f54bf6e146106bc578063313ce567146106eb5780633b2d081c14610707578063402911431461071d57600080fd5b806318abb635116104175780631df4ccfc116103e657806323b872dd116103cb57806323b872dd146106715780632b112e49146106915780632c3e486c146106a657600080fd5b80631df4ccfc1461063b578063201e79911461065157600080fd5b806318abb635146105c5578063199ffc72146105e55780631ca0a28d146105fb5780631da1db5e1461061b57600080fd5b80630d295980116104535780630d2959801461055a5780631161ae391461057a578063180b0d7e1461059a57806318160ddd146105b057600080fd5b8063012aa912146104905780630445b667146104b257806306fdde03146104db578063095ea7b31461052a57600080fd5b3661048b57005b600080fd5b34801561049c57600080fd5b506104b06104ab366004613207565b610db7565b005b3480156104be57600080fd5b506104c860295481565b6040519081526020015b60405180910390f35b3480156104e757600080fd5b5060408051808201909152600581527f4368696e7500000000000000000000000000000000000000000000000000000060208201525b6040516104d29190613321565b34801561053657600080fd5b5061054a61054536600461312c565b610e20565b60405190151581526020016104d2565b34801561056657600080fd5b506104b06105753660046131af565b610e8d565b34801561058657600080fd5b5061054a610595366004613260565b610f09565b3480156105a657600080fd5b506104c860195481565b3480156105bc57600080fd5b506005546104c8565b3480156105d157600080fd5b506104b06105e0366004612fc9565b610f1d565b3480156105f157600080fd5b506104c8601b5481565b34801561060757600080fd5b506104b061061636600461307b565b610fd6565b34801561062757600080fd5b506104b0610636366004613207565b611228565b34801561064757600080fd5b506104c860185481565b34801561065d57600080fd5b506104b061066c366004613260565b6112bd565b34801561067d57600080fd5b5061054a61068c36600461303a565b611315565b34801561069d57600080fd5b506104c86113de565b3480156106b257600080fd5b506104c8601e5481565b3480156106c857600080fd5b5061054a6106d7366004612f73565b6000546001600160a01b0391821691161490565b3480156106f757600080fd5b50604051600481526020016104d2565b34801561071357600080fd5b506104c860155481565b34801561072957600080fd5b5060225461073d906001600160a01b031681565b6040516001600160a01b0390911681526020016104d2565b34801561076157600080fd5b5060285461073d906001600160a01b031681565b34801561078157600080fd5b5061054a610790366004612f73565b611430565b3480156107a157600080fd5b506104b06107b0366004613207565b61143e565b3480156107c157600080fd5b506104b06107d03660046131af565b611490565b3480156107e157600080fd5b506104b06107f03660046130fe565b6114e6565b34801561080157600080fd5b506104c860145481565b34801561081757600080fd5b5060285461054a90600160a81b900460ff1681565b34801561083857600080fd5b506104b0610847366004613158565b61155e565b34801561085857600080fd5b506104c8610867366004612f73565b6001600160a01b031660009081526008602052604090205490565b34801561088e57600080fd5b506104c8600d5481565b3480156108a457600080fd5b5061054a6108b336600461312c565b611616565b3480156108c457600080fd5b506104c860075481565b3480156108da57600080fd5b506104c860065481565b3480156108f057600080fd5b5060215461073d906001600160a01b031681565b34801561091057600080fd5b506104b061091f3660046132de565b611772565b34801561093057600080fd5b506104b061093f366004613282565b61185b565b34801561095057600080fd5b506000546001600160a01b031661073d565b34801561096e57600080fd5b50600f5461054a9060ff1681565b34801561098857600080fd5b506104b0610997366004613158565b61190b565b3480156109a857600080fd5b50600a5461054a9060ff1681565b3480156109c257600080fd5b5060408051808201909152600681527f244348494e550000000000000000000000000000000000000000000000000000602082015261051d565b348015610a0857600080fd5b5061054a610a17366004613207565b6119bd565b348015610a2857600080fd5b506104c860135481565b348015610a3e57600080fd5b50601c5461054a9060ff1681565b348015610a5857600080fd5b506104c8610a67366004612f73565b600e6020526000908152604090205481565b348015610a8557600080fd5b506104c8601d5481565b348015610a9b57600080fd5b5060275461073d906001600160a01b031681565b348015610abb57600080fd5b5061054a610aca36600461312c565b611bb3565b348015610adb57600080fd5b506104b0610aea366004612f73565b611bc0565b348015610afb57600080fd5b50601f5461073d906001600160a01b031681565b348015610b1b57600080fd5b506104b0610b2a366004613207565b611c2a565b348015610b3b57600080fd5b506104c8610b4a366004613207565b611c7c565b348015610b5b57600080fd5b506104c860165481565b348015610b7157600080fd5b506104c8610b80366004612f90565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b348015610bb757600080fd5b506104b0610bc63660046131e9565b611cbd565b348015610bd757600080fd5b5060235461073d906001600160a01b031681565b348015610bf757600080fd5b5060205461073d906001600160a01b031681565b348015610c1757600080fd5b506104b0610c26366004613207565b611d47565b348015610c3757600080fd5b506104b0610c46366004613239565b611d8f565b348015610c5757600080fd5b506104b0610c66366004612f73565b611e08565b348015610c7757600080fd5b506104b0610c86366004613207565b611e6c565b348015610c9757600080fd5b506104b0610ca6366004612f73565b611ed0565b348015610cb757600080fd5b506104c8600c5481565b348015610ccd57600080fd5b506104b0610cdc3660046130fe565b611f8c565b348015610ced57600080fd5b5060265461073d906001600160a01b031681565b348015610d0d57600080fd5b506104c860175481565b348015610d2357600080fd5b5061054a610d32366004612f73565b60106020526000908152604090205460ff1681565b348015610d5357600080fd5b5061054a610d62366004612f73565b6001600160a01b031660009081526001602052604090205460ff1690565b348015610d8c57600080fd5b506104c8601a5481565b348015610da257600080fd5b5060285461054a90600160a01b900460ff1681565b6000546001600160a01b03163314610dff5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064015b60405180910390fd5b61271081600554610e109190613421565b610e1a91906133ff565b60075550565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e7b9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610ed05760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b60288054911515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082610f1583611c7c565b119392505050565b3360009081526001602052604090205460ff16610f6a5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b601f805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b03978816179091556020805482169587169590951790945560218054851693861693909317909255602380548416918516919091179055602280549092169216919091179055565b6000546001600160a01b031633146110195760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b6101f583106110905760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201527f35303020616464726573736573000000000000000000000000000000000000006064820152608401610df6565b8281146111055760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60448201527f656e20636f756e740000000000000000000000000000000000000000000000006064820152608401610df6565b6000805b848110156111495783838281811061112357611123613488565b905060200201358261113591906133e7565b91508061114181613457565b915050611109565b508061116a876001600160a01b031660009081526008602052604090205490565b10156111b85760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610df6565b60005b8481101561121f5761120c878787848181106111d9576111d9613488565b90506020020160208101906111ee9190612f73565b86868581811061120057611200613488565b90506020020135612004565b508061121781613457565b9150506111bb565b50505050505050565b3360009081526001602052604090205460ff166112755760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b47336108fc60646112868585613421565b61129091906133ff565b6040518115909202916000818181858888f193505050501580156112b8573d6000803e3d6000fd5b505050565b3360009081526001602052604090205460ff1661130a5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b602491909155602555565b6001600160a01b0383166000908152600960209081526040808320338452909152812054600019146113c957604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546113a49184906120f3565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6113d484848461212d565b90505b9392505050565b6004546001600160a01b031660009081526008602052604081205461142b906003546001600160a01b031660009081526008602052604090205461142590600554906126f2565b906126f2565b905090565b6000610e8782600019610e20565b3360009081526001602052604090205460ff1661148b5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b600655565b6000546001600160a01b031633146114d35760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b600f805460ff1916911515919091179055565b3360009081526001602052604090205460ff166115335760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115a15760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b60005b828110156116105781600b60008686858181106115c3576115c3613488565b90506020020160208101906115d89190612f73565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561160981613457565b90506115a4565b50505050565b600080546001600160a01b0316331461165a5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b816116d9576040516370a0823160e01b81523060048201526001600160a01b038416906370a082319060240160206040518083038186803b15801561169e57600080fd5b505afa1580156116b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d69190613220565b91505b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b15801561173a57600080fd5b505af115801561174e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d791906131cc565b3360009081526001602052604090205460ff166117bf5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b601386905560168590556014849055601583905560178290556117f0826117ea858188818c8c612734565b90612734565b60185560198190556118036002826133ff565b601854106118535760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e20353025000000006044820152606401610df6565b505050505050565b6000546001600160a01b0316331461189e5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b6103e882106118ef5760405162461bcd60e51b815260206004820152601d60248201527f6d61782076616c756520666f72206175746f6275726e206973203130250000006044820152606401610df6565b601e92909255601b55601c805460ff1916911515919091179055565b6000546001600160a01b0316331461194e5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b60005b8281101561161057816010600086868581811061197057611970613488565b90506020020160208101906119859190612f73565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556119b681613457565b9050611951565b600080546001600160a01b03163314611a015760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b6103e8821115611a795760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201527f6b656e7320696e204c50000000000000000000000000000000000000000000006064820152608401610df6565b6027546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a082319060240160206040518083038186803b158015611abf57600080fd5b505afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af79190613220565b90506000611b11612710611b0b8487612793565b9061282e565b90508015611ba957602754600354611b36916001600160a01b03908116911683612004565b50602860009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611b8757600080fd5b505af1158015611b9b573d6000803e3d6000fd5b506001979650505050505050565b5060009392505050565b60006113d733848461212d565b6000546001600160a01b03163314611c035760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b3360009081526001602052604090205460ff16611c775760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b600c55565b6000610e87611c896113de565b6027546001600160a01b0316600090815260086020526040902054611b0b90611cb6906002905b90612793565b8590612793565b3360009081526001602052604090205460ff16611d0a5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b60288054921515600160a81b027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217909155602955565b6000546001600160a01b03163314611d8a5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b601a55565b6000546001600160a01b03163314611dd25760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b61271083600554611de39190613421565b611ded91906133ff565b600c55600a805460ff191692151592909217909155600d5550565b6000546001600160a01b03163314611e4b5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314611eaf5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b61271081600554611ec09190613421565b611eca91906133ff565b60065550565b6000546001600160a01b03163314611f135760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b3360009081526001602052604090205460ff16611fd95760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b038616600090815260089091529182205461205e9184906120f3565b6001600160a01b03808616600090815260086020526040808220939093559085168152205461208d9083612734565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120e19086815260200190565b60405180910390a35060019392505050565b600081848411156121175760405162461bcd60e51b8152600401610df69190613321565b5060006121248486613440565b95945050505050565b602a5460009060ff161561214d57612146848484612004565b90506113d7565b6001600160a01b03841660009081526001602052604090205460ff1615801561218f57506001600160a01b03831660009081526001602052604090205460ff16155b156121ed57602854600160a01b900460ff166121ed5760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e207965740000000000000000000000006044820152606401610df6565b600f5460ff1615612261576001600160a01b03841660009081526010602052604090205460ff16156122615760405162461bcd60e51b815260206004820152600b60248201527f426c61636b6c69737465640000000000000000000000000000000000000000006044820152606401610df6565b6001600160a01b0384166000908152600b602052604090205460ff16801561228b5750600a5460ff165b15612395576001600160a01b0384166000908152600e602052604090205442116122f75760405162461bcd60e51b815260206004820152601a60248201527f5076742073656c6c65722074696d6520726573747269637465640000000000006044820152606401610df6565b600c5482111561236e5760405162461bcd60e51b8152602060048201526024808201527f5076742073656c6c65722068617665206d61782073656c6c207265737472696360448201527f74696f6e000000000000000000000000000000000000000000000000000000006064820152608401610df6565b600d5461237b90426133e7565b6001600160a01b0385166000908152600e60205260409020555b6001600160a01b03841660009081526001602052604090205460ff161580156123c757506001600160a01b0383163014155b80156123e157506003546001600160a01b03848116911614155b80156123fb57506027546001600160a01b03848116911614155b801561241557506023546001600160a01b03848116911614155b156124b6576001600160a01b03831660009081526008602052604090205460075461244084836133e7565b11156124b45760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610df6565b505b6124c08483612870565b6124c86128e9565b156124da576124d561293f565b612590565b6001600160a01b03841660009081526001602052604090205460ff1615801561251c57506001600160a01b03831660009081526001602052604090205460ff16155b801561254157506001600160a01b03841660009081526011602052604090205460ff16155b801561255a57506027546001600160a01b038481169116145b80156125685750601c5460ff165b80156125835750601e54601d5461257f91906133e7565b4210155b1561259057612590612d67565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0387166000908152600890915291909120546125eb9184906120f3565b6001600160a01b038516600090815260086020908152604080832093909355601190529081205460ff1615158061263c57506001600160a01b03841660009081526011602052604090205460ff1615155b6126635760275461265e90869085906001600160a01b03888116911614612d84565b612665565b825b6001600160a01b03851660009081526008602052604090205490915061268b9082612734565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126df9085815260200190565b60405180910390a3506001949350505050565b60006113d783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120f3565b60008061274183856133e7565b9050838110156113d75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610df6565b6000826127a257506000610e87565b60006127ae8385613421565b9050826127bb85836133ff565b146113d75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610df6565b60006113d783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ef9565b6006548111158061289957506001600160a01b03821660009081526012602052604090205460ff165b6128e55760405162461bcd60e51b815260206004820152601160248201527f5458204c696d69742045786365656465640000000000000000000000000000006044820152606401610df6565b5050565b6027546000906001600160a01b0316331480159061290a5750602a5460ff16155b801561291f5750602854600160a81b900460ff165b801561142b57505060295430600090815260086020526040902054101590565b602a805460ff1916600117905560245460255460009161295e91610f09565b61296a5760135461296d565b60005b905060006129916002611b0b601854611b0b8660295461279390919063ffffffff16565b905060006129aa826029546126f290919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106129e4576129e4613488565b6001600160a01b039283166020918202929092010152600254825191169082906001908110612a1557612a15613488565b6001600160a01b0392831660209182029290920101526026546040517f791ac9470000000000000000000000000000000000000000000000000000000081524792919091169063791ac94790612a78908690600090879030904290600401613376565b600060405180830381600087803b158015612a9257600080fd5b505af1158015612aa6573d6000803e3d6000fd5b505050506000612abf82476126f290919063ffffffff16565b90506000612ada612ad188600261282e565b601854906126f2565b90506000612aef6002611b0b8481878d612793565b90506000612b0c83611b0b6014548761279390919063ffffffff16565b90506000612b2984611b0b6016548861279390919063ffffffff16565b90506000612b4685611b0b6015548961279390919063ffffffff16565b6020546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114612b98576040519150601f19603f3d011682016040523d82523d6000602084013e612b9d565b606091505b50506021546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114612bed576040519150601f19603f3d011682016040523d82523d6000602084013e612bf2565b606091505b50506022546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114612c42576040519150601f19603f3d011682016040523d82523d6000602084013e612c47565b606091505b5060009250508b159050612d4f57602654601f546040517ff305d719000000000000000000000000000000000000000000000000000000008152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b158015612cd957600080fd5b505af1158015612ced573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d1291906132b0565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050602a805460ff1916905550505050505050505050565b6000612d74601b546119bd565b90508015612d815742601d555b50565b60008082612d93576064612d97565b601a545b90506000612dc66019546064612dad9190613421565b611b0b84611cb06018548a61279390919063ffffffff16565b90506000612de5601854611b0b6017548561279390919063ffffffff16565b90506000612df383836126f2565b30600090815260086020526040902054909150612e109082612734565b30600090815260086020526040808220929092556023546001600160a01b031681522054612e3e9083612734565b6023546001600160a01b0390811660009081526008602090815260409182902093909355518381523092918b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a38115612ee3576023546040518381526001600160a01b03918216918a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612eed87846126f2565b98975050505050505050565b60008183612f1a5760405162461bcd60e51b8152600401610df69190613321565b50600061212484866133ff565b60008083601f840112612f3957600080fd5b50813567ffffffffffffffff811115612f5157600080fd5b6020830191508360208260051b8501011115612f6c57600080fd5b9250929050565b600060208284031215612f8557600080fd5b81356113d78161349e565b60008060408385031215612fa357600080fd5b8235612fae8161349e565b91506020830135612fbe8161349e565b809150509250929050565b600080600080600060a08688031215612fe157600080fd5b8535612fec8161349e565b94506020860135612ffc8161349e565b9350604086013561300c8161349e565b9250606086013561301c8161349e565b9150608086013561302c8161349e565b809150509295509295909350565b60008060006060848603121561304f57600080fd5b833561305a8161349e565b9250602084013561306a8161349e565b929592945050506040919091013590565b60008060008060006060868803121561309357600080fd5b853561309e8161349e565b9450602086013567ffffffffffffffff808211156130bb57600080fd5b6130c789838a01612f27565b909650945060408801359150808211156130e057600080fd5b506130ed88828901612f27565b969995985093965092949392505050565b6000806040838503121561311157600080fd5b823561311c8161349e565b91506020830135612fbe816134b3565b6000806040838503121561313f57600080fd5b823561314a8161349e565b946020939093013593505050565b60008060006040848603121561316d57600080fd5b833567ffffffffffffffff81111561318457600080fd5b61319086828701612f27565b90945092505060208401356131a4816134b3565b809150509250925092565b6000602082840312156131c157600080fd5b81356113d7816134b3565b6000602082840312156131de57600080fd5b81516113d7816134b3565b600080604083850312156131fc57600080fd5b823561314a816134b3565b60006020828403121561321957600080fd5b5035919050565b60006020828403121561323257600080fd5b5051919050565b60008060006060848603121561324e57600080fd5b83359250602084013561306a816134b3565b6000806040838503121561327357600080fd5b50508035926020909101359150565b60008060006060848603121561329757600080fd5b833592506020840135915060408401356131a4816134b3565b6000806000606084860312156132c557600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c087890312156132f757600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208083528351808285015260005b8181101561334e57858101830151858201604001528201613332565b81811115613360576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133c65784516001600160a01b0316835293830193918301916001016133a1565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156133fa576133fa613472565b500190565b60008261341c57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561343b5761343b613472565b500290565b60008282101561345257613452613472565b500390565b600060001982141561346b5761346b613472565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612d8157600080fd5b8015158114612d8157600080fdfea2646970667358221220e8b3d21550987e85eb2f515eb899c8d8509a025216aedfcab3f7e02a8edeb79464736f6c63430008070033

Deployed Bytecode

0x6080604052600436106104845760003560e01c806386f6c3c11161025e578063d7c94efd11610143578063f2fde38b116100bb578063fce589d81161008a578063fe9fbb801161006f578063fe9fbb8014610d47578063fed0d2a114610d80578063ffb54a9914610d9657600080fd5b8063fce589d814610d01578063fe575a8714610d1757600080fd5b8063f2fde38b14610c8b578063f821f17f14610cab578063f84ba65d14610cc1578063f887ea4014610ce157600080fd5b8063e96fada211610112578063ecabcf61116100f7578063ecabcf6114610c2b578063f0b37c0414610c4b578063f12418a814610c6b57600080fd5b8063e96fada214610beb578063ec72d65f14610c0b57600080fd5b8063d7c94efd14610b4f578063dd62ed3e14610b65578063df20fd4914610bab578063e3763ded14610bcb57600080fd5b80639dd255da116101d6578063a9059cbb116101a5578063ca33e64c1161018a578063ca33e64c14610aef578063d32fd25214610b0f578063d51ed1c814610b2f57600080fd5b8063a9059cbb14610aaf578063b6a5d7de14610acf57600080fd5b80639dd255da14610a32578063a4a4b19b14610a4c578063a4c82a0014610a79578063a8aa1b3114610a8f57600080fd5b80638e2eee841161022d57806395d89b411161021257806395d89b41146109b6578063976b7e12146109fc57806398118cb414610a1c57600080fd5b80638e2eee841461097c5780639242b7591461099c57600080fd5b806386f6c3c1146109045780638714f95714610924578063893d20e814610944578063896648c11461096257600080fd5b80632f54bf6e116103845780636b67c4df116102fc578063722b62ad116102cb57806378109e54116102b057806378109e54146108b85780637d1db4a5146108ce57806384b1d1ef146108e457600080fd5b8063722b62ad1461088257806377b54bad1461089857600080fd5b80636b67c4df146107f55780636ddd17131461080b5780637090ceaa1461082c57806370a082311461084c57600080fd5b80634d709adf116103535780635c85974f116103385780635c85974f146107955780635e562f3b146107b5578063658d4b7f146107d557600080fd5b80634d709adf14610755578063571ac8b01461077557600080fd5b80632f54bf6e146106bc578063313ce567146106eb5780633b2d081c14610707578063402911431461071d57600080fd5b806318abb635116104175780631df4ccfc116103e657806323b872dd116103cb57806323b872dd146106715780632b112e49146106915780632c3e486c146106a657600080fd5b80631df4ccfc1461063b578063201e79911461065157600080fd5b806318abb635146105c5578063199ffc72146105e55780631ca0a28d146105fb5780631da1db5e1461061b57600080fd5b80630d295980116104535780630d2959801461055a5780631161ae391461057a578063180b0d7e1461059a57806318160ddd146105b057600080fd5b8063012aa912146104905780630445b667146104b257806306fdde03146104db578063095ea7b31461052a57600080fd5b3661048b57005b600080fd5b34801561049c57600080fd5b506104b06104ab366004613207565b610db7565b005b3480156104be57600080fd5b506104c860295481565b6040519081526020015b60405180910390f35b3480156104e757600080fd5b5060408051808201909152600581527f4368696e7500000000000000000000000000000000000000000000000000000060208201525b6040516104d29190613321565b34801561053657600080fd5b5061054a61054536600461312c565b610e20565b60405190151581526020016104d2565b34801561056657600080fd5b506104b06105753660046131af565b610e8d565b34801561058657600080fd5b5061054a610595366004613260565b610f09565b3480156105a657600080fd5b506104c860195481565b3480156105bc57600080fd5b506005546104c8565b3480156105d157600080fd5b506104b06105e0366004612fc9565b610f1d565b3480156105f157600080fd5b506104c8601b5481565b34801561060757600080fd5b506104b061061636600461307b565b610fd6565b34801561062757600080fd5b506104b0610636366004613207565b611228565b34801561064757600080fd5b506104c860185481565b34801561065d57600080fd5b506104b061066c366004613260565b6112bd565b34801561067d57600080fd5b5061054a61068c36600461303a565b611315565b34801561069d57600080fd5b506104c86113de565b3480156106b257600080fd5b506104c8601e5481565b3480156106c857600080fd5b5061054a6106d7366004612f73565b6000546001600160a01b0391821691161490565b3480156106f757600080fd5b50604051600481526020016104d2565b34801561071357600080fd5b506104c860155481565b34801561072957600080fd5b5060225461073d906001600160a01b031681565b6040516001600160a01b0390911681526020016104d2565b34801561076157600080fd5b5060285461073d906001600160a01b031681565b34801561078157600080fd5b5061054a610790366004612f73565b611430565b3480156107a157600080fd5b506104b06107b0366004613207565b61143e565b3480156107c157600080fd5b506104b06107d03660046131af565b611490565b3480156107e157600080fd5b506104b06107f03660046130fe565b6114e6565b34801561080157600080fd5b506104c860145481565b34801561081757600080fd5b5060285461054a90600160a81b900460ff1681565b34801561083857600080fd5b506104b0610847366004613158565b61155e565b34801561085857600080fd5b506104c8610867366004612f73565b6001600160a01b031660009081526008602052604090205490565b34801561088e57600080fd5b506104c8600d5481565b3480156108a457600080fd5b5061054a6108b336600461312c565b611616565b3480156108c457600080fd5b506104c860075481565b3480156108da57600080fd5b506104c860065481565b3480156108f057600080fd5b5060215461073d906001600160a01b031681565b34801561091057600080fd5b506104b061091f3660046132de565b611772565b34801561093057600080fd5b506104b061093f366004613282565b61185b565b34801561095057600080fd5b506000546001600160a01b031661073d565b34801561096e57600080fd5b50600f5461054a9060ff1681565b34801561098857600080fd5b506104b0610997366004613158565b61190b565b3480156109a857600080fd5b50600a5461054a9060ff1681565b3480156109c257600080fd5b5060408051808201909152600681527f244348494e550000000000000000000000000000000000000000000000000000602082015261051d565b348015610a0857600080fd5b5061054a610a17366004613207565b6119bd565b348015610a2857600080fd5b506104c860135481565b348015610a3e57600080fd5b50601c5461054a9060ff1681565b348015610a5857600080fd5b506104c8610a67366004612f73565b600e6020526000908152604090205481565b348015610a8557600080fd5b506104c8601d5481565b348015610a9b57600080fd5b5060275461073d906001600160a01b031681565b348015610abb57600080fd5b5061054a610aca36600461312c565b611bb3565b348015610adb57600080fd5b506104b0610aea366004612f73565b611bc0565b348015610afb57600080fd5b50601f5461073d906001600160a01b031681565b348015610b1b57600080fd5b506104b0610b2a366004613207565b611c2a565b348015610b3b57600080fd5b506104c8610b4a366004613207565b611c7c565b348015610b5b57600080fd5b506104c860165481565b348015610b7157600080fd5b506104c8610b80366004612f90565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b348015610bb757600080fd5b506104b0610bc63660046131e9565b611cbd565b348015610bd757600080fd5b5060235461073d906001600160a01b031681565b348015610bf757600080fd5b5060205461073d906001600160a01b031681565b348015610c1757600080fd5b506104b0610c26366004613207565b611d47565b348015610c3757600080fd5b506104b0610c46366004613239565b611d8f565b348015610c5757600080fd5b506104b0610c66366004612f73565b611e08565b348015610c7757600080fd5b506104b0610c86366004613207565b611e6c565b348015610c9757600080fd5b506104b0610ca6366004612f73565b611ed0565b348015610cb757600080fd5b506104c8600c5481565b348015610ccd57600080fd5b506104b0610cdc3660046130fe565b611f8c565b348015610ced57600080fd5b5060265461073d906001600160a01b031681565b348015610d0d57600080fd5b506104c860175481565b348015610d2357600080fd5b5061054a610d32366004612f73565b60106020526000908152604090205460ff1681565b348015610d5357600080fd5b5061054a610d62366004612f73565b6001600160a01b031660009081526001602052604090205460ff1690565b348015610d8c57600080fd5b506104c8601a5481565b348015610da257600080fd5b5060285461054a90600160a01b900460ff1681565b6000546001600160a01b03163314610dff5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064015b60405180910390fd5b61271081600554610e109190613421565b610e1a91906133ff565b60075550565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e7b9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610ed05760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b60288054911515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082610f1583611c7c565b119392505050565b3360009081526001602052604090205460ff16610f6a5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b601f805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b03978816179091556020805482169587169590951790945560218054851693861693909317909255602380548416918516919091179055602280549092169216919091179055565b6000546001600160a01b031633146110195760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b6101f583106110905760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201527f35303020616464726573736573000000000000000000000000000000000000006064820152608401610df6565b8281146111055760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60448201527f656e20636f756e740000000000000000000000000000000000000000000000006064820152608401610df6565b6000805b848110156111495783838281811061112357611123613488565b905060200201358261113591906133e7565b91508061114181613457565b915050611109565b508061116a876001600160a01b031660009081526008602052604090205490565b10156111b85760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610df6565b60005b8481101561121f5761120c878787848181106111d9576111d9613488565b90506020020160208101906111ee9190612f73565b86868581811061120057611200613488565b90506020020135612004565b508061121781613457565b9150506111bb565b50505050505050565b3360009081526001602052604090205460ff166112755760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b47336108fc60646112868585613421565b61129091906133ff565b6040518115909202916000818181858888f193505050501580156112b8573d6000803e3d6000fd5b505050565b3360009081526001602052604090205460ff1661130a5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b602491909155602555565b6001600160a01b0383166000908152600960209081526040808320338452909152812054600019146113c957604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546113a49184906120f3565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6113d484848461212d565b90505b9392505050565b6004546001600160a01b031660009081526008602052604081205461142b906003546001600160a01b031660009081526008602052604090205461142590600554906126f2565b906126f2565b905090565b6000610e8782600019610e20565b3360009081526001602052604090205460ff1661148b5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b600655565b6000546001600160a01b031633146114d35760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b600f805460ff1916911515919091179055565b3360009081526001602052604090205460ff166115335760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115a15760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b60005b828110156116105781600b60008686858181106115c3576115c3613488565b90506020020160208101906115d89190612f73565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561160981613457565b90506115a4565b50505050565b600080546001600160a01b0316331461165a5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b816116d9576040516370a0823160e01b81523060048201526001600160a01b038416906370a082319060240160206040518083038186803b15801561169e57600080fd5b505afa1580156116b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d69190613220565b91505b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b15801561173a57600080fd5b505af115801561174e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d791906131cc565b3360009081526001602052604090205460ff166117bf5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b601386905560168590556014849055601583905560178290556117f0826117ea858188818c8c612734565b90612734565b60185560198190556118036002826133ff565b601854106118535760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e20353025000000006044820152606401610df6565b505050505050565b6000546001600160a01b0316331461189e5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b6103e882106118ef5760405162461bcd60e51b815260206004820152601d60248201527f6d61782076616c756520666f72206175746f6275726e206973203130250000006044820152606401610df6565b601e92909255601b55601c805460ff1916911515919091179055565b6000546001600160a01b0316331461194e5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b60005b8281101561161057816010600086868581811061197057611970613488565b90506020020160208101906119859190612f73565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556119b681613457565b9050611951565b600080546001600160a01b03163314611a015760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b6103e8821115611a795760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201527f6b656e7320696e204c50000000000000000000000000000000000000000000006064820152608401610df6565b6027546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a082319060240160206040518083038186803b158015611abf57600080fd5b505afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af79190613220565b90506000611b11612710611b0b8487612793565b9061282e565b90508015611ba957602754600354611b36916001600160a01b03908116911683612004565b50602860009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611b8757600080fd5b505af1158015611b9b573d6000803e3d6000fd5b506001979650505050505050565b5060009392505050565b60006113d733848461212d565b6000546001600160a01b03163314611c035760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b3360009081526001602052604090205460ff16611c775760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b600c55565b6000610e87611c896113de565b6027546001600160a01b0316600090815260086020526040902054611b0b90611cb6906002905b90612793565b8590612793565b3360009081526001602052604090205460ff16611d0a5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b60288054921515600160a81b027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217909155602955565b6000546001600160a01b03163314611d8a5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b601a55565b6000546001600160a01b03163314611dd25760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b61271083600554611de39190613421565b611ded91906133ff565b600c55600a805460ff191692151592909217909155600d5550565b6000546001600160a01b03163314611e4b5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314611eaf5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b61271081600554611ec09190613421565b611eca91906133ff565b60065550565b6000546001600160a01b03163314611f135760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610df6565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b3360009081526001602052604090205460ff16611fd95760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610df6565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b038616600090815260089091529182205461205e9184906120f3565b6001600160a01b03808616600090815260086020526040808220939093559085168152205461208d9083612734565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120e19086815260200190565b60405180910390a35060019392505050565b600081848411156121175760405162461bcd60e51b8152600401610df69190613321565b5060006121248486613440565b95945050505050565b602a5460009060ff161561214d57612146848484612004565b90506113d7565b6001600160a01b03841660009081526001602052604090205460ff1615801561218f57506001600160a01b03831660009081526001602052604090205460ff16155b156121ed57602854600160a01b900460ff166121ed5760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e207965740000000000000000000000006044820152606401610df6565b600f5460ff1615612261576001600160a01b03841660009081526010602052604090205460ff16156122615760405162461bcd60e51b815260206004820152600b60248201527f426c61636b6c69737465640000000000000000000000000000000000000000006044820152606401610df6565b6001600160a01b0384166000908152600b602052604090205460ff16801561228b5750600a5460ff165b15612395576001600160a01b0384166000908152600e602052604090205442116122f75760405162461bcd60e51b815260206004820152601a60248201527f5076742073656c6c65722074696d6520726573747269637465640000000000006044820152606401610df6565b600c5482111561236e5760405162461bcd60e51b8152602060048201526024808201527f5076742073656c6c65722068617665206d61782073656c6c207265737472696360448201527f74696f6e000000000000000000000000000000000000000000000000000000006064820152608401610df6565b600d5461237b90426133e7565b6001600160a01b0385166000908152600e60205260409020555b6001600160a01b03841660009081526001602052604090205460ff161580156123c757506001600160a01b0383163014155b80156123e157506003546001600160a01b03848116911614155b80156123fb57506027546001600160a01b03848116911614155b801561241557506023546001600160a01b03848116911614155b156124b6576001600160a01b03831660009081526008602052604090205460075461244084836133e7565b11156124b45760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610df6565b505b6124c08483612870565b6124c86128e9565b156124da576124d561293f565b612590565b6001600160a01b03841660009081526001602052604090205460ff1615801561251c57506001600160a01b03831660009081526001602052604090205460ff16155b801561254157506001600160a01b03841660009081526011602052604090205460ff16155b801561255a57506027546001600160a01b038481169116145b80156125685750601c5460ff165b80156125835750601e54601d5461257f91906133e7565b4210155b1561259057612590612d67565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0387166000908152600890915291909120546125eb9184906120f3565b6001600160a01b038516600090815260086020908152604080832093909355601190529081205460ff1615158061263c57506001600160a01b03841660009081526011602052604090205460ff1615155b6126635760275461265e90869085906001600160a01b03888116911614612d84565b612665565b825b6001600160a01b03851660009081526008602052604090205490915061268b9082612734565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126df9085815260200190565b60405180910390a3506001949350505050565b60006113d783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120f3565b60008061274183856133e7565b9050838110156113d75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610df6565b6000826127a257506000610e87565b60006127ae8385613421565b9050826127bb85836133ff565b146113d75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610df6565b60006113d783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ef9565b6006548111158061289957506001600160a01b03821660009081526012602052604090205460ff165b6128e55760405162461bcd60e51b815260206004820152601160248201527f5458204c696d69742045786365656465640000000000000000000000000000006044820152606401610df6565b5050565b6027546000906001600160a01b0316331480159061290a5750602a5460ff16155b801561291f5750602854600160a81b900460ff165b801561142b57505060295430600090815260086020526040902054101590565b602a805460ff1916600117905560245460255460009161295e91610f09565b61296a5760135461296d565b60005b905060006129916002611b0b601854611b0b8660295461279390919063ffffffff16565b905060006129aa826029546126f290919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106129e4576129e4613488565b6001600160a01b039283166020918202929092010152600254825191169082906001908110612a1557612a15613488565b6001600160a01b0392831660209182029290920101526026546040517f791ac9470000000000000000000000000000000000000000000000000000000081524792919091169063791ac94790612a78908690600090879030904290600401613376565b600060405180830381600087803b158015612a9257600080fd5b505af1158015612aa6573d6000803e3d6000fd5b505050506000612abf82476126f290919063ffffffff16565b90506000612ada612ad188600261282e565b601854906126f2565b90506000612aef6002611b0b8481878d612793565b90506000612b0c83611b0b6014548761279390919063ffffffff16565b90506000612b2984611b0b6016548861279390919063ffffffff16565b90506000612b4685611b0b6015548961279390919063ffffffff16565b6020546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114612b98576040519150601f19603f3d011682016040523d82523d6000602084013e612b9d565b606091505b50506021546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114612bed576040519150601f19603f3d011682016040523d82523d6000602084013e612bf2565b606091505b50506022546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114612c42576040519150601f19603f3d011682016040523d82523d6000602084013e612c47565b606091505b5060009250508b159050612d4f57602654601f546040517ff305d719000000000000000000000000000000000000000000000000000000008152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b158015612cd957600080fd5b505af1158015612ced573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d1291906132b0565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050602a805460ff1916905550505050505050505050565b6000612d74601b546119bd565b90508015612d815742601d555b50565b60008082612d93576064612d97565b601a545b90506000612dc66019546064612dad9190613421565b611b0b84611cb06018548a61279390919063ffffffff16565b90506000612de5601854611b0b6017548561279390919063ffffffff16565b90506000612df383836126f2565b30600090815260086020526040902054909150612e109082612734565b30600090815260086020526040808220929092556023546001600160a01b031681522054612e3e9083612734565b6023546001600160a01b0390811660009081526008602090815260409182902093909355518381523092918b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a38115612ee3576023546040518381526001600160a01b03918216918a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612eed87846126f2565b98975050505050505050565b60008183612f1a5760405162461bcd60e51b8152600401610df69190613321565b50600061212484866133ff565b60008083601f840112612f3957600080fd5b50813567ffffffffffffffff811115612f5157600080fd5b6020830191508360208260051b8501011115612f6c57600080fd5b9250929050565b600060208284031215612f8557600080fd5b81356113d78161349e565b60008060408385031215612fa357600080fd5b8235612fae8161349e565b91506020830135612fbe8161349e565b809150509250929050565b600080600080600060a08688031215612fe157600080fd5b8535612fec8161349e565b94506020860135612ffc8161349e565b9350604086013561300c8161349e565b9250606086013561301c8161349e565b9150608086013561302c8161349e565b809150509295509295909350565b60008060006060848603121561304f57600080fd5b833561305a8161349e565b9250602084013561306a8161349e565b929592945050506040919091013590565b60008060008060006060868803121561309357600080fd5b853561309e8161349e565b9450602086013567ffffffffffffffff808211156130bb57600080fd5b6130c789838a01612f27565b909650945060408801359150808211156130e057600080fd5b506130ed88828901612f27565b969995985093965092949392505050565b6000806040838503121561311157600080fd5b823561311c8161349e565b91506020830135612fbe816134b3565b6000806040838503121561313f57600080fd5b823561314a8161349e565b946020939093013593505050565b60008060006040848603121561316d57600080fd5b833567ffffffffffffffff81111561318457600080fd5b61319086828701612f27565b90945092505060208401356131a4816134b3565b809150509250925092565b6000602082840312156131c157600080fd5b81356113d7816134b3565b6000602082840312156131de57600080fd5b81516113d7816134b3565b600080604083850312156131fc57600080fd5b823561314a816134b3565b60006020828403121561321957600080fd5b5035919050565b60006020828403121561323257600080fd5b5051919050565b60008060006060848603121561324e57600080fd5b83359250602084013561306a816134b3565b6000806040838503121561327357600080fd5b50508035926020909101359150565b60008060006060848603121561329757600080fd5b833592506020840135915060408401356131a4816134b3565b6000806000606084860312156132c557600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c087890312156132f757600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208083528351808285015260005b8181101561334e57858101830151858201604001528201613332565b81811115613360576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133c65784516001600160a01b0316835293830193918301916001016133a1565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156133fa576133fa613472565b500190565b60008261341c57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561343b5761343b613472565b500290565b60008282101561345257613452613472565b500390565b600060001982141561346b5761346b613472565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612d8157600080fd5b8015158114612d8157600080fdfea2646970667358221220e8b3d21550987e85eb2f515eb899c8d8509a025216aedfcab3f7e02a8edeb79464736f6c63430008070033

Deployed Bytecode Sourcemap

4737:16283:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9466:181;;;;;;;;;;-1:-1:-1;9466:181:0;;;;;:::i;:::-;;:::i;:::-;;6844:54;;;;;;;;;;;;;;;;;;;16820:25:1;;;16808:2;16793:18;6844:54:0;;;;;;;;8148:80;;;;;;;;;;-1:-1:-1;8220:5:0;;;;;;;;;;;;;;;;;8148:80;;;;;;;:::i;8570:216::-;;;;;;;;;;-1:-1:-1;8570:216:0;;;;;:::i;:::-;;:::i;:::-;;;9583:14:1;;9576:22;9558:41;;9546:2;9531:18;8570:216:0;9418:187:1;14936:94:0;;;;;;;;;;-1:-1:-1;14936:94:0;;;;;:::i;:::-;;:::i;19250:150::-;;;;;;;;;;-1:-1:-1;19250:150:0;;;;;:::i;:::-;;:::i;6108:36::-;;;;;;;;;;;;;;;;7878:88;;;;;;;;;;-1:-1:-1;7951:12:0;;7878:88;;18108:450;;;;;;;;;;-1:-1:-1;18108:450:0;;;;;:::i;:::-;;:::i;6198:36::-;;;;;;;;;;;;;;;;19430:594;;;;;;;;;;-1:-1:-1;19430:594:0;;;;;:::i;:::-;;:::i;14287:208::-;;;;;;;;;;-1:-1:-1;14287:208:0;;;;;:::i;:::-;;:::i;6008:93::-;;;;;;;;;;;;;;;;18730:183;;;;;;;;;;-1:-1:-1;18730:183:0;;;;;:::i;:::-;;:::i;9088:370::-;;;;;;;;;;-1:-1:-1;9088:370:0;;;;;:::i;:::-;;:::i;18925:142::-;;;;;;;;;;;;;:::i;6334:43::-;;;;;;;;;;;;;;;;2745:103;;;;;;;;;;-1:-1:-1;2745:103:0;;;;;:::i;:::-;2800:4;2835:5;-1:-1:-1;;;;;2824:16:0;;;2835:5;;2824:16;;2745:103;7972:80;;;;;;;;;;-1:-1:-1;7972:80:0;;5064:1;18282:36:1;;18270:2;18255:18;7972:80:0;18140:184:1;5885:34:0;;;;;;;;;;;;;;;;6511:30;;;;;;;;;;-1:-1:-1;6511:30:0;;;;-1:-1:-1;;;;;6511:30:0;;;;;;-1:-1:-1;;;;;8175:55:1;;;8157:74;;8145:2;8130:18;6511:30:0;8011:226:1;6727:31:0;;;;;;;;;;-1:-1:-1;6727:31:0;;;;-1:-1:-1;;;;;6727:31:0;;;8794:122;;;;;;;;;;-1:-1:-1;8794:122:0;;;;;:::i;:::-;;:::i;10515:96::-;;;;;;;;;;-1:-1:-1;10515:96:0;;;;;:::i;:::-;;:::i;16946:99::-;;;;;;;;;;-1:-1:-1;16946:99:0;;;;;:::i;:::-;;:::i;17271:120::-;;;;;;;;;;-1:-1:-1;17271:120:0;;;;;:::i;:::-;;:::i;5844:34::-;;;;;;;;;;;;;;;;6807:30;;;;;;;;;;-1:-1:-1;6807:30:0;;;;-1:-1:-1;;;6807:30:0;;;;;;10163:215;;;;;;;;;;-1:-1:-1;10163:215:0;;;;;:::i;:::-;;:::i;8318:105::-;;;;;;;;;;-1:-1:-1;8318:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;8402:18:0;8384:7;8402:18;;;:9;:18;;;;;;;8318:105;5506:47;;;;;;;;;;;;;;;;14503:271;;;;;;;;;;-1:-1:-1;14503:271:0;;;;;:::i;:::-;;:::i;5187:52::-;;;;;;;;;;;;;;;;5131:49;;;;;;;;;;;;;;;;6471:33;;;;;;;;;;-1:-1:-1;6471:33:0;;;;-1:-1:-1;;;;;6471:33:0;;;17535:565;;;;;;;;;;-1:-1:-1;17535:565:0;;;;;:::i;:::-;;:::i;20026:262::-;;;;;;;;;;-1:-1:-1;20026:262:0;;;;;:::i;:::-;;:::i;8234:78::-;;;;;;;;;;-1:-1:-1;8286:7:0;8304:5;-1:-1:-1;;;;;8304:5:0;8234:78;;5615:32;;;;;;;;;;-1:-1:-1;5615:32:0;;;;;;;;17053:210;;;;;;;;;;-1:-1:-1;17053:210:0;;;;;:::i;:::-;;:::i;5363:44::-;;;;;;;;;;-1:-1:-1;5363:44:0;;;;;;;;8058:84;;;;;;;;;;-1:-1:-1;8132:7:0;;;;;;;;;;;;;;;;;8058:84;;20292:498;;;;;;;;;;-1:-1:-1;20292:498:0;;;;;:::i;:::-;;:::i;5803:34::-;;;;;;;;;;;;;;;;6256:35;;;;;;;;;;-1:-1:-1;6256:35:0;;;;;;;;5560:46;;;;;;;;;;-1:-1:-1;5560:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;6298:29;;;;;;;;;;;;;;;;6701:19;;;;;;;;;;-1:-1:-1;6701:19:0;;;;-1:-1:-1;;;;;6701:19:0;;;8924:156;;;;;;;;;;-1:-1:-1;8924:156:0;;;;;:::i;:::-;;:::i;2538:94::-;;;;;;;;;;-1:-1:-1;2538:94:0;;;;;:::i;:::-;;:::i;6386:36::-;;;;;;;;;;-1:-1:-1;6386:36:0;;;;-1:-1:-1;;;;;6386:36:0;;;10386:121;;;;;;;;;;-1:-1:-1;10386:121:0;;;;;:::i;:::-;;:::i;19075:167::-;;;;;;;;;;-1:-1:-1;19075:167:0;;;;;:::i;:::-;;:::i;5926:34::-;;;;;;;;;;;;;;;;8429:133;;;;;;;;;;-1:-1:-1;8429:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8531:19:0;;;8513:7;8531:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8429:133;18566:156;;;;;;;;;;-1:-1:-1;18566:156:0;;;;;:::i;:::-;;:::i;6548:30::-;;;;;;;;;;-1:-1:-1;6548:30:0;;;;-1:-1:-1;;;;;6548:30:0;;;6429:35;;;;;;;;;;-1:-1:-1;6429:35:0;;;;-1:-1:-1;;;;;6429:35:0;;;14782:123;;;;;;;;;;-1:-1:-1;14782:123:0;;;;;:::i;:::-;;:::i;9837:318::-;;;;;;;;;;-1:-1:-1;9837:318:0;;;;;:::i;:::-;;:::i;2640:97::-;;;;;;;;;;-1:-1:-1;2640:97:0;;;;;:::i;:::-;;:::i;9653:176::-;;;;;;;;;;-1:-1:-1;9653:176:0;;;;;:::i;:::-;;:::i;2971:173::-;;;;;;;;;;-1:-1:-1;2971:173:0;;;;;:::i;:::-;;:::i;5465:32::-;;;;;;;;;;;;;;;;17399:128;;;;;;;;;;-1:-1:-1;17399:128:0;;;;;:::i;:::-;;:::i;6670:24::-;;;;;;;;;;-1:-1:-1;6670:24:0;;;;-1:-1:-1;;;;;6670:24:0;;;5967:34;;;;;;;;;;;;;;;;5654:46;;;;;;;;;;-1:-1:-1;5654:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2856:107;;;;;;;;;;-1:-1:-1;2856:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;2936:19:0;2912:4;2936:19;;;:14;:19;;;;;;;;;2856:107;6153:36;;;;;;;;;;;;;;;;6767:31;;;;;;;;;;-1:-1:-1;6767:31:0;;;;-1:-1:-1;;;6767:31:0;;;;;;9466:181;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;15102:2:1;2381:38:0;;;15084:21:1;15141:1;15121:18;;;15114:29;-1:-1:-1;;;15159:18:1;;;15152:36;15205:18;;2381:38:0;;;;;;;;;9634:5:::1;9605:24;9590:12;;:39;;;;:::i;:::-;9589:50;;;;:::i;:::-;9571:15;:68:::0;-1:-1:-1;9466:181:0:o;8570:216::-;8674:10;8645:4;8662:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8662:32:0;;;;;;;;;;:41;;;8719:37;8645:4;;8662:32;;8719:37;;;;8697:6;16820:25:1;;16808:2;16793:18;;16674:177;8719:37:0;;;;;;;;-1:-1:-1;8774:4:0;8570:216;;;;;:::o;14936:94::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;15102:2:1;2381:38:0;;;15084:21:1;15141:1;15121:18;;;15114:29;-1:-1:-1;;;15159:18:1;;;15152:36;15205:18;;2381:38:0;14900:329:1;2381:38:0;15001:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;15001:21:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;14936:94::o;19250:150::-;19330:4;19386:6;19354:29;19374:8;19354:19;:29::i;:::-;:38;;19250:150;-1:-1:-1;;;19250:150:0:o;18108:450::-;2492:10;2912:4;2936:19;;;:14;:19;;;;;;;;2471:48;;;;-1:-1:-1;;;2471:48:0;;16196:2:1;2471:48:0;;;16178:21:1;16235:2;16215:18;;;16208:30;-1:-1:-1;;;16254:18:1;;;16247:41;16305:18;;2471:48:0;15994:335:1;2471:48:0;18308:21:::1;:46:::0;;-1:-1:-1;;18308:46:0;;::::1;-1:-1:-1::0;;;;;18308:46:0;;::::1;;::::0;;;18365:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18420:18:::1;:40:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18471:15:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;18516:15:::1;:34:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;18108:450::o;19430:594::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;15102:2:1;2381:38:0;;;15084:21:1;15141:1;15121:18;;;15114:29;-1:-1:-1;;;15159:18:1;;;15152:36;15205:18;;2381:38:0;14900:329:1;2381:38:0;19579:3:::1;19560:22:::0;::::1;19552:79;;;::::0;-1:-1:-1;;;19552:79:0;;14688:2:1;19552:79:0::1;::::0;::::1;14670:21:1::0;14727:2;14707:18;;;14700:30;14766:34;14746:18;;;14739:62;14837:15;14817:18;;;14810:43;14870:19;;19552:79:0::1;14486:409:1::0;19552:79:0::1;19646:33:::0;;::::1;19638:85;;;::::0;-1:-1:-1;;;19638:85:0;;10913:2:1;19638:85:0::1;::::0;::::1;10895:21:1::0;10952:2;10932:18;;;10925:30;10991:34;10971:18;;;10964:62;11062:10;11042:18;;;11035:38;11090:19;;19638:85:0::1;10711:404:1::0;19638:85:0::1;19732:12;19761:6:::0;19757:82:::1;19771:20:::0;;::::1;19757:82;;;19822:6;;19829:1;19822:9;;;;;;;:::i;:::-;;;;;;;19815:4;:16;;;;:::i;:::-;19808:23:::0;-1:-1:-1;19793:3:0;::::1;::::0;::::1;:::i;:::-;;;;19757:82;;;;19874:4;19855:15;19865:4;-1:-1:-1::0;;;;;8402:18:0;8384:7;8402:18;;;:9;:18;;;;;;;8318:105;19855:15:::1;:23;;19847:63;;;::::0;-1:-1:-1;;;19847:63:0;;12739:2:1;19847:63:0::1;::::0;::::1;12721:21:1::0;12778:2;12758:18;;;12751:30;12817:29;12797:18;;;12790:57;12864:18;;19847:63:0::1;12537:351:1::0;19847:63:0::1;19923:6;19919:102;19933:20:::0;;::::1;19919:102;;;19970:43;19985:4;19990:9;;20000:1;19990:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20003:6;;20010:1;20003:9;;;;;;;:::i;:::-;;;;;;;19970:14;:43::i;:::-;-1:-1:-1::0;19955:3:0;::::1;::::0;::::1;:::i;:::-;;;;19919:102;;;;19543:481;19430:594:::0;;;;;:::o;14287:208::-;2492:10;2912:4;2936:19;;;:14;:19;;;;;;;;2471:48;;;;-1:-1:-1;;;2471:48:0;;16196:2:1;2471:48:0;;;16178:21:1;16235:2;16215:18;;;16208:30;-1:-1:-1;;;16254:18:1;;;16247:41;16305:18;;2471:48:0;15994:335:1;2471:48:0;14391:21:::1;14431:10;14423:64;14483:3;14452:28;14464:16:::0;14391:21;14452:28:::1;:::i;:::-;:34;;;;:::i;:::-;14423:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14360:135;14287:208:::0;:::o;18730:183::-;2492:10;2912:4;2936:19;;;:14;:19;;;;;;;;2471:48;;;;-1:-1:-1;;;2471:48:0;;16196:2:1;2471:48:0;;;16178:21:1;16235:2;16215:18;;;16208:30;-1:-1:-1;;;16254:18:1;;;16247:41;16305:18;;2471:48:0;15994:335:1;2471:48:0;18828:15:::1;:25:::0;;;;18864:26:::1;:41:::0;18730:183::o;9088:370::-;-1:-1:-1;;;;;9208:19:0;;9188:4;9208:19;;;:11;:19;;;;;;;;9228:10;9208:31;;;;;;;;-1:-1:-1;;9208:52:0;9205:186;;9310:69;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9310:19:0;;-1:-1:-1;9310:19:0;;;:11;:19;;;;;9330:10;9310:31;;;;;;;;;;:69;;9346:6;;9310:35;:69::i;:::-;-1:-1:-1;;;;;9276:19:0;;;;;;:11;:19;;;;;;;;9296:10;9276:31;;;;;;;:103;9205:186;9410:40;9424:6;9432:9;9443:6;9410:13;:40::i;:::-;9403:47;;9088:370;;;;;;:::o;18925:142::-;19053:4;;-1:-1:-1;;;;;19053:4:0;18978:7;8402:18;;;:9;:18;;;;;;19005:54;;19032:4;;-1:-1:-1;;;;;19032:4:0;8384:7;8402:18;;;:9;:18;;;;;;19005:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;18998:61;;18925:142;:::o;8794:122::-;8849:4;8873:35;8881:7;-1:-1:-1;;8873:7:0;:35::i;10515:96::-;2492:10;2912:4;2936:19;;;:14;:19;;;;;;;;2471:48;;;;-1:-1:-1;;;2471:48:0;;16196:2:1;2471:48:0;;;16178:21:1;16235:2;16215:18;;;16208:30;-1:-1:-1;;;16254:18:1;;;16247:41;16305:18;;2471:48:0;15994:335:1;2471:48:0;10582:12:::1;:21:::0;10515:96::o;16946:99::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;15102:2:1;2381:38:0;;;15084:21:1;15141:1;15121:18;;;15114:29;-1:-1:-1;;;15159:18:1;;;15152:36;15205:18;;2381:38:0;14900:329:1;2381:38:0;17014:13:::1;:23:::0;;-1:-1:-1;;17014:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16946:99::o;17271:120::-;2492:10;2912:4;2936:19;;;:14;:19;;;;;;;;2471:48;;;;-1:-1:-1;;;2471:48:0;;16196:2:1;2471:48:0;;;16178:21:1;16235:2;16215:18;;;16208:30;-1:-1:-1;;;16254:18:1;;;16247:41;16305:18;;2471:48:0;15994:335:1;2471:48:0;-1:-1:-1;;;;;17355:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;17355:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17271:120::o;10163:215::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;15102:2:1;2381:38:0;;;15084:21:1;15141:1;15121:18;;;15114:29;-1:-1:-1;;;15159:18:1;;;15152:36;15205:18;;2381:38:0;14900:329:1;2381:38:0;10265:9:::1;10260:111;10276:20:::0;;::::1;10260:111;;;10353:6;10318:18;:32;10337:9;;10347:1;10337:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10318:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;10318:32:0;:41;;-1:-1:-1;;10318:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10298:3:::1;::::0;::::1;:::i;:::-;;;10260:111;;;;10163:215:::0;;;:::o;14503:271::-;14592:4;2835:5;;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;15102:2:1;2381:38:0;;;15084:21:1;15141:1;15121:18;;;15114:29;-1:-1:-1;;;15159:18:1;;;15152:36;15205:18;;2381:38:0;14900:329:1;2381:38:0;14609:11;14606:95:::1;;14645:44;::::0;-1:-1:-1;;;14645:44:0;;14683:4:::1;14645:44;::::0;::::1;8157:74:1::0;-1:-1:-1;;;;;14645:29:0;::::1;::::0;::::1;::::0;8130:18:1;;14645:44:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14636:53;;14606:95;14718:48;::::0;;;;14747:10:::1;14718:48;::::0;::::1;8655:74:1::0;8745:18;;;8738:34;;;-1:-1:-1;;;;;14718:28:0;::::1;::::0;::::1;::::0;8628:18:1;;14718:48:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17535:565::-:0;2492:10;2912:4;2936:19;;;:14;:19;;;;;;;;2471:48;;;;-1:-1:-1;;;2471:48:0;;16196:2:1;2471:48:0;;;16178:21:1;16235:2;16215:18;;;16208:30;-1:-1:-1;;;16254:18:1;;;16247:41;16305:18;;2471:48:0;15994:335:1;2471:48:0;17711:12:::1;:28:::0;;;17750:7:::1;:18:::0;;;17779:12:::1;:28:::0;;;17818:10:::1;:24:::0;;;17853:7:::1;:18:::0;;;17893:77:::1;17863:8:::0;17893:63:::1;17831:11:::0;17893:63;17794:13;17893:63;17726:13;17760:8;17893:17:::1;:27::i;:::-;:31:::0;::::1;:46::i;:77::-;17882:8;:88:::0;17981:14:::1;:32:::0;;;18043:16:::1;18058:1;17998:15:::0;18043:16:::1;:::i;:::-;18032:8;;:27;18024:68;;;::::0;-1:-1:-1;;;18024:68:0;;11668:2:1;18024:68:0::1;::::0;::::1;11650:21:1::0;11707:2;11687:18;;;11680:30;11746;11726:18;;;11719:58;11794:18;;18024:68:0::1;11466:352:1::0;18024:68:0::1;17535:565:::0;;;;;;:::o;20026:262::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;15102:2:1;2381:38:0;;;15084:21:1;15141:1;15121:18;;;15114:29;-1:-1:-1;;;15159:18:1;;;15152:36;15205:18;;2381:38:0;14900:329:1;2381:38:0;20144:4:::1;20133:8;:15;20125:56;;;::::0;-1:-1:-1;;;20125:56:0;;12025:2:1;20125:56:0::1;::::0;::::1;12007:21:1::0;12064:2;12044:18;;;12037:30;12103:31;12083:18;;;12076:59;12152:18;;20125:56:0::1;11823:353:1::0;20125:56:0::1;20194:15;:23:::0;;;;20224:16:::1;:27:::0;20258:15:::1;:26:::0;;-1:-1:-1;;20258:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20026:262::o;17053:210::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;15102:2:1;2381:38:0;;;15084:21:1;15141:1;15121:18;;;15114:29;-1:-1:-1;;;15159:18:1;;;15152:36;15205:18;;2381:38:0;14900:329:1;2381:38:0;17155:9:::1;17150:106;17166:20:::0;;::::1;17150:106;;;17238:6;17208:13;:27;17222:9;;17232:1;17222:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17208:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17208:27:0;:36;;-1:-1:-1;;17208:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17188:3:::1;::::0;::::1;:::i;:::-;;;17150:106;;20292:498:::0;20368:4;2835:5;;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;15102:2:1;2381:38:0;;;15084:21:1;15141:1;15121:18;;;15114:29;-1:-1:-1;;;15159:18:1;;;15152:36;15205:18;;2381:38:0;14900:329:1;2381:38:0;20413:4:::1;20392:17;:25;;20384:80;;;::::0;-1:-1:-1;;;20384:80:0;;14277:2:1;20384:80:0::1;::::0;::::1;14259:21:1::0;14316:2;14296:18;;;14289:30;14355:34;14335:18;;;14328:62;14426:12;14406:18;;;14399:40;14456:19;;20384:80:0::1;14075:406:1::0;20384:80:0::1;20516:4;::::0;20501:20:::1;::::0;-1:-1:-1;;;20501:20:0;;-1:-1:-1;;;;;20516:4:0;;::::1;20501:20;::::0;::::1;8157:74:1::0;20481:17:0::1;::::0;20501:4:::1;::::0;:14:::1;::::0;8130:18:1;;20501:20:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20481:40:::0;-1:-1:-1;20532:15:0::1;20550:43;20587:5;20550:32;20481:40:::0;20564:17;20550:13:::1;:32::i;:::-;:36:::0;::::1;:43::i;:::-;20532:61:::0;-1:-1:-1;20618:11:0;;20614:136:::1;;20660:4;::::0;20665::::1;::::0;20645:33:::1;::::0;-1:-1:-1;;;;;20660:4:0;;::::1;::::0;20665::::1;20670:7:::0;20645:14:::1;:33::i;:::-;;20693:12;;;;;;;;;-1:-1:-1::0;;;;;20693:12:0::1;-1:-1:-1::0;;;;;20693:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;20734:4:0::1;::::0;20292:498;-1:-1:-1;;;;;;;20292:498:0:o;20614:136::-:1;-1:-1:-1::0;20777:5:0::1;::::0;20292:498;-1:-1:-1;;;20292:498:0:o;8924:156::-;9004:4;9028:44;9042:10;9054:9;9065:6;9028:13;:44::i;2538:94::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;15102:2:1;2381:38:0;;;15084:21:1;15141:1;15121:18;;;15114:29;-1:-1:-1;;;15159:18:1;;;15152:36;15205:18;;2381:38:0;14900:329:1;2381:38:0;-1:-1:-1;;;;;2598:19:0::1;;::::0;;;2620:4:::1;2598:19;::::0;;;;;;;:26;;-1:-1:-1;;2598:26:0::1;::::0;;::::1;::::0;;2538:94::o;10386:121::-;2492:10;2912:4;2936:19;;;:14;:19;;;;;;;;2471:48;;;;-1:-1:-1;;;2471:48:0;;16196:2:1;2471:48:0;;;16178:21:1;16235:2;16215:18;;;16208:30;-1:-1:-1;;;16254:18:1;;;16247:41;16305:18;;2471:48:0;15994:335:1;2471:48:0;10473:17:::1;:26:::0;10386:121::o;19075:167::-;19143:7;19170:64;19211:22;:20;:22::i;:::-;19193:4;;-1:-1:-1;;;;;19193:4:0;8384:7;8402:18;;;:9;:18;;;;;;19170:36;;19183:22;;19203:1;;19183:15;:19;;:22::i;:::-;19170:8;;:12;:36::i;18566:156::-;2492:10;2912:4;2936:19;;;:14;:19;;;;;;;;2471:48;;;;-1:-1:-1;;;2471:48:0;;16196:2:1;2471:48:0;;;16178:21:1;16235:2;16215:18;;;16208:30;-1:-1:-1;;;16254:18:1;;;16247:41;16305:18;;2471:48:0;15994:335:1;2471:48:0;18658:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;18658:22:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;;18691:13:::1;:23:::0;18566:156::o;14782:123::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;15102:2:1;2381:38:0;;;15084:21:1;15141:1;15121:18;;;15114:29;-1:-1:-1;;;15159:18:1;;;15152:36;15205:18;;2381:38:0;14900:329:1;2381:38:0;14861:14:::1;:28:::0;14782:123::o;9837:318::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;15102:2:1;2381:38:0;;;15084:21:1;15141:1;15121:18;;;15114:29;-1:-1:-1;;;15159:18:1;;;15152:36;15205:18;;2381:38:0;14900:329:1;2381:38:0;10049:5:::1;10014:30;9999:12;;:45;;;;:::i;:::-;9998:56;;;;:::i;:::-;9978:17;:76:::0;10065:24:::1;:38:::0;;-1:-1:-1;;10065:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;10114:21:::1;:33:::0;-1:-1:-1;9837:318:0:o;2640:97::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;15102:2:1;2381:38:0;;;15084:21:1;15141:1;15121:18;;;15114:29;-1:-1:-1;;;15159:18:1;;;15152:36;15205:18;;2381:38:0;14900:329:1;2381:38:0;-1:-1:-1;;;;;2702:19:0::1;2724:5;2702:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2702:27:0::1;::::0;;2640:97::o;9653:176::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;15102:2:1;2381:38:0;;;15084:21:1;15141:1;15121:18;;;15114:29;-1:-1:-1;;;15159:18:1;;;15152:36;15205:18;;2381:38:0;14900:329:1;2381:38:0;9816:5:::1;9786:25;9771:12;;:40;;;;:::i;:::-;9770:51;;;;:::i;:::-;9755:12;:66:::0;-1:-1:-1;9653:176:0:o;2971:173::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;15102:2:1;2381:38:0;;;15084:21:1;15141:1;15121:18;;;15114:29;-1:-1:-1;;;15159:18:1;;;15152:36;15205:18;;2381:38:0;14900:329:1;2381:38:0;3047:5:::1;:11:::0;;-1:-1:-1;;3047:11:0::1;-1:-1:-1::0;;;;;3047:11:0;::::1;::::0;;::::1;::::0;;3069:19;;;-1:-1:-1;3069:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3069:26:0::1;::::0;;::::1;::::0;;;3111:25;;8157:74:1;;;3111:25:0::1;::::0;8130:18:1;3111:25:0::1;;;;;;;2971:173:::0;:::o;17399:128::-;2492:10;2912:4;2936:19;;;:14;:19;;;;;;;;2471:48;;;;-1:-1:-1;;;2471:48:0;;16196:2:1;2471:48:0;;;16178:21:1;16235:2;16215:18;;;16208:30;-1:-1:-1;;;16254:18:1;;;16247:41;16305:18;;2471:48:0;15994:335:1;2471:48:0;-1:-1:-1;;;;;17487:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;17487:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17399:128::o;12659:330::-;12789:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12789:17:0;;12752:4;12789:17;;;:9;:17;;;;;;;:53;;12811:6;;12789:21;:53::i;:::-;-1:-1:-1;;;;;12769:17:0;;;;;;;:9;:17;;;;;;:73;;;;12876:20;;;;;;;:32;;12901:6;12876:24;:32::i;:::-;-1:-1:-1;;;;;12853:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12924:35;;;;;;;;;;12952:6;16820:25:1;;16808:2;16793:18;;16674:177;12924:35:0;;;;;;;;-1:-1:-1;12977:4:0;12659:330;;;;;:::o;422:192::-;508:7;544:12;536:6;;;;528:29;;;;-1:-1:-1;;;528:29:0;;;;;;;;:::i;:::-;-1:-1:-1;568:9:0;580:5;584:1;580;:5;:::i;:::-;568:17;422:192;-1:-1:-1;;;;;422:192:0:o;10619:2028::-;10731:6;;10711:4;;10731:6;;10728:63;;;10747:41;10762:6;10770:9;10781:6;10747:14;:41::i;:::-;10740:48;;;;10728:63;-1:-1:-1;;;;;10807:22:0;;;;;;:14;:22;;;;;;;;10806:23;:53;;;;-1:-1:-1;;;;;;10834:25:0;;;;;;:14;:25;;;;;;;;10833:26;10806:53;10803:127;;;10883:11;;-1:-1:-1;;;10883:11:0;;;;10875:43;;;;-1:-1:-1;;;10875:43:0;;13095:2:1;10875:43:0;;;13077:21:1;13134:2;13114:18;;;13107:30;13173:22;13153:18;;;13146:50;13213:18;;10875:43:0;12893:344:1;10875:43:0;10967:13;;;;10964:93;;;-1:-1:-1;;;;;11005:21:0;;;;;;:13;:21;;;;;;;;11004:22;10996:45;;;;-1:-1:-1;;;10996:45:0;;16536:2:1;10996:45:0;;;16518:21:1;16575:2;16555:18;;;16548:30;16614:13;16594:18;;;16587:41;16645:18;;10996:45:0;16334:335:1;10996:45:0;-1:-1:-1;;;;;11117:26:0;;;;;;:18;:26;;;;;;;;:55;;;;-1:-1:-1;11148:24:0;;;;11117:55;11113:335;;;-1:-1:-1;;;;;11197:21:0;;;;;;:13;:21;;;;;;11221:15;-1:-1:-1;11189:77:0;;;;-1:-1:-1;;;11189:77:0;;15841:2:1;11189:77:0;;;15823:21:1;15880:2;15860:18;;;15853:30;15919:28;15899:18;;;15892:56;15965:18;;11189:77:0;15639:350:1;11189:77:0;11299:17;;11289:6;:27;;11281:75;;;;-1:-1:-1;;;11281:75:0;;15436:2:1;11281:75:0;;;15418:21:1;15475:2;15455:18;;;15448:30;15514:34;15494:18;;;15487:62;15585:6;15565:18;;;15558:34;15609:19;;11281:75:0;15234:400:1;11281:75:0;11415:21;;11397:39;;:15;:39;:::i;:::-;-1:-1:-1;;;;;11373:21:0;;;;;;:13;:21;;;;;:63;11113:335;-1:-1:-1;;;;;11465:22:0;;;;;;:14;:22;;;;;;;;11464:23;:53;;;;-1:-1:-1;;;;;;11491:26:0;;11512:4;11491:26;;11464:53;:84;;;;-1:-1:-1;11543:4:0;;-1:-1:-1;;;;;11522:26:0;;;11543:4;;11522:26;;11464:84;:105;;;;-1:-1:-1;11565:4:0;;-1:-1:-1;;;;;11552:17:0;;;11565:4;;11552:17;;11464:105;:137;;;;-1:-1:-1;11586:15:0;;-1:-1:-1;;;;;11573:28:0;;;11586:15;;11573:28;;11464:137;11460:329;;;-1:-1:-1;;;;;8402:18:0;;11617;8402;;;:9;:18;;;;;;11706:15;;11682:19;11695:6;8402:18;11682:19;:::i;:::-;11681:40;;11673:114;;;;-1:-1:-1;;;11673:114:0;;13846:2:1;11673:114:0;;;13828:21:1;13885:2;13865:18;;;13858:30;13924:34;13904:18;;;13897:62;13995:32;13975:18;;;13968:60;14045:19;;11673:114:0;13644:426:1;11673:114:0;11602:187;11460:329;11844:28;11857:6;11865;11844:12;:28::i;:::-;11888:16;:14;:16::i;:::-;11885:339;;;11907:10;:8;:10::i;:::-;11885:339;;;-1:-1:-1;;;;;11939:22:0;;;;;;:14;:22;;;;;;;;11938:23;:53;;;;-1:-1:-1;;;;;;11966:25:0;;;;;;:14;:25;;;;;;;;11965:26;11938:53;:95;;;;-1:-1:-1;;;;;;12014:19:0;;;;;;:11;:19;;;;;;;;12013:20;11938:95;:133;;;;-1:-1:-1;12067:4:0;;-1:-1:-1;;;;;12054:17:0;;;12067:4;;12054:17;11938:133;:169;;;;-1:-1:-1;12092:15:0;;;;11938:169;:241;;;;;12164:15;;12147:14;;:32;;;;:::i;:::-;12128:15;:51;;11938:241;11935:289;;;12199:13;:11;:13::i;:::-;12283:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12283:17:0;;-1:-1:-1;12283:17:0;;;:9;:17;;;;;;;;:53;;12305:6;;12283:21;:53::i;:::-;-1:-1:-1;;;;;12263:17:0;;;;;;:9;:17;;;;;;;;:73;;;;13258:11;:19;;;;;;;;13257:20;12375:22;:51;;;-1:-1:-1;;;;;;13258:19:0;;13233:4;13258:19;;;:11;:19;;;;;;;;13257:20;12401:25;12375:51;12374:108;;12476:4;;12439:43;;12447:6;;12455;;-1:-1:-1;;;;;12463:17:0;;;12476:4;;12463:17;12439:7;:43::i;:::-;12374:108;;;12430:6;12374:108;-1:-1:-1;;;;;12516:20:0;;;;;;:9;:20;;;;;;12349:133;;-1:-1:-1;12516:40:0;;12349:133;12516:24;:40::i;:::-;-1:-1:-1;;;;;12493:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12574:43;;;;;;;;;;12602:14;16820:25:1;;16808:2;16793:18;;16674:177;12574:43:0;;;;;;;;-1:-1:-1;12635:4:0;;10619:2028;-1:-1:-1;;;;10619:2028:0:o;280:136::-;338:7;365:43;369:1;372;365:43;;;;;;;;;;;;;;;;;:3;:43::i;93:181::-;151:7;;183:5;187:1;183;:5;:::i;:::-;171:17;;212:1;207;:6;;199:46;;;;-1:-1:-1;;;199:46:0;;12383:2:1;199:46:0;;;12365:21:1;12422:2;12402:18;;;12395:30;12461:29;12441:18;;;12434:57;12508:18;;199:46:0;12181:351:1;620:250:0;678:7;702:6;698:47;;-1:-1:-1;732:1:0;725:8;;698:47;757:9;769:5;773:1;769;:5;:::i;:::-;757:17;-1:-1:-1;802:1:0;793:5;797:1;757:17;793:5;:::i;:::-;:10;785:56;;;;-1:-1:-1;;;785:56:0;;13444:2:1;785:56:0;;;13426:21:1;13483:2;13463:18;;;13456:30;13522:34;13502:18;;;13495:62;13593:3;13573:18;;;13566:31;13614:19;;785:56:0;13242:397:1;876:132:0;934:7;961:39;965:1;968;961:39;;;;;;;;;;;;;;;;;:3;:39::i;12997:166::-;13094:12;;13084:6;:22;;:49;;;-1:-1:-1;;;;;;13110:23:0;;;;;;:15;:23;;;;;;;;13084:49;13076:79;;;;-1:-1:-1;;;13076:79:0;;11322:2:1;13076:79:0;;;11304:21:1;11361:2;11341:18;;;11334:30;11400:19;11380:18;;;11373:47;11437:18;;13076:79:0;11120:341:1;13076:79:0;12997:166;;:::o;14082:197::-;14169:4;;14131;;-1:-1:-1;;;;;14169:4:0;14155:10;:18;;;;:38;;-1:-1:-1;14187:6:0;;;;14186:7;14155:38;:62;;;;-1:-1:-1;14206:11:0;;-1:-1:-1;;;14206:11:0;;;;14155:62;:116;;;;-1:-1:-1;;14258:13:0;;14248:4;14230:24;;;;:9;:24;;;;;;:41;;;14082:197::o;15038:1900::-;6945:6;:13;;-1:-1:-1;;6945:13:0;6954:4;6945:13;;;15133:15:::1;::::0;15150:26:::1;::::0;6945:6;;15117:60:::1;::::0;:15:::1;:60::i;:::-;:79;;15184:12;;15117:79;;;15180:1;15117:79;15087:109;;15207:23;15233:59;15290:1;15233:52;15276:8;;15233:38;15251:19;15233:13;;:17;;:38;;;;:::i;:59::-;15207:85;;15303:20;15326:34;15344:15;15326:13;;:17;;:34;;;;:::i;:::-;15397:16;::::0;;15411:1:::1;15397:16:::0;;;;;::::1;::::0;;15303:57;;-1:-1:-1;15373:21:0::1;::::0;15397:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15397:16:0::1;15373:40;;15442:4;15424;15429:1;15424:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15424:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;15468:4:::1;::::0;15458:7;;15468:4;::::1;::::0;15458;;15468;;15458:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;15458:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;15543:6:::1;::::0;:188:::1;::::0;;;;15509:21:::1;::::0;15543:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;15615:12;;15485:21:::1;::::0;15658:4;;15685::::1;::::0;15705:15:::1;::::0;15543:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15744:17;15764:40;15790:13;15764:21;:25;;:40;;;;:::i;:::-;15744:60:::0;-1:-1:-1;15817:19:0::1;15839:40;15852:26;:19:::0;15876:1:::1;15852:23;:26::i;:::-;15839:8;::::0;;:12:::1;:40::i;:::-;15817:62:::0;-1:-1:-1;15900:26:0::1;15929:58;15985:1;15929:51;15817:62:::0;15929:51;:9;15943:19;15929:13:::1;:34::i;:58::-;15900:87;;15998:26;16027:44;16059:11;16027:27;16041:12;;16027:9;:13;;:27;;;;:::i;:44::-;15998:73;;16082:21;16106:39;16133:11;16106:22;16120:7;;16106:9;:13;;:22;;;;:::i;:39::-;16082:63;;16156:24;16183:42;16213:11;16183:25;16197:10;;16183:9;:13;;:25;;;;:::i;:42::-;16267:20;::::0;16259:65:::1;::::0;16156:69;;-1:-1:-1;16239:15:0::1;::::0;-1:-1:-1;;;;;16267:20:0;;::::1;::::0;16301:18;;16239:15;16259:65;16239:15;16259:65;16301:18;16267:20;16259:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16359:18:0::1;::::0;16351:61:::1;::::0;16238:86;;-1:-1:-1;;;;;;16359:18:0::1;::::0;16391:16;;16351:61:::1;::::0;;;16391:16;16359:18;16351:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16447:15:0::1;::::0;16439:55:::1;::::0;16335:77;;-1:-1:-1;;;;;;16447:15:0::1;::::0;16476:13;;16439:55:::1;::::0;;;16476:13;16447:15;16439:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;16551:5:0::1;::::0;-1:-1:-1;;16572:19:0;;;-1:-1:-1;16569:362:0::1;;16607:6;::::0;16781:21:::1;::::0;16607:244:::1;::::0;;;;16683:4:::1;16607:244;::::0;::::1;9147:34:1::0;9197:18;;;9190:34;;;16607:6:0::1;9240:18:1::0;;;9233:34;;;9283:18;;;9276:34;-1:-1:-1;;;;;16781:21:0;;::::1;9326:19:1::0;;;9319:44;16821:15:0::1;9379:19:1::0;;;9372:35;16607:6:0;::::1;::::0;:22:::1;::::0;16637:18;;9058:19:1;;16607:244:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16871:48:0::1;::::0;;18061:25:1;;;18117:2;18102:18;;18095:34;;;16871:48:0::1;::::0;-1:-1:-1;18034:18:1;16871:48:0::1;;;;;;;16569:362;-1:-1:-1::0;;6963:6:0;:14;;-1:-1:-1;;6963:14:0;;;-1:-1:-1;;;;;;;;;;15038:1900:0:o;20794:158::-;20833:11;20847:31;20861:16;;20847:13;:31::i;:::-;20833:45;;20888:6;20885:62;;;20924:15;20907:14;:32;20885:62;20826:126;20794:158::o;13293:781::-;13373:7;13403:18;13424:6;:29;;13450:3;13424:29;;;13433:14;;13424:29;13403:50;;13464:17;13484:62;13525:14;;13542:3;13525:20;;;;:::i;:::-;13484:36;13509:10;13484:20;13495:8;;13484:6;:10;;:20;;;;:::i;:62::-;13464:82;;13559:18;13580:36;13607:8;;13580:22;13594:7;;13580:9;:13;;:22;;;;:::i;:36::-;13559:57;-1:-1:-1;13627:22:0;13652:25;:9;13559:57;13652:13;:25::i;:::-;13735:4;13717:24;;;;:9;:24;;;;;;13627:50;;-1:-1:-1;13717:44:0;;13627:50;13717:28;:44::i;:::-;13708:4;13690:24;;;;:9;:24;;;;;;:71;;;;13811:15;;-1:-1:-1;;;;;13811:15:0;13801:26;;;;:42;;13832:10;13801:30;:42::i;:::-;13782:15;;-1:-1:-1;;;;;13782:15:0;;;13772:26;;;;:9;:26;;;;;;;;;:71;;;;13859:47;16820:25:1;;;13884:4:0;;13859:47;;;;;;16793:18:1;13859:47:0;;;;;;;13930:14;;13927:99;;13982:15;;13965:45;;16820:25:1;;;-1:-1:-1;;;;;13982:15:0;;;;13965:45;;;;;16808:2:1;16793:18;13965:45:0;;;;;;;13927:99;14045:21;:6;14056:9;14045:10;:21::i;:::-;14038:28;13293:781;-1:-1:-1;;;;;;;;13293:781:0:o;1014:189::-;1100:7;1135:12;1128:5;1120:28;;;;-1:-1:-1;;;1120:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1159:9:0;1171:5;1175:1;1171;:5;:::i;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:247::-;445:6;498:2;486:9;477:7;473:23;469:32;466:52;;;514:1;511;504:12;466:52;553:9;540:23;572:31;597:5;572:31;:::i;898:388::-;966:6;974;1027:2;1015:9;1006:7;1002:23;998:32;995:52;;;1043:1;1040;1033:12;995:52;1082:9;1069:23;1101:31;1126:5;1101:31;:::i;:::-;1151:5;-1:-1:-1;1208:2:1;1193:18;;1180:32;1221:33;1180:32;1221:33;:::i;:::-;1273:7;1263:17;;;898:388;;;;;:::o;1291:813::-;1386:6;1394;1402;1410;1418;1471:3;1459:9;1450:7;1446:23;1442:33;1439:53;;;1488:1;1485;1478:12;1439:53;1527:9;1514:23;1546:31;1571:5;1546:31;:::i;:::-;1596:5;-1:-1:-1;1653:2:1;1638:18;;1625:32;1666:33;1625:32;1666:33;:::i;:::-;1718:7;-1:-1:-1;1777:2:1;1762:18;;1749:32;1790:33;1749:32;1790:33;:::i;:::-;1842:7;-1:-1:-1;1901:2:1;1886:18;;1873:32;1914:33;1873:32;1914:33;:::i;:::-;1966:7;-1:-1:-1;2025:3:1;2010:19;;1997:33;2039;1997;2039;:::i;:::-;2091:7;2081:17;;;1291:813;;;;;;;;:::o;2109:456::-;2186:6;2194;2202;2255:2;2243:9;2234:7;2230:23;2226:32;2223:52;;;2271:1;2268;2261:12;2223:52;2310:9;2297:23;2329:31;2354:5;2329:31;:::i;:::-;2379:5;-1:-1:-1;2436:2:1;2421:18;;2408:32;2449:33;2408:32;2449:33;:::i;:::-;2109:456;;2501:7;;-1:-1:-1;;;2555:2:1;2540:18;;;;2527:32;;2109:456::o;2570:908::-;2701:6;2709;2717;2725;2733;2786:2;2774:9;2765:7;2761:23;2757:32;2754:52;;;2802:1;2799;2792:12;2754:52;2841:9;2828:23;2860:31;2885:5;2860:31;:::i;:::-;2910:5;-1:-1:-1;2966:2:1;2951:18;;2938:32;2989:18;3019:14;;;3016:34;;;3046:1;3043;3036:12;3016:34;3085:70;3147:7;3138:6;3127:9;3123:22;3085:70;:::i;:::-;3174:8;;-1:-1:-1;3059:96:1;-1:-1:-1;3262:2:1;3247:18;;3234:32;;-1:-1:-1;3278:16:1;;;3275:36;;;3307:1;3304;3297:12;3275:36;;3346:72;3410:7;3399:8;3388:9;3384:24;3346:72;:::i;:::-;2570:908;;;;-1:-1:-1;2570:908:1;;-1:-1:-1;3437:8:1;;3320:98;2570:908;-1:-1:-1;;;2570:908:1:o;3483:382::-;3548:6;3556;3609:2;3597:9;3588:7;3584:23;3580:32;3577:52;;;3625:1;3622;3615:12;3577:52;3664:9;3651:23;3683:31;3708:5;3683:31;:::i;:::-;3733:5;-1:-1:-1;3790:2:1;3775:18;;3762:32;3803:30;3762:32;3803:30;:::i;3870:315::-;3938:6;3946;3999:2;3987:9;3978:7;3974:23;3970:32;3967:52;;;4015:1;4012;4005:12;3967:52;4054:9;4041:23;4073:31;4098:5;4073:31;:::i;:::-;4123:5;4175:2;4160:18;;;;4147:32;;-1:-1:-1;;;3870:315:1:o;4190:566::-;4282:6;4290;4298;4351:2;4339:9;4330:7;4326:23;4322:32;4319:52;;;4367:1;4364;4357:12;4319:52;4407:9;4394:23;4440:18;4432:6;4429:30;4426:50;;;4472:1;4469;4462:12;4426:50;4511:70;4573:7;4564:6;4553:9;4549:22;4511:70;:::i;:::-;4600:8;;-1:-1:-1;4485:96:1;-1:-1:-1;;4685:2:1;4670:18;;4657:32;4698:28;4657:32;4698:28;:::i;:::-;4745:5;4735:15;;;4190:566;;;;;:::o;4761:241::-;4817:6;4870:2;4858:9;4849:7;4845:23;4841:32;4838:52;;;4886:1;4883;4876:12;4838:52;4925:9;4912:23;4944:28;4966:5;4944:28;:::i;5007:245::-;5074:6;5127:2;5115:9;5106:7;5102:23;5098:32;5095:52;;;5143:1;5140;5133:12;5095:52;5175:9;5169:16;5194:28;5216:5;5194:28;:::i;5257:309::-;5322:6;5330;5383:2;5371:9;5362:7;5358:23;5354:32;5351:52;;;5399:1;5396;5389:12;5351:52;5438:9;5425:23;5457:28;5479:5;5457:28;:::i;5571:180::-;5630:6;5683:2;5671:9;5662:7;5658:23;5654:32;5651:52;;;5699:1;5696;5689:12;5651:52;-1:-1:-1;5722:23:1;;5571:180;-1:-1:-1;5571:180:1:o;5756:184::-;5826:6;5879:2;5867:9;5858:7;5854:23;5850:32;5847:52;;;5895:1;5892;5885:12;5847:52;-1:-1:-1;5918:16:1;;5756:184;-1:-1:-1;5756:184:1:o;5945:377::-;6019:6;6027;6035;6088:2;6076:9;6067:7;6063:23;6059:32;6056:52;;;6104:1;6101;6094:12;6056:52;6140:9;6127:23;6117:33;;6200:2;6189:9;6185:18;6172:32;6213:28;6235:5;6213:28;:::i;6327:248::-;6395:6;6403;6456:2;6444:9;6435:7;6431:23;6427:32;6424:52;;;6472:1;6469;6462:12;6424:52;-1:-1:-1;;6495:23:1;;;6565:2;6550:18;;;6537:32;;-1:-1:-1;6327:248:1:o;6580:377::-;6654:6;6662;6670;6723:2;6711:9;6702:7;6698:23;6694:32;6691:52;;;6739:1;6736;6729:12;6691:52;6775:9;6762:23;6752:33;;6832:2;6821:9;6817:18;6804:32;6794:42;;6886:2;6875:9;6871:18;6858:32;6899:28;6921:5;6899:28;:::i;6962:306::-;7050:6;7058;7066;7119:2;7107:9;7098:7;7094:23;7090:32;7087:52;;;7135:1;7132;7125:12;7087:52;7164:9;7158:16;7148:26;;7214:2;7203:9;7199:18;7193:25;7183:35;;7258:2;7247:9;7243:18;7237:25;7227:35;;6962:306;;;;;:::o;7273:523::-;7377:6;7385;7393;7401;7409;7417;7470:3;7458:9;7449:7;7445:23;7441:33;7438:53;;;7487:1;7484;7477:12;7438:53;-1:-1:-1;;7510:23:1;;;7580:2;7565:18;;7552:32;;-1:-1:-1;7631:2:1;7616:18;;7603:32;;7682:2;7667:18;;7654:32;;-1:-1:-1;7733:3:1;7718:19;;7705:33;;-1:-1:-1;7785:3:1;7770:19;7757:33;;-1:-1:-1;7273:523:1;-1:-1:-1;7273:523:1:o;10109:597::-;10221:4;10250:2;10279;10268:9;10261:21;10311:6;10305:13;10354:6;10349:2;10338:9;10334:18;10327:34;10379:1;10389:140;10403:6;10400:1;10397:13;10389:140;;;10498:14;;;10494:23;;10488:30;10464:17;;;10483:2;10460:26;10453:66;10418:10;;10389:140;;;10547:6;10544:1;10541:13;10538:91;;;10617:1;10612:2;10603:6;10592:9;10588:22;10584:31;10577:42;10538:91;-1:-1:-1;10690:2:1;10669:15;-1:-1:-1;;10665:29:1;10650:45;;;;10697:2;10646:54;;10109:597;-1:-1:-1;;;10109:597:1:o;16856:1026::-;17118:4;17166:3;17155:9;17151:19;17197:6;17186:9;17179:25;17223:2;17261:6;17256:2;17245:9;17241:18;17234:34;17304:3;17299:2;17288:9;17284:18;17277:31;17328:6;17363;17357:13;17394:6;17386;17379:22;17432:3;17421:9;17417:19;17410:26;;17471:2;17463:6;17459:15;17445:29;;17492:1;17502:218;17516:6;17513:1;17510:13;17502:218;;;17581:13;;-1:-1:-1;;;;;17577:62:1;17565:75;;17695:15;;;;17660:12;;;;17538:1;17531:9;17502:218;;;-1:-1:-1;;;;;;;17776:55:1;;;;17771:2;17756:18;;17749:83;-1:-1:-1;;;17863:3:1;17848:19;17841:35;17737:3;16856:1026;-1:-1:-1;;;16856:1026:1:o;18329:128::-;18369:3;18400:1;18396:6;18393:1;18390:13;18387:39;;;18406:18;;:::i;:::-;-1:-1:-1;18442:9:1;;18329:128::o;18462:274::-;18502:1;18528;18518:189;;-1:-1:-1;;;18560:1:1;18553:88;18664:4;18661:1;18654:15;18692:4;18689:1;18682:15;18518:189;-1:-1:-1;18721:9:1;;18462:274::o;18741:168::-;18781:7;18847:1;18843;18839:6;18835:14;18832:1;18829:21;18824:1;18817:9;18810:17;18806:45;18803:71;;;18854:18;;:::i;:::-;-1:-1:-1;18894:9:1;;18741:168::o;18914:125::-;18954:4;18982:1;18979;18976:8;18973:34;;;18987:18;;:::i;:::-;-1:-1:-1;19024:9:1;;18914:125::o;19044:135::-;19083:3;-1:-1:-1;;19104:17:1;;19101:43;;;19124:18;;:::i;:::-;-1:-1:-1;19171:1:1;19160:13;;19044:135::o;19184:184::-;-1:-1:-1;;;19233:1:1;19226:88;19333:4;19330:1;19323:15;19357:4;19354:1;19347:15;19373:184;-1:-1:-1;;;19422:1:1;19415:88;19522:4;19519:1;19512:15;19546:4;19543:1;19536:15;19751:154;-1:-1:-1;;;;;19830:5:1;19826:54;19819:5;19816:65;19806:93;;19895:1;19892;19885:12;19910:118;19996:5;19989:13;19982:21;19975:5;19972:32;19962:60;;20018:1;20015;20008:12

Swarm Source

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