ETH Price: $3,786.44 (+6.55%)

Token

ERC-20: Tor Wallet (TOR)
 

Overview

Max Total Supply

10,000,000 TOR

Holders

667

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TorWallet

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED

/*

TELEGRAM: 
https://t.me/torwalletapp

WEBSITE: 
https://torwallet.app/

*/


pragma solidity 0.8.18;

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

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

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

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

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

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

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

    event Authorize_Wallet(address Wallet, bool Status);

    event OwnershipRenounced(address indexed previousOwner);

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );


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

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

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

    function authorize(address adr) external onlyOwner {
        authorizations[adr] = true;
        emit Authorize_Wallet(adr,true);
    }

    function unauthorize(address adr) external onlyOwner {
        require(adr != owner, "OWNER cant be unauthorized");
        authorizations[adr] = false;
        emit Authorize_Wallet(adr,false);
    }

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

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

    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(owner);
        owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

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

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

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

interface InterfaceLP {
    function sync() external;
}

contract TorWallet is BEP20, Auth {
    using SafeMath for uint256;

    address immutable WBNB;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Tor Wallet";
    string constant _symbol = "TOR";
    uint8 constant _decimals = 18;

    uint256 public _totalSupply = 1 * 10**7 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply / 100; // 1%
    uint256 public _maxWalletToken = _totalSupply / 50; // 2%

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

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

    uint256 public liquidityFee = 0;
    uint256 public marketingFee = 0;
    uint256 public buybackFee = 0;
    uint256 public burnFee = 0;
    uint256 public totalFee = marketingFee + liquidityFee + buybackFee + burnFee;
    uint256 public constant feeDenominator = 1000;

    uint256 sellMultiplier = 100;
    uint256 buyMultiplier = 100;
    uint256 transferMultiplier = 25;

    address public marketingFeeReceiver;
    address public buybackFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    InterfaceLP public pairContract;
    uint256 public lastSync;

    bool public tradingOpen = false;
    bool public burnEnabled = false;
    uint256 public launchedAt;

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

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        //router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); testnet
        WBNB = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        pairContract = InterfaceLP(pair);
        lastSync = block.timestamp;

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

        marketingFeeReceiver = msg.sender;
        buybackFeeReceiver = msg.sender;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

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

    receive() external payable { }

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

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

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

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

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

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base10000(uint256 maxWallPercent_base10000) external onlyOwner {
        require(maxWallPercent_base10000 >= 10,"Cannot set max wallet less than 0.1%");
        _maxWalletToken = (_totalSupply * maxWallPercent_base10000 ) / 10000;
        emit config_MaxWallet(_maxWalletToken);
    }
    function setMaxTxPercent_base10000(uint256 maxTXPercentage_base10000) external onlyOwner {
        require(maxTXPercentage_base10000 >= 10,"Cannot set max transaction less than 0.1%");
        _maxTxAmount = (_totalSupply * maxTXPercentage_base10000 ) / 10000;
        emit config_MaxTransaction(_maxTxAmount);
    }

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

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

        if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }
    
        // Checks max transaction limit
        require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "Max TX Limit Exceeded");

        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);


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

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        if(contractTokens > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(contractTokens);
            emit Transfer(sender, address(this), contractTokens);
        }
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        }

        return amount.sub(feeAmount);
    }

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

    function clearStuckToken(address tokenAddress, uint256 tokens) external authorized returns (bool success) {
        require(tokenAddress != address(this),"Cannot withdraw native token");
        if(tokenAddress == pair){
            require(block.timestamp > launchedAt + 500 days,"Locked for 1 year");
        }

        if(tokens == 0){
            tokens = BEP20(tokenAddress).balanceOf(address(this));
        }

        emit clearToken(tokenAddress, tokens);

        return BEP20(tokenAddress).transfer(msg.sender, tokens);
    }

    // switch Trading
    function tradingEnable() external onlyOwner {
        require(!tradingOpen,"Trading already open");
        tradingOpen = true;
        launchedAt = block.timestamp;
        emit config_TradingStatus(tradingOpen);
    }

    function disableBurns() external onlyOwner {
        burnEnabled = false;
    }

    function enableBurns() external onlyOwner {
        burnEnabled = true;
    }

    function swapBack() internal swapping {

        uint256 totalETHFee = totalFee - burnFee;

        uint256 amountToLiquify = (swapThreshold * liquidityFee)/(totalETHFee * 2);
        uint256 amountToSwap = swapThreshold - amountToLiquify;

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

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

        uint256 amountBNB = address(this).balance;

         totalETHFee = totalETHFee - (liquidityFee / 2);
        
        uint256 amountBNBLiquidity = (amountBNB * liquidityFee) / (totalETHFee * 2);
        uint256 amountBNBMarketing = (amountBNB * marketingFee) / totalETHFee;
        uint256 amountBNBbuyback = (amountBNB * buybackFee) / totalETHFee;

        payable(marketingFeeReceiver).transfer(amountBNBMarketing);
        payable(buybackFeeReceiver).transfer(amountBNBbuyback);

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

    function manage_FeeExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
            emit Wallet_feeExempt(addresses[i], status);
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
            emit Wallet_txExempt(addresses[i], status);
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
            emit Wallet_holdingExempt(addresses[i], status);
        }
    }

    function update_fees() internal {
        require(totalFee.mul(buyMultiplier).div(100) <= 150, "Buy tax cannot be more than 15%");
        require(totalFee.mul(sellMultiplier).div(100) <= 150, "Sell tax cannot be more than 15%");
        require(totalFee.mul(sellMultiplier + buyMultiplier).div(100) <= 200, "Buy+Sell tax cannot be more than 20%");
        require(totalFee.mul(transferMultiplier).div(100) <= 100, "Transfer Tax cannot be more than 10%");

        emit UpdateFee( uint8(totalFee.mul(buyMultiplier).div(100)),
            uint8(totalFee.mul(sellMultiplier).div(100)),
            uint8(totalFee.mul(transferMultiplier).div(100))
            );
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external authorized {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;

        update_fees();
    }

    function setFees_base1000(uint256 _liquidityFee,  uint256 _marketingFee, uint256 _buybackFee, uint256 _burnFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        buybackFee = _buybackFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee + _marketingFee + _buybackFee + _burnFee;
        
        update_fees();
    }

    function setFeeReceivers(address _marketingFeeReceiver, address _buybackFeeReceiver) external onlyOwner {
        require(_marketingFeeReceiver != address(0),"Marketing fee address cannot be zero address");
        require(_buybackFeeReceiver != address(0),"buyback fee address cannot be zero address");

        marketingFeeReceiver = _marketingFeeReceiver;
        buybackFeeReceiver = _buybackFeeReceiver;

        emit Set_Wallets(marketingFeeReceiver, buybackFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        require(_amount >= 1 * 10**_decimals, "Amount is less than one token");
        require(_amount < (_totalSupply/10), "Amount too high");

        swapEnabled = _enabled;
        swapThreshold = _amount;

        emit config_SwapSettings(swapThreshold, swapEnabled);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return (_totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }
/*
    function LPBurn(uint256 percent_base10000) public authorized returns (bool){
        require(percent_base10000 <= 1000, "May not nuke more than 10% of tokens in LP");
        require(block.timestamp > lastSync + 5 minutes, "Too soon");
        require(burnEnabled,"Burns are disabled");

        uint256 lp_tokens = this.balanceOf(pair);
        uint256 lp_burn = lp_tokens.mul(percent_base10000).div(10_000);

        if (lp_burn > 0){
            _basicTransfer(pair,DEAD,lp_burn);
            pairContract.sync();
            return true;
        }

        return false;
    }   
*/

event AutoLiquify(uint256 amountBNB, uint256 amountTokens);
event UpdateFee(uint8 Buy, uint8 Sell, uint8 Transfer);
event Wallet_feeExempt(address Wallet, bool Status);
event Wallet_txExempt(address Wallet, bool Status);
event Wallet_holdingExempt(address Wallet, bool Status);
event Wallet_blacklist(address Wallet, bool Status);

event BalanceClear(uint256 amount);
event clearToken(address TokenAddressCleared, uint256 Amount);

event Set_Wallets(address MarketingWallet, address buybackWallet);

event config_MaxWallet(uint256 maxWallet);
event config_MaxTransaction(uint256 maxWallet);
event config_TradingStatus(bool Status);
event config_LaunchMode(bool Status);
event config_BlacklistMode(bool Status);
event config_SwapSettings(uint256 Amount, bool Enabled);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Authorize_Wallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BalanceClear","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"MarketingWallet","type":"address"},{"indexed":false,"internalType":"address","name":"buybackWallet","type":"address"}],"name":"Set_Wallets","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":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"UpdateFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_blacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_feeExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_holdingExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_txExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"clearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"config_BlacklistMode","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"config_LaunchMode","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"config_MaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"config_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"config_SwapSettings","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"config_TradingStatus","type":"event"},{"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":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableBurns","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableBurns","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSync","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract InterfaceLP","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_buybackFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setFees_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base10000","type":"uint256"}],"name":"setMaxTxPercent_base10000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base10000","type":"uint256"}],"name":"setMaxWalletPercent_base10000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052620000126012600a620004f4565b6200002190629896806200050c565b600355606460035462000035919062000526565b600455603260035462000049919062000526565b6005556000600b819055600c819055600d819055600e819055806200006f818062000549565b6200007b919062000549565b62000087919062000549565b600f556064601081905560115560196012556018805461ffff19169055601a805460ff19166001179055600354620000c3906103e89062000526565b601b55348015620000d357600080fd5b5060008054336001600160a01b031991821681178355825260026020908152604092839020805460ff1916600117905560158054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600480830193928290030181865afa15801562000159573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017f91906200055f565b6001600160a01b039081166080526015546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015620001d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f691906200055f565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000248573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026e91906200055f565b6001600160a01b0390811660a0819052601680546001600160a01b0319908116909217905542601755306000818152600760209081526040808320601554909616835294815284822060001990556013805433908616811790915560148054909516811790945583825260088152848220805460ff1990811660019081179092556009835286842080548216831790557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb19307500378580548216831790557fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b8054821683179055600a8352868420805482168317905593835285832080548516821790557f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb80549094161790925560035483825260068352848220819055935193845291927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200058a565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004365781600019048211156200041a576200041a620003df565b808516156200042857918102915b93841c9390800290620003fa565b509250929050565b6000826200044f57506001620004ee565b816200045e57506000620004ee565b81600181146200047757600281146200048257620004a2565b6001915050620004ee565b60ff841115620004965762000496620003df565b50506001821b620004ee565b5060208310610133831016604e8410600b8410161715620004c7575081810a620004ee565b620004d38383620003f5565b8060001904821115620004ea57620004ea620003df565b0290505b92915050565b60006200050560ff8416836200043e565b9392505050565b8082028115828204841417620004ee57620004ee620003df565b6000826200054457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620004ee57620004ee620003df565b6000602082840312156200057257600080fd5b81516001600160a01b03811681146200050557600080fd5b60805160a051612de9620005d3600039600081816107ee0152818161120a01528181611b2e0152818161216d0152818161252f0152612563015260006122820152612de96000f3fe6080604052600436106103375760003560e01c806377b54bad116101ab578063bf56b371116100f7578063f12418a811610095578063fbde83051161006f578063fbde8305146109bc578063fce589d8146109d1578063fe9fbb80146109e7578063ffb54a9914610a0757600080fd5b8063f12418a81461095c578063f2fde38b1461097c578063f887ea401461099c57600080fd5b8063df20fd49116100d1578063df20fd49146108dc578063e96fada2146108fc578063efa5e3471461091c578063f0b37c041461093c57600080fd5b8063bf56b37114610850578063c867d60b14610866578063dd62ed3e1461089657600080fd5b806395d89b4111610164578063a6874ac51161013e578063a6874ac5146107c7578063a8aa1b31146107dc578063a9059cbb14610810578063b6a5d7de1461083057600080fd5b806395d89b411461076557806398118cb414610791578063a4b45c00146107a757600080fd5b806377b54bad146106ab57806378109e54146106cb5780637d1db4a5146106e157806384b1d1ef146106f7578063893d20e8146107175780638b42507f1461073557600080fd5b8063313ce567116102855780635dc96d16116102235780636ce46bc3116101fd5780636ce46bc31461062f5780636ddd17131461064f57806370a0823114610669578063715018a61461069657600080fd5b80635dc96d16146105e45780636917516b146106035780636b67c4df1461061957600080fd5b80633f4218e01161025f5780633f4218e01461053c5780634be9d8691461056c5780634d709adf1461058c578063571ac8b0146105c457600080fd5b8063313ce567146104f45780633b2d081c146105105780633eaaf86b1461052657600080fd5b80631693e8d4116102f25780631df4ccfc116102cc5780631df4ccfc1461047a57806323b872dd146104905780632b112e49146104b05780632f54bf6e146104c557600080fd5b80631693e8d41461043a578063180b0d7e1461044f57806318160ddd1461046557600080fd5b806210868314610343578062bff44614610365578063012aa912146103855780630445b667146103a557806306fdde03146103ce578063095ea7b31461040a57600080fd5b3661033e57005b600080fd5b34801561034f57600080fd5b5061036361035e366004612864565b610a21565b005b34801561037157600080fd5b50610363610380366004612864565b610b4f565b34801561039157600080fd5b506103636103a03660046128ea565b610c6e565b3480156103b157600080fd5b506103bb601b5481565b6040519081526020015b60405180910390f35b3480156103da57600080fd5b5060408051808201909152600a815269151bdc8815d85b1b195d60b21b60208201525b6040516103c59190612903565b34801561041657600080fd5b5061042a61042536600461296d565b610d4c565b60405190151581526020016103c5565b34801561044657600080fd5b50610363610db9565b34801561045b57600080fd5b506103bb6103e881565b34801561047157600080fd5b506003546103bb565b34801561048657600080fd5b506103bb600f5481565b34801561049c57600080fd5b5061042a6104ab366004612997565b610e77565b3480156104bc57600080fd5b506103bb610f39565b3480156104d157600080fd5b5061042a6104e03660046129d3565b6000546001600160a01b0391821691161490565b34801561050057600080fd5b50604051601281526020016103c5565b34801561051c57600080fd5b506103bb600d5481565b34801561053257600080fd5b506103bb60035481565b34801561054857600080fd5b5061042a6105573660046129d3565b60086020526000908152604090205460ff1681565b34801561057857600080fd5b50610363610587366004612864565b610fa9565b34801561059857600080fd5b506016546105ac906001600160a01b031681565b6040516001600160a01b0390911681526020016103c5565b3480156105d057600080fd5b5061042a6105df3660046129d3565b6110c8565b3480156105f057600080fd5b5060185461042a90610100900460ff1681565b34801561060f57600080fd5b506103bb60175481565b34801561062557600080fd5b506103bb600c5481565b34801561063b57600080fd5b5061036361064a3660046129ee565b6110d6565b34801561065b57600080fd5b50601a5461042a9060ff1681565b34801561067557600080fd5b506103bb6106843660046129d3565b60066020526000908152604090205481565b3480156106a257600080fd5b50610363611117565b3480156106b757600080fd5b5061042a6106c636600461296d565b611189565b3480156106d757600080fd5b506103bb60055481565b3480156106ed57600080fd5b506103bb60045481565b34801561070357600080fd5b506014546105ac906001600160a01b031681565b34801561072357600080fd5b506000546001600160a01b03166105ac565b34801561074157600080fd5b5061042a6107503660046129d3565b60096020526000908152604090205460ff1681565b34801561077157600080fd5b506040805180820190915260038152622a27a960e91b60208201526103fd565b34801561079d57600080fd5b506103bb600b5481565b3480156107b357600080fd5b506103636107c2366004612a1a565b6113ba565b3480156107d357600080fd5b50610363611527565b3480156107e857600080fd5b506105ac7f000000000000000000000000000000000000000000000000000000000000000081565b34801561081c57600080fd5b5061042a61082b36600461296d565b611562565b34801561083c57600080fd5b5061036361084b3660046129d3565b61156f565b34801561085c57600080fd5b506103bb60195481565b34801561087257600080fd5b5061042a6108813660046129d3565b600a6020526000908152604090205460ff1681565b3480156108a257600080fd5b506103bb6108b1366004612a1a565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156108e857600080fd5b506103636108f7366004612a4d565b6115f4565b34801561090857600080fd5b506013546105ac906001600160a01b031681565b34801561092857600080fd5b50610363610937366004612a6b565b611724565b34801561094857600080fd5b506103636109573660046129d3565b61178d565b34801561096857600080fd5b506103636109773660046128ea565b61186c565b34801561098857600080fd5b506103636109973660046129d3565b611949565b3480156109a857600080fd5b506015546105ac906001600160a01b031681565b3480156109c857600080fd5b5061036361197f565b3480156109dd57600080fd5b506103bb600e5481565b3480156109f357600080fd5b5061042a610a023660046129d3565b6119b6565b348015610a1357600080fd5b5060185461042a9060ff1681565b610a2a336119b6565b610a4f5760405162461bcd60e51b8152600401610a4690612a9d565b60405180910390fd5b6101f58210610a705760405162461bcd60e51b8152600401610a4690612ac2565b60005b82811015610b495781600a6000868685818110610a9257610a92612b07565b9050602002016020810190610aa791906129d3565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f566c2270277919680152b0734389ae919d95ff7e9024c03fc3c7c209ec8412c7848483818110610b0257610b02612b07565b9050602002016020810190610b1791906129d3565b604080516001600160a01b03909216825284151560208301520160405180910390a1610b4281612b33565b9050610a73565b50505050565b610b58336119b6565b610b745760405162461bcd60e51b8152600401610a4690612a9d565b6101f58210610b955760405162461bcd60e51b8152600401610a4690612ac2565b60005b82811015610b49578160086000868685818110610bb757610bb7612b07565b9050602002016020810190610bcc91906129d3565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de848483818110610c2757610c27612b07565b9050602002016020810190610c3c91906129d3565b604080516001600160a01b03909216825284151560208301520160405180910390a1610c6781612b33565b9050610b98565b6000546001600160a01b03163314610c985760405162461bcd60e51b8152600401610a4690612b4c565b600a811015610cf55760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e312560e01b6064820152608401610a46565b61271081600354610d069190612b6c565b610d109190612b83565b60058190556040519081527fa69fa556bf940aa0c695b9c8e1b229fdb1476830e2025e44da1028e0c1458d4a906020015b60405180910390a150565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610da79086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610de35760405162461bcd60e51b8152600401610a4690612b4c565b60185460ff1615610e2d5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b7339030b63932b0b23c9037b832b760611b6044820152606401610a46565b6018805460ff19166001908117909155426019556040519081527ff865819dcfd8250cfaa23e1ab7129c1ec65c617bae1e716699dfe07dd7c489ee906020015b60405180910390a1565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610f24576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600782528381203382529091529190912054610eff9184906119d4565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610f2f848484611a0e565b90505b9392505050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead60009081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2254600354919291610f9a9190612ba5565b610fa49190612ba5565b905090565b610fb2336119b6565b610fce5760405162461bcd60e51b8152600401610a4690612a9d565b6101f58210610fef5760405162461bcd60e51b8152600401610a4690612ac2565b60005b82811015610b4957816009600086868581811061101157611011612b07565b905060200201602081019061102691906129d3565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f3c4f06d74861dea6c152189f2ac8853b6f789feb0e1182101b7ad9d1858f70e384848381811061108157611081612b07565b905060200201602081019061109691906129d3565b604080516001600160a01b03909216825284151560208301520160405180910390a16110c181612b33565b9050610ff2565b6000610db382600019610d4c565b6110df336119b6565b6110fb5760405162461bcd60e51b8152600401610a4690612a9d565b601082905560118390556012819055611112611db2565b505050565b6000546001600160a01b031633146111415760405162461bcd60e51b8152600401610a4690612b4c565b600080546040516001600160a01b03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a2600080546001600160a01b0319169055565b6000611194336119b6565b6111b05760405162461bcd60e51b8152600401610a4690612a9d565b306001600160a01b038416036112085760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e000000006044820152606401610a46565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361129457601954611252906302932e00612bb8565b42116112945760405162461bcd60e51b81526020600482015260116024820152702637b1b5b2b2103337b91018903cb2b0b960791b6044820152606401610a46565b81600003611307576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156112e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113049190612bcb565b91505b604080516001600160a01b0385168152602081018490527f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b910160405180910390a160405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611396573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f329190612be4565b6000546001600160a01b031633146113e45760405162461bcd60e51b8152600401610a4690612b4c565b6001600160a01b03821661144f5760405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574696e672066656520616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b6064820152608401610a46565b6001600160a01b0381166114b85760405162461bcd60e51b815260206004820152602a60248201527f6275796261636b2066656520616464726573732063616e6e6f74206265207a65604482015269726f206164647265737360b01b6064820152608401610a46565b601380546001600160a01b038481166001600160a01b03199283168117909355601480549185169190921681179091556040805192835260208301919091527ff3b718cd51f62e3836535bffd8f429a3f80d9d4442d89b72beee94069ed1fa3891015b60405180910390a15050565b6000546001600160a01b031633146115515760405162461bcd60e51b8152600401610a4690612b4c565b6018805461ff001916610100179055565b6000610f32338484611a0e565b6000546001600160a01b031633146115995760405162461bcd60e51b8152600401610a4690612b4c565b6001600160a01b038116600081815260026020908152604091829020805460ff191660019081179091558251938452908301527fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b95059101610d41565b6000546001600160a01b0316331461161e5760405162461bcd60e51b8152600401610a4690612b4c565b61162a6012600a612ce5565b611635906001612b6c565b8110156116845760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206973206c657373207468616e206f6e6520746f6b656e0000006044820152606401610a46565b600a6003546116939190612b83565b81106116d35760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610a46565b601a805460ff1916831515908117909155601b8290556040805183815260ff909216151560208301527f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0910161151b565b6000546001600160a01b0316331461174e5760405162461bcd60e51b8152600401610a4690612b4c565b600b849055600c839055600d829055600e819055808261176e8587612bb8565b6117789190612bb8565b6117829190612bb8565b600f55610b49611db2565b6000546001600160a01b031633146117b75760405162461bcd60e51b8152600401610a4690612b4c565b6000546001600160a01b03908116908216036118155760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610a46565b6001600160a01b0381166000818152600260209081526040808320805460ff191690558051938452908301919091527fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b95059101610d41565b6000546001600160a01b031633146118965760405162461bcd60e51b8152600401610a4690612b4c565b600a8110156118f95760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e312560b81b6064820152608401610a46565b6127108160035461190a9190612b6c565b6119149190612b83565b60048190556040519081527f365a2bb07537fddd750e9ac8d56970e584f83a144bb5225e77491b83bccd118390602001610d41565b6000546001600160a01b031633146119735760405162461bcd60e51b8152600401610a4690612b4c565b61197c8161201e565b50565b6000546001600160a01b031633146119a95760405162461bcd60e51b8152600401610a4690612b4c565b6018805461ff0019169055565b6001600160a01b031660009081526002602052604090205460ff1690565b600081848411156119f85760405162461bcd60e51b8152600401610a469190612903565b506000611a058486612ba5565b95945050505050565b601c5460009060ff1615611a2e57611a2784848461208c565b9050610f32565b6001600160a01b03841660009081526002602052604090205460ff16158015611a7057506001600160a01b03831660009081526002602052604090205460ff16155b15611abe5760185460ff16611abe5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610a46565b6001600160a01b03841660009081526002602052604090205460ff16158015611b0057506001600160a01b0384166000908152600a602052604090205460ff16155b8015611b2557506001600160a01b0383166000908152600a602052604090205460ff16155b8015611b6357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b15611bdd576005546001600160a01b038416600090815260066020526040902054611b8f908490612bb8565b1115611bdd5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610a46565b60045482111580611c0657506001600160a01b03841660009081526009602052604090205460ff165b80611c2957506001600160a01b03831660009081526009602052604090205460ff165b611c6d5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610a46565b611c75612160565b15611c8257611c826121cc565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260069091529190912054611cd49184906119d4565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff1680611d2157506001600160a01b03841660009081526008602052604090205460ff165b611d3557611d30858486612507565b611d37565b825b6001600160a01b038516600090815260066020526040902054909150611d5d90826126c3565b6001600160a01b038086166000818152600660205260409081902093909355915190871690600080516020612d9483398151915290611d9f9085815260200190565b60405180910390a3506001949350505050565b6096611dd66064611dd0601154600f5461272290919063ffffffff16565b906127a4565b1115611e245760405162461bcd60e51b815260206004820152601f60248201527f427579207461782063616e6e6f74206265206d6f7265207468616e20313525006044820152606401610a46565b6096611e426064611dd0601054600f5461272290919063ffffffff16565b1115611e905760405162461bcd60e51b815260206004820181905260248201527f53656c6c207461782063616e6e6f74206265206d6f7265207468616e203135256044820152606401610a46565b60c8611eb36064611dd0601154601054611eaa9190612bb8565b600f5490612722565b1115611f0d5760405162461bcd60e51b8152602060048201526024808201527f4275792b53656c6c207461782063616e6e6f74206265206d6f7265207468616e6044820152632032302560e01b6064820152608401610a46565b6064611f2b6064611dd0601254600f5461272290919063ffffffff16565b1115611f855760405162461bcd60e51b8152602060048201526024808201527f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e6044820152632031302560e01b6064820152608401610a46565b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada611fc26064611dd0601154600f5461272290919063ffffffff16565b611fde6064611dd0601054600f5461272290919063ffffffff16565b611ffa6064611dd0601254600f5461272290919063ffffffff16565b6040805160ff94851681529284166020840152921691810191909152606001610e6d565b6001600160a01b03811661203157600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546120dd9184906119d4565b6001600160a01b03808616600090815260066020526040808220939093559085168152205461210c90836126c3565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020612d948339815191529061214e9086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480159061219e5750601c5460ff16155b80156121ac5750601a5460ff165b8015610fa4575050601b5430600090815260066020526040902054101590565b601c805460ff19166001179055600e54600f546000916121eb91612ba5565b905060006121fa826002612b6c565b600b54601b5461220a9190612b6c565b6122149190612b83565b9050600081601b546122269190612ba5565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061226057612260612b07565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106122b4576122b4612b07565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac947906122fa908590600090869030904290600401612cf4565b600060405180830381600087803b15801561231457600080fd5b505af1158015612328573d6000803e3d6000fd5b5050600b5447925061233d9150600290612b83565b6123479086612ba5565b94506000612356866002612b6c565b600b546123639084612b6c565b61236d9190612b83565b9050600086600c54846123809190612b6c565b61238a9190612b83565b9050600087600d548561239d9190612b6c565b6123a79190612b83565b6013546040519192506001600160a01b03169083156108fc029084906000818181858888f193505050501580156123e2573d6000803e3d6000fd5b506014546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561241d573d6000803e3d6000fd5b5086156124f35760155460405163f305d71960e01b81523060048201819052602482018a9052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990859060c40160606040518083038185885af1158015612491573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b69190612d65565b505060408051858152602081018a90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601c805460ff19169055505050505050565b60008215806125165750600f54155b15612522575081610f32565b6012546001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690841603612561575060105461259f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03160361259f57506011545b60006125d06125b16103e86064612b6c565b611dd0846125ca600f548a61272290919063ffffffff16565b90612722565b905060006125ef600f54611dd0600e548561272290919063ffffffff16565b905060006125fd83836127e6565b90508015612667573060009081526006602052604090205461261f90826126c3565b30600081815260066020526040908190209290925590516001600160a01b038a1690600080516020612d948339815191529061265e9085815260200190565b60405180910390a35b81156126ad5760035461267a90836127e6565b6003556040518281526000906001600160a01b038a1690600080516020612d948339815191529060200160405180910390a35b6126b787846127e6565b98975050505050505050565b6000806126d08385612bb8565b905083811015610f325760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a46565b60008260000361273457506000610db3565b60006127408385612b6c565b90508261274d8583612b83565b14610f325760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a46565b6000610f3283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612828565b6000610f3283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119d4565b600081836128495760405162461bcd60e51b8152600401610a469190612903565b506000611a058486612b83565b801515811461197c57600080fd5b60008060006040848603121561287957600080fd5b833567ffffffffffffffff8082111561289157600080fd5b818601915086601f8301126128a557600080fd5b8135818111156128b457600080fd5b8760208260051b85010111156128c957600080fd5b602092830195509350508401356128df81612856565b809150509250925092565b6000602082840312156128fc57600080fd5b5035919050565b600060208083528351808285015260005b8181101561293057858101830151858201604001528201612914565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461296857600080fd5b919050565b6000806040838503121561298057600080fd5b61298983612951565b946020939093013593505050565b6000806000606084860312156129ac57600080fd5b6129b584612951565b92506129c360208501612951565b9150604084013590509250925092565b6000602082840312156129e557600080fd5b610f3282612951565b600080600060608486031215612a0357600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612a2d57600080fd5b612a3683612951565b9150612a4460208401612951565b90509250929050565b60008060408385031215612a6057600080fd5b823561298981612856565b60008060008060808587031215612a8157600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612b4557612b45612b1d565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b8082028115828204841417610db357610db3612b1d565b600082612ba057634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610db357610db3612b1d565b80820180821115610db357610db3612b1d565b600060208284031215612bdd57600080fd5b5051919050565b600060208284031215612bf657600080fd5b8151610f3281612856565b600181815b80851115612c3c578160001904821115612c2257612c22612b1d565b80851615612c2f57918102915b93841c9390800290612c06565b509250929050565b600082612c5357506001610db3565b81612c6057506000610db3565b8160018114612c765760028114612c8057612c9c565b6001915050610db3565b60ff841115612c9157612c91612b1d565b50506001821b610db3565b5060208310610133831016604e8410600b8410161715612cbf575081810a610db3565b612cc98383612c01565b8060001904821115612cdd57612cdd612b1d565b029392505050565b6000610f3260ff841683612c44565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d445784516001600160a01b031683529383019391830191600101612d1f565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612d7a57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220af860dcac5dc5dd5fda511beeb529b71e14666bd231f97a5e624e76d01f6533d64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106103375760003560e01c806377b54bad116101ab578063bf56b371116100f7578063f12418a811610095578063fbde83051161006f578063fbde8305146109bc578063fce589d8146109d1578063fe9fbb80146109e7578063ffb54a9914610a0757600080fd5b8063f12418a81461095c578063f2fde38b1461097c578063f887ea401461099c57600080fd5b8063df20fd49116100d1578063df20fd49146108dc578063e96fada2146108fc578063efa5e3471461091c578063f0b37c041461093c57600080fd5b8063bf56b37114610850578063c867d60b14610866578063dd62ed3e1461089657600080fd5b806395d89b4111610164578063a6874ac51161013e578063a6874ac5146107c7578063a8aa1b31146107dc578063a9059cbb14610810578063b6a5d7de1461083057600080fd5b806395d89b411461076557806398118cb414610791578063a4b45c00146107a757600080fd5b806377b54bad146106ab57806378109e54146106cb5780637d1db4a5146106e157806384b1d1ef146106f7578063893d20e8146107175780638b42507f1461073557600080fd5b8063313ce567116102855780635dc96d16116102235780636ce46bc3116101fd5780636ce46bc31461062f5780636ddd17131461064f57806370a0823114610669578063715018a61461069657600080fd5b80635dc96d16146105e45780636917516b146106035780636b67c4df1461061957600080fd5b80633f4218e01161025f5780633f4218e01461053c5780634be9d8691461056c5780634d709adf1461058c578063571ac8b0146105c457600080fd5b8063313ce567146104f45780633b2d081c146105105780633eaaf86b1461052657600080fd5b80631693e8d4116102f25780631df4ccfc116102cc5780631df4ccfc1461047a57806323b872dd146104905780632b112e49146104b05780632f54bf6e146104c557600080fd5b80631693e8d41461043a578063180b0d7e1461044f57806318160ddd1461046557600080fd5b806210868314610343578062bff44614610365578063012aa912146103855780630445b667146103a557806306fdde03146103ce578063095ea7b31461040a57600080fd5b3661033e57005b600080fd5b34801561034f57600080fd5b5061036361035e366004612864565b610a21565b005b34801561037157600080fd5b50610363610380366004612864565b610b4f565b34801561039157600080fd5b506103636103a03660046128ea565b610c6e565b3480156103b157600080fd5b506103bb601b5481565b6040519081526020015b60405180910390f35b3480156103da57600080fd5b5060408051808201909152600a815269151bdc8815d85b1b195d60b21b60208201525b6040516103c59190612903565b34801561041657600080fd5b5061042a61042536600461296d565b610d4c565b60405190151581526020016103c5565b34801561044657600080fd5b50610363610db9565b34801561045b57600080fd5b506103bb6103e881565b34801561047157600080fd5b506003546103bb565b34801561048657600080fd5b506103bb600f5481565b34801561049c57600080fd5b5061042a6104ab366004612997565b610e77565b3480156104bc57600080fd5b506103bb610f39565b3480156104d157600080fd5b5061042a6104e03660046129d3565b6000546001600160a01b0391821691161490565b34801561050057600080fd5b50604051601281526020016103c5565b34801561051c57600080fd5b506103bb600d5481565b34801561053257600080fd5b506103bb60035481565b34801561054857600080fd5b5061042a6105573660046129d3565b60086020526000908152604090205460ff1681565b34801561057857600080fd5b50610363610587366004612864565b610fa9565b34801561059857600080fd5b506016546105ac906001600160a01b031681565b6040516001600160a01b0390911681526020016103c5565b3480156105d057600080fd5b5061042a6105df3660046129d3565b6110c8565b3480156105f057600080fd5b5060185461042a90610100900460ff1681565b34801561060f57600080fd5b506103bb60175481565b34801561062557600080fd5b506103bb600c5481565b34801561063b57600080fd5b5061036361064a3660046129ee565b6110d6565b34801561065b57600080fd5b50601a5461042a9060ff1681565b34801561067557600080fd5b506103bb6106843660046129d3565b60066020526000908152604090205481565b3480156106a257600080fd5b50610363611117565b3480156106b757600080fd5b5061042a6106c636600461296d565b611189565b3480156106d757600080fd5b506103bb60055481565b3480156106ed57600080fd5b506103bb60045481565b34801561070357600080fd5b506014546105ac906001600160a01b031681565b34801561072357600080fd5b506000546001600160a01b03166105ac565b34801561074157600080fd5b5061042a6107503660046129d3565b60096020526000908152604090205460ff1681565b34801561077157600080fd5b506040805180820190915260038152622a27a960e91b60208201526103fd565b34801561079d57600080fd5b506103bb600b5481565b3480156107b357600080fd5b506103636107c2366004612a1a565b6113ba565b3480156107d357600080fd5b50610363611527565b3480156107e857600080fd5b506105ac7f000000000000000000000000c652aabfef2cb3d956bd85742e18d32063bf2ff181565b34801561081c57600080fd5b5061042a61082b36600461296d565b611562565b34801561083c57600080fd5b5061036361084b3660046129d3565b61156f565b34801561085c57600080fd5b506103bb60195481565b34801561087257600080fd5b5061042a6108813660046129d3565b600a6020526000908152604090205460ff1681565b3480156108a257600080fd5b506103bb6108b1366004612a1a565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156108e857600080fd5b506103636108f7366004612a4d565b6115f4565b34801561090857600080fd5b506013546105ac906001600160a01b031681565b34801561092857600080fd5b50610363610937366004612a6b565b611724565b34801561094857600080fd5b506103636109573660046129d3565b61178d565b34801561096857600080fd5b506103636109773660046128ea565b61186c565b34801561098857600080fd5b506103636109973660046129d3565b611949565b3480156109a857600080fd5b506015546105ac906001600160a01b031681565b3480156109c857600080fd5b5061036361197f565b3480156109dd57600080fd5b506103bb600e5481565b3480156109f357600080fd5b5061042a610a023660046129d3565b6119b6565b348015610a1357600080fd5b5060185461042a9060ff1681565b610a2a336119b6565b610a4f5760405162461bcd60e51b8152600401610a4690612a9d565b60405180910390fd5b6101f58210610a705760405162461bcd60e51b8152600401610a4690612ac2565b60005b82811015610b495781600a6000868685818110610a9257610a92612b07565b9050602002016020810190610aa791906129d3565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f566c2270277919680152b0734389ae919d95ff7e9024c03fc3c7c209ec8412c7848483818110610b0257610b02612b07565b9050602002016020810190610b1791906129d3565b604080516001600160a01b03909216825284151560208301520160405180910390a1610b4281612b33565b9050610a73565b50505050565b610b58336119b6565b610b745760405162461bcd60e51b8152600401610a4690612a9d565b6101f58210610b955760405162461bcd60e51b8152600401610a4690612ac2565b60005b82811015610b49578160086000868685818110610bb757610bb7612b07565b9050602002016020810190610bcc91906129d3565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de848483818110610c2757610c27612b07565b9050602002016020810190610c3c91906129d3565b604080516001600160a01b03909216825284151560208301520160405180910390a1610c6781612b33565b9050610b98565b6000546001600160a01b03163314610c985760405162461bcd60e51b8152600401610a4690612b4c565b600a811015610cf55760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e312560e01b6064820152608401610a46565b61271081600354610d069190612b6c565b610d109190612b83565b60058190556040519081527fa69fa556bf940aa0c695b9c8e1b229fdb1476830e2025e44da1028e0c1458d4a906020015b60405180910390a150565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610da79086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610de35760405162461bcd60e51b8152600401610a4690612b4c565b60185460ff1615610e2d5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b7339030b63932b0b23c9037b832b760611b6044820152606401610a46565b6018805460ff19166001908117909155426019556040519081527ff865819dcfd8250cfaa23e1ab7129c1ec65c617bae1e716699dfe07dd7c489ee906020015b60405180910390a1565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610f24576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600782528381203382529091529190912054610eff9184906119d4565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610f2f848484611a0e565b90505b9392505050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead60009081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2254600354919291610f9a9190612ba5565b610fa49190612ba5565b905090565b610fb2336119b6565b610fce5760405162461bcd60e51b8152600401610a4690612a9d565b6101f58210610fef5760405162461bcd60e51b8152600401610a4690612ac2565b60005b82811015610b4957816009600086868581811061101157611011612b07565b905060200201602081019061102691906129d3565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f3c4f06d74861dea6c152189f2ac8853b6f789feb0e1182101b7ad9d1858f70e384848381811061108157611081612b07565b905060200201602081019061109691906129d3565b604080516001600160a01b03909216825284151560208301520160405180910390a16110c181612b33565b9050610ff2565b6000610db382600019610d4c565b6110df336119b6565b6110fb5760405162461bcd60e51b8152600401610a4690612a9d565b601082905560118390556012819055611112611db2565b505050565b6000546001600160a01b031633146111415760405162461bcd60e51b8152600401610a4690612b4c565b600080546040516001600160a01b03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a2600080546001600160a01b0319169055565b6000611194336119b6565b6111b05760405162461bcd60e51b8152600401610a4690612a9d565b306001600160a01b038416036112085760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e000000006044820152606401610a46565b7f000000000000000000000000c652aabfef2cb3d956bd85742e18d32063bf2ff16001600160a01b0316836001600160a01b03160361129457601954611252906302932e00612bb8565b42116112945760405162461bcd60e51b81526020600482015260116024820152702637b1b5b2b2103337b91018903cb2b0b960791b6044820152606401610a46565b81600003611307576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156112e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113049190612bcb565b91505b604080516001600160a01b0385168152602081018490527f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b910160405180910390a160405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611396573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f329190612be4565b6000546001600160a01b031633146113e45760405162461bcd60e51b8152600401610a4690612b4c565b6001600160a01b03821661144f5760405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574696e672066656520616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b6064820152608401610a46565b6001600160a01b0381166114b85760405162461bcd60e51b815260206004820152602a60248201527f6275796261636b2066656520616464726573732063616e6e6f74206265207a65604482015269726f206164647265737360b01b6064820152608401610a46565b601380546001600160a01b038481166001600160a01b03199283168117909355601480549185169190921681179091556040805192835260208301919091527ff3b718cd51f62e3836535bffd8f429a3f80d9d4442d89b72beee94069ed1fa3891015b60405180910390a15050565b6000546001600160a01b031633146115515760405162461bcd60e51b8152600401610a4690612b4c565b6018805461ff001916610100179055565b6000610f32338484611a0e565b6000546001600160a01b031633146115995760405162461bcd60e51b8152600401610a4690612b4c565b6001600160a01b038116600081815260026020908152604091829020805460ff191660019081179091558251938452908301527fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b95059101610d41565b6000546001600160a01b0316331461161e5760405162461bcd60e51b8152600401610a4690612b4c565b61162a6012600a612ce5565b611635906001612b6c565b8110156116845760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206973206c657373207468616e206f6e6520746f6b656e0000006044820152606401610a46565b600a6003546116939190612b83565b81106116d35760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610a46565b601a805460ff1916831515908117909155601b8290556040805183815260ff909216151560208301527f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0910161151b565b6000546001600160a01b0316331461174e5760405162461bcd60e51b8152600401610a4690612b4c565b600b849055600c839055600d829055600e819055808261176e8587612bb8565b6117789190612bb8565b6117829190612bb8565b600f55610b49611db2565b6000546001600160a01b031633146117b75760405162461bcd60e51b8152600401610a4690612b4c565b6000546001600160a01b03908116908216036118155760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610a46565b6001600160a01b0381166000818152600260209081526040808320805460ff191690558051938452908301919091527fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b95059101610d41565b6000546001600160a01b031633146118965760405162461bcd60e51b8152600401610a4690612b4c565b600a8110156118f95760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e312560b81b6064820152608401610a46565b6127108160035461190a9190612b6c565b6119149190612b83565b60048190556040519081527f365a2bb07537fddd750e9ac8d56970e584f83a144bb5225e77491b83bccd118390602001610d41565b6000546001600160a01b031633146119735760405162461bcd60e51b8152600401610a4690612b4c565b61197c8161201e565b50565b6000546001600160a01b031633146119a95760405162461bcd60e51b8152600401610a4690612b4c565b6018805461ff0019169055565b6001600160a01b031660009081526002602052604090205460ff1690565b600081848411156119f85760405162461bcd60e51b8152600401610a469190612903565b506000611a058486612ba5565b95945050505050565b601c5460009060ff1615611a2e57611a2784848461208c565b9050610f32565b6001600160a01b03841660009081526002602052604090205460ff16158015611a7057506001600160a01b03831660009081526002602052604090205460ff16155b15611abe5760185460ff16611abe5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610a46565b6001600160a01b03841660009081526002602052604090205460ff16158015611b0057506001600160a01b0384166000908152600a602052604090205460ff16155b8015611b2557506001600160a01b0383166000908152600a602052604090205460ff16155b8015611b6357507f000000000000000000000000c652aabfef2cb3d956bd85742e18d32063bf2ff16001600160a01b0316836001600160a01b031614155b15611bdd576005546001600160a01b038416600090815260066020526040902054611b8f908490612bb8565b1115611bdd5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610a46565b60045482111580611c0657506001600160a01b03841660009081526009602052604090205460ff165b80611c2957506001600160a01b03831660009081526009602052604090205460ff165b611c6d5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610a46565b611c75612160565b15611c8257611c826121cc565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260069091529190912054611cd49184906119d4565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff1680611d2157506001600160a01b03841660009081526008602052604090205460ff165b611d3557611d30858486612507565b611d37565b825b6001600160a01b038516600090815260066020526040902054909150611d5d90826126c3565b6001600160a01b038086166000818152600660205260409081902093909355915190871690600080516020612d9483398151915290611d9f9085815260200190565b60405180910390a3506001949350505050565b6096611dd66064611dd0601154600f5461272290919063ffffffff16565b906127a4565b1115611e245760405162461bcd60e51b815260206004820152601f60248201527f427579207461782063616e6e6f74206265206d6f7265207468616e20313525006044820152606401610a46565b6096611e426064611dd0601054600f5461272290919063ffffffff16565b1115611e905760405162461bcd60e51b815260206004820181905260248201527f53656c6c207461782063616e6e6f74206265206d6f7265207468616e203135256044820152606401610a46565b60c8611eb36064611dd0601154601054611eaa9190612bb8565b600f5490612722565b1115611f0d5760405162461bcd60e51b8152602060048201526024808201527f4275792b53656c6c207461782063616e6e6f74206265206d6f7265207468616e6044820152632032302560e01b6064820152608401610a46565b6064611f2b6064611dd0601254600f5461272290919063ffffffff16565b1115611f855760405162461bcd60e51b8152602060048201526024808201527f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e6044820152632031302560e01b6064820152608401610a46565b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada611fc26064611dd0601154600f5461272290919063ffffffff16565b611fde6064611dd0601054600f5461272290919063ffffffff16565b611ffa6064611dd0601254600f5461272290919063ffffffff16565b6040805160ff94851681529284166020840152921691810191909152606001610e6d565b6001600160a01b03811661203157600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546120dd9184906119d4565b6001600160a01b03808616600090815260066020526040808220939093559085168152205461210c90836126c3565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020612d948339815191529061214e9086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f000000000000000000000000c652aabfef2cb3d956bd85742e18d32063bf2ff1161480159061219e5750601c5460ff16155b80156121ac5750601a5460ff165b8015610fa4575050601b5430600090815260066020526040902054101590565b601c805460ff19166001179055600e54600f546000916121eb91612ba5565b905060006121fa826002612b6c565b600b54601b5461220a9190612b6c565b6122149190612b83565b9050600081601b546122269190612ba5565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061226057612260612b07565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106122b4576122b4612b07565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac947906122fa908590600090869030904290600401612cf4565b600060405180830381600087803b15801561231457600080fd5b505af1158015612328573d6000803e3d6000fd5b5050600b5447925061233d9150600290612b83565b6123479086612ba5565b94506000612356866002612b6c565b600b546123639084612b6c565b61236d9190612b83565b9050600086600c54846123809190612b6c565b61238a9190612b83565b9050600087600d548561239d9190612b6c565b6123a79190612b83565b6013546040519192506001600160a01b03169083156108fc029084906000818181858888f193505050501580156123e2573d6000803e3d6000fd5b506014546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561241d573d6000803e3d6000fd5b5086156124f35760155460405163f305d71960e01b81523060048201819052602482018a9052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990859060c40160606040518083038185885af1158015612491573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b69190612d65565b505060408051858152602081018a90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601c805460ff19169055505050505050565b60008215806125165750600f54155b15612522575081610f32565b6012546001600160a01b037f000000000000000000000000c652aabfef2cb3d956bd85742e18d32063bf2ff1811690841603612561575060105461259f565b7f000000000000000000000000c652aabfef2cb3d956bd85742e18d32063bf2ff16001600160a01b0316856001600160a01b03160361259f57506011545b60006125d06125b16103e86064612b6c565b611dd0846125ca600f548a61272290919063ffffffff16565b90612722565b905060006125ef600f54611dd0600e548561272290919063ffffffff16565b905060006125fd83836127e6565b90508015612667573060009081526006602052604090205461261f90826126c3565b30600081815260066020526040908190209290925590516001600160a01b038a1690600080516020612d948339815191529061265e9085815260200190565b60405180910390a35b81156126ad5760035461267a90836127e6565b6003556040518281526000906001600160a01b038a1690600080516020612d948339815191529060200160405180910390a35b6126b787846127e6565b98975050505050505050565b6000806126d08385612bb8565b905083811015610f325760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a46565b60008260000361273457506000610db3565b60006127408385612b6c565b90508261274d8583612b83565b14610f325760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a46565b6000610f3283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612828565b6000610f3283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119d4565b600081836128495760405162461bcd60e51b8152600401610a469190612903565b506000611a058486612b83565b801515811461197c57600080fd5b60008060006040848603121561287957600080fd5b833567ffffffffffffffff8082111561289157600080fd5b818601915086601f8301126128a557600080fd5b8135818111156128b457600080fd5b8760208260051b85010111156128c957600080fd5b602092830195509350508401356128df81612856565b809150509250925092565b6000602082840312156128fc57600080fd5b5035919050565b600060208083528351808285015260005b8181101561293057858101830151858201604001528201612914565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461296857600080fd5b919050565b6000806040838503121561298057600080fd5b61298983612951565b946020939093013593505050565b6000806000606084860312156129ac57600080fd5b6129b584612951565b92506129c360208501612951565b9150604084013590509250925092565b6000602082840312156129e557600080fd5b610f3282612951565b600080600060608486031215612a0357600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612a2d57600080fd5b612a3683612951565b9150612a4460208401612951565b90509250929050565b60008060408385031215612a6057600080fd5b823561298981612856565b60008060008060808587031215612a8157600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612b4557612b45612b1d565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b8082028115828204841417610db357610db3612b1d565b600082612ba057634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610db357610db3612b1d565b80820180821115610db357610db3612b1d565b600060208284031215612bdd57600080fd5b5051919050565b600060208284031215612bf657600080fd5b8151610f3281612856565b600181815b80851115612c3c578160001904821115612c2257612c22612b1d565b80851615612c2f57918102915b93841c9390800290612c06565b509250929050565b600082612c5357506001610db3565b81612c6057506000610db3565b8160018114612c765760028114612c8057612c9c565b6001915050610db3565b60ff841115612c9157612c91612b1d565b50506001821b610db3565b5060208310610133831016604e8410600b8410161715612cbf575081810a610db3565b612cc98383612c01565b8060001904821115612cdd57612cdd612b1d565b029392505050565b6000610f3260ff841683612c44565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d445784516001600160a01b031683529383019391830191600101612d1f565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612d7a57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220af860dcac5dc5dd5fda511beeb529b71e14666bd231f97a5e624e76d01f6533d64736f6c63430008120033

Deployed Bytecode Sourcemap

5470:14929:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16280:373;;;;;;;;;;-1:-1:-1;16280:373:0;;;;;:::i;:::-;;:::i;:::-;;15551:353;;;;;;;;;;-1:-1:-1;15551:353:0;;;;;:::i;:::-;;:::i;9721:317::-;;;;;;;;;;-1:-1:-1;9721:317:0;;;;;:::i;:::-;;:::i;7082:50::-;;;;;;;;;;;;;;;;;;;1223:25:1;;;1211:2;1196:18;7082:50:0;;;;;;;;8517:80;;;;;;;;;;-1:-1:-1;8589:5:0;;;;;;;;;;;;-1:-1:-1;;;8589:5:0;;;;8517:80;;;;;;;:::i;8825:216::-;;;;;;;;;;-1:-1:-1;8825:216:0;;;;;:::i;:::-;;:::i;:::-;;;2414:14:1;;2407:22;2389:41;;2377:2;2362:18;8825:216:0;2249:187:1;13703:224:0;;;;;;;;;;;;;:::i;6549:45::-;;;;;;;;;;;;6590:4;6549:45;;8247:88;;;;;;;;;;-1:-1:-1;8320:12:0;;8247:88;;6466:76;;;;;;;;;;;;;;;;9343:370;;;;;;;;;;-1:-1:-1;9343:370:0;;;;;:::i;:::-;;:::i;18856:138::-;;;;;;;;;;;;;:::i;3267:103::-;;;;;;;;;;-1:-1:-1;3267:103:0;;;;;:::i;:::-;3322:4;3357:5;-1:-1:-1;;;;;3346:16:0;;;3357:5;;3346:16;;3267:103;8341:80;;;;;;;;;;-1:-1:-1;8341:80:0;;5831:2;3107:36:1;;3095:2;3080:18;8341:80:0;2965:184:1;6397:29:0;;;;;;;;;;;;;;;;5842:55;;;;;;;;;;;;;;;;6154:44;;;;;;;;;;-1:-1:-1;6154:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15912:360;;;;;;;;;;-1:-1:-1;15912:360:0;;;;;:::i;:::-;;:::i;6865:31::-;;;;;;;;;;-1:-1:-1;6865:31:0;;;;-1:-1:-1;;;;;6865:31:0;;;;;;-1:-1:-1;;;;;3337:32:1;;;3319:51;;3307:2;3292:18;6865:31:0;3154:222:1;9049:122:0;;;;;;;;;;-1:-1:-1;9049:122:0;;;;;:::i;:::-;;:::i;6973:31::-;;;;;;;;;;-1:-1:-1;6973:31:0;;;;;;;;;;;6903:23;;;;;;;;;;;;;;;;6359:31;;;;;;;;;;;;;;;;17344:225;;;;;;;;;;-1:-1:-1;17344:225:0;;;;;:::i;:::-;;:::i;7045:30::-;;;;;;;;;;-1:-1:-1;7045:30:0;;;;;;;;6032:45;;;;;;;;;;-1:-1:-1;6032:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;3493:124;;;;;;;;;;;;;:::i;13124:548::-;;;;;;;;;;-1:-1:-1;13124:548:0;;;;;:::i;:::-;;:::i;5967:50::-;;;;;;;;;;;;;;;;5906:48;;;;;;;;;;;;;;;;6754:33;;;;;;;;;;-1:-1:-1;6754:33:0;;;;-1:-1:-1;;;;;6754:33:0;;;8600:78;;;;;;;;;;-1:-1:-1;8652:7:0;8670:5;-1:-1:-1;;;;;8670:5:0;8600:78;;6205:48;;;;;;;;;;-1:-1:-1;6205:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8427:84;;;;;;;;;;-1:-1:-1;8501:7:0;;;;;;;;;;;;-1:-1:-1;;;8501:7:0;;;;8427:84;;6321:31;;;;;;;;;;;;;;;;17976:491;;;;;;;;;;-1:-1:-1;17976:491:0;;;;;:::i;:::-;;:::i;14024:79::-;;;;;;;;;;;;;:::i;6827:29::-;;;;;;;;;;;;;;;9179:156;;;;;;;;;;-1:-1:-1;9179:156:0;;;;;:::i;:::-;;:::i;2909:138::-;;;;;;;;;;-1:-1:-1;2909:138:0;;;;;:::i;:::-;;:::i;7011:25::-;;;;;;;;;;;;;;;;6260:52;;;;;;;;;;-1:-1:-1;6260:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8684:133;;;;;;;;;;-1:-1:-1;8684:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8786:19:0;;;8768:7;8786:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8684:133;18475:369;;;;;;;;;;-1:-1:-1;18475:369:0;;;;;:::i;:::-;;:::i;6712:35::-;;;;;;;;;;-1:-1:-1;6712:35:0;;;;-1:-1:-1;;;;;6712:35:0;;;17577:391;;;;;;;;;;-1:-1:-1;17577:391:0;;;;;:::i;:::-;;:::i;3055:204::-;;;;;;;;;;-1:-1:-1;3055:204:0;;;;;:::i;:::-;;:::i;10044:320::-;;;;;;;;;;-1:-1:-1;10044:320:0;;;;;:::i;:::-;;:::i;3625:109::-;;;;;;;;;;-1:-1:-1;3625:109:0;;;;;:::i;:::-;;:::i;6796:24::-;;;;;;;;;;-1:-1:-1;6796:24:0;;;;-1:-1:-1;;;;;6796:24:0;;;13935:81;;;;;;;;;;;;;:::i;6433:26::-;;;;;;;;;;;;;;;;3378:107;;;;;;;;;;-1:-1:-1;3378:107:0;;;;;:::i;:::-;;:::i;6935:31::-;;;;;;;;;;-1:-1:-1;6935:31:0;;;;;;;;16280:373;2850:24;2863:10;2850:12;:24::i;:::-;2842:48;;;;-1:-1:-1;;;2842:48:0;;;;;;;:::i;:::-;;;;;;;;;16415:3:::1;16396:22:::0;::::1;16388:71;;;;-1:-1:-1::0;;;16388:71:0::1;;;;;;;:::i;:::-;16475:9;16470:176;16488:20:::0;;::::1;16470:176;;;16566:6;16530:19;:33;16550:9;;16560:1;16550:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16530:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16530:33:0;:42;;-1:-1:-1;;16530:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16592::::1;16613:9:::0;;16623:1;16613:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16592:42;::::0;;-1:-1:-1;;;;;6169:32:1;;;6151:51;;6245:14;;6238:22;6233:2;6218:18;;6211:50;6124:18;16592:42:0::1;;;;;;;16510:3;::::0;::::1;:::i;:::-;;;16470:176;;;;16280:373:::0;;;:::o;15551:353::-;2850:24;2863:10;2850:12;:24::i;:::-;2842:48;;;;-1:-1:-1;;;2842:48:0;;;;;;;:::i;:::-;15678:3:::1;15659:22:::0;::::1;15651:71;;;;-1:-1:-1::0;;;15651:71:0::1;;;;;;;:::i;:::-;15738:9;15733:164;15751:20:::0;;::::1;15733:164;;;15821:6;15793:11;:25;15805:9;;15815:1;15805:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15793:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15793:25:0;:34;;-1:-1:-1;;15793:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15847:38:::1;15864:9:::0;;15874:1;15864:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15847:38;::::0;;-1:-1:-1;;;;;6169:32:1;;;6151:51;;6245:14;;6238:22;6233:2;6218:18;;6211:50;6124:18;15847:38:0::1;;;;;;;15773:3;::::0;::::1;:::i;:::-;;;15733:164;;9721:317:::0;3322:4;3357:5;-1:-1:-1;;;;;3357:5:0;2768:10;3346:16;2752:38;;;;-1:-1:-1;;;2752:38:0;;;;;;;:::i;:::-;9860:2:::1;9832:24;:30;;9824:78;;;::::0;-1:-1:-1;;;9824:78:0;;7080:2:1;9824:78:0::1;::::0;::::1;7062:21:1::0;7119:2;7099:18;;;7092:30;7158:34;7138:18;;;7131:62;-1:-1:-1;;;7209:18:1;;;7202:34;7253:19;;9824:78:0::1;6878:400:1::0;9824:78:0::1;9976:5;9947:24;9932:12;;:39;;;;:::i;:::-;9931:50;;;;:::i;:::-;9913:15;:68:::0;;;9997:33:::1;::::0;1223:25:1;;;9997:33:0::1;::::0;1211:2:1;1196:18;9997:33:0::1;;;;;;;;9721:317:::0;:::o;8825:216::-;8929:10;8900:4;8917:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8917:32:0;;;;;;;;;;:41;;;8974:37;8900:4;;8917:32;;8974:37;;;;8952:6;1223:25:1;;1211:2;1196:18;;1077:177;8974:37:0;;;;;;;;-1:-1:-1;9029:4:0;8825:216;;;;;:::o;13703:224::-;3322:4;3357:5;-1:-1:-1;;;;;3357:5:0;2768:10;3346:16;2752:38;;;;-1:-1:-1;;;2752:38:0;;;;;;;:::i;:::-;13767:11:::1;::::0;::::1;;13766:12;13758:44;;;::::0;-1:-1:-1;;;13758:44:0;;7880:2:1;13758:44:0::1;::::0;::::1;7862:21:1::0;7919:2;7899:18;;;7892:30;-1:-1:-1;;;7938:18:1;;;7931:50;7998:18;;13758:44:0::1;7678:344:1::0;13758:44:0::1;13813:11;:18:::0;;-1:-1:-1;;13813:18:0::1;13827:4;13813:18:::0;;::::1;::::0;;;13855:15:::1;13842:10;:28:::0;13886:33:::1;::::0;2389:41:1;;;13886:33:0::1;::::0;2377:2:1;2362:18;13886:33:0::1;;;;;;;;13703:224::o:0;9343:370::-;-1:-1:-1;;;;;9463:19:0;;9443:4;9463:19;;;:11;:19;;;;;;;;9483:10;9463:31;;;;;;;;-1:-1:-1;;9463:52:0;9460:186;;9565:69;;;;;;;;;;;-1:-1:-1;;;9565:69:0;;;;;;;;-1:-1:-1;;;;;9565:19:0;;-1:-1:-1;9565:19:0;;;:11;:19;;;;;9585:10;9565:31;;;;;;;;;;:69;;9601:6;;9565:35;:69::i;:::-;-1:-1:-1;;;;;9531:19:0;;;;;;:11;:19;;;;;;;;9551:10;9531:31;;;;;;;:103;9460:186;9665:40;9679:6;9687:9;9698:6;9665:13;:40::i;:::-;9658:47;;9343:370;;;;;;:::o;18856:138::-;18970:9;:15;;;;5599:42;18909:7;18952:15;;;;;18937:12;;18909:7;;18970:15;18937:30;;18952:15;18937:30;:::i;:::-;:48;;;;:::i;:::-;18929:57;;18856:138;:::o;15912:360::-;2850:24;2863:10;2850:12;:24::i;:::-;2842:48;;;;-1:-1:-1;;;2842:48:0;;;;;;;:::i;:::-;16043:3:::1;16024:22:::0;::::1;16016:71;;;;-1:-1:-1::0;;;16016:71:0::1;;;;;;;:::i;:::-;16103:9;16098:167;16116:20:::0;;::::1;16098:167;;;16190:6;16158:15;:29;16174:9;;16184:1;16174:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16158:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16158:29:0;:38;;-1:-1:-1;;16158:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16216:37:::1;16232:9:::0;;16242:1;16232:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16216:37;::::0;;-1:-1:-1;;;;;6169:32:1;;;6151:51;;6245:14;;6238:22;6233:2;6218:18;;6211:50;6124:18;16216:37:0::1;;;;;;;16138:3;::::0;::::1;:::i;:::-;;;16098:167;;9049:122:::0;9104:4;9128:35;9136:7;-1:-1:-1;;9128:7:0;:35::i;17344:225::-;2850:24;2863:10;2850:12;:24::i;:::-;2842:48;;;;-1:-1:-1;;;2842:48:0;;;;;;;:::i;:::-;17444:14:::1;:22:::0;;;17477:13:::1;:20:::0;;;17508:18:::1;:27:::0;;;17548:13:::1;:11;:13::i;:::-;17344:225:::0;;;:::o;3493:124::-;3322:4;3357:5;-1:-1:-1;;;;;3357:5:0;2768:10;3346:16;2752:38;;;;-1:-1:-1;;;2752:38:0;;;;;;;:::i;:::-;3574:5:::1;::::0;;3555:25:::1;::::0;-1:-1:-1;;;;;3574:5:0;;::::1;::::0;3555:25:::1;::::0;::::1;3607:1;3591:18:::0;;-1:-1:-1;;;;;;3591:18:0::1;::::0;;3493:124::o;13124:548::-;13216:12;2850:24;2863:10;2850:12;:24::i;:::-;2842:48;;;;-1:-1:-1;;;2842:48:0;;;;;;;:::i;:::-;13273:4:::1;-1:-1:-1::0;;;;;13249:29:0;::::1;::::0;13241:69:::1;;;::::0;-1:-1:-1;;;13241:69:0;;8362:2:1;13241:69:0::1;::::0;::::1;8344:21:1::0;8401:2;8381:18;;;8374:30;8440;8420:18;;;8413:58;8488:18;;13241:69:0::1;8160:352:1::0;13241:69:0::1;13340:4;-1:-1:-1::0;;;;;13324:20:0::1;:12;-1:-1:-1::0;;;;;13324:20:0::1;::::0;13321:119:::1;;13386:10;::::0;:21:::1;::::0;13399:8:::1;13386:21;:::i;:::-;13368:15;:39;13360:68;;;::::0;-1:-1:-1;;;13360:68:0;;8849:2:1;13360:68:0::1;::::0;::::1;8831:21:1::0;8888:2;8868:18;;;8861:30;-1:-1:-1;;;8907:18:1;;;8900:47;8964:18;;13360:68:0::1;8647:341:1::0;13360:68:0::1;13455:6;13465:1;13455:11:::0;13452:95:::1;;13491:44;::::0;-1:-1:-1;;;13491:44:0;;13529:4:::1;13491:44;::::0;::::1;3319:51:1::0;-1:-1:-1;;;;;13491:29:0;::::1;::::0;::::1;::::0;3292:18:1;;13491:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13482:53;;13452:95;13564:32;::::0;;-1:-1:-1;;;;;9374:32:1;;9356:51;;9438:2;9423:18;;9416:34;;;13564:32:0::1;::::0;9329:18:1;13564:32:0::1;;;;;;;13616:48;::::0;-1:-1:-1;;;13616:48:0;;13645:10:::1;13616:48;::::0;::::1;9356:51:1::0;9423:18;;;9416:34;;;-1:-1:-1;;;;;13616:28:0;::::1;::::0;::::1;::::0;9329:18:1;;13616:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17976:491::-:0;3322:4;3357:5;-1:-1:-1;;;;;3357:5:0;2768:10;3346:16;2752:38;;;;-1:-1:-1;;;2752:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18099:35:0;::::1;18091:91;;;::::0;-1:-1:-1;;;18091:91:0;;9913:2:1;18091:91:0::1;::::0;::::1;9895:21:1::0;9952:2;9932:18;;;9925:30;9991:34;9971:18;;;9964:62;-1:-1:-1;;;10042:18:1;;;10035:42;10094:19;;18091:91:0::1;9711:408:1::0;18091:91:0::1;-1:-1:-1::0;;;;;18201:33:0;::::1;18193:87;;;::::0;-1:-1:-1;;;18193:87:0;;10326:2:1;18193:87:0::1;::::0;::::1;10308:21:1::0;10365:2;10345:18;;;10338:30;10404:34;10384:18;;;10377:62;-1:-1:-1;;;10455:18:1;;;10448:40;10505:19;;18193:87:0::1;10124:406:1::0;18193:87:0::1;18293:20;:44:::0;;-1:-1:-1;;;;;18293:44:0;;::::1;-1:-1:-1::0;;;;;;18293:44:0;;::::1;::::0;::::1;::::0;;;18348:18:::1;:40:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;18406:53:::1;::::0;;10747:34:1;;;10812:2;10797:18;;10790:43;;;;18406:53:0::1;::::0;10682:18:1;18406:53:0::1;;;;;;;;17976:491:::0;;:::o;14024:79::-;3322:4;3357:5;-1:-1:-1;;;;;3357:5:0;2768:10;3346:16;2752:38;;;;-1:-1:-1;;;2752:38:0;;;;;;;:::i;:::-;14077:11:::1;:18:::0;;-1:-1:-1;;14077:18:0::1;;;::::0;;14024:79::o;9179:156::-;9259:4;9283:44;9297:10;9309:9;9320:6;9283:13;:44::i;2909:138::-;3322:4;3357:5;-1:-1:-1;;;;;3357:5:0;2768:10;3346:16;2752:38;;;;-1:-1:-1;;;2752:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2971:19:0;::::1;;::::0;;;:14:::1;:19;::::0;;;;;;;;:26;;-1:-1:-1;;2971:26:0::1;2993:4;2971:26:::0;;::::1;::::0;;;3013;;6151:51:1;;;6218:18;;;6211:50;3013:26:0::1;::::0;6124:18:1;3013:26:0::1;5983:284:1::0;18475:369:0;3322:4;3357:5;-1:-1:-1;;;;;3357:5:0;2768:10;3346:16;2752:38;;;;-1:-1:-1;;;2752:38:0;;;;;;;:::i;:::-;18589:13:::1;5831:2;18589;:13;:::i;:::-;18585:17;::::0;:1:::1;:17;:::i;:::-;18574:7;:28;;18566:70;;;::::0;-1:-1:-1;;;18566:70:0;;12429:2:1;18566:70:0::1;::::0;::::1;12411:21:1::0;12468:2;12448:18;;;12441:30;12507:31;12487:18;;;12480:59;12556:18;;18566:70:0::1;12227:353:1::0;18566:70:0::1;18679:2;18666:12;;:15;;;;:::i;:::-;18655:7;:27;18647:55;;;::::0;-1:-1:-1;;;18647:55:0;;12787:2:1;18647:55:0::1;::::0;::::1;12769:21:1::0;12826:2;12806:18;;;12799:30;-1:-1:-1;;;12845:18:1;;;12838:45;12900:18;;18647:55:0::1;12585:339:1::0;18647:55:0::1;18715:11;:22:::0;;-1:-1:-1;;18715:22:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18748:13:::1;:23:::0;;;18789:47:::1;::::0;;13097:25:1;;;18715:22:0::1;18824:11:::0;;;13165:14:1;13158:22;13153:2;13138:18;;13131:50;18789:47:0::1;::::0;13070:18:1;18789:47:0::1;12929:258:1::0;17577:391:0;3322:4;3357:5;-1:-1:-1;;;;;3357:5:0;2768:10;3346:16;2752:38;;;;-1:-1:-1;;;2752:38:0;;;;;;;:::i;:::-;17719:12:::1;:28:::0;;;17758:12:::1;:28:::0;;;17797:10:::1;:24:::0;;;17832:7:::1;:18:::0;;;17842:8;17810:11;17872:29:::1;17773:13:::0;17734;17872:29:::1;:::i;:::-;:43;;;;:::i;:::-;:54;;;;:::i;:::-;17861:8;:65:::0;17947:13:::1;:11;:13::i;3055:204::-:0;3322:4;3357:5;-1:-1:-1;;;;;3357:5:0;2768:10;3346:16;2752:38;;;;-1:-1:-1;;;2752:38:0;;;;;;;:::i;:::-;3134:5:::1;::::0;-1:-1:-1;;;;;3134:5:0;;::::1;3127:12:::0;;::::1;::::0;3119:51:::1;;;::::0;-1:-1:-1;;;3119:51:0;;13394:2:1;3119:51:0::1;::::0;::::1;13376:21:1::0;13433:2;13413:18;;;13406:30;13472:28;13452:18;;;13445:56;13518:18;;3119:51:0::1;13192:350:1::0;3119:51:0::1;-1:-1:-1::0;;;;;3181:19:0;::::1;3203:5;3181:19:::0;;;:14:::1;:19;::::0;;;;;;;:27;;-1:-1:-1;;3181:27:0::1;::::0;;3224;;6151:51:1;;;6218:18;;;6211:50;;;;3224:27:0::1;::::0;6124:18:1;3224:27:0::1;5983:284:1::0;10044:320:0;3322:4;3357:5;-1:-1:-1;;;;;3357:5:0;2768:10;3346:16;2752:38;;;;-1:-1:-1;;;2752:38:0;;;;;;;:::i;:::-;10181:2:::1;10152:25;:31;;10144:84;;;::::0;-1:-1:-1;;;10144:84:0;;13749:2:1;10144:84:0::1;::::0;::::1;13731:21:1::0;13788:2;13768:18;;;13761:30;13827:34;13807:18;;;13800:62;-1:-1:-1;;;13878:18:1;;;13871:39;13927:19;;10144:84:0::1;13547:405:1::0;10144:84:0::1;10300:5;10270:25;10255:12;;:40;;;;:::i;:::-;10254:51;;;;:::i;:::-;10239:12;:66:::0;;;10321:35:::1;::::0;1223:25:1;;;10321:35:0::1;::::0;1211:2:1;1196:18;10321:35:0::1;1077:177:1::0;3625:109:0;3322:4;3357:5;-1:-1:-1;;;;;3357:5:0;2768:10;3346:16;2752:38;;;;-1:-1:-1;;;2752:38:0;;;;;;;:::i;:::-;3698:28:::1;3717:8;3698:18;:28::i;:::-;3625:109:::0;:::o;13935:81::-;3322:4;3357:5;-1:-1:-1;;;;;3357:5:0;2768:10;3346:16;2752:38;;;;-1:-1:-1;;;2752:38:0;;;;;;;:::i;:::-;13989:11:::1;:19:::0;;-1:-1:-1;;13989:19:0::1;::::0;;13935:81::o;3378:107::-;-1:-1:-1;;;;;3458:19:0;3434:4;3458:19;;;:14;:19;;;;;;;;;3378:107::o;514:192::-;600:7;636:12;628:6;;;;620:29;;;;-1:-1:-1;;;620:29:0;;;;;;;;:::i;:::-;-1:-1:-1;660:9:0;672:5;676:1;672;:5;:::i;:::-;660:17;514:192;-1:-1:-1;;;;;514:192:0:o;10372:1158::-;10484:6;;10464:4;;10484:6;;10481:63;;;10500:41;10515:6;10523:9;10534:6;10500:14;:41::i;:::-;10493:48;;;;10481:63;-1:-1:-1;;;;;10560:22:0;;;;;;:14;:22;;;;;;;;10559:23;:53;;;;-1:-1:-1;;;;;;10587:25:0;;;;;;:14;:25;;;;;;;;10586:26;10559:53;10556:127;;;10636:11;;;;10628:43;;;;-1:-1:-1;;;10628:43:0;;14159:2:1;10628:43:0;;;14141:21:1;14198:2;14178:18;;;14171:30;-1:-1:-1;;;14217:18:1;;;14210:50;14277:18;;10628:43:0;13957:344:1;10628:43:0;-1:-1:-1;;;;;10700:22:0;;;;;;:14;:22;;;;;;;;10699:23;:55;;;;-1:-1:-1;;;;;;10727:27:0;;;;;;:19;:27;;;;;;;;10726:28;10699:55;:90;;;;-1:-1:-1;;;;;;10759:30:0;;;;;;:19;:30;;;;;;;;10758:31;10699:90;:111;;;;;10806:4;-1:-1:-1;;;;;10793:17:0;:9;-1:-1:-1;;;;;10793:17:0;;;10699:111;10695:230;;;10870:15;;-1:-1:-1;;;;;10836:20:0;;;;;;:9;:20;;;;;;:29;;10859:6;;10836:29;:::i;:::-;10835:50;;10827:86;;;;-1:-1:-1;;;10827:86:0;;14508:2:1;10827:86:0;;;14490:21:1;14547:2;14527:18;;;14520:30;14586:26;14566:18;;;14559:54;14630:18;;10827:86:0;14306:348:1;10827:86:0;11001:12;;10991:6;:22;;10990:51;;;-1:-1:-1;;;;;;11018:23:0;;;;;;:15;:23;;;;;;;;10990:51;:81;;;-1:-1:-1;;;;;;11045:26:0;;;;;;:15;:26;;;;;;;;10990:81;10982:115;;;;-1:-1:-1;;;10982:115:0;;14861:2:1;10982:115:0;;;14843:21:1;14900:2;14880:18;;;14873:30;-1:-1:-1;;;14919:18:1;;;14912:51;14980:18;;10982:115:0;14659:345:1;10982:115:0;11113:16;:14;:16::i;:::-;11110:35;;;11132:10;:8;:10::i;:::-;11177:53;;;;;;;;;;;-1:-1:-1;;;11177:53:0;;;;;;;;-1:-1:-1;;;;;11177:17:0;;-1:-1:-1;11177:17:0;;;:9;:17;;;;;;;;:53;;11199:6;;11177:21;:53::i;:::-;-1:-1:-1;;;;;11157:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11269:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;11292:22:0;;;;;;:11;:22;;;;;;;;11269:45;11268:93;;11327:34;11335:6;11343;11351:9;11327:7;:34::i;:::-;11268:93;;;11318:6;11268:93;-1:-1:-1;;;;;11397:20:0;;;;;;:9;:20;;;;;;11243:118;;-1:-1:-1;11397:40:0;;11243:118;11397:24;:40::i;:::-;-1:-1:-1;;;;;11374:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11457:43;;;;;;-1:-1:-1;;;;;;;;;;;11457:43:0;;;11485:14;1223:25:1;;1211:2;1196:18;;1077:177;11457:43:0;;;;;;;;-1:-1:-1;11518:4:0;;10372:1158;-1:-1:-1;;;;10372:1158:0:o;16661:675::-;16752:3;16712:36;16744:3;16712:27;16725:13;;16712:8;;:12;;:27;;;;:::i;:::-;:31;;:36::i;:::-;:43;;16704:87;;;;-1:-1:-1;;;16704:87:0;;15211:2:1;16704:87:0;;;15193:21:1;15250:2;15230:18;;;15223:30;15289:33;15269:18;;;15262:61;15340:18;;16704:87:0;15009:355:1;16704:87:0;16851:3;16810:37;16843:3;16810:28;16823:14;;16810:8;;:12;;:28;;;;:::i;:37::-;:44;;16802:89;;;;-1:-1:-1;;;16802:89:0;;15571:2:1;16802:89:0;;;15553:21:1;;;15590:18;;;15583:30;15649:34;15629:18;;;15622:62;15701:18;;16802:89:0;15369:356:1;16802:89:0;16967:3;16910:53;16959:3;16910:44;16940:13;;16923:14;;:30;;;;:::i;:::-;16910:8;;;:12;:44::i;:53::-;:60;;16902:109;;;;-1:-1:-1;;;16902:109:0;;15932:2:1;16902:109:0;;;15914:21:1;15971:2;15951:18;;;15944:30;16010:34;15990:18;;;15983:62;-1:-1:-1;;;16061:18:1;;;16054:34;16105:19;;16902:109:0;15730:400:1;16902:109:0;17075:3;17030:41;17067:3;17030:32;17043:18;;17030:8;;:12;;:32;;;;:::i;:41::-;:48;;17022:97;;;;-1:-1:-1;;;17022:97:0;;16337:2:1;17022:97:0;;;16319:21:1;16376:2;16356:18;;;16349:30;16415:34;16395:18;;;16388:62;-1:-1:-1;;;16466:18:1;;;16459:34;16510:19;;17022:97:0;16135:400:1;17022:97:0;17137:191;17154:36;17186:3;17154:27;17167:13;;17154:8;;:12;;:27;;;;:::i;:36::-;17212:37;17245:3;17212:28;17225:14;;17212:8;;:12;;:28;;;;:::i;:37::-;17271:41;17308:3;17271:32;17284:18;;17271:8;;:12;;:32;;;;:::i;:41::-;17137:191;;;16760:4:1;16748:17;;;16730:36;;16802:17;;;16797:2;16782:18;;16775:45;16856:17;;16836:18;;;16829:45;;;;16718:2;16703:18;17137:191:0;16540:340:1;3742:185:0;-1:-1:-1;;;;;3816:22:0;;3808:31;;;;;;3876:5;;;3855:37;;-1:-1:-1;;;;;3855:37:0;;;;3876:5;;;3855:37;;;3903:5;:16;;-1:-1:-1;;;;;;3903:16:0;-1:-1:-1;;;;;3903:16:0;;;;;;;;;;3742:185::o;11542:330::-;11672:53;;;;;;;;;;;-1:-1:-1;;;11672:53:0;;;;;;;;-1:-1:-1;;;;;11672:17:0;;11635:4;11672:17;;;:9;:17;;;;;;;:53;;11694:6;;11672:21;:53::i;:::-;-1:-1:-1;;;;;11652:17:0;;;;;;;:9;:17;;;;;;:73;;;;11759:20;;;;;;;:32;;11784:6;11759:24;:32::i;:::-;-1:-1:-1;;;;;11736:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11807:35;;;;;;-1:-1:-1;;;;;;;;;;;11807:35:0;;;11835:6;1223:25:1;;1211:2;1196:18;;1077:177;11807:35:0;;;;;;;;-1:-1:-1;11860:4:0;11542:330;;;;;:::o;12919:197::-;12968:4;12992:10;-1:-1:-1;;;;;13006:4:0;12992:18;;;;;:38;;-1:-1:-1;13024:6:0;;;;13023:7;12992:38;:62;;;;-1:-1:-1;13043:11:0;;;;12992:62;:116;;;;-1:-1:-1;;13095:13:0;;13085:4;13067:24;;;;:9;:24;;;;;;:41;;;12919:197::o;14111:1432::-;7179:6;:13;;-1:-1:-1;;7179:13:0;7188:4;7179:13;;;14195:7:::1;::::0;14184:8:::1;::::0;7179:6;;14184:18:::1;::::0;::::1;:::i;:::-;14162:40:::0;-1:-1:-1;14215:23:0::1;14273:15;14162:40:::0;14287:1:::1;14273:15;:::i;:::-;14258:12;;14242:13;;:28;;;;:::i;:::-;14241:48;;;;:::i;:::-;14215:74;;14300:20;14339:15;14323:13;;:31;;;;:::i;:::-;14391:16;::::0;;14405:1:::1;14391:16:::0;;;;;::::1;::::0;;14300:54;;-1:-1:-1;14367:21:0::1;::::0;14391:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14391:16:0::1;14367:40;;14436:4;14418;14423:1;14418:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;14418:23:0::1;;;-1:-1:-1::0;;;;;14418:23:0::1;;;::::0;::::1;14462:4;14452;14457:1;14452:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14452:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;14479:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;14479:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14551:12;;14479:6:::1;::::0;14594:4;;14621::::1;::::0;14641:15:::1;::::0;14479:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;14764:12:0::1;::::0;14700:21:::1;::::0;-1:-1:-1;14764:16:0::1;::::0;-1:-1:-1;14779:1:0::1;::::0;14764:16:::1;:::i;:::-;14749:32;::::0;:11;:32:::1;:::i;:::-;14735:46:::0;-1:-1:-1;14802:26:0::1;14861:15;14735:46:::0;14875:1:::1;14861:15;:::i;:::-;14844:12;::::0;14832:24:::1;::::0;:9;:24:::1;:::i;:::-;14831:46;;;;:::i;:::-;14802:75;;14888:26;14946:11;14930:12;;14918:9;:24;;;;:::i;:::-;14917:40;;;;:::i;:::-;14888:69;;14968:24;15022:11;15008:10;;14996:9;:22;;;;:::i;:::-;14995:38;;;;:::i;:::-;15054:20;::::0;15046:58:::1;::::0;14968:65;;-1:-1:-1;;;;;;15054:20:0::1;::::0;15046:58;::::1;;;::::0;15085:18;;15054:20:::1;15046:58:::0;15054:20;15046:58;15085:18;15054:20;15046:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;15123:18:0::1;::::0;15115:54:::1;::::0;-1:-1:-1;;;;;15123:18:0;;::::1;::::0;15115:54;::::1;;;::::0;15152:16;;15123:18:::1;15115:54:::0;15123:18;15115:54;15152:16;15123:18;15115:54;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;15185:19:0;;15182:354:::1;;15220:6;::::0;:236:::1;::::0;-1:-1:-1;;;15220:236:0;;15296:4:::1;15220:236;::::0;::::1;18343:34:1::0;;;18393:18;;;18386:34;;;15220:6:0::1;18436:18:1::0;;;18429:34;;;18479:18;;;18472:34;18522:19;;;18515:44;15426:15:0::1;18575:19:1::0;;;18568:35;-1:-1:-1;;;;;15220:6:0;;::::1;::::0;:22:::1;::::0;15250:18;;18277:19:1;;15220:236:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15476:48:0::1;::::0;;19099:25:1;;;19155:2;19140:18;;19133:34;;;15476:48:0::1;::::0;-1:-1:-1;19072:18:1;15476:48:0::1;;;;;;;15182:354;-1:-1:-1::0;;7197:6:0;:14;;-1:-1:-1;;7197:14:0;;;-1:-1:-1;;;;;;14111:1432:0:o;11880:1031::-;11966:7;11989:11;;;:28;;-1:-1:-1;12004:8:0;;:13;11989:28;11986:72;;;-1:-1:-1;12040:6:0;12033:13;;11986:72;12091:18;;-1:-1:-1;;;;;12138:4:0;12125:17;;;;;;12122:154;;-1:-1:-1;12172:14:0;;12122:154;;;12217:4;-1:-1:-1;;;;;12207:14:0;:6;-1:-1:-1;;;;;12207:14:0;;12204:72;;-1:-1:-1;12251:13:0;;12204:72;12288:17;12308:62;12349:20;6590:4;12366:3;12349:20;:::i;:::-;12308:36;12333:10;12308:20;12319:8;;12308:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;12288:82;;12381:18;12402:36;12429:8;;12402:22;12416:7;;12402:9;:13;;:22;;;;:::i;:36::-;12381:57;-1:-1:-1;12449:22:0;12474:25;:9;12381:57;12474:13;:25::i;:::-;12449:50;-1:-1:-1;12515:18:0;;12512:187;;12594:4;12576:24;;;;:9;:24;;;;;;:44;;12605:14;12576:28;:44::i;:::-;12567:4;12549:24;;;;:9;:24;;;;;;;:71;;;;12640:47;;-1:-1:-1;;;;;12640:47:0;;;-1:-1:-1;;;;;;;;;;;12640:47:0;;;12672:14;1223:25:1;;1211:2;1196:18;;1077:177;12640:47:0;;;;;;;;12512:187;12722:14;;12719:144;;12767:12;;:28;;12784:10;12767:16;:28::i;:::-;12752:12;:43;12815:34;;1223:25:1;;;5672:42:0;;-1:-1:-1;;;;;12815:34:0;;;-1:-1:-1;;;;;;;;;;;12815:34:0;1211:2:1;1196:18;12815:34:0;;;;;;;12719:144;12882:21;:6;12893:9;12882:10;:21::i;:::-;12875:28;11880:1031;-1:-1:-1;;;;;;;;11880:1031:0:o;185:181::-;243:7;;275:5;279:1;275;:5;:::i;:::-;263:17;;304:1;299;:6;;291:46;;;;-1:-1:-1;;;291:46:0;;19380:2:1;291:46:0;;;19362:21:1;19419:2;19399:18;;;19392:30;19458:29;19438:18;;;19431:57;19505:18;;291:46:0;19178:351:1;712:250:0;770:7;794:1;799;794:6;790:47;;-1:-1:-1;824:1:0;817:8;;790:47;849:9;861:5;865:1;861;:5;:::i;:::-;849:17;-1:-1:-1;894:1:0;885:5;889:1;849:17;885:5;:::i;:::-;:10;877:56;;;;-1:-1:-1;;;877:56:0;;19736:2:1;877:56:0;;;19718:21:1;19775:2;19755:18;;;19748:30;19814:34;19794:18;;;19787:62;-1:-1:-1;;;19865:18:1;;;19858:31;19906:19;;877:56:0;19534:397:1;968:132:0;1026:7;1053:39;1057:1;1060;1053:39;;;;;;;;;;;;;;;;;:3;:39::i;372:136::-;430:7;457:43;461:1;464;457:43;;;;;;;;;;;;;;;;;:3;:43::i;1106:189::-;1192:7;1227:12;1220:5;1212:28;;;;-1:-1:-1;;;1212:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1251:9:0;1263:5;1267:1;1263;:5;:::i;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:750;229:6;237;245;298:2;286:9;277:7;273:23;269:32;266:52;;;314:1;311;304:12;266:52;354:9;341:23;383:18;424:2;416:6;413:14;410:34;;;440:1;437;430:12;410:34;478:6;467:9;463:22;453:32;;523:7;516:4;512:2;508:13;504:27;494:55;;545:1;542;535:12;494:55;585:2;572:16;611:2;603:6;600:14;597:34;;;627:1;624;617:12;597:34;682:7;675:4;665:6;662:1;658:14;654:2;650:23;646:34;643:47;640:67;;;703:1;700;693:12;640:67;734:4;726:13;;;;-1:-1:-1;758:6:1;-1:-1:-1;;799:20:1;;786:34;829:28;786:34;829:28;:::i;:::-;876:5;866:15;;;137:750;;;;;:::o;892:180::-;951:6;1004:2;992:9;983:7;979:23;975:32;972:52;;;1020:1;1017;1010:12;972:52;-1:-1:-1;1043:23:1;;892:180;-1:-1:-1;892:180:1:o;1259:548::-;1371:4;1400:2;1429;1418:9;1411:21;1461:6;1455:13;1504:6;1499:2;1488:9;1484:18;1477:34;1529:1;1539:140;1553:6;1550:1;1547:13;1539:140;;;1648:14;;;1644:23;;1638:30;1614:17;;;1633:2;1610:26;1603:66;1568:10;;1539:140;;;1543:3;1728:1;1723:2;1714:6;1703:9;1699:22;1695:31;1688:42;1798:2;1791;1787:7;1782:2;1774:6;1770:15;1766:29;1755:9;1751:45;1747:54;1739:62;;;;1259:548;;;;:::o;1812:173::-;1880:20;;-1:-1:-1;;;;;1929:31:1;;1919:42;;1909:70;;1975:1;1972;1965:12;1909:70;1812:173;;;:::o;1990:254::-;2058:6;2066;2119:2;2107:9;2098:7;2094:23;2090:32;2087:52;;;2135:1;2132;2125:12;2087:52;2158:29;2177:9;2158:29;:::i;:::-;2148:39;2234:2;2219:18;;;;2206:32;;-1:-1:-1;;;1990:254:1:o;2441:328::-;2518:6;2526;2534;2587:2;2575:9;2566:7;2562:23;2558:32;2555:52;;;2603:1;2600;2593:12;2555:52;2626:29;2645:9;2626:29;:::i;:::-;2616:39;;2674:38;2708:2;2697:9;2693:18;2674:38;:::i;:::-;2664:48;;2759:2;2748:9;2744:18;2731:32;2721:42;;2441:328;;;;;:::o;2774:186::-;2833:6;2886:2;2874:9;2865:7;2861:23;2857:32;2854:52;;;2902:1;2899;2892:12;2854:52;2925:29;2944:9;2925:29;:::i;3381:316::-;3458:6;3466;3474;3527:2;3515:9;3506:7;3502:23;3498:32;3495:52;;;3543:1;3540;3533:12;3495:52;-1:-1:-1;;3566:23:1;;;3636:2;3621:18;;3608:32;;-1:-1:-1;3687:2:1;3672:18;;;3659:32;;3381:316;-1:-1:-1;3381:316:1:o;3910:260::-;3978:6;3986;4039:2;4027:9;4018:7;4014:23;4010:32;4007:52;;;4055:1;4052;4045:12;4007:52;4078:29;4097:9;4078:29;:::i;:::-;4068:39;;4126:38;4160:2;4149:9;4145:18;4126:38;:::i;:::-;4116:48;;3910:260;;;;;:::o;4175:309::-;4240:6;4248;4301:2;4289:9;4280:7;4276:23;4272:32;4269:52;;;4317:1;4314;4307:12;4269:52;4356:9;4343:23;4375:28;4397:5;4375:28;:::i;4489:385::-;4575:6;4583;4591;4599;4652:3;4640:9;4631:7;4627:23;4623:33;4620:53;;;4669:1;4666;4659:12;4620:53;-1:-1:-1;;4692:23:1;;;4762:2;4747:18;;4734:32;;-1:-1:-1;4813:2:1;4798:18;;4785:32;;4864:2;4849:18;4836:32;;-1:-1:-1;4489:385:1;-1:-1:-1;4489:385:1:o;5105:335::-;5307:2;5289:21;;;5346:2;5326:18;;;5319:30;-1:-1:-1;;;5380:2:1;5365:18;;5358:41;5431:2;5416:18;;5105:335::o;5445:401::-;5647:2;5629:21;;;5686:2;5666:18;;;5659:30;5725:34;5720:2;5705:18;;5698:62;-1:-1:-1;;;5791:2:1;5776:18;;5769:35;5836:3;5821:19;;5445:401::o;5851:127::-;5912:10;5907:3;5903:20;5900:1;5893:31;5943:4;5940:1;5933:15;5967:4;5964:1;5957:15;6272:127;6333:10;6328:3;6324:20;6321:1;6314:31;6364:4;6361:1;6354:15;6388:4;6385:1;6378:15;6404:135;6443:3;6464:17;;;6461:43;;6484:18;;:::i;:::-;-1:-1:-1;6531:1:1;6520:13;;6404:135::o;6544:329::-;6746:2;6728:21;;;6785:1;6765:18;;;6758:29;-1:-1:-1;;;6818:2:1;6803:18;;6796:36;6864:2;6849:18;;6544:329::o;7283:168::-;7356:9;;;7387;;7404:15;;;7398:22;;7384:37;7374:71;;7425:18;;:::i;7456:217::-;7496:1;7522;7512:132;;7566:10;7561:3;7557:20;7554:1;7547:31;7601:4;7598:1;7591:15;7629:4;7626:1;7619:15;7512:132;-1:-1:-1;7658:9:1;;7456:217::o;8027:128::-;8094:9;;;8115:11;;;8112:37;;;8129:18;;:::i;8517:125::-;8582:9;;;8603:10;;;8600:36;;;8616:18;;:::i;8993:184::-;9063:6;9116:2;9104:9;9095:7;9091:23;9087:32;9084:52;;;9132:1;9129;9122:12;9084:52;-1:-1:-1;9155:16:1;;8993:184;-1:-1:-1;8993:184:1:o;9461:245::-;9528:6;9581:2;9569:9;9560:7;9556:23;9552:32;9549:52;;;9597:1;9594;9587:12;9549:52;9629:9;9623:16;9648:28;9670:5;9648:28;:::i;10844:422::-;10933:1;10976:5;10933:1;10990:270;11011:7;11001:8;10998:21;10990:270;;;11070:4;11066:1;11062:6;11058:17;11052:4;11049:27;11046:53;;;11079:18;;:::i;:::-;11129:7;11119:8;11115:22;11112:55;;;11149:16;;;;11112:55;11228:22;;;;11188:15;;;;10990:270;;;10994:3;10844:422;;;;;:::o;11271:806::-;11320:5;11350:8;11340:80;;-1:-1:-1;11391:1:1;11405:5;;11340:80;11439:4;11429:76;;-1:-1:-1;11476:1:1;11490:5;;11429:76;11521:4;11539:1;11534:59;;;;11607:1;11602:130;;;;11514:218;;11534:59;11564:1;11555:10;;11578:5;;;11602:130;11639:3;11629:8;11626:17;11623:43;;;11646:18;;:::i;:::-;-1:-1:-1;;11702:1:1;11688:16;;11717:5;;11514:218;;11816:2;11806:8;11803:16;11797:3;11791:4;11788:13;11784:36;11778:2;11768:8;11765:16;11760:2;11754:4;11751:12;11747:35;11744:77;11741:159;;;-1:-1:-1;11853:19:1;;;11885:5;;11741:159;11932:34;11957:8;11951:4;11932:34;:::i;:::-;12002:6;11998:1;11994:6;11990:19;11981:7;11978:32;11975:58;;;12013:18;;:::i;:::-;12051:20;;11271:806;-1:-1:-1;;;11271:806:1:o;12082:140::-;12140:5;12169:47;12210:4;12200:8;12196:19;12190:4;12169:47;:::i;17017:980::-;17279:4;17327:3;17316:9;17312:19;17358:6;17347:9;17340:25;17384:2;17422:6;17417:2;17406:9;17402:18;17395:34;17465:3;17460:2;17449:9;17445:18;17438:31;17489:6;17524;17518:13;17555:6;17547;17540:22;17593:3;17582:9;17578:19;17571:26;;17632:2;17624:6;17620:15;17606:29;;17653:1;17663:195;17677:6;17674:1;17671:13;17663:195;;;17742:13;;-1:-1:-1;;;;;17738:39:1;17726:52;;17833:15;;;;17798:12;;;;17774:1;17692:9;17663:195;;;-1:-1:-1;;;;;;;17914:32:1;;;;17909:2;17894:18;;17887:60;-1:-1:-1;;;17978:3:1;17963:19;17956:35;17875:3;17017:980;-1:-1:-1;;;17017:980:1:o;18614:306::-;18702:6;18710;18718;18771:2;18759:9;18750:7;18746:23;18742:32;18739:52;;;18787:1;18784;18777:12;18739:52;18816:9;18810:16;18800:26;;18866:2;18855:9;18851:18;18845:25;18835:35;;18910:2;18899:9;18895:18;18889:25;18879:35;;18614:306;;;;;:::o

Swarm Source

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