ETH Price: $2,527.64 (-0.20%)

Token

Kurai ($KURAI)
 

Overview

Max Total Supply

1,000,000 $KURAI

Holders

51

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 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:
Kurai

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-09
*/

// SPDX-License-Identifier: UNLICENSED
/*
Start LP: 2ETH locked 52 days

Tax: 4/4 

Socials:
https://t.me/KuraiETH                                            
https://twitter.com/KuraiETH                            
https://www.kuraitoken.com/
*/

pragma solidity =0.8.17;

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

interface IDexPair {
    event Sync(uint112 reserve0, uint112 reserve1);
    function sync() external;
}

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

interface IdexRouter {
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

}

abstract contract Ownable {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
contract Kurai is IERC20, Ownable
{
    //mapping
    mapping (address => uint) private _balances;
    mapping (address => mapping (address => uint)) private _allowances;
    mapping(address => bool) private excludedFromLimits;
    mapping(address => bool) public excludedFromFees;
    mapping(address=>bool) public isPair;
    //strings
    string private constant _name = 'Kurai';
    string private constant _symbol = '$KURAI';
    //uints
    uint public constant InitialSupply= 1000000 * 10**_decimals;
    uint public buyTax = 40;
    uint public sellTax = 40;
    uint public transferTax = 40;
    uint public liquidityTax=250;
    uint public projectTax=750;
    uint constant TAX_DENOMINATOR=1000;
    uint constant MAXTAXDENOMINATOR=10;
    uint public swapTreshold=1;
    uint public overLiquifyTreshold=14;
    uint private LaunchTimestamp = 0;
    uint8 private constant _decimals = 9;

    uint256 public maxTransactionAmount;
    uint256 public maxWalletBalance;

    IdexRouter private  _dexRouter;
    
    //addresses
    address private dexRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; 
    address private _dexPairAddress;
    address constant deadWallet=address(0xdead);
    address private projectWallet=0x0E32c098e5ad22a1845446d0a25Cc69566a3acbC;
    //modifiers

    modifier lockTheSwap {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }

    //bools
    bool private _isSwappingContractModifier;
    bool public manualSwap;

    
    constructor () {
        uint deployerBalance= InitialSupply;
        _balances[owner()] = deployerBalance;
        emit Transfer(address(0), owner(), deployerBalance);

        _dexRouter = IdexRouter(dexRouter);
        _dexPairAddress = IdexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        isPair[_dexPairAddress]=true;

        excludedFromFees[owner()]=true;
        excludedFromFees[dexRouter]=true;
        excludedFromFees[address(this)]=true;

        excludedFromLimits[owner()] = true;
        excludedFromLimits[deadWallet] = true;
        excludedFromLimits[address(this)] = true;
    }
    function _transfer(address sender, address recipient, uint amount) private{
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");
        if(excludedFromFees[sender] || excludedFromFees[recipient])
            _feelessTransfer(sender, recipient, amount);
        
        else{
            require(LaunchTimestamp>0,"trading not yet enabled");
            _taxedTransfer(sender,recipient,amount);
        }              
    }
    function _taxedTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        bool excludedAccount = excludedFromLimits[sender] || excludedFromLimits[recipient];
        if (
            isPair[sender] &&
            !excludedAccount
        ) {
            require(
                amount <= maxTransactionAmount,
                "Transfer amount exceeds the maxTxAmount."
            );
            uint256 contractBalanceRecepient = balanceOf(recipient);
            require(
                contractBalanceRecepient + amount <= maxWalletBalance,
                "Exceeds maximum wallet token amount."
            );
        } else if (
            isPair[recipient] &&
            !excludedAccount
        ) {
            require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxSellTransactionAmount.");
        }

        bool isBuy=isPair[sender];
        bool isSell=isPair[recipient];
        uint tax;
        if(isSell){
            tax=sellTax;
            }
        else if(isBuy){
            tax=buyTax;
        } else{
            uint256 contractBalanceRecepient = balanceOf(recipient);
            require(
                contractBalanceRecepient + amount <= maxWalletBalance,
                "Exceeds maximum wallet token amount."
            ); 
            tax=transferTax;
        }

        if((sender!=_dexPairAddress)&&(!manualSwap)&&(!_isSwappingContractModifier))
            _swapContractToken(false);
        
        uint contractToken=_calculateFee(amount, tax, projectTax+liquidityTax);
        uint taxedAmount=amount-contractToken;

        _balances[sender]-=amount;
        _balances[address(this)] += contractToken;
        _balances[recipient]+=taxedAmount;
        
        emit Transfer(sender,recipient,taxedAmount);
    }
    function _calculateFee(uint amount, uint tax, uint taxPercent) private pure returns (uint) {
        return (amount*tax*taxPercent) / (TAX_DENOMINATOR*TAX_DENOMINATOR);
    }
    function _feelessTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        _balances[sender]-=amount;
        _balances[recipient]+=amount;      
        emit Transfer(sender,recipient,amount);
    }
    function setSwapTreshold(uint newSwapTresholdPermille) external onlyOwner{
        require(newSwapTresholdPermille<=10);//MaxTreshold= 1%
        swapTreshold=newSwapTresholdPermille;
        emit SwapThresholdChange(newSwapTresholdPermille);
    }
    function SetOverLiquifiedTreshold(uint newOverLiquifyTresholdPermille) external onlyOwner{
        require(newOverLiquifyTresholdPermille<=1000);
        overLiquifyTreshold=newOverLiquifyTresholdPermille;
        emit OverLiquifiedThresholdChange(newOverLiquifyTresholdPermille);
    }
    function SetTaxes(uint buy, uint sell, uint transfer_, uint project,uint liquidity) external onlyOwner{
        uint maxTax=150;
        require(buy<=maxTax&&sell<=maxTax&&transfer_<=maxTax,"Tax exceeds maxTax");
        require(project+liquidity==TAX_DENOMINATOR,"Taxes don't add up to denominator");
        buyTax=buy;
        sellTax=sell;
        transferTax=transfer_;
        projectTax=project;
        liquidityTax=liquidity;
        emit OnSetTaxes(buy, sell, transfer_, project,liquidity);
    }
    
    function isOverLiquified() public view returns(bool){
        return _balances[_dexPairAddress]>getCirculatingSupply()*overLiquifyTreshold/1000;
    }
    function _swapContractToken(bool ignoreLimits) private lockTheSwap{
        uint contractBalance=_balances[address(this)];
        uint totalTax=liquidityTax+projectTax;
        uint tokenToSwap=_balances[_dexPairAddress]*swapTreshold/1000;
        if(totalTax==0)return;
        if(ignoreLimits)
            tokenToSwap=_balances[address(this)];
        else if(contractBalance<tokenToSwap)
            return;
        uint tokenForLiquidity=isOverLiquified()?0:(tokenToSwap*liquidityTax)/totalTax;

        uint tokenForProject= tokenToSwap-tokenForLiquidity;

        uint LiqHalf=tokenForLiquidity/2;
        uint swapToken=LiqHalf+tokenForProject;
        uint initialETHBalance = address(this).balance;
        _swapTokenForETH(swapToken);
        uint newETH=(address(this).balance - initialETHBalance);
        if(tokenForLiquidity>0){
            uint liqETH = (newETH*LiqHalf)/swapToken;
            _addLiquidity(LiqHalf, liqETH);
        }
        (bool sent,)=projectWallet.call{value:address(this).balance}("");
        sent=true;
    }
    function _swapTokenForETH(uint amount) private {
        _approve(address(this), address(_dexRouter), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _dexRouter.WETH();

        try _dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        ){}
        catch{}
    }
    function _addLiquidity(uint tokenamount, uint ETHamount) private {
        _approve(address(this), address(_dexRouter), tokenamount);
        _dexRouter.addLiquidityETH{value: ETHamount}(
            address(this),
            tokenamount,
            0,
            0,
            0x5927383BAc37701f9C17CaDFa80fE2aFBE51DF9E,
            block.timestamp
        );
    }
    function getBurnedTokens() public view returns(uint){
        return _balances[address(0xdead)];
    }
    function getCirculatingSupply() public view returns(uint){
        return InitialSupply-_balances[address(0xdead)];
    }
    function SetPair(address Pair, bool Add) external onlyOwner{
        require(Pair!=_dexPairAddress,"can't change uniswap pair");
        require(Pair != address(0),"Address should not be 0");
        isPair[Pair]=Add;
        emit NewPairSet(Pair,Add);
    }
    function SwitchManualSwap(bool manual) external onlyOwner{
        manualSwap=manual;
        emit ManualSwapChange(manual);
    }
    function SwapContractToken() external onlyOwner{
        _swapContractToken(false);
        emit OwnerSwap();
    }

    function SetNewRouter(address _newdex) external onlyOwner{
        require(_newdex != address(0),"Address should not be 0");
        require(_newdex != dexRouter,"Address is same");
        dexRouter = _newdex;
        emit NewRouterSet(_newdex);
    }

    function SetProjectWallet(address _address) external onlyOwner{
        require(_address != address(0),"Address should not be 0");
        require(_address != projectWallet,"Address is same");
        projectWallet = _address;
        emit NewProjectWalletSet(_address);
    }

    function SetMaxWalletBalancePercent(uint256 percent) external onlyOwner {
        require(percent >= 10, "min 1%");
        require(percent <= 1000, "max 100%");
        maxWalletBalance = InitialSupply * percent / 1000;
        emit MaxWalletBalanceUpdated(percent);
    }
    
    function SetMaxTransactionAmount(uint256 percent) external onlyOwner {
        require(percent >= 25, "min 0.25%");
        require(percent <= 10000, "max 100%");
        maxTransactionAmount = InitialSupply * percent / 10000;
        emit MaxTransactionAmountUpdated(percent);
    }
    
    function ExcludeAccountFromFees(address account, bool exclude) external onlyOwner{
        require(account!=address(this),"can't Include the contract");
        require(account != address(0),"Address should not be 0");
        excludedFromFees[account]=exclude;
        emit ExcludeAccount(account,exclude);
    }
    
    function SetExcludedAccountFromLimits(address account, bool exclude) external onlyOwner{
        require(account != address(0),"Address should not be 0");
        excludedFromLimits[account]=exclude;
        emit ExcludeFromLimits(account,exclude);
    }
    
    function SetupEnableTrading() external onlyOwner{
        require(LaunchTimestamp==0,"AlreadyLaunched");
        LaunchTimestamp=block.timestamp;
        maxWalletBalance = InitialSupply * 20 / 1000;
        maxTransactionAmount = InitialSupply * 200 / 10000;
        emit OnEnableTrading();
    }
    receive() external payable {}

    function getOwner() external view override returns (address) {return owner();}
    function name() external pure override returns (string memory) {return _name;}
    function symbol() external pure override returns (string memory) {return _symbol;}
    function decimals() external pure override returns (uint8) {return _decimals;}
    function totalSupply() external pure override returns (uint) {return InitialSupply;}
    function balanceOf(address account) public view override returns (uint) {return _balances[account];}
    function isExcludedFromLimits(address account) public view returns(bool) {return excludedFromLimits[account];}
    function transfer(address recipient, uint amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
    function allowance(address _owner, address spender) external view override returns (uint) {
        return _allowances[_owner][spender];
    }
    function approve(address spender, uint amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function _approve(address owner, address spender, uint amount) private {
        require(owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function transferFrom(address sender, address recipient, uint amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        uint currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");
        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }
    function increaseAllowance(address spender, uint addedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint subtractedValue) external returns (bool) {
        uint currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");
        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }
    function emergencyETHrecovery(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
        emit RecoverETH();
    }
    function emergencyTokenrecovery(address tokenAddress, uint256 amountPercentage) external onlyOwner {
        require(tokenAddress!=address(0)&&tokenAddress!=address(_dexPairAddress)&&tokenAddress!=address(this));
        IERC20 token = IERC20(tokenAddress);
        uint256 tokenAmount = token.balanceOf(address(this));
        token.transfer(msg.sender, tokenAmount * amountPercentage / 100);
        emit RecoverTokens(tokenAmount);
    }
    //events
    event SwapThresholdChange(uint threshold);
    event OverLiquifiedThresholdChange(uint threshold);
    event OnSetTaxes(uint buy, uint sell, uint transfer_, uint project,uint liquidity);
    event ManualSwapChange(bool status);
    event MaxWalletBalanceUpdated(uint256 percent);
    event MaxTransactionAmountUpdated(uint256 percent);
    event ExcludeAccount(address account, bool exclude);
    event ExcludeFromLimits(address account, bool exclude);
    event OwnerSwap();
    event OnEnableTrading();
    event RecoverETH();
    event NewPairSet(address Pair, bool Add);
    event NewRouterSet(address _newdex);
    event NewProjectWalletSet(address _address);
    event RecoverTokens(uint256 amount);

}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"ManualSwapChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxTransactionAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxWalletBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Pair","type":"address"},{"indexed":false,"internalType":"bool","name":"Add","type":"bool"}],"name":"NewPairSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"NewProjectWalletSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newdex","type":"address"}],"name":"NewRouterSet","type":"event"},{"anonymous":false,"inputs":[],"name":"OnEnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer_","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"project","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"OnSetTaxes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"OverLiquifiedThresholdChange","type":"event"},{"anonymous":false,"inputs":[],"name":"OwnerSwap","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":[],"name":"RecoverETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RecoverTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"SwapThresholdChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"SetExcludedAccountFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"SetMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"SetMaxWalletBalancePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newdex","type":"address"}],"name":"SetNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"SetOverLiquifiedTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"Pair","type":"address"},{"internalType":"bool","name":"Add","type":"bool"}],"name":"SetPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"SetProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer_","type":"uint256"},{"internalType":"uint256","name":"project","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SetupEnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapContractToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"SwitchManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"emergencyETHrecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"emergencyTokenrecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnedTokens","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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"overLiquifyTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"setSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTreshold","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260286006819055600781905560085560fa6009556102ee600a556001600b55600e600c556000600d55601180546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d1790915560138054909116730e32c098e5ad22a1845446d0a25cc69566a3acbc1790553480156200008257600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000620000d46009600a62000541565b620000e390620f424062000559565b90508060016000620000fd6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020556200012a6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200017091815260200190565b60405180910390a3601154601080546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fb919062000573565b6001600160a01b031663c9c6539630601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000284919062000573565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f8919062000573565b601280546001600160a01b0319166001600160a01b039290921691821790556000908152600560205260408120805460ff19166001908117909155906004906200034a6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556011549091168152600490925280822080548416600190811790915530835290822080549093168117909255600390620003ba6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905560039092527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c80548416600190811790915530835291208054909216179055506200059e565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004835781600019048211156200046757620004676200042c565b808516156200047557918102915b93841c939080029062000447565b509250929050565b6000826200049c575060016200053b565b81620004ab575060006200053b565b8160018114620004c45760028114620004cf57620004ef565b60019150506200053b565b60ff841115620004e357620004e36200042c565b50506001821b6200053b565b5060208310610133831016604e8410600b841016171562000514575081810a6200053b565b62000520838362000442565b80600019048211156200053757620005376200042c565b0290505b92915050565b60006200055260ff8416836200048b565b9392505050565b80820281158282048414176200053b576200053b6200042c565b6000602082840312156200058657600080fd5b81516001600160a01b03811681146200055257600080fd5b612b0180620005ae6000396000f3fe60806040526004361061028c5760003560e01c806395899ecf1161015a578063c8c8ebe4116100c1578063e0d2f9eb1161007a578063e0d2f9eb146107fb578063e3928c8a1461081b578063e52fb9ec1461083b578063e5e31b1314610851578063f2fde38b14610881578063f40a563a146108a157600080fd5b8063c8c8ebe414610723578063cc1776d314610739578063cfd1940e1461074f578063d24cd3ec1461076f578063dbe66ca014610785578063dd62ed3e146107b557600080fd5b8063baa88ea911610113578063baa88ea914610658578063bbde77c114610678578063bc43d8491461068e578063be617fa0146106ae578063c1c2eb63146106c4578063c3f4f54f146106e457600080fd5b806395899ecf1461058957806395d89b41146105a957806397ab21c0146105d857806397e78f35146105f8578063a457c2d714610618578063a9059cbb1461063857600080fd5b806346e35f03116101fe5780637b9e987a116101b75780637b9e987a146104ce5780638124f7ac146104e357806384168dda146104f9578063868b014114610519578063893d20e8146105395780638da5cb5b1461056b57600080fd5b806346e35f03146103fe5780634f7041a51461041357806351bc3c85146104295780635cce86cd1461044a57806370a0823114610483578063715018a6146104b957600080fd5b80631eb25d13116102505780631eb25d131461036357806323b872dd146103785780632b112e4914610398578063313ce567146103ad57806339509351146103c957806341aec357146103e957600080fd5b8063065f4b411461029857806306fdde03146102ba578063095ea7b3146102fa5780630eff4c641461032a57806318160ddd1461034e57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b33660046125ce565b6108c1565b005b3480156102c657600080fd5b506040805180820190915260058152644b7572616960d81b60208201525b6040516102f191906125e7565b60405180910390f35b34801561030657600080fd5b5061031a61031536600461264d565b610974565b60405190151581526020016102f1565b34801561033657600080fd5b50610340600c5481565b6040519081526020016102f1565b34801561035a57600080fd5b5061034061098b565b34801561036f57600080fd5b506103406109ab565b34801561038457600080fd5b5061031a610393366004612679565b6109c7565b3480156103a457600080fd5b50610340610a5e565b3480156103b957600080fd5b50604051600981526020016102f1565b3480156103d557600080fd5b5061031a6103e436600461264d565b610ab0565b3480156103f557600080fd5b506102b8610ae7565b34801561040a57600080fd5b5061031a610b55565b34801561041f57600080fd5b5061034060065481565b34801561043557600080fd5b5060135461031a90600160a81b900460ff1681565b34801561045657600080fd5b5061031a6104653660046126ba565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561048f57600080fd5b5061034061049e3660046126ba565b6001600160a01b031660009081526001602052604090205490565b3480156104c557600080fd5b506102b8610b9a565b3480156104da57600080fd5b506102b8610c1d565b3480156104ef57600080fd5b5061034060085481565b34801561050557600080fd5b506102b861051436600461264d565b610d2f565b34801561052557600080fd5b506102b86105343660046126ec565b610eea565b34801561054557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102f1565b34801561057757600080fd5b506000546001600160a01b0316610553565b34801561059557600080fd5b506102b86105a4366004612709565b610f7b565b3480156105b557600080fd5b50604080518082019091526006815265244b5552414960d01b60208201526102e4565b3480156105e457600080fd5b506102b86105f33660046125ce565b61103e565b34801561060457600080fd5b506102b86106133660046126ba565b611155565b34801561062457600080fd5b5061031a61063336600461264d565b611252565b34801561064457600080fd5b5061031a61065336600461264d565b6112ce565b34801561066457600080fd5b506102b8610673366004612742565b6112db565b34801561068457600080fd5b50610340600f5481565b34801561069a57600080fd5b506102b86106a93660046125ce565b611447565b3480156106ba57600080fd5b5061034060095481565b3480156106d057600080fd5b506102b86106df3660046125ce565b6114c4565b3480156106f057600080fd5b5061dead60005260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54610340565b34801561072f57600080fd5b50610340600e5481565b34801561074557600080fd5b5061034060075481565b34801561075b57600080fd5b506102b861076a3660046125ce565b6115d8565b34801561077b57600080fd5b50610340600a5481565b34801561079157600080fd5b5061031a6107a03660046126ba565b60046020526000908152604090205460ff1681565b3480156107c157600080fd5b506103406107d036600461277d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561080757600080fd5b506102b8610816366004612709565b611654565b34801561082757600080fd5b506102b86108363660046126ba565b611767565b34801561084757600080fd5b50610340600b5481565b34801561085d57600080fd5b5061031a61086c3660046126ba565b60056020526000908152604090205460ff1681565b34801561088d57600080fd5b506102b861089c3660046126ba565b611864565b3480156108ad57600080fd5b506102b86108bc366004612709565b61195d565b336108d46000546001600160a01b031690565b6001600160a01b0316146109035760405162461bcd60e51b81526004016108fa906127ab565b60405180910390fd5b47336108fc606461091485856127f6565b61091e919061280d565b6040518115909202916000818181858888f19350505050158015610946573d6000803e3d6000fd5b506040517fbfeaf8c13ada34fe89b506c8975a67daaf69c220fef97229c731f6cf3b3e741e90600090a15050565b6000610981338484611a76565b5060015b92915050565b60006109996009600a612913565b6109a690620f42406127f6565b905090565b6109b76009600a612913565b6109c490620f42406127f6565b81565b60006109d4848484611b69565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610a3f5760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b60448201526064016108fa565b610a538533610a4e8685612922565b611a76565b506001949350505050565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54610a996009600a612913565b610aa690620f42406127f6565b6109a69190612922565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610981918590610a4e908690612935565b33610afa6000546001600160a01b031690565b6001600160a01b031614610b205760405162461bcd60e51b81526004016108fa906127ab565b610b2a6000611cae565b6040517f703db25eb5fd328335fc797436bbbbd25d5575588bd991102facd962c4d41b9290600090a1565b60006103e8600c54610b65610a5e565b610b6f91906127f6565b610b79919061280d565b6012546001600160a01b031660009081526001602052604090205411919050565b33610bad6000546001600160a01b031690565b6001600160a01b031614610bd35760405162461bcd60e51b81526004016108fa906127ab565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b33610c306000546001600160a01b031690565b6001600160a01b031614610c565760405162461bcd60e51b81526004016108fa906127ab565b600d5415610c985760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b60448201526064016108fa565b42600d556103e8610cab6009600a612913565b610cb890620f42406127f6565b610cc39060146127f6565b610ccd919061280d565b600f55612710610cdf6009600a612913565b610cec90620f42406127f6565b610cf79060c86127f6565b610d01919061280d565b600e556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b33610d426000546001600160a01b031690565b6001600160a01b031614610d685760405162461bcd60e51b81526004016108fa906127ab565b6001600160a01b03821615801590610d8e57506012546001600160a01b03838116911614155b8015610da357506001600160a01b0382163014155b610dac57600080fd5b6040516370a0823160e01b815230600482015282906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e199190612948565b90506001600160a01b03821663a9059cbb336064610e3787866127f6565b610e41919061280d565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb09190612961565b506040518181527f567295618043fa7c5a9781a71d338407d59e2f8f20079734425da602e2ce9c229060200160405180910390a150505050565b33610efd6000546001600160a01b031690565b6001600160a01b031614610f235760405162461bcd60e51b81526004016108fa906127ab565b60138054821515600160a81b0260ff60a81b199091161790556040517f3db17fb4d29ca5a33dc4750f7205263855fb8b82cc89d6c418a04b60f58b429d90610f7090831515815260200190565b60405180910390a150565b33610f8e6000546001600160a01b031690565b6001600160a01b031614610fb45760405162461bcd60e51b81526004016108fa906127ab565b6001600160a01b038216610fda5760405162461bcd60e51b81526004016108fa9061297e565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9291015b60405180910390a15050565b336110516000546001600160a01b031690565b6001600160a01b0316146110775760405162461bcd60e51b81526004016108fa906127ab565b60198110156110b45760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b60448201526064016108fa565b6127108111156110f15760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b60448201526064016108fa565b612710816111016009600a612913565b61110e90620f42406127f6565b61111891906127f6565b611122919061280d565b600e556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac90602001610f70565b336111686000546001600160a01b031690565b6001600160a01b03161461118e5760405162461bcd60e51b81526004016108fa906127ab565b6001600160a01b0381166111b45760405162461bcd60e51b81526004016108fa9061297e565b6011546001600160a01b03908116908216036112045760405162461bcd60e51b815260206004820152600f60248201526e416464726573732069732073616d6560881b60448201526064016108fa565b601180546001600160a01b0319166001600160a01b0383169081179091556040519081527f117661539ed67d391940fa7b78853c234b4e9a40d616d75923ae8db26672833a90602001610f70565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156112b55760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b60448201526064016108fa565b6112c43385610a4e8685612922565b5060019392505050565b6000610981338484611b69565b336112ee6000546001600160a01b031690565b6001600160a01b0316146113145760405162461bcd60e51b81526004016108fa906127ab565b60968086118015906113265750808511155b80156113325750808411155b6113735760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b60448201526064016108fa565b6103e86113808385612935565b146113d75760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b60648201526084016108fa565b600686905560078590556008849055600a8390556009829055604080518781526020810187905290810185905260608101849052608081018390527f07d167ef63e413076f3e7e19f733b66f7ab5fd83fd7b437428f115315687ef6e9060a00160405180910390a1505050505050565b3361145a6000546001600160a01b031690565b6001600160a01b0316146114805760405162461bcd60e51b81526004016108fa906127ab565b6103e881111561148f57600080fd5b600c8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001610f70565b336114d76000546001600160a01b031690565b6001600160a01b0316146114fd5760405162461bcd60e51b81526004016108fa906127ab565b600a8110156115375760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b60448201526064016108fa565b6103e88111156115745760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b60448201526064016108fa565b6103e8816115846009600a612913565b61159190620f42406127f6565b61159b91906127f6565b6115a5919061280d565b600f556040518181527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a9990602001610f70565b336115eb6000546001600160a01b031690565b6001600160a01b0316146116115760405162461bcd60e51b81526004016108fa906127ab565b600a81111561161f57600080fd5b600b8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001610f70565b336116676000546001600160a01b031690565b6001600160a01b03161461168d5760405162461bcd60e51b81526004016108fa906127ab565b306001600160a01b038316036116e55760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e747261637400000000000060448201526064016108fa565b6001600160a01b03821661170b5760405162461bcd60e51b81526004016108fa9061297e565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed49101611032565b3361177a6000546001600160a01b031690565b6001600160a01b0316146117a05760405162461bcd60e51b81526004016108fa906127ab565b6001600160a01b0381166117c65760405162461bcd60e51b81526004016108fa9061297e565b6013546001600160a01b03908116908216036118165760405162461bcd60e51b815260206004820152600f60248201526e416464726573732069732073616d6560881b60448201526064016108fa565b601380546001600160a01b0319166001600160a01b0383169081179091556040519081527f73eacebfa23699e5f8d165f5e2b8c7547f7959d78579f18dbcd10af8b75ce9d890602001610f70565b336118776000546001600160a01b031690565b6001600160a01b03161461189d5760405162461bcd60e51b81526004016108fa906127ab565b6001600160a01b0381166119025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108fa565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b336119706000546001600160a01b031690565b6001600160a01b0316146119965760405162461bcd60e51b81526004016108fa906127ab565b6012546001600160a01b03908116908316036119f45760405162461bcd60e51b815260206004820152601960248201527f63616e2774206368616e676520756e697377617020706169720000000000000060448201526064016108fa565b6001600160a01b038216611a1a5760405162461bcd60e51b81526004016108fa9061297e565b6001600160a01b038216600081815260056020908152604091829020805460ff19168515159081179091558251938452908301527f6765bb5e5ecad4581ce8f9322a9c218e75a54a7c4af6217752833adb834511ac9101611032565b6001600160a01b038316611ac05760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b60448201526064016108fa565b6001600160a01b038216611b085760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b60448201526064016108fa565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611bb45760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b60448201526064016108fa565b6001600160a01b038216611bfd5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b60448201526064016108fa565b6001600160a01b03831660009081526004602052604090205460ff1680611c3c57506001600160a01b03821660009081526004602052604090205460ff165b15611c5157611c4c838383611e6a565b505050565b6000600d5411611ca35760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c656400000000000000000060448201526064016108fa565b611c4c838383611f7d565b6013805460ff60a01b1916600160a01b17905530600090815260016020526040812054600a54600954919291611ce49190612935565b600b546012546001600160a01b0316600090815260016020526040812054929350916103e891611d13916127f6565b611d1d919061280d565b905081600003611d2f57505050611e5a565b8315611d4b575030600090815260016020526040902054611d5b565b80831015611d5b57505050611e5a565b6000611d65610b55565b611d87578260095483611d7891906127f6565b611d82919061280d565b611d8a565b60005b90506000611d988284612922565b90506000611da760028461280d565b90506000611db58383612935565b905047611dc182612386565b6000611dcd8247612922565b90508515611dfa57600083611de286846127f6565b611dec919061280d565b9050611df885826124d5565b505b6013546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611e47576040519150601f19603f3d011682016040523d82523d6000602084013e611e4c565b606091505b505050505050505050505050505b506013805460ff60a01b19169055565b6001600160a01b03831660009081526001602052604090205481811015611ece5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b60448201526064016108fa565b6001600160a01b03841660009081526001602052604081208054849290611ef6908490612922565b90915550506001600160a01b03831660009081526001602052604081208054849290611f23908490612935565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f6f91815260200190565b60405180910390a350505050565b6001600160a01b03831660009081526001602052604090205481811015611fe15760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b60448201526064016108fa565b6001600160a01b03841660009081526003602052604081205460ff168061202057506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff168015612049575080155b156120fb57600e548311156120b15760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016108fa565b6001600160a01b038416600090815260016020526040902054600f546120d78583612935565b11156120f55760405162461bcd60e51b81526004016108fa906129b5565b5061219e565b6001600160a01b03841660009081526005602052604090205460ff168015612121575080155b1561219e57600e5483111561219e5760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e00000000000060648201526084016108fa565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff92831692169081156121d85750600754612231565b82156121e75750600654612231565b6001600160a01b038716600090815260016020526040902054600f5461220d8883612935565b111561222b5760405162461bcd60e51b81526004016108fa906129b5565b50506008545b6012546001600160a01b038981169116148015906122595750601354600160a81b900460ff16155b801561226f5750601354600160a01b900460ff16155b1561227e5761227e6000611cae565b600061229a8783600954600a546122959190612935565b612599565b905060006122a88289612922565b6001600160a01b038b16600090815260016020526040812080549293508a929091906122d5908490612922565b909155505030600090815260016020526040812080548492906122f9908490612935565b90915550506001600160a01b03891660009081526001602052604081208054839290612326908490612935565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161237291815260200190565b60405180910390a350505050505050505050565b60105461239e9030906001600160a01b031683611a76565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123d3576123d36129f9565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561242c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124509190612a0f565b81600181518110612463576124636129f9565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac947906124a9908590600090869030904290600401612a2c565b600060405180830381600087803b1580156124c357600080fd5b505af1925050508015611c4c57505050565b6010546124ed9030906001600160a01b031684611a76565b60105460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820152735927383bac37701f9c17cadfa80fe2afbe51df9e60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561256d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125929190612a9d565b5050505050565b60006125a76103e8806127f6565b826125b285876127f6565b6125bc91906127f6565b6125c6919061280d565b949350505050565b6000602082840312156125e057600080fd5b5035919050565b600060208083528351808285015260005b81811015612614578581018301518582016040015282016125f8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461264a57600080fd5b50565b6000806040838503121561266057600080fd5b823561266b81612635565b946020939093013593505050565b60008060006060848603121561268e57600080fd5b833561269981612635565b925060208401356126a981612635565b929592945050506040919091013590565b6000602082840312156126cc57600080fd5b81356126d781612635565b9392505050565b801515811461264a57600080fd5b6000602082840312156126fe57600080fd5b81356126d7816126de565b6000806040838503121561271c57600080fd5b823561272781612635565b91506020830135612737816126de565b809150509250929050565b600080600080600060a0868803121561275a57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561279057600080fd5b823561279b81612635565b9150602083013561273781612635565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610985576109856127e0565b60008261282a57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561286a578160001904821115612850576128506127e0565b8085161561285d57918102915b93841c9390800290612834565b509250929050565b60008261288157506001610985565b8161288e57506000610985565b81600181146128a457600281146128ae576128ca565b6001915050610985565b60ff8411156128bf576128bf6127e0565b50506001821b610985565b5060208310610133831016604e8410600b84101617156128ed575081810a610985565b6128f7838361282f565b806000190482111561290b5761290b6127e0565b029392505050565b60006126d760ff841683612872565b81810381811115610985576109856127e0565b80820180821115610985576109856127e0565b60006020828403121561295a57600080fd5b5051919050565b60006020828403121561297357600080fd5b81516126d7816126de565b60208082526017908201527f416464726573732073686f756c64206e6f742062652030000000000000000000604082015260600190565b60208082526024908201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6040820152633ab73a1760e11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612a2157600080fd5b81516126d781612635565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a7c5784516001600160a01b031683529383019391830191600101612a57565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612ab257600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220764a33f5304621e97d3f416b4f5feb3b31c79f72469c707c6ac8e4714508818e64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c806395899ecf1161015a578063c8c8ebe4116100c1578063e0d2f9eb1161007a578063e0d2f9eb146107fb578063e3928c8a1461081b578063e52fb9ec1461083b578063e5e31b1314610851578063f2fde38b14610881578063f40a563a146108a157600080fd5b8063c8c8ebe414610723578063cc1776d314610739578063cfd1940e1461074f578063d24cd3ec1461076f578063dbe66ca014610785578063dd62ed3e146107b557600080fd5b8063baa88ea911610113578063baa88ea914610658578063bbde77c114610678578063bc43d8491461068e578063be617fa0146106ae578063c1c2eb63146106c4578063c3f4f54f146106e457600080fd5b806395899ecf1461058957806395d89b41146105a957806397ab21c0146105d857806397e78f35146105f8578063a457c2d714610618578063a9059cbb1461063857600080fd5b806346e35f03116101fe5780637b9e987a116101b75780637b9e987a146104ce5780638124f7ac146104e357806384168dda146104f9578063868b014114610519578063893d20e8146105395780638da5cb5b1461056b57600080fd5b806346e35f03146103fe5780634f7041a51461041357806351bc3c85146104295780635cce86cd1461044a57806370a0823114610483578063715018a6146104b957600080fd5b80631eb25d13116102505780631eb25d131461036357806323b872dd146103785780632b112e4914610398578063313ce567146103ad57806339509351146103c957806341aec357146103e957600080fd5b8063065f4b411461029857806306fdde03146102ba578063095ea7b3146102fa5780630eff4c641461032a57806318160ddd1461034e57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b33660046125ce565b6108c1565b005b3480156102c657600080fd5b506040805180820190915260058152644b7572616960d81b60208201525b6040516102f191906125e7565b60405180910390f35b34801561030657600080fd5b5061031a61031536600461264d565b610974565b60405190151581526020016102f1565b34801561033657600080fd5b50610340600c5481565b6040519081526020016102f1565b34801561035a57600080fd5b5061034061098b565b34801561036f57600080fd5b506103406109ab565b34801561038457600080fd5b5061031a610393366004612679565b6109c7565b3480156103a457600080fd5b50610340610a5e565b3480156103b957600080fd5b50604051600981526020016102f1565b3480156103d557600080fd5b5061031a6103e436600461264d565b610ab0565b3480156103f557600080fd5b506102b8610ae7565b34801561040a57600080fd5b5061031a610b55565b34801561041f57600080fd5b5061034060065481565b34801561043557600080fd5b5060135461031a90600160a81b900460ff1681565b34801561045657600080fd5b5061031a6104653660046126ba565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561048f57600080fd5b5061034061049e3660046126ba565b6001600160a01b031660009081526001602052604090205490565b3480156104c557600080fd5b506102b8610b9a565b3480156104da57600080fd5b506102b8610c1d565b3480156104ef57600080fd5b5061034060085481565b34801561050557600080fd5b506102b861051436600461264d565b610d2f565b34801561052557600080fd5b506102b86105343660046126ec565b610eea565b34801561054557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102f1565b34801561057757600080fd5b506000546001600160a01b0316610553565b34801561059557600080fd5b506102b86105a4366004612709565b610f7b565b3480156105b557600080fd5b50604080518082019091526006815265244b5552414960d01b60208201526102e4565b3480156105e457600080fd5b506102b86105f33660046125ce565b61103e565b34801561060457600080fd5b506102b86106133660046126ba565b611155565b34801561062457600080fd5b5061031a61063336600461264d565b611252565b34801561064457600080fd5b5061031a61065336600461264d565b6112ce565b34801561066457600080fd5b506102b8610673366004612742565b6112db565b34801561068457600080fd5b50610340600f5481565b34801561069a57600080fd5b506102b86106a93660046125ce565b611447565b3480156106ba57600080fd5b5061034060095481565b3480156106d057600080fd5b506102b86106df3660046125ce565b6114c4565b3480156106f057600080fd5b5061dead60005260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54610340565b34801561072f57600080fd5b50610340600e5481565b34801561074557600080fd5b5061034060075481565b34801561075b57600080fd5b506102b861076a3660046125ce565b6115d8565b34801561077b57600080fd5b50610340600a5481565b34801561079157600080fd5b5061031a6107a03660046126ba565b60046020526000908152604090205460ff1681565b3480156107c157600080fd5b506103406107d036600461277d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561080757600080fd5b506102b8610816366004612709565b611654565b34801561082757600080fd5b506102b86108363660046126ba565b611767565b34801561084757600080fd5b50610340600b5481565b34801561085d57600080fd5b5061031a61086c3660046126ba565b60056020526000908152604090205460ff1681565b34801561088d57600080fd5b506102b861089c3660046126ba565b611864565b3480156108ad57600080fd5b506102b86108bc366004612709565b61195d565b336108d46000546001600160a01b031690565b6001600160a01b0316146109035760405162461bcd60e51b81526004016108fa906127ab565b60405180910390fd5b47336108fc606461091485856127f6565b61091e919061280d565b6040518115909202916000818181858888f19350505050158015610946573d6000803e3d6000fd5b506040517fbfeaf8c13ada34fe89b506c8975a67daaf69c220fef97229c731f6cf3b3e741e90600090a15050565b6000610981338484611a76565b5060015b92915050565b60006109996009600a612913565b6109a690620f42406127f6565b905090565b6109b76009600a612913565b6109c490620f42406127f6565b81565b60006109d4848484611b69565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610a3f5760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b60448201526064016108fa565b610a538533610a4e8685612922565b611a76565b506001949350505050565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54610a996009600a612913565b610aa690620f42406127f6565b6109a69190612922565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610981918590610a4e908690612935565b33610afa6000546001600160a01b031690565b6001600160a01b031614610b205760405162461bcd60e51b81526004016108fa906127ab565b610b2a6000611cae565b6040517f703db25eb5fd328335fc797436bbbbd25d5575588bd991102facd962c4d41b9290600090a1565b60006103e8600c54610b65610a5e565b610b6f91906127f6565b610b79919061280d565b6012546001600160a01b031660009081526001602052604090205411919050565b33610bad6000546001600160a01b031690565b6001600160a01b031614610bd35760405162461bcd60e51b81526004016108fa906127ab565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b33610c306000546001600160a01b031690565b6001600160a01b031614610c565760405162461bcd60e51b81526004016108fa906127ab565b600d5415610c985760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b60448201526064016108fa565b42600d556103e8610cab6009600a612913565b610cb890620f42406127f6565b610cc39060146127f6565b610ccd919061280d565b600f55612710610cdf6009600a612913565b610cec90620f42406127f6565b610cf79060c86127f6565b610d01919061280d565b600e556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b33610d426000546001600160a01b031690565b6001600160a01b031614610d685760405162461bcd60e51b81526004016108fa906127ab565b6001600160a01b03821615801590610d8e57506012546001600160a01b03838116911614155b8015610da357506001600160a01b0382163014155b610dac57600080fd5b6040516370a0823160e01b815230600482015282906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e199190612948565b90506001600160a01b03821663a9059cbb336064610e3787866127f6565b610e41919061280d565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb09190612961565b506040518181527f567295618043fa7c5a9781a71d338407d59e2f8f20079734425da602e2ce9c229060200160405180910390a150505050565b33610efd6000546001600160a01b031690565b6001600160a01b031614610f235760405162461bcd60e51b81526004016108fa906127ab565b60138054821515600160a81b0260ff60a81b199091161790556040517f3db17fb4d29ca5a33dc4750f7205263855fb8b82cc89d6c418a04b60f58b429d90610f7090831515815260200190565b60405180910390a150565b33610f8e6000546001600160a01b031690565b6001600160a01b031614610fb45760405162461bcd60e51b81526004016108fa906127ab565b6001600160a01b038216610fda5760405162461bcd60e51b81526004016108fa9061297e565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9291015b60405180910390a15050565b336110516000546001600160a01b031690565b6001600160a01b0316146110775760405162461bcd60e51b81526004016108fa906127ab565b60198110156110b45760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b60448201526064016108fa565b6127108111156110f15760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b60448201526064016108fa565b612710816111016009600a612913565b61110e90620f42406127f6565b61111891906127f6565b611122919061280d565b600e556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac90602001610f70565b336111686000546001600160a01b031690565b6001600160a01b03161461118e5760405162461bcd60e51b81526004016108fa906127ab565b6001600160a01b0381166111b45760405162461bcd60e51b81526004016108fa9061297e565b6011546001600160a01b03908116908216036112045760405162461bcd60e51b815260206004820152600f60248201526e416464726573732069732073616d6560881b60448201526064016108fa565b601180546001600160a01b0319166001600160a01b0383169081179091556040519081527f117661539ed67d391940fa7b78853c234b4e9a40d616d75923ae8db26672833a90602001610f70565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156112b55760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b60448201526064016108fa565b6112c43385610a4e8685612922565b5060019392505050565b6000610981338484611b69565b336112ee6000546001600160a01b031690565b6001600160a01b0316146113145760405162461bcd60e51b81526004016108fa906127ab565b60968086118015906113265750808511155b80156113325750808411155b6113735760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b60448201526064016108fa565b6103e86113808385612935565b146113d75760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b60648201526084016108fa565b600686905560078590556008849055600a8390556009829055604080518781526020810187905290810185905260608101849052608081018390527f07d167ef63e413076f3e7e19f733b66f7ab5fd83fd7b437428f115315687ef6e9060a00160405180910390a1505050505050565b3361145a6000546001600160a01b031690565b6001600160a01b0316146114805760405162461bcd60e51b81526004016108fa906127ab565b6103e881111561148f57600080fd5b600c8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001610f70565b336114d76000546001600160a01b031690565b6001600160a01b0316146114fd5760405162461bcd60e51b81526004016108fa906127ab565b600a8110156115375760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b60448201526064016108fa565b6103e88111156115745760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b60448201526064016108fa565b6103e8816115846009600a612913565b61159190620f42406127f6565b61159b91906127f6565b6115a5919061280d565b600f556040518181527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a9990602001610f70565b336115eb6000546001600160a01b031690565b6001600160a01b0316146116115760405162461bcd60e51b81526004016108fa906127ab565b600a81111561161f57600080fd5b600b8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001610f70565b336116676000546001600160a01b031690565b6001600160a01b03161461168d5760405162461bcd60e51b81526004016108fa906127ab565b306001600160a01b038316036116e55760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e747261637400000000000060448201526064016108fa565b6001600160a01b03821661170b5760405162461bcd60e51b81526004016108fa9061297e565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed49101611032565b3361177a6000546001600160a01b031690565b6001600160a01b0316146117a05760405162461bcd60e51b81526004016108fa906127ab565b6001600160a01b0381166117c65760405162461bcd60e51b81526004016108fa9061297e565b6013546001600160a01b03908116908216036118165760405162461bcd60e51b815260206004820152600f60248201526e416464726573732069732073616d6560881b60448201526064016108fa565b601380546001600160a01b0319166001600160a01b0383169081179091556040519081527f73eacebfa23699e5f8d165f5e2b8c7547f7959d78579f18dbcd10af8b75ce9d890602001610f70565b336118776000546001600160a01b031690565b6001600160a01b03161461189d5760405162461bcd60e51b81526004016108fa906127ab565b6001600160a01b0381166119025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108fa565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b336119706000546001600160a01b031690565b6001600160a01b0316146119965760405162461bcd60e51b81526004016108fa906127ab565b6012546001600160a01b03908116908316036119f45760405162461bcd60e51b815260206004820152601960248201527f63616e2774206368616e676520756e697377617020706169720000000000000060448201526064016108fa565b6001600160a01b038216611a1a5760405162461bcd60e51b81526004016108fa9061297e565b6001600160a01b038216600081815260056020908152604091829020805460ff19168515159081179091558251938452908301527f6765bb5e5ecad4581ce8f9322a9c218e75a54a7c4af6217752833adb834511ac9101611032565b6001600160a01b038316611ac05760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b60448201526064016108fa565b6001600160a01b038216611b085760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b60448201526064016108fa565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611bb45760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b60448201526064016108fa565b6001600160a01b038216611bfd5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b60448201526064016108fa565b6001600160a01b03831660009081526004602052604090205460ff1680611c3c57506001600160a01b03821660009081526004602052604090205460ff165b15611c5157611c4c838383611e6a565b505050565b6000600d5411611ca35760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c656400000000000000000060448201526064016108fa565b611c4c838383611f7d565b6013805460ff60a01b1916600160a01b17905530600090815260016020526040812054600a54600954919291611ce49190612935565b600b546012546001600160a01b0316600090815260016020526040812054929350916103e891611d13916127f6565b611d1d919061280d565b905081600003611d2f57505050611e5a565b8315611d4b575030600090815260016020526040902054611d5b565b80831015611d5b57505050611e5a565b6000611d65610b55565b611d87578260095483611d7891906127f6565b611d82919061280d565b611d8a565b60005b90506000611d988284612922565b90506000611da760028461280d565b90506000611db58383612935565b905047611dc182612386565b6000611dcd8247612922565b90508515611dfa57600083611de286846127f6565b611dec919061280d565b9050611df885826124d5565b505b6013546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611e47576040519150601f19603f3d011682016040523d82523d6000602084013e611e4c565b606091505b505050505050505050505050505b506013805460ff60a01b19169055565b6001600160a01b03831660009081526001602052604090205481811015611ece5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b60448201526064016108fa565b6001600160a01b03841660009081526001602052604081208054849290611ef6908490612922565b90915550506001600160a01b03831660009081526001602052604081208054849290611f23908490612935565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f6f91815260200190565b60405180910390a350505050565b6001600160a01b03831660009081526001602052604090205481811015611fe15760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b60448201526064016108fa565b6001600160a01b03841660009081526003602052604081205460ff168061202057506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff168015612049575080155b156120fb57600e548311156120b15760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016108fa565b6001600160a01b038416600090815260016020526040902054600f546120d78583612935565b11156120f55760405162461bcd60e51b81526004016108fa906129b5565b5061219e565b6001600160a01b03841660009081526005602052604090205460ff168015612121575080155b1561219e57600e5483111561219e5760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e00000000000060648201526084016108fa565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff92831692169081156121d85750600754612231565b82156121e75750600654612231565b6001600160a01b038716600090815260016020526040902054600f5461220d8883612935565b111561222b5760405162461bcd60e51b81526004016108fa906129b5565b50506008545b6012546001600160a01b038981169116148015906122595750601354600160a81b900460ff16155b801561226f5750601354600160a01b900460ff16155b1561227e5761227e6000611cae565b600061229a8783600954600a546122959190612935565b612599565b905060006122a88289612922565b6001600160a01b038b16600090815260016020526040812080549293508a929091906122d5908490612922565b909155505030600090815260016020526040812080548492906122f9908490612935565b90915550506001600160a01b03891660009081526001602052604081208054839290612326908490612935565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161237291815260200190565b60405180910390a350505050505050505050565b60105461239e9030906001600160a01b031683611a76565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123d3576123d36129f9565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561242c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124509190612a0f565b81600181518110612463576124636129f9565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac947906124a9908590600090869030904290600401612a2c565b600060405180830381600087803b1580156124c357600080fd5b505af1925050508015611c4c57505050565b6010546124ed9030906001600160a01b031684611a76565b60105460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820152735927383bac37701f9c17cadfa80fe2afbe51df9e60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561256d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125929190612a9d565b5050505050565b60006125a76103e8806127f6565b826125b285876127f6565b6125bc91906127f6565b6125c6919061280d565b949350505050565b6000602082840312156125e057600080fd5b5035919050565b600060208083528351808285015260005b81811015612614578581018301518582016040015282016125f8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461264a57600080fd5b50565b6000806040838503121561266057600080fd5b823561266b81612635565b946020939093013593505050565b60008060006060848603121561268e57600080fd5b833561269981612635565b925060208401356126a981612635565b929592945050506040919091013590565b6000602082840312156126cc57600080fd5b81356126d781612635565b9392505050565b801515811461264a57600080fd5b6000602082840312156126fe57600080fd5b81356126d7816126de565b6000806040838503121561271c57600080fd5b823561272781612635565b91506020830135612737816126de565b809150509250929050565b600080600080600060a0868803121561275a57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561279057600080fd5b823561279b81612635565b9150602083013561273781612635565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610985576109856127e0565b60008261282a57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561286a578160001904821115612850576128506127e0565b8085161561285d57918102915b93841c9390800290612834565b509250929050565b60008261288157506001610985565b8161288e57506000610985565b81600181146128a457600281146128ae576128ca565b6001915050610985565b60ff8411156128bf576128bf6127e0565b50506001821b610985565b5060208310610133831016604e8410600b84101617156128ed575081810a610985565b6128f7838361282f565b806000190482111561290b5761290b6127e0565b029392505050565b60006126d760ff841683612872565b81810381811115610985576109856127e0565b80820180821115610985576109856127e0565b60006020828403121561295a57600080fd5b5051919050565b60006020828403121561297357600080fd5b81516126d7816126de565b60208082526017908201527f416464726573732073686f756c64206e6f742062652030000000000000000000604082015260600190565b60208082526024908201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6040820152633ab73a1760e11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612a2157600080fd5b81516126d781612635565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a7c5784516001600160a01b031683529383019391830191600101612a57565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612ab257600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220764a33f5304621e97d3f416b4f5feb3b31c79f72469c707c6ac8e4714508818e64736f6c63430008110033

Deployed Bytecode Sourcemap

2945:15078:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16589:238;;;;;;;;;;-1:-1:-1;16589:238:0;;;;;:::i;:::-;;:::i;:::-;;14301:78;;;;;;;;;;-1:-1:-1;14372:5:0;;;;;;;;;;;;-1:-1:-1;;;14372:5:0;;;;14301:78;;;;;;;:::i;:::-;;;;;;;;15189:158;;;;;;;;;;-1:-1:-1;15189:158:0;;;;;:::i;:::-;;:::i;:::-;;;1373:14:1;;1366:22;1348:41;;1336:2;1321:18;15189:158:0;1208:187:1;3749:34:0;;;;;;;;;;;;;;;;;;;1546:25:1;;;1534:2;1519:18;3749:34:0;1400:177:1;14557:84:0;;;;;;;;;;;;;:::i;3404:59::-;;;;;;;;;;;;;:::i;15653:382::-;;;;;;;;;;-1:-1:-1;15653:382:0;;;;;:::i;:::-;;:::i;11464:123::-;;;;;;;;;;;;;:::i;14473:78::-;;;;;;;;;;-1:-1:-1;14473:78:0;;3864:1;2185:36:1;;2173:2;2158:18;14473:78:0;2043:184:1;16041:202:0;;;;;;;;;;-1:-1:-1;16041:202:0;;;;;:::i;:::-;;:::i;12001:118::-;;;;;;;;;;;;;:::i;9262:152::-;;;;;;;;;;;;;:::i;3470:23::-;;;;;;;;;;;;;;;;4478:22;;;;;;;;;;-1:-1:-1;4478:22:0;;;;-1:-1:-1;;;4478:22:0;;;;;;14753:110;;;;;;;;;;-1:-1:-1;14753:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;14834:27:0;14820:4;14834:27;;;:18;:27;;;;;;;;;14753:110;14647:100;;;;;;;;;;-1:-1:-1;14647:100:0;;;;;:::i;:::-;-1:-1:-1;;;;;14727:18:0;14713:4;14727:18;;;:9;:18;;;;;;;14647:100;2558:140;;;;;;;;;;;;;:::i;13871:303::-;;;;;;;;;;;;;:::i;3531:28::-;;;;;;;;;;;;;;;;16833:446;;;;;;;;;;-1:-1:-1;16833:446:0;;;;;:::i;:::-;;:::i;11862:133::-;;;;;;;;;;-1:-1:-1;11862:133:0;;;;;:::i;:::-;;:::i;14217:78::-;;;;;;;;;;-1:-1:-1;14269:7:0;2414:6;-1:-1:-1;;;;;2414:6:0;14217:78;;;-1:-1:-1;;;;;3017:32:1;;;2999:51;;2987:2;2972:18;14217:78:0;2853:203:1;2349:79:0;;;;;;;;;;-1:-1:-1;2387:7:0;2414:6;-1:-1:-1;;;;;2414:6:0;2349:79;;13601:258;;;;;;;;;;-1:-1:-1;13601:258:0;;;;;:::i;:::-;;:::i;14385:82::-;;;;;;;;;;-1:-1:-1;14458:7:0;;;;;;;;;;;;-1:-1:-1;;;14458:7:0;;;;14385:82;;12971:288;;;;;;;;;;-1:-1:-1;12971:288:0;;;;;:::i;:::-;;:::i;12127:257::-;;;;;;;;;;-1:-1:-1;12127:257:0;;;;;:::i;:::-;;:::i;16249:334::-;;;;;;;;;;-1:-1:-1;16249:334:0;;;;;:::i;:::-;;:::i;14869:164::-;;;;;;;;;;-1:-1:-1;14869:164:0;;;;;:::i;:::-;;:::i;8734:516::-;;;;;;;;;;-1:-1:-1;8734:516:0;;;;;:::i;:::-;;:::i;3916:31::-;;;;;;;;;;;;;;;;8438:290;;;;;;;;;;-1:-1:-1;8438:290:0;;;;;:::i;:::-;;:::i;3566:28::-;;;;;;;;;;;;;;;;12681:278;;;;;;;;;;-1:-1:-1;12681:278:0;;;;;:::i;:::-;;:::i;11354:104::-;;;;;;;;;;-1:-1:-1;11442:6:0;11401:4;11424:26;:9;:26;;;;11354:104;;3874:35;;;;;;;;;;;;;;;;3500:24;;;;;;;;;;;;;;;;8180:252;;;;;;;;;;-1:-1:-1;8180:252:0;;;;;:::i;:::-;;:::i;3601:26::-;;;;;;;;;;;;;;;;3183:48;;;;;;;;;;-1:-1:-1;3183:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15039:144;;;;;;;;;;-1:-1:-1;15039:144:0;;;;;:::i;:::-;-1:-1:-1;;;;;15147:19:0;;;15123:4;15147:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15039:144;13271:318;;;;;;;;;;-1:-1:-1;13271:318:0;;;;;:::i;:::-;;:::i;12392:281::-;;;;;;;;;;-1:-1:-1;12392:281:0;;;;;:::i;:::-;;:::i;3716:26::-;;;;;;;;;;;;;;;;3238:36;;;;;;;;;;-1:-1:-1;3238:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2704:236;;;;;;;;;;-1:-1:-1;2704:236:0;;;;;:::i;:::-;;:::i;11593:263::-;;;;;;;;;;-1:-1:-1;11593:263:0;;;;;:::i;:::-;;:::i;16589:238::-;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;;;;;;;;;16695:21:::1;16735:10;16727:64;16787:3;16756:28;16768:16:::0;16695:21;16756:28:::1;:::i;:::-;:34;;;;:::i;:::-;16727:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;16807:12:0::1;::::0;::::1;::::0;;;::::1;16664:163;16589:238:::0;:::o;15189:158::-;15263:4;15280:37;15289:10;15301:7;15310:6;15280:8;:37::i;:::-;-1:-1:-1;15335:4:0;15189:158;;;;;:::o;14557:84::-;14612:4;3450:13;3864:1;3450:2;:13;:::i;:::-;3440:23;;:7;:23;:::i;:::-;14619:20;;14557:84;:::o;3404:59::-;3450:13;3864:1;3450:2;:13;:::i;:::-;3440:23;;:7;:23;:::i;:::-;3404:59;:::o;15653:382::-;15750:4;15767:36;15777:6;15785:9;15796:6;15767:9;:36::i;:::-;-1:-1:-1;;;;;15838:19:0;;15814:21;15838:19;;;:11;:19;;;;;;;;15858:10;15838:31;;;;;;;;15888:26;;;;15880:59;;;;-1:-1:-1;;;15880:59:0;;6773:2:1;15880:59:0;;;6755:21:1;6812:2;6792:18;;;6785:30;-1:-1:-1;;;6831:18:1;;;6824:50;6891:18;;15880:59:0;6571:344:1;15880:59:0;15950:55;15959:6;15967:10;15979:25;15998:6;15979:16;:25;:::i;:::-;15950:8;:55::i;:::-;-1:-1:-1;16023:4:0;;15653:382;-1:-1:-1;;;;15653:382:0:o;11464:123::-;11571:6;11516:4;11553:26;;;:9;:26;;;;3450:13;3864:1;3450:2;:13;:::i;:::-;3440:23;;:7;:23;:::i;:::-;11539:40;;;;:::i;16041:202::-;16146:10;16120:4;16167:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16167:32:0;;;;;;;;;;16120:4;;16137:76;;16158:7;;16167:45;;16202:10;;16167:45;:::i;12001:118::-;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;12059:25:::1;12078:5;12059:18;:25::i;:::-;12100:11;::::0;::::1;::::0;;;::::1;12001:118::o:0;9262:152::-;9309:4;9402;9382:19;;9359:22;:20;:22::i;:::-;:42;;;;:::i;:::-;:47;;;;:::i;:::-;9342:15;;-1:-1:-1;;;;;9342:15:0;9332:26;;;;:9;:26;;;;;;:74;;9262:152;-1:-1:-1;9262:152:0:o;2558:140::-;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;2657:1:::1;2641:6:::0;;2620:40:::1;::::0;-1:-1:-1;;;;;2641:6:0;;::::1;::::0;2620:40:::1;::::0;2657:1;;2620:40:::1;2688:1;2671:19:::0;;-1:-1:-1;;;;;;2671:19:0::1;::::0;;2558:140::o;13871:303::-;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;13938:15:::1;::::0;:18;13930:45:::1;;;::::0;-1:-1:-1;;;13930:45:0;;7385:2:1;13930:45:0::1;::::0;::::1;7367:21:1::0;7424:2;7404:18;;;7397:30;-1:-1:-1;;;7443:18:1;;;7436:45;7498:18;;13930:45:0::1;7183:339:1::0;13930:45:0::1;14002:15;13986;:31:::0;14068:4:::1;3450:13;3864:1;3450:2;:13;:::i;:::-;3440:23;::::0;:7:::1;:23;:::i;:::-;14047:18;::::0;14063:2:::1;14047:18;:::i;:::-;:25;;;;:::i;:::-;14028:16;:44:::0;14128:5:::1;3450:13;3864:1;3450:2;:13;:::i;:::-;3440:23;::::0;:7:::1;:23;:::i;:::-;14106:19;::::0;14122:3:::1;14106:19;:::i;:::-;:27;;;;:::i;:::-;14083:20;:50:::0;14149:17:::1;::::0;::::1;::::0;;;::::1;13871:303::o:0;16833:446::-;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16951:24:0;::::1;::::0;;::::1;::::0;:64:::1;;-1:-1:-1::0;16999:15:0::1;::::0;-1:-1:-1;;;;;16977:38:0;;::::1;16999:15:::0;::::1;16977:38;;16951:64;:93;;;;-1:-1:-1::0;;;;;;17017:27:0;::::1;17039:4;17017:27;;16951:93;16943:102;;;::::0;::::1;;17124:30;::::0;-1:-1:-1;;;17124:30:0;;17148:4:::1;17124:30;::::0;::::1;2999:51:1::0;17078:12:0;;17056::::1;::::0;-1:-1:-1;;;;;17124:15:0;::::1;::::0;::::1;::::0;2972:18:1;;17124:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17102:52:::0;-1:-1:-1;;;;;;17165:14:0;::::1;;17180:10;17225:3;17192:30;17206:16:::0;17102:52;17192:30:::1;:::i;:::-;:36;;;;:::i;:::-;17165:64;::::0;-1:-1:-1;;;;;;17165:64:0::1;::::0;;;;;;-1:-1:-1;;;;;7908:32:1;;;17165:64:0::1;::::0;::::1;7890:51:1::0;7957:18;;;7950:34;7863:18;;17165:64:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;17245:26:0::1;::::0;1546:25:1;;;17245:26:0::1;::::0;1534:2:1;1519:18;17245:26:0::1;;;;;;;16932:347;;16833:446:::0;;:::o;11862:133::-;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;11930:10:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;11930:17:0::1;-1:-1:-1::0;;;;11930:17:0;;::::1;;::::0;;11963:24:::1;::::0;::::1;::::0;::::1;::::0;11941:6;1373:14:1;1366:22;1348:41;;1336:2;1321:18;;1208:187;11963:24:0::1;;;;;;;;11862:133:::0;:::o;13601:258::-;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13707:21:0;::::1;13699:56;;;;-1:-1:-1::0;;;13699:56:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13766:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;13766:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;13817:34;;8765:51:1;;;8832:18;;;8825:50;13817:34:0::1;::::0;8738:18:1;13817:34:0::1;;;;;;;;13601:258:::0;;:::o;12971:288::-;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;13070:2:::1;13059:7;:13;;13051:35;;;::::0;-1:-1:-1;;;13051:35:0;;9088:2:1;13051:35:0::1;::::0;::::1;9070:21:1::0;9127:1;9107:18;;;9100:29;-1:-1:-1;;;9145:18:1;;;9138:39;9194:18;;13051:35:0::1;8886:332:1::0;13051:35:0::1;13116:5;13105:7;:16;;13097:37;;;::::0;-1:-1:-1;;;13097:37:0;;9425:2:1;13097:37:0::1;::::0;::::1;9407:21:1::0;9464:1;9444:18;;;9437:29;-1:-1:-1;;;9482:18:1;;;9475:38;9530:18;;13097:37:0::1;9223:331:1::0;13097:37:0::1;13194:5;13184:7:::0;3450:13:::1;3864:1;3450:2;:13;:::i;:::-;3440:23;::::0;:7:::1;:23;:::i;:::-;13168;;;;:::i;:::-;:31;;;;:::i;:::-;13145:20;:54:::0;13215:36:::1;::::0;1546:25:1;;;13215:36:0::1;::::0;1534:2:1;1519:18;13215:36:0::1;1400:177:1::0;12127:257:0;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12203:21:0;::::1;12195:56;;;;-1:-1:-1::0;;;12195:56:0::1;;;;;;;:::i;:::-;12281:9;::::0;-1:-1:-1;;;;;12281:9:0;;::::1;12270:20:::0;;::::1;::::0;12262:47:::1;;;::::0;-1:-1:-1;;;12262:47:0;;9761:2:1;12262:47:0::1;::::0;::::1;9743:21:1::0;9800:2;9780:18;;;9773:30;-1:-1:-1;;;9819:18:1;;;9812:45;9874:18;;12262:47:0::1;9559:339:1::0;12262:47:0::1;12320:9;:19:::0;;-1:-1:-1;;;;;;12320:19:0::1;-1:-1:-1::0;;;;;12320:19:0;::::1;::::0;;::::1;::::0;;;12355:21:::1;::::0;2999:51:1;;;12355:21:0::1;::::0;2987:2:1;2972:18;12355:21:0::1;2853:203:1::0;16249:334:0;16386:10;16333:4;16374:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16374:32:0;;;;;;;;;;16425:35;;;;16417:60;;;;-1:-1:-1;;;16417:60:0;;10105:2:1;16417:60:0;;;10087:21:1;10144:2;10124:18;;;10117:30;-1:-1:-1;;;10163:18:1;;;10156:42;10215:18;;16417:60:0;9903:336:1;16417:60:0;16488:65;16497:10;16509:7;16518:34;16537:15;16518:16;:34;:::i;16488:65::-;-1:-1:-1;16571:4:0;;16249:334;-1:-1:-1;;;16249:334:0:o;14869:164::-;14946:4;14963:40;14973:10;14985:9;14996:6;14963:9;:40::i;8734:516::-;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;8859:3:::1;8881:11:::0;;::::1;::::0;::::1;::::0;:25:::1;;;8900:6;8894:4;:12;;8881:25;:44;;;;;8919:6;8908:9;:17;;8881:44;8873:74;;;::::0;-1:-1:-1;;;8873:74:0;;10446:2:1;8873:74:0::1;::::0;::::1;10428:21:1::0;10485:2;10465:18;;;10458:30;-1:-1:-1;;;10504:18:1;;;10497:48;10562:18;;8873:74:0::1;10244:342:1::0;8873:74:0::1;3664:4;8966:17;8974:9:::0;8966:7;:17:::1;:::i;:::-;:34;8958:79;;;::::0;-1:-1:-1;;;8958:79:0;;10793:2:1;8958:79:0::1;::::0;::::1;10775:21:1::0;10832:2;10812:18;;;10805:30;10871:34;10851:18;;;10844:62;-1:-1:-1;;;10922:18:1;;;10915:31;10963:19;;8958:79:0::1;10591:397:1::0;8958:79:0::1;9048:6;:10:::0;;;9069:7:::1;:12:::0;;;9092:11:::1;:21:::0;;;9124:10:::1;:18:::0;;;9153:12:::1;:22:::0;;;9191:51:::1;::::0;;11252:25:1;;;11308:2;11293:18;;11286:34;;;11336:18;;;11329:34;;;11394:2;11379:18;;11372:34;;;11437:3;11422:19;;11415:35;;;9191:51:0::1;::::0;11239:3:1;11224:19;9191:51:0::1;;;;;;;8836:414;8734:516:::0;;;;;:::o;8438:290::-;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;8578:4:::1;8546:30;:36;;8538:45;;;::::0;::::1;;8594:19;:50:::0;;;8660:60:::1;::::0;1546:25:1;;;8660:60:0::1;::::0;1534:2:1;1519:18;8660:60:0::1;1400:177:1::0;12681:278:0;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;12783:2:::1;12772:7;:13;;12764:32;;;::::0;-1:-1:-1;;;12764:32:0;;11663:2:1;12764:32:0::1;::::0;::::1;11645:21:1::0;11702:1;11682:18;;;11675:29;-1:-1:-1;;;11720:18:1;;;11713:36;11766:18;;12764:32:0::1;11461:329:1::0;12764:32:0::1;12826:4;12815:7;:15;;12807:36;;;::::0;-1:-1:-1;;;12807:36:0;;9425:2:1;12807:36:0::1;::::0;::::1;9407:21:1::0;9464:1;9444:18;;;9437:29;-1:-1:-1;;;9482:18:1;;;9475:38;9530:18;;12807:36:0::1;9223:331:1::0;12807:36:0::1;12899:4;12889:7:::0;3450:13:::1;3864:1;3450:2;:13;:::i;:::-;3440:23;::::0;:7:::1;:23;:::i;:::-;12873;;;;:::i;:::-;:30;;;;:::i;:::-;12854:16;:49:::0;12919:32:::1;::::0;1546:25:1;;;12919:32:0::1;::::0;1534:2:1;1519:18;12919:32:0::1;1400:177:1::0;8180:252:0;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;8297:2:::1;8272:23;:27;;8264:36;;;::::0;::::1;;8328:12;:36:::0;;;8380:44:::1;::::0;1546:25:1;;;8380:44:0::1;::::0;1534:2:1;1519:18;8380:44:0::1;1400:177:1::0;13271:318:0;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;13388:4:::1;-1:-1:-1::0;;;;;13371:22:0;::::1;::::0;13363:60:::1;;;::::0;-1:-1:-1;;;13363:60:0;;11997:2:1;13363:60:0::1;::::0;::::1;11979:21:1::0;12036:2;12016:18;;;12009:30;12075:28;12055:18;;;12048:56;12121:18;;13363:60:0::1;11795:350:1::0;13363:60:0::1;-1:-1:-1::0;;;;;13442:21:0;::::1;13434:56;;;;-1:-1:-1::0;;;13434:56:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13501:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;;;;:33;;-1:-1:-1;;13501:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;13550:31;;8765:51:1;;;8832:18;;;8825:50;13550:31:0::1;::::0;8738:18:1;13550:31:0::1;8597:284:1::0;12392:281:0;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12473:22:0;::::1;12465:57;;;;-1:-1:-1::0;;;12465:57:0::1;;;;;;;:::i;:::-;12553:13;::::0;-1:-1:-1;;;;;12553:13:0;;::::1;12541:25:::0;;::::1;::::0;12533:52:::1;;;::::0;-1:-1:-1;;;12533:52:0;;9761:2:1;12533:52:0::1;::::0;::::1;9743:21:1::0;9800:2;9780:18;;;9773:30;-1:-1:-1;;;9819:18:1;;;9812:45;9874:18;;12533:52:0::1;9559:339:1::0;12533:52:0::1;12596:13;:24:::0;;-1:-1:-1;;;;;;12596:24:0::1;-1:-1:-1::0;;;;;12596:24:0;::::1;::::0;;::::1;::::0;;;12636:29:::1;::::0;2999:51:1;;;12636:29:0::1;::::0;2987:2:1;2972:18;12636:29:0::1;2853:203:1::0;2704:236:0;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2785:22:0;::::1;2777:73;;;::::0;-1:-1:-1;;;2777:73:0;;12352:2:1;2777:73:0::1;::::0;::::1;12334:21:1::0;12391:2;12371:18;;;12364:30;12430:34;12410:18;;;12403:62;-1:-1:-1;;;12481:18:1;;;12474:36;12527:19;;2777:73:0::1;12150:402:1::0;2777:73:0::1;2887:6;::::0;;2866:38:::1;::::0;-1:-1:-1;;;;;2866:38:0;;::::1;::::0;2887:6;::::1;::::0;2866:38:::1;::::0;::::1;2915:6;:17:::0;;-1:-1:-1;;;;;;2915:17:0::1;-1:-1:-1::0;;;;;2915:17:0;;;::::1;::::0;;;::::1;::::0;;2704:236::o;11593:263::-;2485:10;2474:7;2387;2414:6;-1:-1:-1;;;;;2414:6:0;;2349:79;2474:7;-1:-1:-1;;;;;2474:21:0;;2466:66;;;;-1:-1:-1;;;2466:66:0;;;;;;;:::i;:::-;11677:15:::1;::::0;-1:-1:-1;;;;;11677:15:0;;::::1;11671:21:::0;;::::1;::::0;11663:58:::1;;;::::0;-1:-1:-1;;;11663:58:0;;12759:2:1;11663:58:0::1;::::0;::::1;12741:21:1::0;12798:2;12778:18;;;12771:30;12837:27;12817:18;;;12810:55;12882:18;;11663:58:0::1;12557:349:1::0;11663:58:0::1;-1:-1:-1::0;;;;;11740:18:0;::::1;11732:53;;;;-1:-1:-1::0;;;11732:53:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11796:12:0;::::1;;::::0;;;:6:::1;:12;::::0;;;;;;;;:16;;-1:-1:-1;;11796:16:0::1;::::0;::::1;;::::0;;::::1;::::0;;;11828:20;;8765:51:1;;;8832:18;;;8825:50;11828:20:0::1;::::0;8738:18:1;11828:20:0::1;8597:284:1::0;15353:294:0;-1:-1:-1;;;;;15443:19:0;;15435:49;;;;-1:-1:-1;;;15435:49:0;;13113:2:1;15435:49:0;;;13095:21:1;13152:2;13132:18;;;13125:30;-1:-1:-1;;;13171:18:1;;;13164:47;13228:18;;15435:49:0;12911:341:1;15435:49:0;-1:-1:-1;;;;;15503:21:0;;15495:49;;;;-1:-1:-1;;;15495:49:0;;13459:2:1;15495:49:0;;;13441:21:1;13498:2;13478:18;;;13471:30;-1:-1:-1;;;13517:18:1;;;13510:45;13572:18;;15495:49:0;13257:339:1;15495:49:0;-1:-1:-1;;;;;15555:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15607:32;;1546:25:1;;;15607:32:0;;1519:18:1;15607:32:0;;;;;;;15353:294;;;:::o;5171:505::-;-1:-1:-1;;;;;5264:20:0;;5256:51;;;;-1:-1:-1;;;5256:51:0;;13803:2:1;5256:51:0;;;13785:21:1;13842:2;13822:18;;;13815:30;-1:-1:-1;;;13861:18:1;;;13854:48;13919:18;;5256:51:0;13601:342:1;5256:51:0;-1:-1:-1;;;;;5326:23:0;;5318:52;;;;-1:-1:-1;;;5318:52:0;;14150:2:1;5318:52:0;;;14132:21:1;14189:2;14169:18;;;14162:30;-1:-1:-1;;;14208:18:1;;;14201:46;14264:18;;5318:52:0;13948:340:1;5318:52:0;-1:-1:-1;;;;;5384:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;5412:27:0;;;;;;:16;:27;;;;;;;;5384:55;5381:274;;;5454:43;5471:6;5479:9;5490:6;5454:16;:43::i;:::-;5171:505;;;:::o;5381:274::-;5561:1;5545:15;;:17;5537:52;;;;-1:-1:-1;;;5537:52:0;;14495:2:1;5537:52:0;;;14477:21:1;14534:2;14514:18;;;14507:30;14573:25;14553:18;;;14546:53;14616:18;;5537:52:0;14293:347:1;5537:52:0;5604:39;5619:6;5626:9;5636:6;5604:14;:39::i;9420:1074::-;4310:27;:34;;-1:-1:-1;;;;4310:34:0;-1:-1:-1;;;4310:34:0;;;9536:4:::1;4310:34:::0;9518:24;;;4340:4;9518:24:::1;::::0;;;;;9580:10:::1;::::0;9567:12:::1;::::0;9518:24;;4310:34;9567:23:::1;::::0;9580:10;9567:23:::1;:::i;:::-;9645:12;::::0;9628:15:::1;::::0;-1:-1:-1;;;;;9628:15:0::1;9601:16;9618:26:::0;;;:9:::1;:26;::::0;;;;;9553:37;;-1:-1:-1;9601:16:0;9658:4:::1;::::0;9618:39:::1;::::0;::::1;:::i;:::-;:44;;;;:::i;:::-;9601:61;;9676:8;9686:1;9676:11:::0;9673:22:::1;;9688:7;;;;;9673:22;9708:12;9705:134;;;-1:-1:-1::0;9765:4:0::1;9747:24;::::0;;;:9:::1;:24;::::0;;;;;9705:134:::1;;;9806:11;9790:15;:27;9787:52;;;9832:7;;;;;9787:52;9849:22;9872:17;:15;:17::i;:::-;:55;;9919:8;9905:12;;9893:11;:24;;;;:::i;:::-;9892:35;;;;:::i;:::-;9872:55;;;9890:1;9872:55;9849:78:::0;-1:-1:-1;9940:20:0::1;9962:29;9849:78:::0;9962:11;:29:::1;:::i;:::-;9940:51:::0;-1:-1:-1;10004:12:0::1;10017:19;10035:1;10017:17:::0;:19:::1;:::i;:::-;10004:32:::0;-1:-1:-1;10047:14:0::1;10062:23;10070:15:::0;10004:32;10062:23:::1;:::i;:::-;10047:38:::0;-1:-1:-1;10121:21:0::1;10153:27;10047:38:::0;10153:16:::1;:27::i;:::-;10191:11;10204:41;10228:17:::0;10204:21:::1;:41;:::i;:::-;10191:55:::0;-1:-1:-1;10260:19:0;;10257:135:::1;;10295:11;10326:9:::0;10310:14:::1;10317:7:::0;10310:6;:14:::1;:::i;:::-;10309:26;;;;:::i;:::-;10295:40;;10350:30;10364:7;10373:6;10350:13;:30::i;:::-;10280:112;10257:135;10415:13;::::0;:51:::1;::::0;10403:9:::1;::::0;-1:-1:-1;;;;;10415:13:0::1;::::0;10440:21:::1;::::0;10403:9;10415:51;10403:9;10415:51;10440:21;10415:13;:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;4355:1:0::1;-1:-1:-1::0;4367:27:0;:35;;-1:-1:-1;;;;4367:35:0;;;9420:1074::o;7835:339::-;-1:-1:-1;;;;;7948:17:0;;7927:18;7948:17;;;:9;:17;;;;;;7984:23;;;;7976:60;;;;-1:-1:-1;;;7976:60:0;;15057:2:1;7976:60:0;;;15039:21:1;15096:2;15076:18;;;15069:30;-1:-1:-1;;;15115:18:1;;;15108:54;15179:18;;7976:60:0;14855:348:1;7976:60:0;-1:-1:-1;;;;;8047:17:0;;;;;;:9;:17;;;;;:25;;8066:6;;8047:17;:25;;8066:6;;8047:25;:::i;:::-;;;;-1:-1:-1;;;;;;;8083:20:0;;;;;;:9;:20;;;;;:28;;8105:6;;8083:20;:28;;8105:6;;8083:28;:::i;:::-;;;;;;;;8149:9;-1:-1:-1;;;;;8133:33:0;8142:6;-1:-1:-1;;;;;8133:33:0;;8159:6;8133:33;;;;1546:25:1;;1534:2;1519:18;;1400:177;8133:33:0;;;;;;;;7916:258;7835:339;;;:::o;5682:1965::-;-1:-1:-1;;;;;5793:17:0;;5772:18;5793:17;;;:9;:17;;;;;;5829:23;;;;5821:60;;;;-1:-1:-1;;;5821:60:0;;15057:2:1;5821:60:0;;;15039:21:1;15096:2;15076:18;;;15069:30;-1:-1:-1;;;15115:18:1;;;15108:54;15179:18;;5821:60:0;14855:348:1;5821:60:0;-1:-1:-1;;;;;5915:26:0;;5892:20;5915:26;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;5945:29:0;;;;;;:18;:29;;;;;;;;5915:59;-1:-1:-1;;;;;6003:14:0;;;;;;:6;:14;;;;;;5892:82;;-1:-1:-1;6003:14:0;;:47;;;;;6035:15;6034:16;6003:47;5985:686;;;6113:20;;6103:6;:30;;6077:132;;;;-1:-1:-1;;;6077:132:0;;15410:2:1;6077:132:0;;;15392:21:1;15449:2;15429:18;;;15422:30;15488:34;15468:18;;;15461:62;-1:-1:-1;;;15539:18:1;;;15532:38;15587:19;;6077:132:0;15208:404:1;6077:132:0;-1:-1:-1;;;;;14727:18:0;;6224:32;14727:18;;;:9;:18;;;;;;6357:16;;6320:33;6347:6;14727:18;6320:33;:::i;:::-;:53;;6294:151;;;;-1:-1:-1;;;6294:151:0;;;;;;;:::i;:::-;6062:395;5985:686;;;-1:-1:-1;;;;;6481:17:0;;;;;;:6;:17;;;;;;;;:50;;;;;6516:15;6515:16;6481:50;6463:208;;;6576:20;;6566:6;:30;;6558:101;;;;-1:-1:-1;;;6558:101:0;;16224:2:1;6558:101:0;;;16206:21:1;16263:2;16243:18;;;16236:30;16302:34;16282:18;;;16275:62;16373:28;16353:18;;;16346:56;16419:19;;6558:101:0;16022:422:1;6558:101:0;-1:-1:-1;;;;;6694:14:0;;;6683:10;6694:14;;;:6;:14;;;;;;;6731:17;;;;;;;;6694:14;;;;;6731:17;;6778:397;;;;-1:-1:-1;6807:7:0;;6778:397;;;6848:5;6845:330;;;-1:-1:-1;6873:6:0;;6845:330;;;-1:-1:-1;;;;;14727:18:0;;6911:32;14727:18;;;:9;:18;;;;;;7044:16;;7007:33;7034:6;14727:18;7007:33;:::i;:::-;:53;;6981:151;;;;-1:-1:-1;;;6981:151:0;;;;;;;:::i;:::-;-1:-1:-1;;7152:11:0;;6845:330;7199:15;;-1:-1:-1;;;;;7191:23:0;;;7199:15;;7191:23;;;;7190:40;;-1:-1:-1;7219:10:0;;-1:-1:-1;;;7219:10:0;;;;7218:11;7190:40;:72;;;;-1:-1:-1;7234:27:0;;-1:-1:-1;;;7234:27:0;;;;7233:28;7190:72;7187:115;;;7277:25;7296:5;7277:18;:25::i;:::-;7323:18;7342:51;7356:6;7364:3;7380:12;;7369:10;;:23;;;;:::i;:::-;7342:13;:51::i;:::-;7323:70;-1:-1:-1;7404:16:0;7421:20;7323:70;7421:6;:20;:::i;:::-;-1:-1:-1;;;;;7454:17:0;;;;;;:9;:17;;;;;:25;;7404:37;;-1:-1:-1;7473:6:0;;7454:17;;;:25;;7473:6;;7454:25;:::i;:::-;;;;-1:-1:-1;;7508:4:0;7490:24;;;;:9;:24;;;;;:41;;7518:13;;7490:24;:41;;7518:13;;7490:41;:::i;:::-;;;;-1:-1:-1;;;;;;;7542:20:0;;;;;;:9;:20;;;;;:33;;7564:11;;7542:20;:33;;7564:11;;7542:33;:::i;:::-;;;;;;;;7617:9;-1:-1:-1;;;;;7601:38:0;7610:6;-1:-1:-1;;;;;7601:38:0;;7627:11;7601:38;;;;1546:25:1;;1534:2;1519:18;;1400:177;7601:38:0;;;;;;;;5761:1886;;;;;;;5682:1965;;;:::o;10500:462::-;10590:10;;10558:52;;10575:4;;-1:-1:-1;;;;;10590:10:0;10603:6;10558:8;:52::i;:::-;10645:16;;;10659:1;10645:16;;;;;;;;10621:21;;10645:16;;;;;;;;;;-1:-1:-1;10645:16:0;10621:40;;10690:4;10672;10677:1;10672:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10672:23:0;;;:7;;;;;;;;;;:23;;;;10716:10;;:17;;;-1:-1:-1;;;10716:17:0;;;;:10;;;;;:15;;:17;;;;;10672:7;;10716:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10706:4;10711:1;10706:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10706:27:0;;;:7;;;;;;;;;:27;10750:10;;:186;;-1:-1:-1;;;10750:186:0;;:10;;;:61;;:186;;10826:6;;10750:10;;10863:4;;10890;;10910:15;;10750:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10547:415;10500:462;:::o;10968:380::-;11076:10;;11044:57;;11061:4;;-1:-1:-1;;;;;11076:10:0;11089:11;11044:8;:57::i;:::-;11112:10;;:228;;-1:-1:-1;;;11112:228:0;;11179:4;11112:228;;;18295:34:1;18345:18;;;18338:34;;;11112:10:0;18388:18:1;;;18381:34;;;18431:18;;;18424:34;11257:42:0;18474:19:1;;;18467:44;11314:15:0;18527:19:1;;;18520:35;-1:-1:-1;;;;;11112:10:0;;;;:26;;11146:9;;18229:19:1;;11112:228:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10968:380;;:::o;7653:176::-;7738:4;7789:31;3664:4;;7789:31;:::i;:::-;7774:10;7763;7770:3;7763:6;:10;:::i;:::-;:21;;;;:::i;:::-;7762:59;;;;:::i;:::-;7755:66;7653:176;-1:-1:-1;;;;7653:176:0:o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:548::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;483:3;668:1;663:2;654:6;643:9;639:22;635:31;628:42;738:2;731;727:7;722:2;714:6;710:15;706:29;695:9;691:45;687:54;679:62;;;;199:548;;;;:::o;752:131::-;-1:-1:-1;;;;;827:31:1;;817:42;;807:70;;873:1;870;863:12;807:70;752:131;:::o;888:315::-;956:6;964;1017:2;1005:9;996:7;992:23;988:32;985:52;;;1033:1;1030;1023:12;985:52;1072:9;1059:23;1091:31;1116:5;1091:31;:::i;:::-;1141:5;1193:2;1178:18;;;;1165:32;;-1:-1:-1;;;888:315:1:o;1582:456::-;1659:6;1667;1675;1728:2;1716:9;1707:7;1703:23;1699:32;1696:52;;;1744:1;1741;1734:12;1696:52;1783:9;1770:23;1802:31;1827:5;1802:31;:::i;:::-;1852:5;-1:-1:-1;1909:2:1;1894:18;;1881:32;1922:33;1881:32;1922:33;:::i;:::-;1582:456;;1974:7;;-1:-1:-1;;;2028:2:1;2013:18;;;;2000:32;;1582:456::o;2232:247::-;2291:6;2344:2;2332:9;2323:7;2319:23;2315:32;2312:52;;;2360:1;2357;2350:12;2312:52;2399:9;2386:23;2418:31;2443:5;2418:31;:::i;:::-;2468:5;2232:247;-1:-1:-1;;;2232:247:1:o;2484:118::-;2570:5;2563:13;2556:21;2549:5;2546:32;2536:60;;2592:1;2589;2582:12;2607:241;2663:6;2716:2;2704:9;2695:7;2691:23;2687:32;2684:52;;;2732:1;2729;2722:12;2684:52;2771:9;2758:23;2790:28;2812:5;2790:28;:::i;3061:382::-;3126:6;3134;3187:2;3175:9;3166:7;3162:23;3158:32;3155:52;;;3203:1;3200;3193:12;3155:52;3242:9;3229:23;3261:31;3286:5;3261:31;:::i;:::-;3311:5;-1:-1:-1;3368:2:1;3353:18;;3340:32;3381:30;3340:32;3381:30;:::i;:::-;3430:7;3420:17;;;3061:382;;;;;:::o;3448:454::-;3543:6;3551;3559;3567;3575;3628:3;3616:9;3607:7;3603:23;3599:33;3596:53;;;3645:1;3642;3635:12;3596:53;-1:-1:-1;;3668:23:1;;;3738:2;3723:18;;3710:32;;-1:-1:-1;3789:2:1;3774:18;;3761:32;;3840:2;3825:18;;3812:32;;-1:-1:-1;3891:3:1;3876:19;3863:33;;-1:-1:-1;3448:454:1;-1:-1:-1;3448:454:1:o;3907:388::-;3975:6;3983;4036:2;4024:9;4015:7;4011:23;4007:32;4004:52;;;4052:1;4049;4042:12;4004:52;4091:9;4078:23;4110:31;4135:5;4110:31;:::i;:::-;4160:5;-1:-1:-1;4217:2:1;4202:18;;4189:32;4230:33;4189:32;4230:33;:::i;4300:356::-;4502:2;4484:21;;;4521:18;;;4514:30;4580:34;4575:2;4560:18;;4553:62;4647:2;4632:18;;4300:356::o;4661:127::-;4722:10;4717:3;4713:20;4710:1;4703:31;4753:4;4750:1;4743:15;4777:4;4774:1;4767:15;4793:168;4866:9;;;4897;;4914:15;;;4908:22;;4894:37;4884:71;;4935:18;;:::i;4966:217::-;5006:1;5032;5022:132;;5076:10;5071:3;5067:20;5064:1;5057:31;5111:4;5108:1;5101:15;5139:4;5136:1;5129:15;5022:132;-1:-1:-1;5168:9:1;;4966:217::o;5188:422::-;5277:1;5320:5;5277:1;5334:270;5355:7;5345:8;5342:21;5334:270;;;5414:4;5410:1;5406:6;5402:17;5396:4;5393:27;5390:53;;;5423:18;;:::i;:::-;5473:7;5463:8;5459:22;5456:55;;;5493:16;;;;5456:55;5572:22;;;;5532:15;;;;5334:270;;;5338:3;5188:422;;;;;:::o;5615:806::-;5664:5;5694:8;5684:80;;-1:-1:-1;5735:1:1;5749:5;;5684:80;5783:4;5773:76;;-1:-1:-1;5820:1:1;5834:5;;5773:76;5865:4;5883:1;5878:59;;;;5951:1;5946:130;;;;5858:218;;5878:59;5908:1;5899:10;;5922:5;;;5946:130;5983:3;5973:8;5970:17;5967:43;;;5990:18;;:::i;:::-;-1:-1:-1;;6046:1:1;6032:16;;6061:5;;5858:218;;6160:2;6150:8;6147:16;6141:3;6135:4;6132:13;6128:36;6122:2;6112:8;6109:16;6104:2;6098:4;6095:12;6091:35;6088:77;6085:159;;;-1:-1:-1;6197:19:1;;;6229:5;;6085:159;6276:34;6301:8;6295:4;6276:34;:::i;:::-;6346:6;6342:1;6338:6;6334:19;6325:7;6322:32;6319:58;;;6357:18;;:::i;:::-;6395:20;;5615:806;-1:-1:-1;;;5615:806:1:o;6426:140::-;6484:5;6513:47;6554:4;6544:8;6540:19;6534:4;6513:47;:::i;6920:128::-;6987:9;;;7008:11;;;7005:37;;;7022:18;;:::i;7053:125::-;7118:9;;;7139:10;;;7136:36;;;7152:18;;:::i;7527:184::-;7597:6;7650:2;7638:9;7629:7;7625:23;7621:32;7618:52;;;7666:1;7663;7656:12;7618:52;-1:-1:-1;7689:16:1;;7527:184;-1:-1:-1;7527:184:1:o;7995:245::-;8062:6;8115:2;8103:9;8094:7;8090:23;8086:32;8083:52;;;8131:1;8128;8121:12;8083:52;8163:9;8157:16;8182:28;8204:5;8182:28;:::i;8245:347::-;8447:2;8429:21;;;8486:2;8466:18;;;8459:30;8525:25;8520:2;8505:18;;8498:53;8583:2;8568:18;;8245:347::o;15617:400::-;15819:2;15801:21;;;15858:2;15838:18;;;15831:30;15897:34;15892:2;15877:18;;15870:62;-1:-1:-1;;;15963:2:1;15948:18;;15941:34;16007:3;15992:19;;15617:400::o;16581:127::-;16642:10;16637:3;16633:20;16630:1;16623:31;16673:4;16670:1;16663:15;16697:4;16694:1;16687:15;16713:251;16783:6;16836:2;16824:9;16815:7;16811:23;16807:32;16804:52;;;16852:1;16849;16842:12;16804:52;16884:9;16878:16;16903:31;16928:5;16903:31;:::i;16969:980::-;17231:4;17279:3;17268:9;17264:19;17310:6;17299:9;17292:25;17336:2;17374:6;17369:2;17358:9;17354:18;17347:34;17417:3;17412:2;17401:9;17397:18;17390:31;17441:6;17476;17470:13;17507:6;17499;17492:22;17545:3;17534:9;17530:19;17523:26;;17584:2;17576:6;17572:15;17558:29;;17605:1;17615:195;17629:6;17626:1;17623:13;17615:195;;;17694:13;;-1:-1:-1;;;;;17690:39:1;17678:52;;17785:15;;;;17750:12;;;;17726:1;17644:9;17615:195;;;-1:-1:-1;;;;;;;17866:32:1;;;;17861:2;17846:18;;17839:60;-1:-1:-1;;;17930:3:1;17915:19;17908:35;17827:3;16969:980;-1:-1:-1;;;16969:980:1:o;18566:306::-;18654:6;18662;18670;18723:2;18711:9;18702:7;18698:23;18694:32;18691:52;;;18739:1;18736;18729:12;18691:52;18768:9;18762:16;18752:26;;18818:2;18807:9;18803:18;18797:25;18787:35;;18862:2;18851:9;18847:18;18841:25;18831:35;;18566:306;;;;;:::o

Swarm Source

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