ETH Price: $2,840.29 (+9.38%)
 

Overview

Max Total Supply

1,000,000,000 TAIRYO

Holders

1,155 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 TAIRYO

Value
$0.00
0xe6abf7900ab8157b8065a68be519e75f74bd516d
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Revolutionary tokenomics that include a built in volume smart contract without the need for a node.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TairyoInu

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-29
*/

/**
https://t.me/TairyoInu
https://tairyoinu.com/
https://twitter.com/TairyoInu
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b > a) return(false, 0); return(true, a - b);}}

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
        if(c / a != b) return(false, 0); return(true, c);}}

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a % b);}}

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b <= a, errorMessage); return a - b;}}

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a / b;}}

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a % b;}}}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function circulatingSupply() 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 Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

interface stakeIntegration {
    function stakingWithdraw(address depositor, uint256 _amount) external;
    function stakingDeposit(address depositor, uint256 _amount) external;
}

interface tokenStaking {
    function deposit(uint256 amount) external;
    function withdraw(uint256 amount) external;
}

interface AIVolumizer {
    function setMaxAmount(uint256 max) external;
    function setVolumePercentage(uint256 percent) external;
    function volumeTokenManual() external;
    function volumeTokenTransaction() external;
    function swapGasBalance(uint256 percent) external;
    function swapTokenBalance(uint256 percent) external;
    function setParameters(address _token) external;
    function rescueHubETH(address receiver, uint256 percent) external;
    function rescueHubERC20(address token, address receiver, uint256 percent) external;
    function amountTotalPurchased() external view returns (uint256);
    function amountTotalETH() external view returns (uint256);
    function totalVolume() external view returns (uint256);
    function lastVolumeTokens() external view returns (uint256);
    function lastVolumeTimestamp() external view returns (uint256);
}

interface IFactory{
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

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

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

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

contract TairyoInu is IERC20, tokenStaking, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Tairyo Inu';
    string private constant _symbol = 'TAIRYO';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = ( _totalSupply * 100 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 100 ) / 10000;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping(address => bool) private isFeeExempt;
    IRouter router;
    address public pair;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 100;
    uint256 private developmentFee = 100;
    uint256 private gasFee = 50;
    uint256 private volumeFee = 50;
    uint256 private totalFee = 2500;
    uint256 private sellFee = 5000;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    bool private tradingAllowed = false;
    bool public volumeToken = true;
    bool private volumeTx;
    uint256 public txGas = 500000;
    uint256 private swapVolumeTimes;
    uint256 private swapTimes;
    bool private swapping;
    uint256 private swapVolumeAmount = 1;
    uint256 private swapAmount = 1;
    uint256 private swapThreshold = ( _totalSupply * 500 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    uint256 private minVolumeTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    mapping(address => uint256) public amountStaked;
    uint256 public totalStaked; AIVolumizer volumizer;
    stakeIntegration internal stakingContract;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x205d667e814B5c8A64b88C3438c74251Fb954C34; 
    address internal marketing_receiver = 0xa6383E95CB673Fcb495d0B6F985705337607980D;
    address internal liquidity_receiver = 0x205d667e814B5c8A64b88C3438c74251Fb954C34;
    event Deposit(address indexed account, uint256 indexed amount, uint256 indexed timestamp);
    event Withdraw(address indexed account, uint256 indexed amount, uint256 indexed timestamp);
    event SetStakingAddress(address indexed stakingAddress, uint256 indexed timestamp);
    event TradingEnabled(address indexed account, uint256 indexed timestamp);
    event ExcludeFromFees(address indexed account, bool indexed isExcluded, uint256 indexed timestamp);
    event SetInternalAddresses(address indexed marketing, address indexed liquidity, address indexed development, uint256 timestamp);
    event SetSwapBackSettings(uint256 indexed swapAmount, uint256 indexed swapThreshold, uint256 indexed swapMinAmount, uint256 timestamp);
    event SetParameters(uint256 indexed maxTxAmount, uint256 indexed maxWalletToken, uint256 indexed timestamp);
    event SetStructure(uint256 indexed total, uint256 indexed sell, uint256 transfer, uint256 indexed timestamp);

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        volumizer = AIVolumizer(0xBdF3B6979C676F647D4414Ea94ca765b9456e92B);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[development_receiver] = true;
        isFeeExempt[address(DEAD)] = true;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(volumizer)] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function getOwner() external view override returns (address) { return owner; }
    function totalSupply() public view override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function availableBalance(address wallet) public view returns (uint256) {return _balances[wallet].sub(amountStaked[wallet]);}
    function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"ERC20: below available balance threshold");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkTxLimit(sender, recipient, amount);
        checkMaxWallet(sender, recipient, amount);
        swapbackCounters(sender, recipient, amount);
        swapBack(sender, recipient);
        swapVolume(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function deposit(uint256 amount) override external {
        require(amount <= _balances[msg.sender].sub(amountStaked[msg.sender]), "ERC20: Cannot stake more than available balance");
        stakingContract.stakingDeposit(msg.sender, amount);
        amountStaked[msg.sender] = amountStaked[msg.sender].add(amount);
        totalStaked = totalStaked.add(amount);
        emit Deposit(msg.sender, amount, block.timestamp);
    }

    function withdraw(uint256 amount) override external {
        require(amount <= amountStaked[msg.sender], "ERC20: Cannot unstake more than amount staked");
        stakingContract.stakingWithdraw(msg.sender, amount);
        amountStaked[msg.sender] = amountStaked[msg.sender].sub(amount);
        totalStaked = totalStaked.sub(amount);
        emit Withdraw(msg.sender, amount, block.timestamp);
    }

    function setStakingAddress(address _staking) external onlyOwner {
        stakingContract = stakeIntegration(_staking); isFeeExempt[_staking] = true;
        emit SetStakingAddress(_staking, block.timestamp);
    }

    function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _development, uint256 _gas, uint256 _volume, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; developmentFee = _development; volumeFee = _volume; gasFee = _gas;
        totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator && sellFee <= denominator && transferFee <= denominator, "ERC20: invalid total entry%");
        emit SetStructure(_total, _sell, _trans, block.timestamp);
    }

    function setParameters(uint256 _buy, uint256 _wallet) external onlyOwner {
        uint256 newTx = totalSupply().mul(_buy).div(uint256(10000));
        uint256 newWallet = totalSupply().mul(_wallet).div(uint256(10000)); uint256 limit = totalSupply().mul(5).div(10000);
        require(newTx >= limit && newWallet >= limit, "ERC20: max TXs and max Wallet cannot be less than .5%");
        _maxTxAmount = newTx; _maxWalletToken = newWallet;
        emit SetParameters(newTx, newWallet, block.timestamp);
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "ERC20: Trading is not allowed");}
    }

    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD) && !volumeTx){
            require((_balances[recipient].add(amount)) <= _maxWalletToken, "ERC20: exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient, uint256 amount) internal {
        if(recipient == pair && !isFeeExempt[sender] && amount >= minTokenAmount && !swapping && !volumeTx){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(amountStaked[sender] > uint256(0)){require((amount.add(amountStaked[sender])) <= _balances[sender], "ERC20: exceeds maximum allowed not currently staked.");}
        if(!volumeTx){require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "ERC20: tx limit exceeded");}
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (totalFee).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith, liquidity_receiver); }
        uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmount > uint256(0)){payable(marketing_receiver).transfer(marketingAmount);}
        uint256 gasAmount = unitBalance.mul(2).mul(gasFee);
        if(gasAmount > uint256(0)){payable(address(volumizer)).transfer(gasAmount);}
        uint256 eAmount = address(this).balance;
        if(eAmount > uint256(0)){payable(development_receiver).transfer(eAmount);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount, address receiver) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            address(receiver),
            block.timestamp);
    }

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

    function shouldSwapBack(address sender, address recipient) internal view returns (bool) {
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && !isFeeExempt[sender]
            && recipient == pair && swapTimes >= swapAmount && aboveThreshold && !volumeTx;
    }

    function swapBack(address sender, address recipient) internal {
        if(shouldSwapBack(sender, recipient)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }
    
    function volumizing() external onlyOwner {
        tradingAllowed = true;
        emit TradingEnabled(msg.sender, block.timestamp);
    }

    function setInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true;
        emit SetInternalAddresses(_marketing, _liquidity, _development, block.timestamp);
    }

    function setisExempt(address _address, bool _enabled) external onlyOwner {
        isFeeExempt[_address] = _enabled;
        emit ExcludeFromFees(_address, _enabled, block.timestamp);
    }

    function rescueERC20(address _address, uint256 _amount) external onlyOwner {
        IERC20(_address).transfer(development_receiver, _amount);
    }

    function setSwapbackSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function toggleVolume(bool token) external onlyOwner {
        volumeToken = token;
    }

    function setVolumeSettings(bool enable, uint256 percent, uint256 swaps) external onlyOwner {
        volumeToken = enable; volumizer.setVolumePercentage(percent); swapVolumeAmount = swaps;
    }

    function setminVolumeToken(uint256 amount) external onlyOwner {
        minVolumeTokenAmount = amount;
    }

    function setMaxVolumeAmount(uint256 amount) external onlyOwner {
        uint256 max = totalSupply().mul(amount).div(uint256(10000));
        volumizer.setMaxAmount(max);
    }

    function setVolumeGasPerTx(uint256 gas) external onlyOwner {
        txGas = gas;
    }

    function setVolumizerContract(address _contract) external onlyOwner {
        volumizer = AIVolumizer(_contract);
    }

    function rescueHubERC20(address token, address receiver, uint256 percent) external onlyOwner {
        volumizer.rescueHubERC20(token, receiver, percent);
    }

    function rescueHubETH(address receiver, uint256 percent) external onlyOwner {
        volumizer.rescueHubETH(receiver, percent);
    }

    function transferGasBalance() external onlyOwner {
        volumizer.rescueHubETH(address(this), uint256(100));
    }

    function swapTokenBalance(uint256 percent) external onlyOwner {
        volumizer.swapTokenBalance(percent);
    }

    function swapGasBalance(uint256 percent) external onlyOwner {
        volumizer.swapGasBalance(percent);
    }

    function setVolumePercentage(uint256 percent) external onlyOwner {
        volumizer.setVolumePercentage(percent);
    }

    function swapVolume(address sender, address recipient, uint256 amount) internal {
        if(tradingAllowed && !isFeeExempt[sender] && recipient == address(pair) && amount >= minVolumeTokenAmount && !swapping && !volumeTx){swapVolumeTimes += uint256(1);}
        if(tradingAllowed && volumeToken && balanceOf(address(volumizer)) > uint256(0) && swapVolumeTimes >= swapVolumeAmount && !isFeeExempt[sender] && recipient == address(pair) &&
            !swapping && !volumeTx){performSwapVolume();}
    }

    function performSwapVolume() internal {
        volumeTx = true;
        try volumizer.volumeTokenTransaction{gas: txGas}() {} catch {} swapVolumeTimes = uint256(0);
        volumeTx = false;
    }

    function _Volumizer() external {
        volumeTx = true;
        volumizer.volumeTokenManual();
        volumeTx = false;
    }

    function manualVolumizer() external onlyOwner {
        volumeTx = true;
        volumizer.volumeTokenTransaction();
        volumeTx = false;
    }

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

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair && sellFee > uint256(0)){return sellFee;}
        if(sender == pair && totalFee > uint256(0)){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0 && !volumeTx){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(volumeFee > uint256(0)){_transfer(address(this), address(volumizer), amount.div(denominator).mul(volumeFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function gasBalance() external view returns (uint256) {
        return address(volumizer).balance;
    }

    function volumizerBalance() external view returns (uint256) {
        return balanceOf(address(volumizer));
    }

    function volumizerTotalPurchased() external view returns (uint256) {
        return volumizer.amountTotalPurchased();
    }

    function volumizerTotalETH() external view returns (uint256) {
        return volumizer.amountTotalETH();
    }

    function volumizerTotalVolume() external view returns (uint256) {
        return volumizer.totalVolume();
    }

    function volumizerLastTXAmount() external view returns (uint256) {
        return volumizer.lastVolumeTokens();
    }

    function volumizerLastTXTime() external view returns (uint256) {
        return volumizer.lastVolumeTimestamp();
    }
}

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":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"isExcluded","type":"bool"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ExcludeFromFees","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":"marketing","type":"address"},{"indexed":true,"internalType":"address","name":"liquidity","type":"address"},{"indexed":true,"internalType":"address","name":"development","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetInternalAddresses","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxWalletToken","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"stakingAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetStakingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"total","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetStructure","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"swapAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"swapThreshold","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"swapMinAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetSwapBackSettings","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TradingEnabled","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"_Volumizer","outputs":[],"stateMutability":"nonpayable","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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"amountStaked","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":"wallet","type":"address"}],"name":"availableBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","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":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gasBalance","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":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualVolumizer","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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueHubERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueHubETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxVolumeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staking","type":"address"}],"name":"setStakingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_gas","type":"uint256"},{"internalType":"uint256","name":"_volume","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setVolumeGasPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setVolumePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"},{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"swaps","type":"uint256"}],"name":"setVolumeSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"setVolumizerContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setminVolumeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"swapGasBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"swapTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"token","type":"bool"}],"name":"toggleVolume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferGasBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumeToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizerBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizerLastTXAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizerLastTXTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizerTotalETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizerTotalPurchased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizerTotalVolume","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000556565b6200002290633b9aca006200056e565b60015561271060015460646200003991906200056e565b62000045919062000588565b60025561271060015460646200005c91906200056e565b62000068919062000588565b600355600060098190556064600a819055600b556032600c819055600d556109c4600e55611388600f556010556127106011556012805462ffffff1916620100011790556207a12060135560016017819055601881905554620186a090620000d3906101f46200056e565b620000df919062000588565b601955620186a0600154600a620000f791906200056e565b62000103919062000588565b601a55620186a0600154600a6200011b91906200056e565b62000127919062000588565b601b55602080546001600160a01b031990811673205d667e814b5c8a64b88c3438c74251fb954c3490811790925560218054821673a6383e95cb673fcb495d0b6f985705337607980d1790556022805490911690911790553480156200018c57600080fd5b50600080546001600160a01b031990811633178255601e805490911673bdf3b6979c676f647d4414ea94ca765b9456e92b1790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023b9190620005ab565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000289573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002af9190620005ab565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003239190620005ab565b600780546001600160a01b038581166001600160a01b031992831617909255600880548484169216919091179055306000908152600660209081526040808320805460ff19908116600190811790925560225486168552828520805482168317905560215486168552828520805482168317905583548616855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055338086528386208054831684179055601e54909616855282852080549091168217905554848452600483528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620005d6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004985781600019048211156200047c576200047c62000441565b808516156200048a57918102915b93841c93908002906200045c565b509250929050565b600082620004b15750600162000550565b81620004c05750600062000550565b8160018114620004d95760028114620004e45762000504565b600191505062000550565b60ff841115620004f857620004f862000441565b50506001821b62000550565b5060208310610133831016604e8410600b841016171562000529575081810a62000550565b62000535838362000457565b80600019048211156200054c576200054c62000441565b0290505b92915050565b60006200056760ff841683620004a0565b9392505050565b808202811582820484141762000550576200055062000441565b600082620005a657634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620005be57600080fd5b81516001600160a01b03811681146200056757600080fd5b612f5180620005e66000396000f3fe6080604052600436106103035760003560e01c8063893d20e811610190578063b6b55f25116100dc578063eb8cf20611610095578063f2fde38b1161006f578063f2fde38b14610902578063f4e0d9ac14610922578063faf9445714610942578063fd5a55bf1461096257600080fd5b8063eb8cf206146108ab578063edfb171d146108c0578063ef40a670146108d557600080fd5b8063b6b55f25146107c5578063c0f874f6146107e5578063c4f529fa14610805578063dd62ed3e14610825578063e2d6f94c1461086b578063e94dd17c1461088b57600080fd5b806395d89b4111610149578063a2e2d9f511610123578063a2e2d9f514610750578063a8aa1b3114610765578063a9059cbb14610785578063b0b4a153146107a557600080fd5b806395d89b41146106ec57806398c56d781461071b578063a0821be31461073057600080fd5b8063893d20e8146106255780638b3dc018146106575780638cd4426d146106775780639213c358146106975780639358928b146106b75780639523f45e146106cc57600080fd5b806344a583e11161024f57806378c7dcd611610208578063800c5433116101e2578063800c5433146105c5578063817b1cd2146105da57806386993e4d146105f0578063884870c71461060557600080fd5b806378c7dcd6146105705780637d1db4a5146105905780637f3d5985146105a657600080fd5b806344a583e1146104db578063468d34ed146104f057806348ff2b8b1461050557806370a082311461052557806373fd6c0a1461054557806378109e541461055a57600080fd5b80632e1a7d4d116102bc578063329738a411610296578063329738a41461047057806334eead4814610485578063360b0fcd1461049b5780633e9cc841146104bb57600080fd5b80632e1a7d4d146104055780632f54bf6e14610425578063313ce5671461045457600080fd5b806306fdde031461030f57806307f7487314610354578063095ea7b31461037657806318160ddd146103a65780632250f5e1146103c557806323b872dd146103e557600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5060408051808201909152600a81526954616972796f20496e7560b01b60208201525b60405161034b9190612a98565b60405180910390f35b34801561036057600080fd5b5061037461036f366004612ae6565b610982565b005b34801561038257600080fd5b50610396610391366004612b17565b6109ba565b604051901515815260200161034b565b3480156103b257600080fd5b506001545b60405190815260200161034b565b3480156103d157600080fd5b506103746103e0366004612b51565b6109d1565b3480156103f157600080fd5b50610396610400366004612b6e565b610a17565b34801561041157600080fd5b50610374610420366004612ae6565b610a81565b34801561043157600080fd5b50610396610440366004612baf565b6000546001600160a01b0391821691161490565b34801561046057600080fd5b506040516009815260200161034b565b34801561047c57600080fd5b506103b7610bc7565b34801561049157600080fd5b506103b760135481565b3480156104a757600080fd5b506103746104b6366004612b6e565b610c3a565b3480156104c757600080fd5b506012546103969062010000900460ff1681565b3480156104e757600080fd5b50610374610cd7565b3480156104fc57600080fd5b50610374610d57565b34801561051157600080fd5b50610374610520366004612bcc565b610dda565b34801561053157600080fd5b506103b7610540366004612baf565b610e59565b34801561055157600080fd5b506103b7610e74565b34801561056657600080fd5b506103b760035481565b34801561057c57600080fd5b5061037461058b366004612ae6565b610ebe565b34801561059c57600080fd5b506103b760025481565b3480156105b257600080fd5b50601e546001600160a01b0316316103b7565b3480156105d157600080fd5b50610374610eed565b3480156105e657600080fd5b506103b7601d5481565b3480156105fc57600080fd5b506103b7610f55565b34801561061157600080fd5b50610374610620366004612c05565b610f9f565b34801561063157600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161034b565b34801561066357600080fd5b50610374610672366004612baf565b6110d5565b34801561068357600080fd5b50610374610692366004612b17565b611121565b3480156106a357600080fd5b506103746106b2366004612c27565b6111c7565b3480156106c357600080fd5b506103b7611294565b3480156106d857600080fd5b506103746106e7366004612c72565b6112c0565b3480156106f857600080fd5b5060408051808201909152600681526554414952594f60d01b602082015261033e565b34801561072757600080fd5b506103b7611367565b34801561073c57600080fd5b506103b761074b366004612baf565b61137f565b34801561075c57600080fd5b506103b76113ac565b34801561077157600080fd5b5060085461063f906001600160a01b031681565b34801561079157600080fd5b506103966107a0366004612b17565b6113f6565b3480156107b157600080fd5b506103746107c0366004612ae6565b611403565b3480156107d157600080fd5b506103746107e0366004612ae6565b61148f565b3480156107f157600080fd5b50610374610800366004612b17565b6115ec565b34801561081157600080fd5b50610374610820366004612ae6565b611681565b34801561083157600080fd5b506103b7610840366004612ca7565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561087757600080fd5b50610374610886366004612cd5565b6116dc565b34801561089757600080fd5b506103746108a6366004612d2a565b6117e6565b3480156108b757600080fd5b5061037461184c565b3480156108cc57600080fd5b506103b76118dc565b3480156108e157600080fd5b506103b76108f0366004612baf565b601c6020526000908152604090205481565b34801561090e57600080fd5b5061037461091d366004612baf565b611926565b34801561092e57600080fd5b5061037461093d366004612baf565b6119a4565b34801561094e57600080fd5b5061037461095d366004612ae6565b611a30565b34801561096e57600080fd5b5061037461097d366004612ae6565b611aa1565b6000546001600160a01b031633146109b55760405162461bcd60e51b81526004016109ac90612d56565b60405180910390fd5b601355565b60006109c7338484611afc565b5060015b92915050565b6000546001600160a01b031633146109fb5760405162461bcd60e51b81526004016109ac90612d56565b60128054911515620100000262ff000019909216919091179055565b6000610a24848484611c20565b610a768433610a7185604051806060016040528060288152602001612ef4602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611d51565b611afc565b5060015b9392505050565b336000908152601c6020526040902054811115610af65760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b60648201526084016109ac565b601f5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf2990604401600060405180830381600087803b158015610b4257600080fd5b505af1158015610b56573d6000803e3d6000fd5b5050336000908152601c6020526040902054610b759250905082611d7d565b336000908152601c6020526040902055601d54610b929082611d7d565b601d556040514290829033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56890600090a450565b601e54604080516317e0695f60e21b815290516000926001600160a01b031691635f81a57c9160048083019260209291908290030181865afa158015610c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c359190612d76565b905090565b6000546001600160a01b03163314610c645760405162461bcd60e51b81526004016109ac90612d56565b601e5460405163360b0fcd60e01b81526001600160a01b0385811660048301528481166024830152604482018490529091169063360b0fcd90606401600060405180830381600087803b158015610cba57600080fd5b505af1158015610cce573d6000803e3d6000fd5b50505050505050565b6012805463ff00000019166301000000179055601e546040805163a362630b60e01b815290516001600160a01b039092169163a362630b9160048082019260009290919082900301818387803b158015610d3057600080fd5b505af1158015610d44573d6000803e3d6000fd5b50506012805463ff000000191690555050565b6000546001600160a01b03163314610d815760405162461bcd60e51b81526004016109ac90612d56565b6012805463ff00000019166301000000179055601e5460408051632ce26ec960e11b815290516001600160a01b03909216916359c4dd929160048082019260009290919082900301818387803b158015610d3057600080fd5b6000546001600160a01b03163314610e045760405162461bcd60e51b81526004016109ac90612d56565b6001600160a01b038216600081815260066020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b6001600160a01b031660009081526004602052604090205490565b601e5460408051632062cf9160e01b815290516000926001600160a01b031691632062cf919160048083019260209291908290030181865afa158015610c11573d6000803e3d6000fd5b6000546001600160a01b03163314610ee85760405162461bcd60e51b81526004016109ac90612d56565b601b55565b6000546001600160a01b03163314610f175760405162461bcd60e51b81526004016109ac90612d56565b6012805461ff001916610100179055604051429033907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b601e54604080516306e2b37160e01b815290516000926001600160a01b0316916306e2b3719160048083019260209291908290030181865afa158015610c11573d6000803e3d6000fd5b6000546001600160a01b03163314610fc95760405162461bcd60e51b81526004016109ac90612d56565b6000610fea612710610fe485610fde60015490565b90611d89565b90611d95565b90506000611001612710610fe485610fde60015490565b90506000611019612710610fe46005610fde60015490565b905080831015801561102b5750808210155b6110955760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b60648201526084016109ac565b600283905560038290556040514290839085907f91db8d1965ad76c25e9cdb4624cb29364b3f3939376350bd898c06ab40fe707e90600090a45050505050565b6000546001600160a01b031633146110ff5760405162461bcd60e51b81526004016109ac90612d56565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461114b5760405162461bcd60e51b81526004016109ac90612d56565b60205460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af115801561119e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c29190612d8f565b505050565b6000546001600160a01b031633146111f15760405162461bcd60e51b81526004016109ac90612d56565b602180546001600160a01b03199081166001600160a01b038681169182179093556022805483168685169081179091556020805490931693851693841783556000828152600684526040808220805460ff199081166001908117909255848452928290208054909316179091555142815290927f358f3926f41536f5fa6926b5b6945502e5fdfb85b1876c473d06606ed0fae9ca910160405180910390a4505050565b6000610c356112a36000610e59565b6112ba6112b161dead610e59565b60015490611d7d565b90611d7d565b6000546001600160a01b031633146112ea5760405162461bcd60e51b81526004016109ac90612d56565b6012805462ff000019166201000085151502179055601e5460405163b0b4a15360e01b8152600481018490526001600160a01b039091169063b0b4a15390602401600060405180830381600087803b15801561134557600080fd5b505af1158015611359573d6000803e3d6000fd5b505050601791909155505050565b601e54600090610c35906001600160a01b0316610e59565b6001600160a01b0381166000908152601c602090815260408083205460049092528220546109cb91611d7d565b601e5460408051630415403760e31b815290516000926001600160a01b0316916320aa01b89160048083019260209291908290030181865afa158015610c11573d6000803e3d6000fd5b60006109c7338484611c20565b6000546001600160a01b0316331461142d5760405162461bcd60e51b81526004016109ac90612d56565b601e5460405163b0b4a15360e01b8152600481018390526001600160a01b039091169063b0b4a153906024015b600060405180830381600087803b15801561147457600080fd5b505af1158015611488573d6000803e3d6000fd5b5050505050565b336000908152601c60209081526040808320546004909252909120546114b491611d7d565b81111561151b5760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b60648201526084016109ac565b601f5460405163773a0f0960e01b8152336004820152602481018390526001600160a01b039091169063773a0f0990604401600060405180830381600087803b15801561156757600080fd5b505af115801561157b573d6000803e3d6000fd5b5050336000908152601c602052604090205461159a9250905082611da1565b336000908152601c6020526040902055601d546115b79082611da1565b601d556040514290829033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590600090a450565b6000546001600160a01b031633146116165760405162461bcd60e51b81526004016109ac90612d56565b601e5460405163607c3a7b60e11b81526001600160a01b038481166004830152602482018490529091169063c0f874f6906044015b600060405180830381600087803b15801561166557600080fd5b505af1158015611679573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146116ab5760405162461bcd60e51b81526004016109ac90612d56565b601e5460405163627a94fd60e11b8152600481018390526001600160a01b039091169063c4f529fa9060240161145a565b6000546001600160a01b031633146117065760405162461bcd60e51b81526004016109ac90612d56565b6009889055600a879055600b869055600d849055600c859055600e839055600f829055601081905560115483118015906117445750601154600f5411155b8015611754575060115460105411155b6117a05760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e76616c696420746f74616c20656e74727925000000000060448201526064016109ac565b4282847fdddb43af0ad29e5d9d3cb393fd94e8f11ac2c069da19545bac6ee6baf3ddc989846040516117d491815260200190565b60405180910390a45050505050505050565b6000546001600160a01b031633146118105760405162461bcd60e51b81526004016109ac90612d56565b601883905560015461182b90620186a090610fe49085611d89565b60195560015461184490620186a090610fe49084611d89565b601a55505050565b6000546001600160a01b031633146118765760405162461bcd60e51b81526004016109ac90612d56565b601e5460405163607c3a7b60e11b8152306004820152606460248201526001600160a01b039091169063c0f874f690604401600060405180830381600087803b1580156118c257600080fd5b505af11580156118d6573d6000803e3d6000fd5b50505050565b601e546040805163d85a3bfb60e01b815290516000926001600160a01b03169163d85a3bfb9160048083019260209291908290030181865afa158015610c11573d6000803e3d6000fd5b6000546001600160a01b031633146119505760405162461bcd60e51b81526004016109ac90612d56565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146119ce5760405162461bcd60e51b81526004016109ac90612d56565b601f80546001600160a01b0319166001600160a01b038316908117909155600081815260066020526040808220805460ff19166001179055514292917f23481943b6ef3dff645af874fbb24781bf224a02312f9cb308880e03e0a9ddee91a350565b6000546001600160a01b03163314611a5a5760405162461bcd60e51b81526004016109ac90612d56565b6000611a6f612710610fe484610fde60015490565b601e546040516304fe47f760e41b8152600481018390529192506001600160a01b031690634fe47f709060240161164b565b6000546001600160a01b03163314611acb5760405162461bcd60e51b81526004016109ac90612d56565b601e5460405163fd5a55bf60e01b8152600481018390526001600160a01b039091169063fd5a55bf9060240161145a565b6001600160a01b038316611b5e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ac565b6001600160a01b038216611bbf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ac565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b611c2b838383611dad565b611c358383611edc565b611c40838383611f7e565b611c4b8383836120e0565b611c568383836121f0565b611c60838361227b565b611c6b83838361229e565b6001600160a01b038316600090815260046020526040902054611c8e9082611d7d565b6001600160a01b038416600090815260046020526040812091909155611cb484846123f8565b611cbe5781611cc9565b611cc9848484612456565b6001600160a01b038416600090815260046020526040902054909150611cef9082611da1565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d439085815260200190565b60405180910390a350505050565b60008184841115611d755760405162461bcd60e51b81526004016109ac9190612a98565b505050900390565b6000610a7a8284612dc2565b6000610a7a8284612dd5565b6000610a7a8284612dec565b6000610a7a8284612e0e565b6001600160a01b038316611e115760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109ac565b6001600160a01b038216611e735760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109ac565b611e7c83610e59565b8111156111c25760405162461bcd60e51b815260206004820152602860248201527f45524332303a2062656c6f7720617661696c61626c652062616c616e636520746044820152671a1c995cda1bdb1960c21b60648201526084016109ac565b6001600160a01b03821660009081526006602052604090205460ff16158015611f1e57506001600160a01b03811660009081526006602052604090205460ff16155b15611f7a57601254610100900460ff16611f7a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f77656400000060448201526064016109ac565b5050565b6001600160a01b0383166000908152601c602052604090205415612037576001600160a01b038316600090815260046020908152604080832054601c90925290912054611fcc908390611da1565b11156120375760405162461bcd60e51b815260206004820152603460248201527f45524332303a2065786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b60648201526084016109ac565b6012546301000000900460ff166111c2576002548111158061207157506001600160a01b03831660009081526006602052604090205460ff165b8061209457506001600160a01b03821660009081526006602052604090205460ff165b6111c25760405162461bcd60e51b815260206004820152601860248201527f45524332303a207478206c696d6974206578636565646564000000000000000060448201526064016109ac565b6001600160a01b03831660009081526006602052604090205460ff1615801561212257506001600160a01b03821660009081526006602052604090205460ff16155b801561213c57506008546001600160a01b03838116911614155b801561215357506001600160a01b03821661dead14155b801561216957506012546301000000900460ff16155b156111c2576003546001600160a01b0383166000908152600460205260409020546121949083611da1565b11156111c25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2065786365656473206d6178696d756d2077616c6c657420616d60448201526437bab73a1760d91b60648201526084016109ac565b6008546001600160a01b03838116911614801561222657506001600160a01b03831660009081526006602052604090205460ff16155b80156122345750601a548110155b8015612243575060165460ff16155b801561225957506012546301000000900460ff16155b156111c2576001601560008282546122719190612e0e565b9091555050505050565b6122858282612563565b15611f7a57612295601954612614565b60006015555050565b601254610100900460ff1680156122ce57506001600160a01b03831660009081526006602052604090205460ff16155b80156122e757506008546001600160a01b038381169116145b80156122f55750601b548110155b8015612304575060165460ff16155b801561231a57506012546301000000900460ff16155b15612338576001601460008282546123329190612e0e565b90915550505b601254610100900460ff168015612357575060125462010000900460ff165b80156123785750601e54600090612376906001600160a01b0316610e59565b115b8015612388575060175460145410155b80156123ad57506001600160a01b03831660009081526006602052604090205460ff16155b80156123c657506008546001600160a01b038381169116145b80156123d5575060165460ff16155b80156123eb57506012546301000000900460ff16155b156111c2576111c26127de565b6001600160a01b03821660009081526006602052604081205460ff1615801561243a57506001600160a01b03821660009081526006602052604090205460ff16155b8015610a7a5750506012546301000000900460ff161592915050565b6000806124638585612862565b11801561247a57506012546301000000900460ff16155b1561255c57600061249c61248e8686612862565b601154610fde908690611d95565b306000908152600460205260409020549091506124b99082611da1565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061250a9085815260200190565b60405180910390a3600d541561254a57601e54600d5460115461254a9230926001600160a01b03909116916125459190610fde908990611d95565b611c20565b6125548382611d7d565b915050610a7a565b5092915050565b60008060195461257230610e59565b601654911115915060ff1615801561258c575060125460ff165b801561259f5750601254610100900460ff165b80156125c457506001600160a01b03841660009081526006602052604090205460ff16155b80156125dd57506008546001600160a01b038481169116145b80156125ed575060185460155410155b80156125f65750805b801561260c57506012546301000000900460ff16155b949350505050565b6016805460ff19166001179055600e54600090612632906002611d89565b9050600061264f82610fe460095486611d8990919063ffffffff16565b9050600061265d8483611d7d565b905047612669826128c9565b60006126754783611d7d565b9050600061269861269160095488611d7d90919063ffffffff16565b8390611d95565b905060006126b160095483611d8990919063ffffffff16565b905080156126d2576022546126d290879083906001600160a01b03166129ed565b600a546000906126e790610fde856002611d89565b9050801561272b576021546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612729573d6000803e3d6000fd5b505b600c5460009061274090610fde866002611d89565b9050801561278457601e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612782573d6000803e3d6000fd5b505b4780156127c7576020546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156127c5573d6000803e3d6000fd5b505b50506016805460ff19169055505050505050505050565b6012805463ff00000019166301000000179055601e5460135460408051632ce26ec960e11b815290516001600160a01b03909316926359c4dd92929160048082019260009290919082900301818388803b15801561283b57600080fd5b5087f19350505050801561284d575060015b5060006014556012805463ff00000019169055565b6008546000906001600160a01b03838116911614801561288457506000600f54115b156128925750600f546109cb565b6008546001600160a01b0384811691161480156128b157506000600e54115b156128bf5750600e546109cb565b5060105492915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106128fe576128fe612e21565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297b9190612e37565b8160018151811061298e5761298e612e21565b6001600160a01b0392831660209182029290920101526007546129b49130911684611afc565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac9479061164b908590600090869030904290600401612e54565b600754612a059030906001600160a01b031685611afc565b60075460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015612a73573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116799190612ec5565b600060208083528351808285015260005b81811015612ac557858101830151858201604001528201612aa9565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215612af857600080fd5b5035919050565b6001600160a01b0381168114612b1457600080fd5b50565b60008060408385031215612b2a57600080fd5b8235612b3581612aff565b946020939093013593505050565b8015158114612b1457600080fd5b600060208284031215612b6357600080fd5b8135610a7a81612b43565b600080600060608486031215612b8357600080fd5b8335612b8e81612aff565b92506020840135612b9e81612aff565b929592945050506040919091013590565b600060208284031215612bc157600080fd5b8135610a7a81612aff565b60008060408385031215612bdf57600080fd5b8235612bea81612aff565b91506020830135612bfa81612b43565b809150509250929050565b60008060408385031215612c1857600080fd5b50508035926020909101359150565b600080600060608486031215612c3c57600080fd5b8335612c4781612aff565b92506020840135612c5781612aff565b91506040840135612c6781612aff565b809150509250925092565b600080600060608486031215612c8757600080fd5b8335612c9281612b43565b95602085013595506040909401359392505050565b60008060408385031215612cba57600080fd5b8235612cc581612aff565b91506020830135612bfa81612aff565b600080600080600080600080610100898b031215612cf257600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b600080600060608486031215612d3f57600080fd5b505081359360208301359350604090920135919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600060208284031215612d8857600080fd5b5051919050565b600060208284031215612da157600080fd5b8151610a7a81612b43565b634e487b7160e01b600052601160045260246000fd5b818103818111156109cb576109cb612dac565b80820281158282048414176109cb576109cb612dac565b600082612e0957634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156109cb576109cb612dac565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e4957600080fd5b8151610a7a81612aff565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ea45784516001600160a01b031683529383019391830191600101612e7f565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612eda57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cbe09a83c861691ff21670ae3f45245b25f268f21f733a0267002b602aef529564736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103035760003560e01c8063893d20e811610190578063b6b55f25116100dc578063eb8cf20611610095578063f2fde38b1161006f578063f2fde38b14610902578063f4e0d9ac14610922578063faf9445714610942578063fd5a55bf1461096257600080fd5b8063eb8cf206146108ab578063edfb171d146108c0578063ef40a670146108d557600080fd5b8063b6b55f25146107c5578063c0f874f6146107e5578063c4f529fa14610805578063dd62ed3e14610825578063e2d6f94c1461086b578063e94dd17c1461088b57600080fd5b806395d89b4111610149578063a2e2d9f511610123578063a2e2d9f514610750578063a8aa1b3114610765578063a9059cbb14610785578063b0b4a153146107a557600080fd5b806395d89b41146106ec57806398c56d781461071b578063a0821be31461073057600080fd5b8063893d20e8146106255780638b3dc018146106575780638cd4426d146106775780639213c358146106975780639358928b146106b75780639523f45e146106cc57600080fd5b806344a583e11161024f57806378c7dcd611610208578063800c5433116101e2578063800c5433146105c5578063817b1cd2146105da57806386993e4d146105f0578063884870c71461060557600080fd5b806378c7dcd6146105705780637d1db4a5146105905780637f3d5985146105a657600080fd5b806344a583e1146104db578063468d34ed146104f057806348ff2b8b1461050557806370a082311461052557806373fd6c0a1461054557806378109e541461055a57600080fd5b80632e1a7d4d116102bc578063329738a411610296578063329738a41461047057806334eead4814610485578063360b0fcd1461049b5780633e9cc841146104bb57600080fd5b80632e1a7d4d146104055780632f54bf6e14610425578063313ce5671461045457600080fd5b806306fdde031461030f57806307f7487314610354578063095ea7b31461037657806318160ddd146103a65780632250f5e1146103c557806323b872dd146103e557600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5060408051808201909152600a81526954616972796f20496e7560b01b60208201525b60405161034b9190612a98565b60405180910390f35b34801561036057600080fd5b5061037461036f366004612ae6565b610982565b005b34801561038257600080fd5b50610396610391366004612b17565b6109ba565b604051901515815260200161034b565b3480156103b257600080fd5b506001545b60405190815260200161034b565b3480156103d157600080fd5b506103746103e0366004612b51565b6109d1565b3480156103f157600080fd5b50610396610400366004612b6e565b610a17565b34801561041157600080fd5b50610374610420366004612ae6565b610a81565b34801561043157600080fd5b50610396610440366004612baf565b6000546001600160a01b0391821691161490565b34801561046057600080fd5b506040516009815260200161034b565b34801561047c57600080fd5b506103b7610bc7565b34801561049157600080fd5b506103b760135481565b3480156104a757600080fd5b506103746104b6366004612b6e565b610c3a565b3480156104c757600080fd5b506012546103969062010000900460ff1681565b3480156104e757600080fd5b50610374610cd7565b3480156104fc57600080fd5b50610374610d57565b34801561051157600080fd5b50610374610520366004612bcc565b610dda565b34801561053157600080fd5b506103b7610540366004612baf565b610e59565b34801561055157600080fd5b506103b7610e74565b34801561056657600080fd5b506103b760035481565b34801561057c57600080fd5b5061037461058b366004612ae6565b610ebe565b34801561059c57600080fd5b506103b760025481565b3480156105b257600080fd5b50601e546001600160a01b0316316103b7565b3480156105d157600080fd5b50610374610eed565b3480156105e657600080fd5b506103b7601d5481565b3480156105fc57600080fd5b506103b7610f55565b34801561061157600080fd5b50610374610620366004612c05565b610f9f565b34801561063157600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161034b565b34801561066357600080fd5b50610374610672366004612baf565b6110d5565b34801561068357600080fd5b50610374610692366004612b17565b611121565b3480156106a357600080fd5b506103746106b2366004612c27565b6111c7565b3480156106c357600080fd5b506103b7611294565b3480156106d857600080fd5b506103746106e7366004612c72565b6112c0565b3480156106f857600080fd5b5060408051808201909152600681526554414952594f60d01b602082015261033e565b34801561072757600080fd5b506103b7611367565b34801561073c57600080fd5b506103b761074b366004612baf565b61137f565b34801561075c57600080fd5b506103b76113ac565b34801561077157600080fd5b5060085461063f906001600160a01b031681565b34801561079157600080fd5b506103966107a0366004612b17565b6113f6565b3480156107b157600080fd5b506103746107c0366004612ae6565b611403565b3480156107d157600080fd5b506103746107e0366004612ae6565b61148f565b3480156107f157600080fd5b50610374610800366004612b17565b6115ec565b34801561081157600080fd5b50610374610820366004612ae6565b611681565b34801561083157600080fd5b506103b7610840366004612ca7565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561087757600080fd5b50610374610886366004612cd5565b6116dc565b34801561089757600080fd5b506103746108a6366004612d2a565b6117e6565b3480156108b757600080fd5b5061037461184c565b3480156108cc57600080fd5b506103b76118dc565b3480156108e157600080fd5b506103b76108f0366004612baf565b601c6020526000908152604090205481565b34801561090e57600080fd5b5061037461091d366004612baf565b611926565b34801561092e57600080fd5b5061037461093d366004612baf565b6119a4565b34801561094e57600080fd5b5061037461095d366004612ae6565b611a30565b34801561096e57600080fd5b5061037461097d366004612ae6565b611aa1565b6000546001600160a01b031633146109b55760405162461bcd60e51b81526004016109ac90612d56565b60405180910390fd5b601355565b60006109c7338484611afc565b5060015b92915050565b6000546001600160a01b031633146109fb5760405162461bcd60e51b81526004016109ac90612d56565b60128054911515620100000262ff000019909216919091179055565b6000610a24848484611c20565b610a768433610a7185604051806060016040528060288152602001612ef4602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611d51565b611afc565b5060015b9392505050565b336000908152601c6020526040902054811115610af65760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b60648201526084016109ac565b601f5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf2990604401600060405180830381600087803b158015610b4257600080fd5b505af1158015610b56573d6000803e3d6000fd5b5050336000908152601c6020526040902054610b759250905082611d7d565b336000908152601c6020526040902055601d54610b929082611d7d565b601d556040514290829033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56890600090a450565b601e54604080516317e0695f60e21b815290516000926001600160a01b031691635f81a57c9160048083019260209291908290030181865afa158015610c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c359190612d76565b905090565b6000546001600160a01b03163314610c645760405162461bcd60e51b81526004016109ac90612d56565b601e5460405163360b0fcd60e01b81526001600160a01b0385811660048301528481166024830152604482018490529091169063360b0fcd90606401600060405180830381600087803b158015610cba57600080fd5b505af1158015610cce573d6000803e3d6000fd5b50505050505050565b6012805463ff00000019166301000000179055601e546040805163a362630b60e01b815290516001600160a01b039092169163a362630b9160048082019260009290919082900301818387803b158015610d3057600080fd5b505af1158015610d44573d6000803e3d6000fd5b50506012805463ff000000191690555050565b6000546001600160a01b03163314610d815760405162461bcd60e51b81526004016109ac90612d56565b6012805463ff00000019166301000000179055601e5460408051632ce26ec960e11b815290516001600160a01b03909216916359c4dd929160048082019260009290919082900301818387803b158015610d3057600080fd5b6000546001600160a01b03163314610e045760405162461bcd60e51b81526004016109ac90612d56565b6001600160a01b038216600081815260066020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b6001600160a01b031660009081526004602052604090205490565b601e5460408051632062cf9160e01b815290516000926001600160a01b031691632062cf919160048083019260209291908290030181865afa158015610c11573d6000803e3d6000fd5b6000546001600160a01b03163314610ee85760405162461bcd60e51b81526004016109ac90612d56565b601b55565b6000546001600160a01b03163314610f175760405162461bcd60e51b81526004016109ac90612d56565b6012805461ff001916610100179055604051429033907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b601e54604080516306e2b37160e01b815290516000926001600160a01b0316916306e2b3719160048083019260209291908290030181865afa158015610c11573d6000803e3d6000fd5b6000546001600160a01b03163314610fc95760405162461bcd60e51b81526004016109ac90612d56565b6000610fea612710610fe485610fde60015490565b90611d89565b90611d95565b90506000611001612710610fe485610fde60015490565b90506000611019612710610fe46005610fde60015490565b905080831015801561102b5750808210155b6110955760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b60648201526084016109ac565b600283905560038290556040514290839085907f91db8d1965ad76c25e9cdb4624cb29364b3f3939376350bd898c06ab40fe707e90600090a45050505050565b6000546001600160a01b031633146110ff5760405162461bcd60e51b81526004016109ac90612d56565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461114b5760405162461bcd60e51b81526004016109ac90612d56565b60205460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af115801561119e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c29190612d8f565b505050565b6000546001600160a01b031633146111f15760405162461bcd60e51b81526004016109ac90612d56565b602180546001600160a01b03199081166001600160a01b038681169182179093556022805483168685169081179091556020805490931693851693841783556000828152600684526040808220805460ff199081166001908117909255848452928290208054909316179091555142815290927f358f3926f41536f5fa6926b5b6945502e5fdfb85b1876c473d06606ed0fae9ca910160405180910390a4505050565b6000610c356112a36000610e59565b6112ba6112b161dead610e59565b60015490611d7d565b90611d7d565b6000546001600160a01b031633146112ea5760405162461bcd60e51b81526004016109ac90612d56565b6012805462ff000019166201000085151502179055601e5460405163b0b4a15360e01b8152600481018490526001600160a01b039091169063b0b4a15390602401600060405180830381600087803b15801561134557600080fd5b505af1158015611359573d6000803e3d6000fd5b505050601791909155505050565b601e54600090610c35906001600160a01b0316610e59565b6001600160a01b0381166000908152601c602090815260408083205460049092528220546109cb91611d7d565b601e5460408051630415403760e31b815290516000926001600160a01b0316916320aa01b89160048083019260209291908290030181865afa158015610c11573d6000803e3d6000fd5b60006109c7338484611c20565b6000546001600160a01b0316331461142d5760405162461bcd60e51b81526004016109ac90612d56565b601e5460405163b0b4a15360e01b8152600481018390526001600160a01b039091169063b0b4a153906024015b600060405180830381600087803b15801561147457600080fd5b505af1158015611488573d6000803e3d6000fd5b5050505050565b336000908152601c60209081526040808320546004909252909120546114b491611d7d565b81111561151b5760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b60648201526084016109ac565b601f5460405163773a0f0960e01b8152336004820152602481018390526001600160a01b039091169063773a0f0990604401600060405180830381600087803b15801561156757600080fd5b505af115801561157b573d6000803e3d6000fd5b5050336000908152601c602052604090205461159a9250905082611da1565b336000908152601c6020526040902055601d546115b79082611da1565b601d556040514290829033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590600090a450565b6000546001600160a01b031633146116165760405162461bcd60e51b81526004016109ac90612d56565b601e5460405163607c3a7b60e11b81526001600160a01b038481166004830152602482018490529091169063c0f874f6906044015b600060405180830381600087803b15801561166557600080fd5b505af1158015611679573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146116ab5760405162461bcd60e51b81526004016109ac90612d56565b601e5460405163627a94fd60e11b8152600481018390526001600160a01b039091169063c4f529fa9060240161145a565b6000546001600160a01b031633146117065760405162461bcd60e51b81526004016109ac90612d56565b6009889055600a879055600b869055600d849055600c859055600e839055600f829055601081905560115483118015906117445750601154600f5411155b8015611754575060115460105411155b6117a05760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e76616c696420746f74616c20656e74727925000000000060448201526064016109ac565b4282847fdddb43af0ad29e5d9d3cb393fd94e8f11ac2c069da19545bac6ee6baf3ddc989846040516117d491815260200190565b60405180910390a45050505050505050565b6000546001600160a01b031633146118105760405162461bcd60e51b81526004016109ac90612d56565b601883905560015461182b90620186a090610fe49085611d89565b60195560015461184490620186a090610fe49084611d89565b601a55505050565b6000546001600160a01b031633146118765760405162461bcd60e51b81526004016109ac90612d56565b601e5460405163607c3a7b60e11b8152306004820152606460248201526001600160a01b039091169063c0f874f690604401600060405180830381600087803b1580156118c257600080fd5b505af11580156118d6573d6000803e3d6000fd5b50505050565b601e546040805163d85a3bfb60e01b815290516000926001600160a01b03169163d85a3bfb9160048083019260209291908290030181865afa158015610c11573d6000803e3d6000fd5b6000546001600160a01b031633146119505760405162461bcd60e51b81526004016109ac90612d56565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146119ce5760405162461bcd60e51b81526004016109ac90612d56565b601f80546001600160a01b0319166001600160a01b038316908117909155600081815260066020526040808220805460ff19166001179055514292917f23481943b6ef3dff645af874fbb24781bf224a02312f9cb308880e03e0a9ddee91a350565b6000546001600160a01b03163314611a5a5760405162461bcd60e51b81526004016109ac90612d56565b6000611a6f612710610fe484610fde60015490565b601e546040516304fe47f760e41b8152600481018390529192506001600160a01b031690634fe47f709060240161164b565b6000546001600160a01b03163314611acb5760405162461bcd60e51b81526004016109ac90612d56565b601e5460405163fd5a55bf60e01b8152600481018390526001600160a01b039091169063fd5a55bf9060240161145a565b6001600160a01b038316611b5e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ac565b6001600160a01b038216611bbf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ac565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b611c2b838383611dad565b611c358383611edc565b611c40838383611f7e565b611c4b8383836120e0565b611c568383836121f0565b611c60838361227b565b611c6b83838361229e565b6001600160a01b038316600090815260046020526040902054611c8e9082611d7d565b6001600160a01b038416600090815260046020526040812091909155611cb484846123f8565b611cbe5781611cc9565b611cc9848484612456565b6001600160a01b038416600090815260046020526040902054909150611cef9082611da1565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d439085815260200190565b60405180910390a350505050565b60008184841115611d755760405162461bcd60e51b81526004016109ac9190612a98565b505050900390565b6000610a7a8284612dc2565b6000610a7a8284612dd5565b6000610a7a8284612dec565b6000610a7a8284612e0e565b6001600160a01b038316611e115760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109ac565b6001600160a01b038216611e735760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109ac565b611e7c83610e59565b8111156111c25760405162461bcd60e51b815260206004820152602860248201527f45524332303a2062656c6f7720617661696c61626c652062616c616e636520746044820152671a1c995cda1bdb1960c21b60648201526084016109ac565b6001600160a01b03821660009081526006602052604090205460ff16158015611f1e57506001600160a01b03811660009081526006602052604090205460ff16155b15611f7a57601254610100900460ff16611f7a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f77656400000060448201526064016109ac565b5050565b6001600160a01b0383166000908152601c602052604090205415612037576001600160a01b038316600090815260046020908152604080832054601c90925290912054611fcc908390611da1565b11156120375760405162461bcd60e51b815260206004820152603460248201527f45524332303a2065786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b60648201526084016109ac565b6012546301000000900460ff166111c2576002548111158061207157506001600160a01b03831660009081526006602052604090205460ff165b8061209457506001600160a01b03821660009081526006602052604090205460ff165b6111c25760405162461bcd60e51b815260206004820152601860248201527f45524332303a207478206c696d6974206578636565646564000000000000000060448201526064016109ac565b6001600160a01b03831660009081526006602052604090205460ff1615801561212257506001600160a01b03821660009081526006602052604090205460ff16155b801561213c57506008546001600160a01b03838116911614155b801561215357506001600160a01b03821661dead14155b801561216957506012546301000000900460ff16155b156111c2576003546001600160a01b0383166000908152600460205260409020546121949083611da1565b11156111c25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2065786365656473206d6178696d756d2077616c6c657420616d60448201526437bab73a1760d91b60648201526084016109ac565b6008546001600160a01b03838116911614801561222657506001600160a01b03831660009081526006602052604090205460ff16155b80156122345750601a548110155b8015612243575060165460ff16155b801561225957506012546301000000900460ff16155b156111c2576001601560008282546122719190612e0e565b9091555050505050565b6122858282612563565b15611f7a57612295601954612614565b60006015555050565b601254610100900460ff1680156122ce57506001600160a01b03831660009081526006602052604090205460ff16155b80156122e757506008546001600160a01b038381169116145b80156122f55750601b548110155b8015612304575060165460ff16155b801561231a57506012546301000000900460ff16155b15612338576001601460008282546123329190612e0e565b90915550505b601254610100900460ff168015612357575060125462010000900460ff165b80156123785750601e54600090612376906001600160a01b0316610e59565b115b8015612388575060175460145410155b80156123ad57506001600160a01b03831660009081526006602052604090205460ff16155b80156123c657506008546001600160a01b038381169116145b80156123d5575060165460ff16155b80156123eb57506012546301000000900460ff16155b156111c2576111c26127de565b6001600160a01b03821660009081526006602052604081205460ff1615801561243a57506001600160a01b03821660009081526006602052604090205460ff16155b8015610a7a5750506012546301000000900460ff161592915050565b6000806124638585612862565b11801561247a57506012546301000000900460ff16155b1561255c57600061249c61248e8686612862565b601154610fde908690611d95565b306000908152600460205260409020549091506124b99082611da1565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061250a9085815260200190565b60405180910390a3600d541561254a57601e54600d5460115461254a9230926001600160a01b03909116916125459190610fde908990611d95565b611c20565b6125548382611d7d565b915050610a7a565b5092915050565b60008060195461257230610e59565b601654911115915060ff1615801561258c575060125460ff165b801561259f5750601254610100900460ff165b80156125c457506001600160a01b03841660009081526006602052604090205460ff16155b80156125dd57506008546001600160a01b038481169116145b80156125ed575060185460155410155b80156125f65750805b801561260c57506012546301000000900460ff16155b949350505050565b6016805460ff19166001179055600e54600090612632906002611d89565b9050600061264f82610fe460095486611d8990919063ffffffff16565b9050600061265d8483611d7d565b905047612669826128c9565b60006126754783611d7d565b9050600061269861269160095488611d7d90919063ffffffff16565b8390611d95565b905060006126b160095483611d8990919063ffffffff16565b905080156126d2576022546126d290879083906001600160a01b03166129ed565b600a546000906126e790610fde856002611d89565b9050801561272b576021546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612729573d6000803e3d6000fd5b505b600c5460009061274090610fde866002611d89565b9050801561278457601e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612782573d6000803e3d6000fd5b505b4780156127c7576020546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156127c5573d6000803e3d6000fd5b505b50506016805460ff19169055505050505050505050565b6012805463ff00000019166301000000179055601e5460135460408051632ce26ec960e11b815290516001600160a01b03909316926359c4dd92929160048082019260009290919082900301818388803b15801561283b57600080fd5b5087f19350505050801561284d575060015b5060006014556012805463ff00000019169055565b6008546000906001600160a01b03838116911614801561288457506000600f54115b156128925750600f546109cb565b6008546001600160a01b0384811691161480156128b157506000600e54115b156128bf5750600e546109cb565b5060105492915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106128fe576128fe612e21565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297b9190612e37565b8160018151811061298e5761298e612e21565b6001600160a01b0392831660209182029290920101526007546129b49130911684611afc565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac9479061164b908590600090869030904290600401612e54565b600754612a059030906001600160a01b031685611afc565b60075460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015612a73573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116799190612ec5565b600060208083528351808285015260005b81811015612ac557858101830151858201604001528201612aa9565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215612af857600080fd5b5035919050565b6001600160a01b0381168114612b1457600080fd5b50565b60008060408385031215612b2a57600080fd5b8235612b3581612aff565b946020939093013593505050565b8015158114612b1457600080fd5b600060208284031215612b6357600080fd5b8135610a7a81612b43565b600080600060608486031215612b8357600080fd5b8335612b8e81612aff565b92506020840135612b9e81612aff565b929592945050506040919091013590565b600060208284031215612bc157600080fd5b8135610a7a81612aff565b60008060408385031215612bdf57600080fd5b8235612bea81612aff565b91506020830135612bfa81612b43565b809150509250929050565b60008060408385031215612c1857600080fd5b50508035926020909101359150565b600080600060608486031215612c3c57600080fd5b8335612c4781612aff565b92506020840135612c5781612aff565b91506040840135612c6781612aff565b809150509250925092565b600080600060608486031215612c8757600080fd5b8335612c9281612b43565b95602085013595506040909401359392505050565b60008060408385031215612cba57600080fd5b8235612cc581612aff565b91506020830135612bfa81612aff565b600080600080600080600080610100898b031215612cf257600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b600080600060608486031215612d3f57600080fd5b505081359360208301359350604090920135919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600060208284031215612d8857600080fd5b5051919050565b600060208284031215612da157600080fd5b8151610a7a81612b43565b634e487b7160e01b600052601160045260246000fd5b818103818111156109cb576109cb612dac565b80820281158282048414176109cb576109cb612dac565b600082612e0957634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156109cb576109cb612dac565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e4957600080fd5b8151610a7a81612aff565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ea45784516001600160a01b031683529383019391830191600101612e7f565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612eda57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cbe09a83c861691ff21670ae3f45245b25f268f21f733a0267002b602aef529564736f6c63430008130033

Deployed Bytecode Sourcemap

5653:18639:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9604:67;;;;;;;;;;-1:-1:-1;9664:5:0;;;;;;;;;;;;-1:-1:-1;;;9664:5:0;;;;9604:67;;;;;;;:::i;:::-;;;;;;;;19674:89;;;;;;;;;;-1:-1:-1;19674:89:0;;;;;:::i;:::-;;:::i;:::-;;10388:133;;;;;;;;;;-1:-1:-1;10388:133:0;;;;;:::i;:::-;;:::i;:::-;;;1373:14:1;;1366:22;1348:41;;1336:2;1321:18;10388:133:0;1208:187:1;9911:84:0;;;;;;;;;;-1:-1:-1;9981:12:0;;9911:84;;;1546:25:1;;;1534:2;1519:18;9911:84:0;1400:177:1;19066:91:0;;;;;;;;;;-1:-1:-1;19066:91:0;;;;;:::i;:::-;;:::i;22770:309::-;;;;;;;;;;-1:-1:-1;22770:309:0;;;;;:::i;:::-;;:::i;12340:408::-;;;;;;;;;;-1:-1:-1;12340:408:0;;;;;:::i;:::-;;:::i;3147:87::-;;;;;;;;;;-1:-1:-1;3147:87:0;;;;;:::i;:::-;3202:4;3227:5;-1:-1:-1;;;;;3216:16:0;;;3227:5;;3216:16;;3147:87;9754:67;;;;;;;;;;-1:-1:-1;9754:67:0;;5880:1;2806:36:1;;2794:2;2779:18;9754:67:0;2664:184:1;23921:113:0;;;;;;;;;;;;;:::i;6806:29::-;;;;;;;;;;;;;;;;19900:162;;;;;;;;;;-1:-1:-1;19900:162:0;;;;;:::i;:::-;;:::i;6741:30::-;;;;;;;;;;-1:-1:-1;6741:30:0;;;;;;;;;;;21437:132;;;;;;;;;;;;;:::i;21577:152::-;;;;;;;;;;;;;:::i;18395:192::-;;;;;;;;;;-1:-1:-1;18395:192:0;;;;;:::i;:::-;;:::i;10001:103::-;;;;;;;;;;-1:-1:-1;10001:103:0;;;;;:::i;:::-;;:::i;23667:125::-;;;;;;;;;;;;;:::i;6023:63::-;;;;;;;;;;;;;;;;19369:110;;;;;;;;;;-1:-1:-1;19369:110:0;;;;;:::i;:::-;;:::i;5956:60::-;;;;;;;;;;;;;;;;23430:106;;;;;;;;;;-1:-1:-1;23510:9:0;;-1:-1:-1;;;;;23510:9:0;23502:26;23430:106;;17844:140;;;;;;;;;;;;;:::i;7356:26::-;;;;;;;;;;;;;;;;23800:113;;;;;;;;;;;;;:::i;13573:514::-;;;;;;;;;;-1:-1:-1;13573:514:0;;;;;:::i;:::-;;:::i;9827:78::-;;;;;;;;;;-1:-1:-1;9879:7:0;9897:5;-1:-1:-1;;;;;9897:5:0;9827:78;;;-1:-1:-1;;;;;3657:32:1;;;3639:51;;3627:2;3612:18;9827:78:0;3493:203:1;19771:121:0;;;;;;;;;;-1:-1:-1;19771:121:0;;;;;:::i;:::-;;:::i;18595:150::-;;;;;;;;;;-1:-1:-1;18595:150:0;;;;;:::i;:::-;;:::i;17992:395::-;;;;;;;;;;-1:-1:-1;17992:395:0;;;;;:::i;:::-;;:::i;10658:138::-;;;;;;;;;;;;;:::i;19165:196::-;;;;;;;;;;-1:-1:-1;19165:196:0;;;;;:::i;:::-;;:::i;9677:71::-;;;;;;;;;;-1:-1:-1;9739:7:0;;;;;;;;;;;;-1:-1:-1;;;9739:7:0;;;;9677:71;;23544:115;;;;;;;;;;;;;:::i;10527:125::-;;;;;;;;;;-1:-1:-1;10527:125:0;;;;;:::i;:::-;;:::i;24169:120::-;;;;;;;;;;;;;:::i;6286:19::-;;;;;;;;;;-1:-1:-1;6286:19:0;;;;-1:-1:-1;;;;;6286:19:0;;;10110:139;;;;;;;;;;-1:-1:-1;10110:139:0;;;;;:::i;:::-;;:::i;20585:122::-;;;;;;;;;;-1:-1:-1;20585:122:0;;;;;:::i;:::-;;:::i;11898:434::-;;;;;;;;;;-1:-1:-1;11898:434:0;;;;;:::i;:::-;;:::i;20070:136::-;;;;;;;;;;-1:-1:-1;20070:136:0;;;;;:::i;:::-;;:::i;20465:112::-;;;;;;;;;;-1:-1:-1;20465:112:0;;;;;:::i;:::-;;:::i;10255:127::-;;;;;;;;;;-1:-1:-1;10255:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10353:18:0;;;10336:7;10353:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10255:127;12981:584;;;;;;;;;;-1:-1:-1;12981:584:0;;;;;:::i;:::-;;:::i;18753:305::-;;;;;;;;;;-1:-1:-1;18753:305:0;;;;;:::i;:::-;;:::i;20214:119::-;;;;;;;;;;;;;:::i;24042:::-;;;;;;;;;;;;;:::i;7302:47::-;;;;;;;;;;-1:-1:-1;7302:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;3240:111;;;;;;;;;;-1:-1:-1;3240:111:0;;;;;:::i;:::-;;:::i;12756:217::-;;;;;;;;;;-1:-1:-1;12756:217:0;;;;;:::i;:::-;;:::i;19487:179::-;;;;;;;;;;-1:-1:-1;19487:179:0;;;;;:::i;:::-;;:::i;20341:116::-;;;;;;;;;;-1:-1:-1;20341:116:0;;;;;:::i;:::-;;:::i;19674:89::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;;;;;;;;;19744:5:::1;:11:::0;19674:89::o;10388:133::-;10463:4;10470:37;10479:10;10491:7;10500:6;10470:8;:37::i;:::-;-1:-1:-1;10515:4:0;10388:133;;;;;:::o;19066:91::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;19130:11:::1;:19:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;19130:19:0;;::::1;::::0;;;::::1;::::0;;19066:91::o;22770:309::-;22868:4;22885:36;22895:6;22903:9;22914:6;22885:9;:36::i;:::-;22932:117;22941:6;22949:10;22961:87;22997:6;22961:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22961:19:0;;;;;;:11;:19;;;;;;;;22981:10;22961:31;;;;;;;;;:87;:35;:87::i;:::-;22932:8;:117::i;:::-;-1:-1:-1;23067:4:0;22770:309;;;;;;:::o;12340:408::-;12434:10;12421:24;;;;:12;:24;;;;;;12411:34;;;12403:92;;;;-1:-1:-1;;;12403:92:0;;6793:2:1;12403:92:0;;;6775:21:1;6832:2;6812:18;;;6805:30;6871:34;6851:18;;;6844:62;-1:-1:-1;;;6922:18:1;;;6915:43;6975:19;;12403:92:0;6591:409:1;12403:92:0;12506:15;;:51;;-1:-1:-1;;;12506:51:0;;12538:10;12506:51;;;7179::1;7246:18;;;7239:34;;;-1:-1:-1;;;;;12506:15:0;;;;:31;;7152:18:1;;12506:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12608:10:0;12595:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;12595:24:0;-1:-1:-1;12624:6:0;12595:28;:36::i;:::-;12581:10;12568:24;;;;:12;:24;;;;;:63;12656:11;;:23;;12672:6;12656:15;:23::i;:::-;12642:11;:37;12695:45;;12724:15;;12716:6;;12704:10;;12695:45;;;;;12340:408;:::o;23921:113::-;24003:9;;:23;;;-1:-1:-1;;;24003:23:0;;;;23976:7;;-1:-1:-1;;;;;24003:9:0;;:21;;:23;;;;;;;;;;;;;;:9;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23996:30;;23921:113;:::o;19900:162::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;20004:9:::1;::::0;:50:::1;::::0;-1:-1:-1;;;20004:50:0;;-1:-1:-1;;;;;7731:15:1;;;20004:50:0::1;::::0;::::1;7713:34:1::0;7783:15;;;7763:18;;;7756:43;7815:18;;;7808:34;;;20004:9:0;;::::1;::::0;:24:::1;::::0;7648:18:1;;20004:50:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19900:162:::0;;;:::o;21437:132::-;21479:8;:15;;-1:-1:-1;;21479:15:0;;;;;21505:9;;:29;;;-1:-1:-1;;;21505:29:0;;;;-1:-1:-1;;;;;21505:9:0;;;;:27;;:29;;;;;21479:15;;21505:29;;;;;;;;21479:15;21505:9;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21545:8:0;:16;;-1:-1:-1;;21545:16:0;;;-1:-1:-1;;21437:132:0:o;21577:152::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;21634:8:::1;:15:::0;;-1:-1:-1;;21634:15:0::1;::::0;::::1;::::0;;21660:9:::1;::::0;:34:::1;::::0;;-1:-1:-1;;;21660:34:0;;;;-1:-1:-1;;;;;21660:9:0;;::::1;::::0;:32:::1;::::0;:34:::1;::::0;;::::1;::::0;21634:15;;21660:34;;;;;;;;21634:15;21660:9;:34;::::1;;::::0;::::1;;;;::::0;::::1;18395:192:::0;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18479:21:0;::::1;;::::0;;;:11:::1;:21;::::0;;;;;:32;;-1:-1:-1;;18479:32:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18527:52;;18563:15:::1;::::0;18479:32;;18527:52:::1;::::0;::::1;18395:192:::0;;:::o;10001:103::-;-1:-1:-1;;;;;10084:18:0;10067:7;10084:18;;;:9;:18;;;;;;;10001:103::o;23667:125::-;23752:9;;:32;;;-1:-1:-1;;;23752:32:0;;;;23725:7;;-1:-1:-1;;;;;23752:9:0;;:30;;:32;;;;;;;;;;;;;;:9;:32;;;;;;;;;;;;;;19369:110;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;19442:20:::1;:29:::0;19369:110::o;17844:140::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;17896:14:::1;:21:::0;;-1:-1:-1;;17896:21:0::1;;;::::0;;17933:43:::1;::::0;17960:15:::1;::::0;17948:10:::1;::::0;17933:43:::1;::::0;17896:21;;17933:43:::1;17844:140::o:0;23800:113::-;23879:9;;:26;;;-1:-1:-1;;;23879:26:0;;;;23852:7;;-1:-1:-1;;;;;23879:9:0;;:24;;:26;;;;;;;;;;;;;;:9;:26;;;;;;;;;;;;;;13573:514;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;13657:13:::1;13673:43;13709:5;13673:23;13691:4;13673:13;9981:12:::0;;;9911:84;13673:13:::1;:17:::0;::::1;:23::i;:::-;:27:::0;::::1;:43::i;:::-;13657:59;;13727:17;13747:46;13786:5;13747:26;13765:7;13747:13;9981:12:::0;;;9911:84;13747:46:::1;13727:66;;13795:13;13811:31;13836:5;13811:20;13829:1;13811:13;9981:12:::0;;;9911:84;13811:31:::1;13795:47;;13870:5;13861;:14;;:36;;;;;13892:5;13879:9;:18;;13861:36;13853:102;;;::::0;-1:-1:-1;;;13853:102:0;;8055:2:1;13853:102:0::1;::::0;::::1;8037:21:1::0;8094:2;8074:18;;;8067:30;8133:34;8113:18;;;8106:62;-1:-1:-1;;;8184:18:1;;;8177:51;8245:19;;13853:102:0::1;7853:417:1::0;13853:102:0::1;13966:12;:20:::0;;;13988:15:::1;:27:::0;;;14031:48:::1;::::0;14063:15:::1;::::0;14006:9;;13981:5;;14031:48:::1;::::0;-1:-1:-1;;14031:48:0::1;13646:441;;;13573:514:::0;;:::o;19771:121::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;19850:9:::1;:34:::0;;-1:-1:-1;;;;;;19850:34:0::1;-1:-1:-1::0;;;;;19850:34:0;;;::::1;::::0;;;::::1;::::0;;19771:121::o;18595:150::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;18707:20:::1;::::0;18681:56:::1;::::0;-1:-1:-1;;;18681:56:0;;-1:-1:-1;;;;;18707:20:0;;::::1;18681:56;::::0;::::1;7179:51:1::0;7246:18;;;7239:34;;;18681:25:0;;::::1;::::0;::::1;::::0;7152:18:1;;18681:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18595:150:::0;;:::o;17992:395::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;18114:18:::1;:31:::0;;-1:-1:-1;;;;;;18114:31:0;;::::1;-1:-1:-1::0;;;;;18114:31:0;;::::1;::::0;;::::1;::::0;;;18147:18:::1;:31:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;18180:20:::1;:35:::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;18226:23:0;;;:11:::1;:23:::0;;;;;;:30;;-1:-1:-1;;18226:30:0;;::::1;-1:-1:-1::0;18226:30:0;;::::1;::::0;;;18258:23;;;;;;;:30;;;;::::1;;::::0;;;18304:75;18363:15:::1;1546:25:1::0;;18147:31:0;;18304:75:::1;::::0;1519:18:1;18304:75:0::1;;;;;;;17992:395:::0;;;:::o;10658:138::-;10717:7;10734:60;10772:21;10790:1;10772:9;:21::i;:::-;10734:33;10751:15;7493:42;10751:9;:15::i;:::-;10734:12;;;:16;:33::i;:::-;:37;;:60::i;19165:196::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;19267:11:::1;:20:::0;;-1:-1:-1;;19267:20:0::1;::::0;;::::1;;;;::::0;;19289:9:::1;::::0;:38:::1;::::0;-1:-1:-1;;;19289:38:0;;::::1;::::0;::::1;1546:25:1::0;;;-1:-1:-1;;;;;19289:9:0;;::::1;::::0;:29:::1;::::0;1519:18:1;;19289:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;19329:16:0::1;:24:::0;;;;-1:-1:-1;;;19165:196:0:o;23544:115::-;23640:9;;23595:7;;23622:29;;-1:-1:-1;;;;;23640:9:0;23622;:29::i;10527:125::-;-1:-1:-1;;;;;10629:20:0;;10590:7;10629:20;;;:12;:20;;;;;;;;;10607:9;:17;;;;;;:43;;:21;:43::i;24169:120::-;24250:9;;:31;;;-1:-1:-1;;;24250:31:0;;;;24223:7;;-1:-1:-1;;;;;24250:9:0;;:29;;:31;;;;;;;;;;;;;;:9;:31;;;;;;;;;;;;;;10110:139;10188:4;10195:40;10205:10;10217:9;10228:6;10195:9;:40::i;20585:122::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;20661:9:::1;::::0;:38:::1;::::0;-1:-1:-1;;;20661:38:0;;::::1;::::0;::::1;1546:25:1::0;;;-1:-1:-1;;;;;20661:9:0;;::::1;::::0;:29:::1;::::0;1519:18:1;;20661:38:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20585:122:::0;:::o;11898:434::-;12017:10;12004:24;;;;:12;:24;;;;;;;;;11978:9;:21;;;;;;;:51;;:25;:51::i;:::-;11968:6;:61;;11960:121;;;;-1:-1:-1;;;11960:121:0;;8727:2:1;11960:121:0;;;8709:21:1;8766:2;8746:18;;;8739:30;8805:34;8785:18;;;8778:62;-1:-1:-1;;;8856:18:1;;;8849:45;8911:19;;11960:121:0;8525:411:1;11960:121:0;12092:15;;:50;;-1:-1:-1;;;12092:50:0;;12123:10;12092:50;;;7179:51:1;7246:18;;;7239:34;;;-1:-1:-1;;;;;12092:15:0;;;;:30;;7152:18:1;;12092:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12193:10:0;12180:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;12180:24:0;-1:-1:-1;12209:6:0;12180:28;:36::i;:::-;12166:10;12153:24;;;;:12;:24;;;;;:63;12241:11;;:23;;12257:6;12241:15;:23::i;:::-;12227:11;:37;12280:44;;12308:15;;12300:6;;12288:10;;12280:44;;;;;11898:434;:::o;20070:136::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;20157:9:::1;::::0;:41:::1;::::0;-1:-1:-1;;;20157:41:0;;-1:-1:-1;;;;;7197:32:1;;;20157:41:0::1;::::0;::::1;7179:51:1::0;7246:18;;;7239:34;;;20157:9:0;;::::1;::::0;:22:::1;::::0;7152:18:1;;20157:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20070:136:::0;;:::o;20465:112::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;20536:9:::1;::::0;:33:::1;::::0;-1:-1:-1;;;20536:33:0;;::::1;::::0;::::1;1546:25:1::0;;;-1:-1:-1;;;;;20536:9:0;;::::1;::::0;:24:::1;::::0;1519:18:1;;20536:33:0::1;1400:177:1::0;12981:584:0;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;13173:12:::1;:25:::0;;;13200:12:::1;:25:::0;;;13227:14:::1;:29:::0;;;13258:9:::1;:19:::0;;;13279:6:::1;:13:::0;;;13303:8:::1;:17:::0;;;13322:7:::1;:15:::0;;;13339:11:::1;:20:::0;;;13390:11:::1;::::0;13378:23;::::1;::::0;::::1;::::0;:49:::1;;;13416:11;;13405:7;;:22;;13378:49;:79;;;;;13446:11;;13431;;:26;;13378:79;13370:119;;;::::0;-1:-1:-1;;;13370:119:0;;9143:2:1;13370:119:0::1;::::0;::::1;9125:21:1::0;9182:2;9162:18;;;9155:30;9221:29;9201:18;;;9194:57;9268:18;;13370:119:0::1;8941:351:1::0;13370:119:0::1;13541:15;13526:5;13518:6;13505:52;13533:6;13505:52;;;;1546:25:1::0;;1534:2;1519:18;;1400:177;13505:52:0::1;;;;;;;;12981:584:::0;;;;;;;;:::o;18753:305::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;18882:10:::1;:24:::0;;;18924:12:::1;::::0;:53:::1;::::0;18969:6:::1;::::0;18924:32:::1;::::0;18941:14;18924:16:::1;:32::i;:53::-;18908:13;:69:::0;18996:12:::1;::::0;:54:::1;::::0;19042:6:::1;::::0;18996:33:::1;::::0;19013:15;18996:16:::1;:33::i;:54::-;18979:14;:71:::0;-1:-1:-1;;;18753:305:0:o;20214:119::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;20274:9:::1;::::0;:51:::1;::::0;-1:-1:-1;;;20274:51:0;;20305:4:::1;20274:51;::::0;::::1;7179::1::0;20320:3:0::1;7246:18:1::0;;;7239:34;-1:-1:-1;;;;;20274:9:0;;::::1;::::0;:22:::1;::::0;7152:18:1;;20274:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20214:119::o:0;24042:::-;24125:9;;:28;;;-1:-1:-1;;;24125:28:0;;;;24098:7;;-1:-1:-1;;;;;24125:9:0;;:26;;:28;;;;;;;;;;;;;;:9;:28;;;;;;;;;;;;;;3240:111;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;3306:5:::1;:11:::0;;-1:-1:-1;;;;;;3306:11:0::1;-1:-1:-1::0;;;;;3306:11:0;::::1;::::0;;::::1;::::0;;;3324:25:::1;::::0;3639:51:1;;;3324:25:0::1;::::0;3627:2:1;3612:18;3324:25:0::1;;;;;;;3240:111:::0;:::o;12756:217::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;12831:15:::1;:44:::0;;-1:-1:-1;;;;;;12831:44:0::1;-1:-1:-1::0;;;;;12831:44:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12877:21:0;;;:11:::1;:21;::::0;;;;;:28;;-1:-1:-1;;12877:28:0::1;-1:-1:-1::0;12877:28:0::1;::::0;;12921:44;12949:15:::1;::::0;12831:44;12921::::1;::::0;::::1;12756:217:::0;:::o;19487:179::-;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;19561:11:::1;19575:45;19613:5;19575:25;19593:6;19575:13;9981:12:::0;;;9911:84;19575:45:::1;19631:9;::::0;:27:::1;::::0;-1:-1:-1;;;19631:27:0;;::::1;::::0;::::1;1546:25:1::0;;;19561:59:0;;-1:-1:-1;;;;;;19631:9:0::1;::::0;:22:::1;::::0;1519:18:1;;19631:27:0::1;1400:177:1::0;20341:116:0;3202:4;3227:5;-1:-1:-1;;;;;3227:5:0;3114:10;3216:16;3098:38;;;;-1:-1:-1;;;3098:38:0;;;;;;;:::i;:::-;20414:9:::1;::::0;:35:::1;::::0;-1:-1:-1;;;20414:35:0;;::::1;::::0;::::1;1546:25:1::0;;;-1:-1:-1;;;;;20414:9:0;;::::1;::::0;:26:::1;::::0;1519:18:1;;20414:35:0::1;1400:177:1::0;23087:335:0;-1:-1:-1;;;;;23180:19:0;;23172:68;;;;-1:-1:-1;;;23172:68:0;;9715:2:1;23172:68:0;;;9697:21:1;9754:2;9734:18;;;9727:30;9793:34;9773:18;;;9766:62;-1:-1:-1;;;9844:18:1;;;9837:34;9888:19;;23172:68:0;9513:400:1;23172:68:0;-1:-1:-1;;;;;23259:21:0;;23251:68;;;;-1:-1:-1;;;23251:68:0;;10120:2:1;23251:68:0;;;10102:21:1;10159:2;10139:18;;;10132:30;10198:34;10178:18;;;10171:62;-1:-1:-1;;;10249:18:1;;;10242:32;10291:19;;23251:68:0;9918:398:1;23251:68:0;-1:-1:-1;;;;;23330:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23382:32;;1546:25:1;;;23382:32:0;;1519:18:1;23382:32:0;;;;;;;23087:335;;;:::o;11158:732::-;11247:37;11258:6;11266:9;11277:6;11247:10;:37::i;:::-;11295:38;11315:6;11323:9;11295:19;:38::i;:::-;11344:39;11357:6;11365:9;11376:6;11344:12;:39::i;:::-;11394:41;11409:6;11417:9;11428:6;11394:14;:41::i;:::-;11446:43;11463:6;11471:9;11482:6;11446:16;:43::i;:::-;11500:27;11509:6;11517:9;11500:8;:27::i;:::-;11538:37;11549:6;11557:9;11568:6;11538:10;:37::i;:::-;-1:-1:-1;;;;;11606:17:0;;;;;;:9;:17;;;;;;:29;;11628:6;11606:21;:29::i;:::-;-1:-1:-1;;;;;11586:17:0;;;;;;:9;:17;;;;;:49;;;;11671:32;11596:6;11693:9;11671:13;:32::i;:::-;:78;;11743:6;11671:78;;;11706:34;11714:6;11722:9;11733:6;11706:7;:34::i;:::-;-1:-1:-1;;;;;11783:20:0;;;;;;:9;:20;;;;;;11646:103;;-1:-1:-1;11783:40:0;;11646:103;11783:24;:40::i;:::-;-1:-1:-1;;;;;11760:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11839:43;;;;;;;;;;11867:14;1546:25:1;;1534:2;1519:18;;1400:177;11839:43:0;;;;;;;;11236:654;11158:732;;;:::o;1479:162::-;1565:7;1611:12;1603:6;;;;1595:29;;;;-1:-1:-1;;;1595:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1633:5:0;;;1479:162::o;266:82::-;324:7;341:5;345:1;341;:5;:::i;354:82::-;412:7;429:5;433:1;429;:5;:::i;442:82::-;500:7;517:5;521:1;517;:5;:::i;178:82::-;236:7;253:5;257:1;253;:5;:::i;10804:346::-;-1:-1:-1;;;;;10908:20:0;;10900:70;;;;-1:-1:-1;;;10900:70:0;;11313:2:1;10900:70:0;;;11295:21:1;11352:2;11332:18;;;11325:30;11391:34;11371:18;;;11364:62;-1:-1:-1;;;11442:18:1;;;11435:35;11487:19;;10900:70:0;11111:401:1;10900:70:0;-1:-1:-1;;;;;10989:23:0;;10981:71;;;;-1:-1:-1;;;10981:71:0;;11719:2:1;10981:71:0;;;11701:21:1;11758:2;11738:18;;;11731:30;11797:34;11777:18;;;11770:62;-1:-1:-1;;;11848:18:1;;;11841:33;11891:19;;10981:71:0;11517:399:1;10981:71:0;11081:17;11091:6;11081:9;:17::i;:::-;11071:6;:27;;11063:79;;;;-1:-1:-1;;;11063:79:0;;12123:2:1;11063:79:0;;;12105:21:1;12162:2;12142:18;;;12135:30;12201:34;12181:18;;;12174:62;-1:-1:-1;;;12252:18:1;;;12245:38;12300:19;;11063:79:0;11921:404:1;14095:206:0;-1:-1:-1;;;;;14188:19:0;;;;;;:11;:19;;;;;;;;14187:20;:47;;;;-1:-1:-1;;;;;;14212:22:0;;;;;;:11;:22;;;;;;;;14211:23;14187:47;14184:110;;;14244:14;;;;;;;14236:56;;;;-1:-1:-1;;;14236:56:0;;12532:2:1;14236:56:0;;;12514:21:1;12571:2;12551:18;;;12544:30;12610:31;12590:18;;;12583:59;12659:18;;14236:56:0;12330:353:1;14236:56:0;14095:206;;:::o;14905:399::-;-1:-1:-1;;;;;15006:20:0;;15037:1;15006:20;;;:12;:20;;;;;;:33;15003:160;;-1:-1:-1;;;;;15087:17:0;;;;;;:9;:17;;;;;;;;;15061:12;:20;;;;;;;15050:32;;:6;;:10;:32::i;:::-;15049:55;;15041:120;;;;-1:-1:-1;;;15041:120:0;;12890:2:1;15041:120:0;;;12872:21:1;12929:2;12909:18;;;12902:30;12968:34;12948:18;;;12941:62;-1:-1:-1;;;13019:18:1;;;13012:50;13079:19;;15041:120:0;12688:416:1;15041:120:0;15177:8;;;;;;;15173:124;;15205:12;;15195:6;:22;;:45;;;-1:-1:-1;;;;;;15221:19:0;;;;;;:11;:19;;;;;;;;15195:45;:71;;;-1:-1:-1;;;;;;15244:22:0;;;;;;:11;:22;;;;;;;;15195:71;15187:108;;;;-1:-1:-1;;;15187:108:0;;13311:2:1;15187:108:0;;;13293:21:1;13350:2;13330:18;;;13323:30;13389:26;13369:18;;;13362:54;13433:18;;15187:108:0;13109:348:1;14309:351:0;-1:-1:-1;;;;;14413:19:0;;;;;;:11;:19;;;;;;;;14412:20;:47;;;;-1:-1:-1;;;;;;14437:22:0;;;;;;:11;:22;;;;;;;;14436:23;14412:47;:77;;;;-1:-1:-1;14484:4:0;;-1:-1:-1;;;;;14463:26:0;;;14484:4;;14463:26;;14412:77;:107;;;;-1:-1:-1;;;;;;14493:26:0;;7493:42;14493:26;;14412:107;:120;;;;-1:-1:-1;14524:8:0;;;;;;;14523:9;14412:120;14409:244;;;14594:15;;-1:-1:-1;;;;;14557:20:0;;;;;;:9;:20;;;;;;:32;;14582:6;14557:24;:32::i;:::-;14556:53;;14548:103;;;;-1:-1:-1;;;14548:103:0;;13664:2:1;14548:103:0;;;13646:21:1;13703:2;13683:18;;;13676:30;13742:34;13722:18;;;13715:62;-1:-1:-1;;;13793:18:1;;;13786:35;13838:19;;14548:103:0;13462:401:1;14668:229:0;14781:4;;-1:-1:-1;;;;;14768:17:0;;;14781:4;;14768:17;:41;;;;-1:-1:-1;;;;;;14790:19:0;;;;;;:11;:19;;;;;;;;14789:20;14768:41;:69;;;;;14823:14;;14813:6;:24;;14768:69;:82;;;;-1:-1:-1;14842:8:0;;;;14841:9;14768:82;:95;;;;-1:-1:-1;14855:8:0;;;;;;;14854:9;14768:95;14765:125;;;14886:1;14865:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;14668:229:0;;;:::o;17659:173::-;17735:33;17750:6;17758:9;17735:14;:33::i;:::-;17732:93;;;17770:29;17785:13;;17770:14;:29::i;:::-;17821:1;17801:9;:22;17659:173;;:::o;20715:505::-;20809:14;;;;;;;:38;;;;-1:-1:-1;;;;;;20828:19:0;;;;;;:11;:19;;;;;;;;20827:20;20809:38;:68;;;;-1:-1:-1;20872:4:0;;-1:-1:-1;;;;;20851:26:0;;;20872:4;;20851:26;20809:68;:102;;;;;20891:20;;20881:6;:30;;20809:102;:115;;;;-1:-1:-1;20916:8:0;;;;20915:9;20809:115;:128;;;;-1:-1:-1;20929:8:0;;;;;;;20928:9;20809:128;20806:164;;;20966:1;20939:15;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;;20806:164:0;20983:14;;;;;;;:29;;;;-1:-1:-1;21001:11:0;;;;;;;20983:29;:75;;;;-1:-1:-1;21034:9:0;;21056:1;;21016:29;;-1:-1:-1;;;;;21034:9:0;21016;:29::i;:::-;:42;20983:75;:114;;;;;21081:16;;21062:15;;:35;;20983:114;:138;;;;-1:-1:-1;;;;;;21102:19:0;;;;;;:11;:19;;;;;;;;21101:20;20983:138;:168;;;;-1:-1:-1;21146:4:0;;-1:-1:-1;;;;;21125:26:0;;;21146:4;;21125:26;20983:168;:194;;;;-1:-1:-1;21169:8:0;;;;21168:9;20983:194;:207;;;;-1:-1:-1;21182:8:0;;;;;;;21181:9;20983:207;20980:233;;;21192:19;:17;:19::i;21737:173::-;-1:-1:-1;;;;;21843:19:0;;21818:4;21843:19;;;:11;:19;;;;;;;;21842:20;:47;;;;-1:-1:-1;;;;;;21867:22:0;;;;;;:11;:22;;;;;;;;21866:23;21842:47;:60;;;;-1:-1:-1;;21894:8:0;;;;;;;21893:9;;21737:173;-1:-1:-1;;21737:173:0:o;22194:568::-;22280:7;22336:1;22303:30;22315:6;22323:9;22303:11;:30::i;:::-;:34;:47;;;;-1:-1:-1;22342:8:0;;;;;;;22341:9;22303:47;22300:440;;;22362:17;22382:59;22410:30;22422:6;22430:9;22410:11;:30::i;:::-;22393:11;;22382:23;;:6;;:10;:23::i;:59::-;22497:4;22479:24;;;;:9;:24;;;;;;22362:79;;-1:-1:-1;22479:39:0;;22362:79;22479:28;:39::i;:::-;22470:4;22452:24;;;;:9;:24;;;;;;;:66;;;;22534:42;;-1:-1:-1;;;;;22534:42:0;;;;;;;22566:9;1546:25:1;;1534:2;1519:18;;1400:177;22534:42:0;;;;;;;;22590:9;;:22;22587:113;;22647:9;;22687;;22670:11;;22614:84;;22632:4;;-1:-1:-1;;;;;22647:9:0;;;;22659:38;;22687:9;22659:23;;:6;;:10;:23::i;:38::-;22614:9;:84::i;:::-;22717:21;:6;22728:9;22717:10;:21::i;:::-;22710:28;;;;;22300:440;-1:-1:-1;22748:6:0;22194:568;-1:-1:-1;;22194:568:0:o;17305:346::-;17387:4;17404:19;17454:13;;17426:24;17444:4;17426:9;:24::i;:::-;17486:8;;17426:41;-1:-1:-1;17426:41:0;;-1:-1:-1;17486:8:0;;17485:9;:24;;;;-1:-1:-1;17498:11:0;;;;17485:24;:42;;;;-1:-1:-1;17513:14:0;;;;;;;17485:42;:66;;;;-1:-1:-1;;;;;;17532:19:0;;;;;;:11;:19;;;;;;;;17531:20;17485:66;:100;;;;-1:-1:-1;17581:4:0;;-1:-1:-1;;;;;17568:17:0;;;17581:4;;17568:17;17485:100;:127;;;;;17602:10;;17589:9;;:23;;17485:127;:145;;;;;17616:14;17485:145;:158;;;;-1:-1:-1;17635:8:0;;;;;;;17634:9;17485:158;17478:165;17305:346;-1:-1:-1;;;;17305:346:0:o;15312:1175::-;7258:8;:15;;-1:-1:-1;;7258:15:0;7269:4;7258:15;;;15407:8:::1;::::0;7258;;15406:17:::1;::::0;15421:1:::1;15406:14;:17::i;:::-;15383:40;;15434:32;15469:42;15498:12;15469:24;15480:12;;15469:6;:10;;:24;;;;:::i;:42::-;15434:77:::0;-1:-1:-1;15522:14:0::1;15539:36;:6:::0;15434:77;15539:10:::1;:36::i;:::-;15522:53:::0;-1:-1:-1;15611:21:0::1;15643:24;15522:53:::0;15643:16:::1;:24::i;:::-;15678:20;15701:41;:21;15727:14:::0;15701:25:::1;:41::i;:::-;15678:64;;15753:19;15774:48;15791:30;15808:12;;15791;:16;;:30;;;;:::i;:::-;15774:12:::0;;:16:::1;:48::i;:::-;15753:69;;15833:29;15865;15881:12;;15865:11;:15;;:29;;;;:::i;:::-;15833:61:::0;-1:-1:-1;15908:34:0;;15905:123:::1;;16006:18;::::0;15944:81:::1;::::0;15957:24;;15983:21;;-1:-1:-1;;;;;16006:18:0::1;15944:12;:81::i;:::-;16087:12;::::0;16038:23:::1;::::0;16064:36:::1;::::0;:18:::1;:11:::0;16080:1:::1;16064:15;:18::i;:36::-;16038:62:::0;-1:-1:-1;16114:28:0;;16111:88:::1;;16152:18;::::0;16144:53:::1;::::0;-1:-1:-1;;;;;16152:18:0;;::::1;::::0;16144:53;::::1;;;::::0;16181:15;;16152:18:::1;16144:53:::0;16152:18;16144:53;16181:15;16152:18;16144:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16111:88;16252:6;::::0;16209:17:::1;::::0;16229:30:::1;::::0;:18:::1;:11:::0;16245:1:::1;16229:15;:18::i;:30::-;16209:50:::0;-1:-1:-1;16273:22:0;;16270:76:::1;;16313:9;::::0;16297:47:::1;::::0;-1:-1:-1;;;;;16313:9:0;;::::1;::::0;16297:47;::::1;;;::::0;16334:9;;16313::::1;16297:47:::0;16313:9;16297:47;16334:9;16313;16297:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16270:76;16374:21;16409:20:::0;;16406:74:::1;;16439:20;::::0;16431:47:::1;::::0;-1:-1:-1;;;;;16439:20:0;;::::1;::::0;16431:47;::::1;;;::::0;16470:7;;16439:20:::1;16431:47:::0;16439:20;16431:47;16470:7;16439:20;16431:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16406:74;-1:-1:-1::0;;7278:8:0;:16;;-1:-1:-1;;7278:16:0;;;-1:-1:-1;;;;;;;;;15312:1175:0:o;21228:201::-;21277:8;:15;;-1:-1:-1;;21277:15:0;;;;;21307:9;;21345:5;;21307:46;;;-1:-1:-1;;;21307:46:0;;;;-1:-1:-1;;;;;21307:9:0;;;;:32;;21345:5;21307:46;;;;;21277:15;;21307:46;;;;;;;;21277:15;21307:9;:46;;;;;;;;;;;;;;;;;;;;;;;;;;21303:62;21392:1;21366:15;:28;21405:8;:16;;-1:-1:-1;;21405:16:0;;;21228:201::o;21918:268::-;22033:4;;21997:7;;-1:-1:-1;;;;;22020:17:0;;;22033:4;;22020:17;:41;;;;;22059:1;22041:7;;:20;22020:41;22017:62;;;-1:-1:-1;22070:7:0;;22063:14;;22017:62;22102:4;;-1:-1:-1;;;;;22092:14:0;;;22102:4;;22092:14;:39;;;;;22129:1;22110:8;;:21;22092:39;22089:61;;;-1:-1:-1;22140:8:0;;22133:15;;22089:61;-1:-1:-1;22167:11:0;;21918:268;;;;:::o;16863:434::-;16953:16;;;16967:1;16953:16;;;;;;;;16929:21;;16953:16;;;;;;;;;;-1:-1:-1;16953:16:0;16929:40;;16998:4;16980;16985:1;16980:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16980:23:0;;;:7;;;;;;;;;;:23;;;;17024:6;;:13;;;-1:-1:-1;;;17024:13:0;;;;:6;;;;;:11;;:13;;;;;16980:7;;17024:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17014:4;17019:1;17014:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17014:23:0;;;:7;;;;;;;;;:23;17080:6;;17048:53;;17065:4;;17080:6;17089:11;17048:8;:53::i;:::-;17112:6;;:177;;-1:-1:-1;;;17112:177:0;;-1:-1:-1;;;;;17112:6:0;;;;:57;;:177;;17184:11;;17112:6;;17226:4;;17253;;17273:15;;17112:177;;;:::i;16495:360::-;16626:6;;16594:53;;16611:4;;-1:-1:-1;;;;;16626:6:0;16635:11;16594:8;:53::i;:::-;16658:6;;:189;;-1:-1:-1;;;16658:189:0;;16721:4;16658:189;;;15714:34:1;15764:18;;;15757:34;;;16658:6:0;15807:18:1;;;15800:34;;;15850:18;;;15843:34;-1:-1:-1;;;;;15914:15:1;;;15893:19;;;15886:44;16831:15:0;15946:19:1;;;15939:35;16658:6:0;;;;:22;;16688:9;;15648:19:1;;16658:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:180::-;626:6;679:2;667:9;658:7;654:23;650:32;647:52;;;695:1;692;685:12;647:52;-1:-1:-1;718:23:1;;567:180;-1:-1:-1;567:180:1:o;752:131::-;-1:-1:-1;;;;;827:31:1;;817:42;;807:70;;873:1;870;863:12;807:70;752:131;:::o;888:315::-;956:6;964;1017:2;1005:9;996:7;992:23;988:32;985:52;;;1033:1;1030;1023:12;985:52;1072:9;1059:23;1091:31;1116:5;1091:31;:::i;:::-;1141:5;1193:2;1178:18;;;;1165:32;;-1:-1:-1;;;888:315:1:o;1582:118::-;1668:5;1661:13;1654:21;1647:5;1644:32;1634:60;;1690:1;1687;1680:12;1705:241;1761:6;1814:2;1802:9;1793:7;1789:23;1785:32;1782:52;;;1830:1;1827;1820:12;1782:52;1869:9;1856:23;1888:28;1910:5;1888:28;:::i;1951:456::-;2028:6;2036;2044;2097:2;2085:9;2076:7;2072:23;2068:32;2065:52;;;2113:1;2110;2103:12;2065:52;2152:9;2139:23;2171:31;2196:5;2171:31;:::i;:::-;2221:5;-1:-1:-1;2278:2:1;2263:18;;2250:32;2291:33;2250:32;2291:33;:::i;:::-;1951:456;;2343:7;;-1:-1:-1;;;2397:2:1;2382:18;;;;2369:32;;1951:456::o;2412:247::-;2471:6;2524:2;2512:9;2503:7;2499:23;2495:32;2492:52;;;2540:1;2537;2530:12;2492:52;2579:9;2566:23;2598:31;2623:5;2598:31;:::i;2853:382::-;2918:6;2926;2979:2;2967:9;2958:7;2954:23;2950:32;2947:52;;;2995:1;2992;2985:12;2947:52;3034:9;3021:23;3053:31;3078:5;3053:31;:::i;:::-;3103:5;-1:-1:-1;3160:2:1;3145:18;;3132:32;3173:30;3132:32;3173:30;:::i;:::-;3222:7;3212:17;;;2853:382;;;;;:::o;3240:248::-;3308:6;3316;3369:2;3357:9;3348:7;3344:23;3340:32;3337:52;;;3385:1;3382;3375:12;3337:52;-1:-1:-1;;3408:23:1;;;3478:2;3463:18;;;3450:32;;-1:-1:-1;3240:248:1:o;3701:529::-;3778:6;3786;3794;3847:2;3835:9;3826:7;3822:23;3818:32;3815:52;;;3863:1;3860;3853:12;3815:52;3902:9;3889:23;3921:31;3946:5;3921:31;:::i;:::-;3971:5;-1:-1:-1;4028:2:1;4013:18;;4000:32;4041:33;4000:32;4041:33;:::i;:::-;4093:7;-1:-1:-1;4152:2:1;4137:18;;4124:32;4165:33;4124:32;4165:33;:::i;:::-;4217:7;4207:17;;;3701:529;;;;;:::o;4235:377::-;4309:6;4317;4325;4378:2;4366:9;4357:7;4353:23;4349:32;4346:52;;;4394:1;4391;4384:12;4346:52;4433:9;4420:23;4452:28;4474:5;4452:28;:::i;:::-;4499:5;4551:2;4536:18;;4523:32;;-1:-1:-1;4602:2:1;4587:18;;;4574:32;;4235:377;-1:-1:-1;;;4235:377:1:o;4617:388::-;4685:6;4693;4746:2;4734:9;4725:7;4721:23;4717:32;4714:52;;;4762:1;4759;4752:12;4714:52;4801:9;4788:23;4820:31;4845:5;4820:31;:::i;:::-;4870:5;-1:-1:-1;4927:2:1;4912:18;;4899:32;4940:33;4899:32;4940:33;:::i;5010:661::-;5132:6;5140;5148;5156;5164;5172;5180;5188;5241:3;5229:9;5220:7;5216:23;5212:33;5209:53;;;5258:1;5255;5248:12;5209:53;-1:-1:-1;;5281:23:1;;;5351:2;5336:18;;5323:32;;-1:-1:-1;5402:2:1;5387:18;;5374:32;;5453:2;5438:18;;5425:32;;-1:-1:-1;5504:3:1;5489:19;;5476:33;;-1:-1:-1;5556:3:1;5541:19;;5528:33;;-1:-1:-1;5608:3:1;5593:19;;5580:33;;-1:-1:-1;5660:3:1;5645:19;5632:33;;-1:-1:-1;5010:661:1;-1:-1:-1;5010:661:1:o;5676:316::-;5753:6;5761;5769;5822:2;5810:9;5801:7;5797:23;5793:32;5790:52;;;5838:1;5835;5828:12;5790:52;-1:-1:-1;;5861:23:1;;;5931:2;5916:18;;5903:32;;-1:-1:-1;5982:2:1;5967:18;;;5954:32;;5676:316;-1:-1:-1;5676:316:1:o;6257:329::-;6459:2;6441:21;;;6498:1;6478:18;;;6471:29;-1:-1:-1;;;6531:2:1;6516:18;;6509:36;6577:2;6562:18;;6257:329::o;7284:184::-;7354:6;7407:2;7395:9;7386:7;7382:23;7378:32;7375:52;;;7423:1;7420;7413:12;7375:52;-1:-1:-1;7446:16:1;;7284:184;-1:-1:-1;7284:184:1:o;8275:245::-;8342:6;8395:2;8383:9;8374:7;8370:23;8366:32;8363:52;;;8411:1;8408;8401:12;8363:52;8443:9;8437:16;8462:28;8484:5;8462:28;:::i;10321:127::-;10382:10;10377:3;10373:20;10370:1;10363:31;10413:4;10410:1;10403:15;10437:4;10434:1;10427:15;10453:128;10520:9;;;10541:11;;;10538:37;;;10555:18;;:::i;10586:168::-;10659:9;;;10690;;10707:15;;;10701:22;;10687:37;10677:71;;10728:18;;:::i;10759:217::-;10799:1;10825;10815:132;;10869:10;10864:3;10860:20;10857:1;10850:31;10904:4;10901:1;10894:15;10932:4;10929:1;10922:15;10815:132;-1:-1:-1;10961:9:1;;10759:217::o;10981:125::-;11046:9;;;11067:10;;;11064:36;;;11080:18;;:::i;14000:127::-;14061:10;14056:3;14052:20;14049:1;14042:31;14092:4;14089:1;14082:15;14116:4;14113:1;14106:15;14132:251;14202:6;14255:2;14243:9;14234:7;14230:23;14226:32;14223:52;;;14271:1;14268;14261:12;14223:52;14303:9;14297:16;14322:31;14347:5;14322:31;:::i;14388:980::-;14650:4;14698:3;14687:9;14683:19;14729:6;14718:9;14711:25;14755:2;14793:6;14788:2;14777:9;14773:18;14766:34;14836:3;14831:2;14820:9;14816:18;14809:31;14860:6;14895;14889:13;14926:6;14918;14911:22;14964:3;14953:9;14949:19;14942:26;;15003:2;14995:6;14991:15;14977:29;;15024:1;15034:195;15048:6;15045:1;15042:13;15034:195;;;15113:13;;-1:-1:-1;;;;;15109:39:1;15097:52;;15204:15;;;;15169:12;;;;15145:1;15063:9;15034:195;;;-1:-1:-1;;;;;;;15285:32:1;;;;15280:2;15265:18;;15258:60;-1:-1:-1;;;15349:3:1;15334:19;15327:35;15246:3;14388:980;-1:-1:-1;;;14388:980:1:o;15985:306::-;16073:6;16081;16089;16142:2;16130:9;16121:7;16117:23;16113:32;16110:52;;;16158:1;16155;16148:12;16110:52;16187:9;16181:16;16171:26;;16237:2;16226:9;16222:18;16216:25;16206:35;;16281:2;16270:9;16266:18;16260:25;16250:35;;15985:306;;;;;:::o

Swarm Source

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