ETH Price: $3,243.18 (+2.38%)
Gas: 4 Gwei

Token

Old Luna (OL)
 

Overview

Max Total Supply

1,000,000 OL

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,499.05 OL

Value
$0.00
0x6666660dbc7bfad71753b24e7dc7ef8ed02cc470
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:
OL

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
      
        return msg.data;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    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);
}

library SafeMath {

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

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

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

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

contract OL is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Old Luna";
    string private _symbol = "OL";
    uint8 private _decimals = 18;

    address payable public marketingWallet = payable(0x2706BDcC37D70Fe3EA359CCFce73A509a1745b1A);
    address payable public DeveloperWallet = payable(0x2706BDcC37D70Fe3EA359CCFce73A509a1745b1A);
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public blacklist;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 public _buyLiquidityFee = 3;
    uint256 public _buyMarketingFee = 1;
    uint256 public _buyDeveloperFee = 1;
    
    uint256 public _sellLiquidityFee = 5;
    uint256 public _sellMarketingFee = 15;
    uint256 public _sellDeveloperFee = 5;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 1000000 * 10**_decimals;

    uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(100);   //0.001%

    uint256 public _maxTxAmount =  _totalSupply.mul(1).div(100);  //1%
    uint256 public _walletMax =   _totalSupply.mul(1).div(100);   //1%

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[DeveloperWallet] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[marketingWallet] = true;
        isWalletLimitExempt[DeveloperWallet] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[marketingWallet] = true;
        isTxLimitExempt[DeveloperWallet] = true;
        isTxLimitExempt[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);

        isMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

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

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

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

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTransactionLimit = _status;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWallet = payable(newAddress);
    }

    function setDeveloperWalletAddress(address newAddress) external onlyOwner() {
        DeveloperWallet = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    function setBlacklist(address _adr, bool _status) external onlyOwner {
        blacklist[_adr] = _status;
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
    }

    function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _buyLiquidityFee = _Liquidity;
        _buyMarketingFee = _Marketing;
        _buyDeveloperFee = _Developer;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
    }

    function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _sellLiquidityFee = _Liquidity;
        _sellMarketingFee = _Marketing;
        _sellDeveloperFee = _Developer;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!blacklist[sender] && !blacklist[recipient], "Bot Enemy address Restricted!");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

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

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Amount Exceed From Max Wallet Limit!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
        
    }

    function rescueStuckedToken(address _token, uint _amount) external onlyOwner {
        IERC20(_token).transfer(msg.sender,_amount);
    }

    function rescueFunds() external onlyOwner {
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os);
    }

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        uint256 totalShares = _totalTaxIfBuying.add(_totalTaxIfSelling);

        uint256 liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 MarketingShare = _buyMarketingFee.add(_sellMarketingFee);
        // uint256 DeveloperShare = _buyDeveloperFee.add(_sellDeveloperFee);
        
        uint256 tokenForLp = tAmount.mul(liquidityShare).div(totalShares).div(2);
        uint256 tokenForSwap = tAmount.sub(tokenForLp);

        uint256 initialBalance =  address(this).balance;
        swapTokensForEth(tokenForSwap);
        uint256 recievedBalance =  address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(liquidityShare.div(2));

        uint256 amountETHLiquidity = recievedBalance.mul(liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = recievedBalance.mul(MarketingShare).div(totalETHFee);
        uint256 amountETHDeveloper = recievedBalance.sub(amountETHLiquidity).sub(amountETHMarketing);

        if(amountETHMarketing > 0) {
            payable(marketingWallet).transfer(amountETHMarketing);
        }

        if(amountETHDeveloper > 0) {
            payable(DeveloperWallet).transfer(amountETHDeveloper);
        }         

        if(amountETHLiquidity > 0 && tokenForLp > 0) {
            addLiquidity(tokenForLp, amountETHLiquidity);
        }
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    /* AirDrop Function*/

    function airdrop(address[] calldata _address,uint[] calldata _tokens) external onlyOwner {
        address account = msg.sender;
        require(_address.length == _tokens.length,"Error: Mismatch Length");
        uint tokenCount;
        for(uint i = 0; i < _tokens.length; i++) {
            tokenCount += _tokens[i];
        }
        require(balanceOf(account) >= tokenCount,"Error: Insufficient Error!!");
        _balances[account] = _balances[account].sub(tokenCount); 
        for(uint j = 0; j < _address.length; j++) {
            _balances[_address[j]] = _balances[_address[j]].add(_tokens[j]);
            emit Transfer(account, _address[j], _tokens[j]);
        }

    }

    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"airdrop","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":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDeveloperWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

610100604052600860c0819052674f6c64204c756e6160c01b60e09081526200002c9160019190620007fa565b506040805180820190915260028082526113d360f21b6020909201918252620000569181620007fa565b5060038054742706bdcc37d70fe3ea359ccfce73a509a1745b1a126001600160a81b0319909116178155600480546001600160a01b031916732706bdcc37d70fe3ea359ccfce73a509a1745b1a1790556ddead000000000000000000000000608052600060a052600c556001600d819055600e556005600f818155601055601155620000e56012600a620009a4565b620000f490620f424062000a63565b6014556200012e60646200011a60016014546200067d60201b62001bd71790919060201c565b6200071160201b62001c561790919060201c565b6015556200015460646200011a60016014546200067d60201b62001bd71790919060201c565b6016556200017a60646200011a60016014546200067d60201b62001bd71790919060201c565b6017556019805463ffffffff60a81b1916630101000160a81b179055348015620001a357600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200023857600080fd5b505afa1580156200024d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002739190620008a0565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002bc57600080fd5b505afa158015620002d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f79190620008a0565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200034057600080fd5b505af115801562000355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037b9190620008a0565b601980546001600160a01b039283166001600160a01b0319918216179091556018805492841692909116821790553060009081526006602090815260408083209383529290529081206000199055600190600790620003e26000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560035461010090048216815260079093528183208054851660019081179091556004549091168352818320805485168217905530835290822080549093168117909255600a90620004696000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600354610100900482168152600a9093528183208054851660019081179091556004548216845282842080548616821790556019549091168352818320805485168217905530835290822080549093168117909255600b90620005026000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600354610100900482168152600b84528281208054861660019081179091556004549092168152828120805486168317905530815291909120805490931617909155600e54600d54600c54620005a99362000595929062001c986200075b821b17901c565b6200075b60201b62001c981790919060201c565b601281905550620005d460115462000595601054600f546200075b60201b62001c981790919060201c565b6013556019546001600160a01b03166000908152600860205260408120805460ff19166001179055601454906005906200060b3390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6014546040516200066e91815260200190565b60405180910390a35062000ad8565b6000826200068e575060006200070b565b60006200069c838562000a63565b905082620006ab85836200093a565b14620007085760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200070883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620007be60201b60201c565b6000806200076a83856200091f565b905083811015620007085760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620006ff565b60008183620007e25760405162461bcd60e51b8152600401620006ff9190620008c9565b506000620007f184866200093a565b95945050505050565b828054620008089062000a85565b90600052602060002090601f0160209004810192826200082c576000855562000877565b82601f106200084757805160ff191683800117855562000877565b8280016001018555821562000877579182015b82811115620008775782518255916020019190600101906200085a565b506200088592915062000889565b5090565b5b808211156200088557600081556001016200088a565b600060208284031215620008b2578081fd5b81516001600160a01b038116811462000708578182fd5b6000602080835283518082850152825b81811015620008f757858101830151858201604001528201620008d9565b81811115620009095783604083870101525b50601f01601f1916929092016040019392505050565b6000821982111562000935576200093562000ac2565b500190565b6000826200095657634e487b7160e01b81526012600452602481fd5b500490565b600181815b808511156200099c57816000190482111562000980576200098062000ac2565b808516156200098e57918102915b93841c939080029062000960565b509250929050565b60006200070860ff841683600082620009c0575060016200070b565b81620009cf575060006200070b565b8160018114620009e85760028114620009f35762000a13565b60019150506200070b565b60ff84111562000a075762000a0762000ac2565b50506001821b6200070b565b5060208310610133831016604e8410600b841016171562000a38575081810a6200070b565b62000a4483836200095b565b806000190482111562000a5b5762000a5b62000ac2565b029392505050565b600081600019048311821515161562000a805762000a8062000ac2565b500290565b600181811c9082168062000a9a57607f821691505b6020821081141562000abc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c60a05160601c612ebe62000b12600039600081816104110152610e660152600081816105820152610ea10152612ebe6000f3fe6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610b18578063f8f6329014610b39578063f9f92be414610b59578063fb4b8e6c14610b8957600080fd5b8063f1d5f51714610a98578063f2fde38b14610ab8578063f455444614610ad8578063f84ba65d14610af857600080fd5b8063ec28438a116100dc578063ec28438a14610a22578063ee828db314610a42578063ef422a1814610a62578063f0cd1dac14610a8257600080fd5b8063da00097d14610990578063dc44b6a0146109b1578063dd62ed3e146109c7578063e6b2603b14610a0d57600080fd5b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610914578063c860795214610934578063c867d60b1461094a578063d2d7ad831461097a57600080fd5b8063a5d69d1f1461089e578063a9059cbb146108be578063c49b9a80146108de578063c5d24189146108fe57600080fd5b80638b42507f116101c15780638b42507f1461081b5780638da5cb5b1461084b57806395d89b4114610869578063a457c2d71461087e57600080fd5b8063844d591c146107c457806385261485146107e457806388790a681461080557600080fd5b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461075d5780637d1db4a514610782578063807c2d9c1461079857806382eefb43146107ae57600080fd5b80635881f3ef146106d257806367243482146106f257806370a0823114610712578063715018a61461074857600080fd5b80634a74bb02116102a65780634a74bb021461064b5780634cb80fd51461066c5780635194f9bf1461068c5780635342acb4146106a257600080fd5b806339509351146105db5780633b97084a146105fb5780633ecad2711461061b57600080fd5b80631870517a116103445780632563ae83116103135780632563ae831461055057806327c8f835146105705780632b112e49146105a4578063313ce567146105b957600080fd5b80631870517a146104da5780632198cf6c146104fa57806323555d571461051a57806323b872dd1461053057600080fd5b8063095ea7b311610380578063095ea7b31461044b578063153b0d1e1461047b5780631694505e1461049b57806318160ddd146104bb57600080fd5b806306fdde03146103b257806308733214146103dd5780630930907b146103ff57600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610ba9565b6040516103d49190612c39565b60405180910390f35b3480156103e957600080fd5b506103fd6103f8366004612b9e565b610c3b565b005b34801561040b57600080fd5b506104337f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103d4565b34801561045757600080fd5b5061046b610466366004612aba565b610c99565b60405190151581526020016103d4565b34801561048757600080fd5b506103fd610496366004612a8d565b610cb0565b3480156104a757600080fd5b50601854610433906001600160a01b031681565b3480156104c757600080fd5b506014545b6040519081526020016103d4565b3480156104e657600080fd5b506103fd6104f5366004612b9e565b610d05565b34801561050657600080fd5b506103fd610515366004612a8d565b610d54565b34801561052657600080fd5b506104cc600e5481565b34801561053c57600080fd5b5061046b61054b366004612a4d565b610da9565b34801561055c57600080fd5b506103fd61056b366004612b4e565b610e14565b34801561057c57600080fd5b506104337f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b057600080fd5b506104cc610e5c565b3480156105c557600080fd5b5060035460405160ff90911681526020016103d4565b3480156105e757600080fd5b5061046b6105f6366004612aba565b610eef565b34801561060757600080fd5b506103fd610616366004612b86565b610f25565b34801561062757600080fd5b5061046b6106363660046129dd565b60086020526000908152604090205460ff1681565b34801561065757600080fd5b5060195461046b90600160a81b900460ff1681565b34801561067857600080fd5b506103fd6106873660046129dd565b610f54565b34801561069857600080fd5b506104cc60115481565b3480156106ae57600080fd5b5061046b6106bd3660046129dd565b60076020526000908152604090205460ff1681565b3480156106de57600080fd5b506104336106ed3660046129dd565b610fa6565b3480156106fe57600080fd5b506103fd61070d366004612ae5565b61131a565b34801561071e57600080fd5b506104cc61072d3660046129dd565b6001600160a01b031660009081526005602052604090205490565b34801561075457600080fd5b506103fd61161c565b34801561076957600080fd5b506003546104339061010090046001600160a01b031681565b34801561078e57600080fd5b506104cc60165481565b3480156107a457600080fd5b506104cc60175481565b3480156107ba57600080fd5b506104cc60135481565b3480156107d057600080fd5b506103fd6107df366004612a8d565b611696565b3480156107f057600080fd5b5060195461046b90600160c01b900460ff1681565b34801561081157600080fd5b506104cc600f5481565b34801561082757600080fd5b5061046b6108363660046129dd565b600b6020526000908152604090205460ff1681565b34801561085757600080fd5b506000546001600160a01b0316610433565b34801561087557600080fd5b506103c76116eb565b34801561088a57600080fd5b5061046b610899366004612aba565b6116fa565b3480156108aa57600080fd5b506103fd6108b9366004612b4e565b611749565b3480156108ca57600080fd5b5061046b6108d9366004612aba565b611791565b3480156108ea57600080fd5b506103fd6108f9366004612b4e565b61179e565b34801561090a57600080fd5b506104cc600d5481565b34801561092057600080fd5b50601954610433906001600160a01b031681565b34801561094057600080fd5b506104cc60105481565b34801561095657600080fd5b5061046b6109653660046129dd565b600a6020526000908152604090205460ff1681565b34801561098657600080fd5b506104cc60155481565b34801561099c57600080fd5b5060195461046b90600160b01b900460ff1681565b3480156109bd57600080fd5b506104cc600c5481565b3480156109d357600080fd5b506104cc6109e2366004612a15565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b348015610a1957600080fd5b506103fd611820565b348015610a2e57600080fd5b506103fd610a3d366004612b86565b6118a2565b348015610a4e57600080fd5b506103fd610a5d366004612b4e565b6118d1565b348015610a6e57600080fd5b506103fd610a7d366004612a8d565b611919565b348015610a8e57600080fd5b506104cc60125481565b348015610aa457600080fd5b506103fd610ab3366004612b86565b61196e565b348015610ac457600080fd5b506103fd610ad33660046129dd565b61199d565b348015610ae457600080fd5b506103fd610af3366004612aba565b611a87565b348015610b0457600080fd5b506103fd610b13366004612a8d565b611b36565b348015610b2457600080fd5b5060195461046b90600160b81b900460ff1681565b348015610b4557600080fd5b50600454610433906001600160a01b031681565b348015610b6557600080fd5b5061046b610b743660046129dd565b60096020526000908152604090205460ff1681565b348015610b9557600080fd5b506103fd610ba43660046129dd565b611b8b565b606060018054610bb890612d8c565b80601f0160208091040260200160405190810160405280929190818152602001828054610be490612d8c565b8015610c315780601f10610c0657610100808354040283529160200191610c31565b820191906000526020600020905b815481529060010190602001808311610c1457829003601f168201915b5050505050905090565b6000546001600160a01b03163314610c6e5760405162461bcd60e51b8152600401610c6590612c8c565b60405180910390fd5b600f83905560108290556011819055610c9181610c8b8585611c98565b90611c98565b601355505050565b6000610ca6338484611cf7565b5060015b92915050565b6000546001600160a01b03163314610cda5760405162461bcd60e51b8152600401610c6590612c8c565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d2f5760405162461bcd60e51b8152600401610c6590612c8c565b600c839055600d829055600e819055610d4c81610c8b8585611c98565b601255505050565b6000546001600160a01b03163314610d7e5760405162461bcd60e51b8152600401610c6590612c8c565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610db6848484611e1b565b50610e098433610e0485604051806060016040528060288152602001612e1c602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906122cc565b611cf7565b5060015b9392505050565b6000546001600160a01b03163314610e3e5760405162461bcd60e51b8152600401610c6590612c8c565b60198054911515600160b81b0260ff60b81b19909216919091179055565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600090815260056020526040812054610eea90610ee4610edb7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660009081526005602052604090205490565b60145490612306565b90612306565b905090565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610ca6918590610e049086611c98565b6000546001600160a01b03163314610f4f5760405162461bcd60e51b8152600401610c6590612c8c565b601555565b6000546001600160a01b03163314610f7e5760405162461bcd60e51b8152600401610c6590612c8c565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b03163314610fd15760405162461bcd60e51b8152600401610c6590612c8c565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561100f57600080fd5b505afa158015611023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104791906129f9565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561108f57600080fd5b505afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c791906129f9565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561110d57600080fd5b505afa158015611121573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114591906129f9565b91506001600160a01b0382166112c957806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561118e57600080fd5b505afa1580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c691906129f9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561120e57600080fd5b505afa158015611222573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124691906129f9565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561128e57600080fd5b505af11580156112a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c691906129f9565b91505b601980546001600160a01b038085166001600160a01b03199283168117909355601880549490911693909116929092179091556000908152600860205260409020805460ff19166001179055919050565b6000546001600160a01b031633146113445760405162461bcd60e51b8152600401610c6590612c8c565b3383821461138d5760405162461bcd60e51b815260206004820152601660248201527508ae4e4dee474409ad2e6dac2e8c6d04098cadccee8d60531b6044820152606401610c65565b6000805b838110156113df578484828181106113b957634e487b7160e01b600052603260045260246000fd5b90506020020135826113cb9190612d1e565b9150806113d781612dc7565b915050611391565b5080611400836001600160a01b031660009081526005602052604090205490565b101561144e5760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a20496e73756666696369656e74204572726f72212100000000006044820152606401610c65565b6001600160a01b0382166000908152600560205260409020546114719082612306565b6001600160a01b0383166000908152600560205260408120919091555b85811015611613576115198585838181106114b957634e487b7160e01b600052603260045260246000fd5b90506020020135600560008a8a868181106114e457634e487b7160e01b600052603260045260246000fd5b90506020020160208101906114f991906129dd565b6001600160a01b0316815260208101919091526040016000205490611c98565b6005600089898581811061153d57634e487b7160e01b600052603260045260246000fd5b905060200201602081019061155291906129dd565b6001600160a01b0316815260208101919091526040016000205586868281811061158c57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906115a191906129dd565b6001600160a01b0316836001600160a01b0316600080516020612e448339815191528787858181106115e357634e487b7160e01b600052603260045260246000fd5b905060200201356040516115f991815260200190565b60405180910390a38061160b81612dc7565b91505061148e565b50505050505050565b6000546001600160a01b031633146116465760405162461bcd60e51b8152600401610c6590612c8c565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000546001600160a01b031633146116c05760405162461bcd60e51b8152600401610c6590612c8c565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b606060028054610bb890612d8c565b6000610ca63384610e0485604051806060016040528060258152602001612e64602591393360009081526006602090815260408083206001600160a01b038d16845290915290205491906122cc565b6000546001600160a01b031633146117735760405162461bcd60e51b8152600401610c6590612c8c565b60198054911515600160b01b0260ff60b01b19909216919091179055565b6000610e09338484611e1b565b6000546001600160a01b031633146117c85760405162461bcd60e51b8152600401610c6590612c8c565b60198054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061181590831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461184a5760405162461bcd60e51b8152600401610c6590612c8c565b604051600090339047908381818185875af1925050503d806000811461188c576040519150601f19603f3d011682016040523d82523d6000602084013e611891565b606091505b505090508061189f57600080fd5b50565b6000546001600160a01b031633146118cc5760405162461bcd60e51b8152600401610c6590612c8c565b601655565b6000546001600160a01b031633146118fb5760405162461bcd60e51b8152600401610c6590612c8c565b60198054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b031633146119435760405162461bcd60e51b8152600401610c6590612c8c565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119985760405162461bcd60e51b8152600401610c6590612c8c565b601755565b6000546001600160a01b031633146119c75760405162461bcd60e51b8152600401610c6590612c8c565b6001600160a01b038116611a2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c65565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611ab15760405162461bcd60e51b8152600401610c6590612c8c565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b158015611af957600080fd5b505af1158015611b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b319190612b6a565b505050565b6000546001600160a01b03163314611b605760405162461bcd60e51b8152600401610c6590612c8c565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611bb55760405162461bcd60e51b8152600401610c6590612c8c565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600082611be657506000610caa565b6000611bf28385612d56565b905082611bff8583612d36565b14610e0d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c65565b6000610e0d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612348565b600080611ca58385612d1e565b905083811015610e0d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c65565b6001600160a01b038316611d595760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c65565b6001600160a01b038216611dba5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c65565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611e815760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c65565b6001600160a01b038316611ee35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c65565b6001600160a01b03841660009081526009602052604090205460ff16158015611f2557506001600160a01b03831660009081526009602052604090205460ff16155b611f715760405162461bcd60e51b815260206004820152601d60248201527f426f7420456e656d7920616464726573732052657374726963746564210000006044820152606401610c65565b601954600160a01b900460ff1615611f9557611f8e848484612376565b9050610e0d565b6001600160a01b0384166000908152600b602052604090205460ff16158015611fd757506001600160a01b0383166000908152600b602052604090205460ff16155b8015611fec5750601954600160c01b900460ff165b15612054576016548211156120545760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c65565b30600090815260056020526040902054601554811080159081906120825750601954600160a01b900460ff16155b80156120a757506001600160a01b03861660009081526008602052604090205460ff16155b80156120bc5750601954600160a81b900460ff165b156120e257601954600160b01b900460ff16156120d95760155491505b6120e28261244a565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600590915291909120546121349186906122cc565b6001600160a01b038716600090815260056020908152604080832093909355600790529081205460ff168061218157506001600160a01b03861660009081526007602052604090205460ff165b612195576121908787876125fd565b612197565b845b601954909150600160b81b900460ff1680156121cc57506001600160a01b0386166000908152600a602052604090205460ff16155b15612253576017546121f782610c8b896001600160a01b031660009081526005602052604090205490565b11156122535760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c696044820152646d6974212160d81b6064820152608401610c65565b6001600160a01b0386166000908152600560205260409020546122769082611c98565b6001600160a01b038088166000818152600560205260409081902093909355915190891690600080516020612e44833981519152906122b89085815260200190565b60405180910390a360019350505050610e0d565b600081848411156122f05760405162461bcd60e51b8152600401610c659190612c39565b5060006122fd8486612d75565b95945050505050565b6000610e0d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122cc565b600081836123695760405162461bcd60e51b8152600401610c659190612c39565b5060006122fd8486612d36565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526005909152918220546123c79184906122cc565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546123f69083611c98565b6001600160a01b038085166000818152600560205260409081902093909355915190861690600080516020612e44833981519152906124389086815260200190565b60405180910390a35060019392505050565b6019805460ff60a01b1916600160a01b1790556013546012546000916124709190611c98565b9050600061248b600f54600c54611c9890919063ffffffff16565b905060006124a6601054600d54611c9890919063ffffffff16565b905060006124c160026124bb86818988611bd7565b90611c56565b905060006124cf8683612306565b9050476124db826126f1565b60006124e74783612306565b905060006125006124f9886002611c56565b8990612306565b9050600061251560026124bb8481878d611bd7565b90506000612527836124bb868b611bd7565b9050600061253982610ee48786612306565b90508115612581576003546040516101009091046001600160a01b0316906108fc8415029084906000818181858888f1935050505015801561257f573d6000803e3d6000fd5b505b80156125c3576004546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156125c1573d6000803e3d6000fd5b505b6000831180156125d35750600088115b156125e2576125e288846128af565b50506019805460ff60a01b1916905550505050505050505050565b6001600160a01b038316600090815260086020526040812054819060ff16156126415761263a60646124bb60125486611bd790919063ffffffff16565b905061267f565b6001600160a01b03841660009081526008602052604090205460ff161561267f5761267c60646124bb60135486611bd790919063ffffffff16565b90505b80156126e7573060009081526005602052604090205461269f9082611c98565b30600081815260056020526040908190209290925590516001600160a01b03871690600080516020612e44833981519152906126de9085815260200190565b60405180910390a35b6122fd8382612306565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061273457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561278857600080fd5b505afa15801561279c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c091906129f9565b816001815181106127e157634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526018546128079130911684611cf7565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac94790612840908590600090869030904290600401612ce2565b600060405180830381600087803b15801561285a57600080fd5b505af115801561286e573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516128a3929190612cc1565b60405180910390a15050565b6018546128c79030906001600160a01b031684611cf7565b6018546001600160a01b031663f305d7198230856000806128f06000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561295357600080fd5b505af1158015612967573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061298c9190612bc9565b5050505050565b60008083601f8401126129a4578182fd5b50813567ffffffffffffffff8111156129bb578182fd5b6020830191508360208260051b85010111156129d657600080fd5b9250929050565b6000602082840312156129ee578081fd5b8135610e0d81612df8565b600060208284031215612a0a578081fd5b8151610e0d81612df8565b60008060408385031215612a27578081fd5b8235612a3281612df8565b91506020830135612a4281612df8565b809150509250929050565b600080600060608486031215612a61578081fd5b8335612a6c81612df8565b92506020840135612a7c81612df8565b929592945050506040919091013590565b60008060408385031215612a9f578182fd5b8235612aaa81612df8565b91506020830135612a4281612e0d565b60008060408385031215612acc578182fd5b8235612ad781612df8565b946020939093013593505050565b60008060008060408587031215612afa578081fd5b843567ffffffffffffffff80821115612b11578283fd5b612b1d88838901612993565b90965094506020870135915080821115612b35578283fd5b50612b4287828801612993565b95989497509550505050565b600060208284031215612b5f578081fd5b8135610e0d81612e0d565b600060208284031215612b7b578081fd5b8151610e0d81612e0d565b600060208284031215612b97578081fd5b5035919050565b600080600060608486031215612bb2578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612bdd578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b83811015612c2e5781516001600160a01b031687529582019590820190600101612c09565b509495945050505050565b6000602080835283518082850152825b81811015612c6557858101830151858201604001528201612c49565b81811115612c765783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612cda6040830184612bf6565b949350505050565b85815284602082015260a060408201526000612d0160a0830186612bf6565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612d3157612d31612de2565b500190565b600082612d5157634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612d7057612d70612de2565b500290565b600082821015612d8757612d87612de2565b500390565b600181811c90821680612da057607f821691505b60208210811415612dc157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612ddb57612ddb612de2565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461189f57600080fd5b801515811461189f57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d8a70985c30dd77be263737d22351fac1258c0fc74965b07959115e68e6c152964736f6c63430008040033

Deployed Bytecode

0x6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610b18578063f8f6329014610b39578063f9f92be414610b59578063fb4b8e6c14610b8957600080fd5b8063f1d5f51714610a98578063f2fde38b14610ab8578063f455444614610ad8578063f84ba65d14610af857600080fd5b8063ec28438a116100dc578063ec28438a14610a22578063ee828db314610a42578063ef422a1814610a62578063f0cd1dac14610a8257600080fd5b8063da00097d14610990578063dc44b6a0146109b1578063dd62ed3e146109c7578063e6b2603b14610a0d57600080fd5b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610914578063c860795214610934578063c867d60b1461094a578063d2d7ad831461097a57600080fd5b8063a5d69d1f1461089e578063a9059cbb146108be578063c49b9a80146108de578063c5d24189146108fe57600080fd5b80638b42507f116101c15780638b42507f1461081b5780638da5cb5b1461084b57806395d89b4114610869578063a457c2d71461087e57600080fd5b8063844d591c146107c457806385261485146107e457806388790a681461080557600080fd5b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461075d5780637d1db4a514610782578063807c2d9c1461079857806382eefb43146107ae57600080fd5b80635881f3ef146106d257806367243482146106f257806370a0823114610712578063715018a61461074857600080fd5b80634a74bb02116102a65780634a74bb021461064b5780634cb80fd51461066c5780635194f9bf1461068c5780635342acb4146106a257600080fd5b806339509351146105db5780633b97084a146105fb5780633ecad2711461061b57600080fd5b80631870517a116103445780632563ae83116103135780632563ae831461055057806327c8f835146105705780632b112e49146105a4578063313ce567146105b957600080fd5b80631870517a146104da5780632198cf6c146104fa57806323555d571461051a57806323b872dd1461053057600080fd5b8063095ea7b311610380578063095ea7b31461044b578063153b0d1e1461047b5780631694505e1461049b57806318160ddd146104bb57600080fd5b806306fdde03146103b257806308733214146103dd5780630930907b146103ff57600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610ba9565b6040516103d49190612c39565b60405180910390f35b3480156103e957600080fd5b506103fd6103f8366004612b9e565b610c3b565b005b34801561040b57600080fd5b506104337f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103d4565b34801561045757600080fd5b5061046b610466366004612aba565b610c99565b60405190151581526020016103d4565b34801561048757600080fd5b506103fd610496366004612a8d565b610cb0565b3480156104a757600080fd5b50601854610433906001600160a01b031681565b3480156104c757600080fd5b506014545b6040519081526020016103d4565b3480156104e657600080fd5b506103fd6104f5366004612b9e565b610d05565b34801561050657600080fd5b506103fd610515366004612a8d565b610d54565b34801561052657600080fd5b506104cc600e5481565b34801561053c57600080fd5b5061046b61054b366004612a4d565b610da9565b34801561055c57600080fd5b506103fd61056b366004612b4e565b610e14565b34801561057c57600080fd5b506104337f000000000000000000000000000000000000000000000000000000000000dead81565b3480156105b057600080fd5b506104cc610e5c565b3480156105c557600080fd5b5060035460405160ff90911681526020016103d4565b3480156105e757600080fd5b5061046b6105f6366004612aba565b610eef565b34801561060757600080fd5b506103fd610616366004612b86565b610f25565b34801561062757600080fd5b5061046b6106363660046129dd565b60086020526000908152604090205460ff1681565b34801561065757600080fd5b5060195461046b90600160a81b900460ff1681565b34801561067857600080fd5b506103fd6106873660046129dd565b610f54565b34801561069857600080fd5b506104cc60115481565b3480156106ae57600080fd5b5061046b6106bd3660046129dd565b60076020526000908152604090205460ff1681565b3480156106de57600080fd5b506104336106ed3660046129dd565b610fa6565b3480156106fe57600080fd5b506103fd61070d366004612ae5565b61131a565b34801561071e57600080fd5b506104cc61072d3660046129dd565b6001600160a01b031660009081526005602052604090205490565b34801561075457600080fd5b506103fd61161c565b34801561076957600080fd5b506003546104339061010090046001600160a01b031681565b34801561078e57600080fd5b506104cc60165481565b3480156107a457600080fd5b506104cc60175481565b3480156107ba57600080fd5b506104cc60135481565b3480156107d057600080fd5b506103fd6107df366004612a8d565b611696565b3480156107f057600080fd5b5060195461046b90600160c01b900460ff1681565b34801561081157600080fd5b506104cc600f5481565b34801561082757600080fd5b5061046b6108363660046129dd565b600b6020526000908152604090205460ff1681565b34801561085757600080fd5b506000546001600160a01b0316610433565b34801561087557600080fd5b506103c76116eb565b34801561088a57600080fd5b5061046b610899366004612aba565b6116fa565b3480156108aa57600080fd5b506103fd6108b9366004612b4e565b611749565b3480156108ca57600080fd5b5061046b6108d9366004612aba565b611791565b3480156108ea57600080fd5b506103fd6108f9366004612b4e565b61179e565b34801561090a57600080fd5b506104cc600d5481565b34801561092057600080fd5b50601954610433906001600160a01b031681565b34801561094057600080fd5b506104cc60105481565b34801561095657600080fd5b5061046b6109653660046129dd565b600a6020526000908152604090205460ff1681565b34801561098657600080fd5b506104cc60155481565b34801561099c57600080fd5b5060195461046b90600160b01b900460ff1681565b3480156109bd57600080fd5b506104cc600c5481565b3480156109d357600080fd5b506104cc6109e2366004612a15565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b348015610a1957600080fd5b506103fd611820565b348015610a2e57600080fd5b506103fd610a3d366004612b86565b6118a2565b348015610a4e57600080fd5b506103fd610a5d366004612b4e565b6118d1565b348015610a6e57600080fd5b506103fd610a7d366004612a8d565b611919565b348015610a8e57600080fd5b506104cc60125481565b348015610aa457600080fd5b506103fd610ab3366004612b86565b61196e565b348015610ac457600080fd5b506103fd610ad33660046129dd565b61199d565b348015610ae457600080fd5b506103fd610af3366004612aba565b611a87565b348015610b0457600080fd5b506103fd610b13366004612a8d565b611b36565b348015610b2457600080fd5b5060195461046b90600160b81b900460ff1681565b348015610b4557600080fd5b50600454610433906001600160a01b031681565b348015610b6557600080fd5b5061046b610b743660046129dd565b60096020526000908152604090205460ff1681565b348015610b9557600080fd5b506103fd610ba43660046129dd565b611b8b565b606060018054610bb890612d8c565b80601f0160208091040260200160405190810160405280929190818152602001828054610be490612d8c565b8015610c315780601f10610c0657610100808354040283529160200191610c31565b820191906000526020600020905b815481529060010190602001808311610c1457829003601f168201915b5050505050905090565b6000546001600160a01b03163314610c6e5760405162461bcd60e51b8152600401610c6590612c8c565b60405180910390fd5b600f83905560108290556011819055610c9181610c8b8585611c98565b90611c98565b601355505050565b6000610ca6338484611cf7565b5060015b92915050565b6000546001600160a01b03163314610cda5760405162461bcd60e51b8152600401610c6590612c8c565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d2f5760405162461bcd60e51b8152600401610c6590612c8c565b600c839055600d829055600e819055610d4c81610c8b8585611c98565b601255505050565b6000546001600160a01b03163314610d7e5760405162461bcd60e51b8152600401610c6590612c8c565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610db6848484611e1b565b50610e098433610e0485604051806060016040528060288152602001612e1c602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906122cc565b611cf7565b5060015b9392505050565b6000546001600160a01b03163314610e3e5760405162461bcd60e51b8152600401610c6590612c8c565b60198054911515600160b81b0260ff60b81b19909216919091179055565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600090815260056020526040812054610eea90610ee4610edb7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b031660009081526005602052604090205490565b60145490612306565b90612306565b905090565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610ca6918590610e049086611c98565b6000546001600160a01b03163314610f4f5760405162461bcd60e51b8152600401610c6590612c8c565b601555565b6000546001600160a01b03163314610f7e5760405162461bcd60e51b8152600401610c6590612c8c565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b03163314610fd15760405162461bcd60e51b8152600401610c6590612c8c565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561100f57600080fd5b505afa158015611023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104791906129f9565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561108f57600080fd5b505afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c791906129f9565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561110d57600080fd5b505afa158015611121573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114591906129f9565b91506001600160a01b0382166112c957806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561118e57600080fd5b505afa1580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c691906129f9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561120e57600080fd5b505afa158015611222573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124691906129f9565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561128e57600080fd5b505af11580156112a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c691906129f9565b91505b601980546001600160a01b038085166001600160a01b03199283168117909355601880549490911693909116929092179091556000908152600860205260409020805460ff19166001179055919050565b6000546001600160a01b031633146113445760405162461bcd60e51b8152600401610c6590612c8c565b3383821461138d5760405162461bcd60e51b815260206004820152601660248201527508ae4e4dee474409ad2e6dac2e8c6d04098cadccee8d60531b6044820152606401610c65565b6000805b838110156113df578484828181106113b957634e487b7160e01b600052603260045260246000fd5b90506020020135826113cb9190612d1e565b9150806113d781612dc7565b915050611391565b5080611400836001600160a01b031660009081526005602052604090205490565b101561144e5760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a20496e73756666696369656e74204572726f72212100000000006044820152606401610c65565b6001600160a01b0382166000908152600560205260409020546114719082612306565b6001600160a01b0383166000908152600560205260408120919091555b85811015611613576115198585838181106114b957634e487b7160e01b600052603260045260246000fd5b90506020020135600560008a8a868181106114e457634e487b7160e01b600052603260045260246000fd5b90506020020160208101906114f991906129dd565b6001600160a01b0316815260208101919091526040016000205490611c98565b6005600089898581811061153d57634e487b7160e01b600052603260045260246000fd5b905060200201602081019061155291906129dd565b6001600160a01b0316815260208101919091526040016000205586868281811061158c57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906115a191906129dd565b6001600160a01b0316836001600160a01b0316600080516020612e448339815191528787858181106115e357634e487b7160e01b600052603260045260246000fd5b905060200201356040516115f991815260200190565b60405180910390a38061160b81612dc7565b91505061148e565b50505050505050565b6000546001600160a01b031633146116465760405162461bcd60e51b8152600401610c6590612c8c565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000546001600160a01b031633146116c05760405162461bcd60e51b8152600401610c6590612c8c565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b606060028054610bb890612d8c565b6000610ca63384610e0485604051806060016040528060258152602001612e64602591393360009081526006602090815260408083206001600160a01b038d16845290915290205491906122cc565b6000546001600160a01b031633146117735760405162461bcd60e51b8152600401610c6590612c8c565b60198054911515600160b01b0260ff60b01b19909216919091179055565b6000610e09338484611e1b565b6000546001600160a01b031633146117c85760405162461bcd60e51b8152600401610c6590612c8c565b60198054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061181590831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461184a5760405162461bcd60e51b8152600401610c6590612c8c565b604051600090339047908381818185875af1925050503d806000811461188c576040519150601f19603f3d011682016040523d82523d6000602084013e611891565b606091505b505090508061189f57600080fd5b50565b6000546001600160a01b031633146118cc5760405162461bcd60e51b8152600401610c6590612c8c565b601655565b6000546001600160a01b031633146118fb5760405162461bcd60e51b8152600401610c6590612c8c565b60198054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b031633146119435760405162461bcd60e51b8152600401610c6590612c8c565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119985760405162461bcd60e51b8152600401610c6590612c8c565b601755565b6000546001600160a01b031633146119c75760405162461bcd60e51b8152600401610c6590612c8c565b6001600160a01b038116611a2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c65565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611ab15760405162461bcd60e51b8152600401610c6590612c8c565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b158015611af957600080fd5b505af1158015611b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b319190612b6a565b505050565b6000546001600160a01b03163314611b605760405162461bcd60e51b8152600401610c6590612c8c565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611bb55760405162461bcd60e51b8152600401610c6590612c8c565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600082611be657506000610caa565b6000611bf28385612d56565b905082611bff8583612d36565b14610e0d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c65565b6000610e0d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612348565b600080611ca58385612d1e565b905083811015610e0d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c65565b6001600160a01b038316611d595760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c65565b6001600160a01b038216611dba5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c65565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611e815760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c65565b6001600160a01b038316611ee35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c65565b6001600160a01b03841660009081526009602052604090205460ff16158015611f2557506001600160a01b03831660009081526009602052604090205460ff16155b611f715760405162461bcd60e51b815260206004820152601d60248201527f426f7420456e656d7920616464726573732052657374726963746564210000006044820152606401610c65565b601954600160a01b900460ff1615611f9557611f8e848484612376565b9050610e0d565b6001600160a01b0384166000908152600b602052604090205460ff16158015611fd757506001600160a01b0383166000908152600b602052604090205460ff16155b8015611fec5750601954600160c01b900460ff165b15612054576016548211156120545760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c65565b30600090815260056020526040902054601554811080159081906120825750601954600160a01b900460ff16155b80156120a757506001600160a01b03861660009081526008602052604090205460ff16155b80156120bc5750601954600160a81b900460ff165b156120e257601954600160b01b900460ff16156120d95760155491505b6120e28261244a565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600590915291909120546121349186906122cc565b6001600160a01b038716600090815260056020908152604080832093909355600790529081205460ff168061218157506001600160a01b03861660009081526007602052604090205460ff165b612195576121908787876125fd565b612197565b845b601954909150600160b81b900460ff1680156121cc57506001600160a01b0386166000908152600a602052604090205460ff16155b15612253576017546121f782610c8b896001600160a01b031660009081526005602052604090205490565b11156122535760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c696044820152646d6974212160d81b6064820152608401610c65565b6001600160a01b0386166000908152600560205260409020546122769082611c98565b6001600160a01b038088166000818152600560205260409081902093909355915190891690600080516020612e44833981519152906122b89085815260200190565b60405180910390a360019350505050610e0d565b600081848411156122f05760405162461bcd60e51b8152600401610c659190612c39565b5060006122fd8486612d75565b95945050505050565b6000610e0d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122cc565b600081836123695760405162461bcd60e51b8152600401610c659190612c39565b5060006122fd8486612d36565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526005909152918220546123c79184906122cc565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546123f69083611c98565b6001600160a01b038085166000818152600560205260409081902093909355915190861690600080516020612e44833981519152906124389086815260200190565b60405180910390a35060019392505050565b6019805460ff60a01b1916600160a01b1790556013546012546000916124709190611c98565b9050600061248b600f54600c54611c9890919063ffffffff16565b905060006124a6601054600d54611c9890919063ffffffff16565b905060006124c160026124bb86818988611bd7565b90611c56565b905060006124cf8683612306565b9050476124db826126f1565b60006124e74783612306565b905060006125006124f9886002611c56565b8990612306565b9050600061251560026124bb8481878d611bd7565b90506000612527836124bb868b611bd7565b9050600061253982610ee48786612306565b90508115612581576003546040516101009091046001600160a01b0316906108fc8415029084906000818181858888f1935050505015801561257f573d6000803e3d6000fd5b505b80156125c3576004546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156125c1573d6000803e3d6000fd5b505b6000831180156125d35750600088115b156125e2576125e288846128af565b50506019805460ff60a01b1916905550505050505050505050565b6001600160a01b038316600090815260086020526040812054819060ff16156126415761263a60646124bb60125486611bd790919063ffffffff16565b905061267f565b6001600160a01b03841660009081526008602052604090205460ff161561267f5761267c60646124bb60135486611bd790919063ffffffff16565b90505b80156126e7573060009081526005602052604090205461269f9082611c98565b30600081815260056020526040908190209290925590516001600160a01b03871690600080516020612e44833981519152906126de9085815260200190565b60405180910390a35b6122fd8382612306565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061273457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561278857600080fd5b505afa15801561279c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c091906129f9565b816001815181106127e157634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526018546128079130911684611cf7565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac94790612840908590600090869030904290600401612ce2565b600060405180830381600087803b15801561285a57600080fd5b505af115801561286e573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516128a3929190612cc1565b60405180910390a15050565b6018546128c79030906001600160a01b031684611cf7565b6018546001600160a01b031663f305d7198230856000806128f06000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561295357600080fd5b505af1158015612967573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061298c9190612bc9565b5050505050565b60008083601f8401126129a4578182fd5b50813567ffffffffffffffff8111156129bb578182fd5b6020830191508360208260051b85010111156129d657600080fd5b9250929050565b6000602082840312156129ee578081fd5b8135610e0d81612df8565b600060208284031215612a0a578081fd5b8151610e0d81612df8565b60008060408385031215612a27578081fd5b8235612a3281612df8565b91506020830135612a4281612df8565b809150509250929050565b600080600060608486031215612a61578081fd5b8335612a6c81612df8565b92506020840135612a7c81612df8565b929592945050506040919091013590565b60008060408385031215612a9f578182fd5b8235612aaa81612df8565b91506020830135612a4281612e0d565b60008060408385031215612acc578182fd5b8235612ad781612df8565b946020939093013593505050565b60008060008060408587031215612afa578081fd5b843567ffffffffffffffff80821115612b11578283fd5b612b1d88838901612993565b90965094506020870135915080821115612b35578283fd5b50612b4287828801612993565b95989497509550505050565b600060208284031215612b5f578081fd5b8135610e0d81612e0d565b600060208284031215612b7b578081fd5b8151610e0d81612e0d565b600060208284031215612b97578081fd5b5035919050565b600080600060608486031215612bb2578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612bdd578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b83811015612c2e5781516001600160a01b031687529582019590820190600101612c09565b509495945050505050565b6000602080835283518082850152825b81811015612c6557858101830151858201604001528201612c49565b81811115612c765783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612cda6040830184612bf6565b949350505050565b85815284602082015260a060408201526000612d0160a0830186612bf6565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612d3157612d31612de2565b500190565b600082612d5157634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612d7057612d70612de2565b500290565b600082821015612d8757612d87612de2565b500390565b600181811c90821680612da057607f821691505b60208210811415612dc157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612ddb57612ddb612de2565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461189f57600080fd5b801515811461189f57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d8a70985c30dd77be263737d22351fac1258c0fc74965b07959115e68e6c152964736f6c63430008040033

Deployed Bytecode Sourcemap

11506:16319:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15415:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20346:317;;;;;;;;;;-1:-1:-1;20346:317:0;;;;;:::i;:::-;;:::i;:::-;;12003:81;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5556:32:1;;;5538:51;;5526:2;5511:18;12003:81:0;5493:102:1;16581:161:0;;;;;;;;;;-1:-1:-1;16581:161:0;;;;;:::i;:::-;;:::i;:::-;;;7189:14:1;;7182:22;7164:41;;7152:2;7137:18;16581:161:0;7119:92:1;19014:113:0;;;;;;;;;;-1:-1:-1;19014:113:0;;;;;:::i;:::-;;:::i;13137:41::-;;;;;;;;;;-1:-1:-1;13137:41:0;;;;-1:-1:-1;;;;;13137:41:0;;;15692:100;;;;;;;;;;-1:-1:-1;15772:12:0;;15692:100;;;13229:25:1;;;13217:2;13202:18;15692:100:0;13184:76:1;20029:309:0;;;;;;;;;;-1:-1:-1;20029:309:0;;;;;:::i;:::-;;:::i;17514:135::-;;;;;;;;;;-1:-1:-1;17514:135:0;;;;;:::i;:::-;;:::i;12578:35::-;;;;;;;;;;;;;;;;20940:313;;;;;;;;;;-1:-1:-1;20940:313:0;;;;;:::i;:::-;;:::i;17891:113::-;;;;;;;;;;-1:-1:-1;17891:113:0;;;;;:::i;:::-;;:::i;11915:81::-;;;;;;;;;;;;;;;18850:156;;;;;;;;;;;;;:::i;15601:83::-;;;;;;;;;;-1:-1:-1;15667:9:0;;15601:83;;15667:9;;;;14331:36:1;;14319:2;14304:18;15601:83:0;14286:87:1;16078:218:0;;;;;;;;;;-1:-1:-1;16078:218:0;;;;;:::i;:::-;;:::i;18122:124::-;;;;;;;;;;-1:-1:-1;18122:124:0;;;;;:::i;:::-;;:::i;12277:45::-;;;;;;;;;;-1:-1:-1;12277:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13252:40;;;;;;;;;;-1:-1:-1;13252:40:0;;;;-1:-1:-1;;;13252:40:0;;;;;;18254:132;;;;;;;;;;-1:-1:-1;18254:132:0;;;;;:::i;:::-;;:::i;12713:36::-;;;;;;;;;;;;;;;;12220:50;;;;;;;;;;-1:-1:-1;12220:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19273:748;;;;;;;;;;-1:-1:-1;19273:748:0;;;;;:::i;:::-;;:::i;27117:697::-;;;;;;;;;;-1:-1:-1;27117:697:0;;;;;:::i;:::-;;:::i;15800:119::-;;;;;;;;;;-1:-1:-1;15800:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;15893:18:0;15866:7;15893:18;;;:9;:18;;;;;;;15800:119;3183:230;;;;;;;;;;;;;:::i;11711:92::-;;;;;;;;;;-1:-1:-1;11711:92:0;;;;;;;-1:-1:-1;;;;;11711:92:0;;;12991:59;;;;;;;;;;;;;;;;13063:58;;;;;;;;;;;;;;;;12797:33;;;;;;;;;;;;;;;;17095:129;;;;;;;;;;-1:-1:-1;17095:129:0;;;;;:::i;:::-;;:::i;13395:41::-;;;;;;;;;;-1:-1:-1;13395:41:0;;;;-1:-1:-1;;;13395:41:0;;;;;;12626:36;;;;;;;;;;;;;;;;12437:48;;;;;;;;;;-1:-1:-1;12437:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2958:79;;;;;;;;;;-1:-1:-1;2996:7:0;3023:6;-1:-1:-1;;;;;3023:6:0;2958:79;;15506:87;;;;;;;;;;;;;:::i;16304:269::-;;;;;;;;;;-1:-1:-1;16304:269:0;;;;;:::i;:::-;;:::i;18713:125::-;;;;;;;;;;-1:-1:-1;18713:125:0;;;;;:::i;:::-;;:::i;20765:167::-;;;;;;;;;;-1:-1:-1;20765:167:0;;;;;:::i;:::-;;:::i;18534:171::-;;;;;;;;;;-1:-1:-1;18534:171:0;;;;;:::i;:::-;;:::i;12536:35::-;;;;;;;;;;;;;;;;13185:26;;;;;;;;;;-1:-1:-1;13185:26:0;;;;-1:-1:-1;;;;;13185:26:0;;;12669:37;;;;;;;;;;;;;;;;12378:52;;;;;;;;;;-1:-1:-1;12378:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12902:69;;;;;;;;;;;;;;;;13299:45;;;;;;;;;;-1:-1:-1;13299:45:0;;;;-1:-1:-1;;;13299:45:0;;;;;;12494:35;;;;;;;;;;;;;;;;15927:143;;;;;;;;;;-1:-1:-1;15927:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;16035:18:0;;;16008:7;16035:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15927:143;23302:154;;;;;;;;;;;;;:::i;17772:111::-;;;;;;;;;;-1:-1:-1;17772:111:0;;;;;:::i;:::-;;:::i;17657:107::-;;;;;;;;;;-1:-1:-1;17657:107:0;;;;;:::i;:::-;;:::i;17232:135::-;;;;;;;;;;-1:-1:-1;17232:135:0;;;;;:::i;:::-;;:::i;12758:32::-;;;;;;;;;;;;;;;;18012:102;;;;;;;;;;-1:-1:-1;18012:102:0;;;;;:::i;:::-;;:::i;3421:244::-;;;;;;;;;;-1:-1:-1;3421:244:0;;;;;:::i;:::-;;:::i;23155:139::-;;;;;;;;;;-1:-1:-1;23155:139:0;;;;;:::i;:::-;;:::i;17375:127::-;;;;;;;;;;-1:-1:-1;17375:127:0;;;;;:::i;:::-;;:::i;13353:35::-;;;;;;;;;;-1:-1:-1;13353:35:0;;;;-1:-1:-1;;;13353:35:0;;;;;;11810:92;;;;;;;;;;-1:-1:-1;11810:92:0;;;;-1:-1:-1;;;;;11810:92:0;;;12329:42;;;;;;;;;;-1:-1:-1;12329:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18394:132;;;;;;;;;;-1:-1:-1;18394:132:0;;;;;:::i;:::-;;:::i;15415:83::-;15452:13;15485:5;15478:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15415:83;:::o;20346:317::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;;;;;;;;;20448:17:::1;:30:::0;;;20489:17:::1;:30:::0;;;20530:17:::1;:30:::0;;;20592:63:::1;20550:10:::0;20592:40:::1;20468:10:::0;20509;20592:21:::1;:40::i;:::-;:44:::0;::::1;:63::i;:::-;20571:18;:84:::0;-1:-1:-1;;;20346:317:0:o;16581:161::-;16656:4;16673:39;264:10;16696:7;16705:6;16673:8;:39::i;:::-;-1:-1:-1;16730:4:0;16581:161;;;;;:::o;19014:113::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19094:15:0;;;::::1;;::::0;;;:9:::1;:15;::::0;;;;:25;;-1:-1:-1;;19094:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19014:113::o;20029:309::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;20130:16:::1;:29:::0;;;20170:16:::1;:29:::0;;;20210:16:::1;:29:::0;;;20270:60:::1;20229:10:::0;20270:38:::1;20149:10:::0;20189;20270:20:::1;:38::i;:60::-;20250:17;:80:::0;-1:-1:-1;;;20029:309:0:o;17514:135::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17605:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;17605:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17514:135::o;20940:313::-;21038:4;21055:36;21065:6;21073:9;21084:6;21055:9;:36::i;:::-;-1:-1:-1;21102:121:0;21111:6;264:10;21133:89;21171:6;21133:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21133:19:0;;;;;;:11;:19;;;;;;;;264:10;21133:33;;;;;;;;;;:37;:89::i;:::-;21102:8;:121::i;:::-;-1:-1:-1;21241:4:0;20940:313;;;;;;:::o;17891:113::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;17969:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;17969:27:0::1;-1:-1:-1::0;;;;17969:27:0;;::::1;::::0;;;::::1;::::0;;17891:113::o;18850:156::-;-1:-1:-1;;;;;18985:11:0;15893:18;18903:7;15893:18;;;:9;:18;;;;;;18930:68;;:40;18947:22;18957:11;-1:-1:-1;;;;;15893:18:0;15866:7;15893:18;;;:9;:18;;;;;;;15800:119;18947:22;18930:12;;;:16;:40::i;:::-;:44;;:68::i;:::-;18923:75;;18850:156;:::o;16078:218::-;264:10;16166:4;16215:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16215:34:0;;;;;;;;;;16166:4;;16183:83;;16206:7;;16215:50;;16254:10;16215:38;:50::i;18122:124::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;18204:23:::1;:34:::0;18122:124::o;18254:132::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;18341:15:::1;:37:::0;;-1:-1:-1;;;;;18341:37:0;;::::1;;;-1:-1:-1::0;;;;;;18341:37:0;;::::1;::::0;;;::::1;::::0;;18254:132::o;19273:748::-;19353:22;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;19390:35:::1;19447:16;19390:74;;19513:16;-1:-1:-1::0;;;;;19513:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19495:53:0::1;;19557:4;19564:16;-1:-1:-1::0;;;;;19564:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19495:93;::::0;-1:-1:-1;;;;;;19495:93:0::1;::::0;;;;;;-1:-1:-1;;;;;6054:15:1;;;19495:93:0::1;::::0;::::1;6036:34:1::0;6106:15;;6086:18;;;6079:43;5971:18;;19495:93:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19478:110:::0;-1:-1:-1;;;;;;19604:28:0;::::1;19601:225;;19718:16;-1:-1:-1::0;;;;;19718:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19700:74:0::1;;19783:4;19790:16;-1:-1:-1::0;;;;;19790:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19700:114;::::0;-1:-1:-1;;;;;;19700:114:0::1;::::0;;;;;;-1:-1:-1;;;;;6054:15:1;;;19700:114:0::1;::::0;::::1;6036:34:1::0;6106:15;;6086:18;;;6079:43;5971:18;;19700:114:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19683:131;;19601:225;19838:11;:28:::0;;-1:-1:-1;;;;;19838:28:0;;::::1;-1:-1:-1::0;;;;;;19838:28:0;;::::1;::::0;::::1;::::0;;;19900:15:::1;:34:::0;;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;19838:11:::1;19972:34:::0;;;:12:::1;:34;::::0;;;;:41;;-1:-1:-1;;19972:41:0::1;19838:28:::0;19972:41:::1;::::0;;19852:14;19273:748;-1:-1:-1;19273:748:0:o;27117:697::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;27235:10:::1;27264:33:::0;;::::1;27256:67;;;::::0;-1:-1:-1;;;27256:67:0;;11762:2:1;27256:67:0::1;::::0;::::1;11744:21:1::0;11801:2;11781:18;;;11774:30;-1:-1:-1;;;11820:18:1;;;11813:52;11882:18;;27256:67:0::1;11734:172:1::0;27256:67:0::1;27334:15;::::0;27360:92:::1;27376:18:::0;;::::1;27360:92;;;27430:7;;27438:1;27430:10;;;;;-1:-1:-1::0;;;27430:10:0::1;;;;;;;;;;;;;;;27416:24;;;;;:::i;:::-;::::0;-1:-1:-1;27396:3:0;::::1;::::0;::::1;:::i;:::-;;;;27360:92;;;;27492:10;27470:18;27480:7;-1:-1:-1::0;;;;;15893:18:0;15866:7;15893:18;;;:9;:18;;;;;;;15800:119;27470:18:::1;:32;;27462:71;;;::::0;-1:-1:-1;;;27462:71:0;;8665:2:1;27462:71:0::1;::::0;::::1;8647:21:1::0;8704:2;8684:18;;;8677:30;8743:29;8723:18;;;8716:57;8790:18;;27462:71:0::1;8637:177:1::0;27462:71:0::1;-1:-1:-1::0;;;;;27565:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;:34:::1;::::0;27588:10;27565:22:::1;:34::i;:::-;-1:-1:-1::0;;;;;27544:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;:55;;;;27611:194:::1;27627:19:::0;;::::1;27611:194;;;27693:38;27720:7;;27728:1;27720:10;;;;;-1:-1:-1::0;;;27720:10:0::1;;;;;;;;;;;;;;;27693:9;:22;27703:8;;27712:1;27703:11;;;;;-1:-1:-1::0;;;27703:11:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27693:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;27693:22:0;;;:26:::1;:38::i;:::-;27668:9;:22;27678:8;;27687:1;27678:11;;;;;-1:-1:-1::0;;;27678:11:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27668:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;27668:22:0;:63;27769:8;;27778:1;27769:11;;::::1;;;-1:-1:-1::0;;;27769:11:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27751:42:0::1;27760:7;-1:-1:-1::0;;;;;27751:42:0::1;-1:-1:-1::0;;;;;;;;;;;27782:7:0::1;;27790:1;27782:10;;;;;-1:-1:-1::0;;;27782:10:0::1;;;;;;;;;;;;;;;27751:42;;;;13229:25:1::0;;13217:2;13202:18;;13184:76;27751:42:0::1;;;;;;;;27648:3:::0;::::1;::::0;::::1;:::i;:::-;;;;27611:194;;;;3162:1;;27117:697:::0;;;;:::o;3183:230::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;3274:6:::1;::::0;;3253:81:::1;::::0;3290:42:::1;::::0;-1:-1:-1;;;;;3274:6:0;;::::1;::::0;3253:81:::1;::::0;::::1;3345:6;:60:::0;;-1:-1:-1;;;;;;3345:60:0::1;3362:42;3345:60;::::0;;3183:230::o;17095:129::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17184:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;17184:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17095:129::o;15506:87::-;15545:13;15578:7;15571:14;;;;;:::i;16304:269::-;16397:4;16414:129;264:10;16437:7;16446:96;16485:15;16446:96;;;;;;;;;;;;;;;;;264:10;16446:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16446:34:0;;;;;;;;;;;;:38;:96::i;18713:125::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;18794:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;18794:36:0::1;-1:-1:-1::0;;;;18794:36:0;;::::1;::::0;;;::::1;::::0;;18713:125::o;20765:167::-;20843:4;20860:42;264:10;20884:9;20895:6;20860:9;:42::i;18534:171::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;18611:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18611:32:0::1;-1:-1:-1::0;;;;18611:32:0;;::::1;;::::0;;18659:38:::1;::::0;::::1;::::0;::::1;::::0;18635:8;7189:14:1;7182:22;7164:41;;7152:2;7137:18;;7119:92;18659:38:0::1;;;;;;;;18534:171:::0;:::o;23302:154::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;23368:58:::1;::::0;23356:7:::1;::::0;23376:10:::1;::::0;23400:21:::1;::::0;23356:7;23368:58;23356:7;23368:58;23400:21;23376:10;23368:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23355:71;;;23445:2;23437:11;;;::::0;::::1;;3162:1;23302:154::o:0;17772:111::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;17849:12:::1;:26:::0;17772:111::o;17657:107::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;17724:22:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;17724:32:0::1;-1:-1:-1::0;;;;17724:32:0;;::::1;::::0;;;::::1;::::0;;17657:107::o;17232:135::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17322:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;17322:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17232:135::o;18012:102::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;18084:10:::1;:22:::0;18012:102::o;3421:244::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3510:22:0;::::1;3502:73;;;::::0;-1:-1:-1;;;3502:73:0;;9021:2:1;3502:73:0::1;::::0;::::1;9003:21:1::0;9060:2;9040:18;;;9033:30;9099:34;9079:18;;;9072:62;-1:-1:-1;;;9150:18:1;;;9143:36;9196:19;;3502:73:0::1;8993:228:1::0;3502:73:0::1;3612:6;::::0;;3591:38:::1;::::0;-1:-1:-1;;;;;3591:38:0;;::::1;::::0;3612:6;::::1;::::0;3591:38:::1;::::0;::::1;3640:6;:17:::0;;-1:-1:-1;;;;;;3640:17:0::1;-1:-1:-1::0;;;;;3640:17:0;;;::::1;::::0;;;::::1;::::0;;3421:244::o;23155:139::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;23243:43:::1;::::0;-1:-1:-1;;;23243:43:0;;23267:10:::1;23243:43;::::0;::::1;6307:51:1::0;6374:18;;;6367:34;;;-1:-1:-1;;;;;23243:23:0;::::1;::::0;::::1;::::0;6280:18:1;;23243:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23155:139:::0;;:::o;17375:127::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17462:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;17462:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17375:127::o;18394:132::-;3092:6;;-1:-1:-1;;;;;3092:6:0;264:10;3092:22;3084:67;;;;-1:-1:-1;;;3084:67:0;;;;;;;:::i;:::-;18481:15:::1;:37:::0;;-1:-1:-1;;;;;;18481:37:0::1;-1:-1:-1::0;;;;;18481:37:0;;;::::1;::::0;;;::::1;::::0;;18394:132::o;1643:250::-;1701:7;1725:6;1721:47;;-1:-1:-1;1755:1:0;1748:8;;1721:47;1780:9;1792:5;1796:1;1792;:5;:::i;:::-;1780:17;-1:-1:-1;1825:1:0;1816:5;1820:1;1780:17;1816:5;:::i;:::-;:10;1808:56;;;;-1:-1:-1;;;1808:56:0;;11360:2:1;1808:56:0;;;11342:21:1;11399:2;11379:18;;;11372:30;11438:34;11418:18;;;11411:62;-1:-1:-1;;;11489:18:1;;;11482:31;11530:19;;1808:56:0;11332:223:1;1901:132:0;1959:7;1986:39;1990:1;1993;1986:39;;;;;;;;;;;;;;;;;:3;:39::i;1110:181::-;1168:7;;1200:5;1204:1;1200;:5;:::i;:::-;1188:17;;1229:1;1224;:6;;1216:46;;;;-1:-1:-1;;;1216:46:0;;9831:2:1;1216:46:0;;;9813:21:1;9870:2;9850:18;;;9843:30;9909:29;9889:18;;;9882:57;9956:18;;1216:46:0;9803:177:1;16750:337:0;-1:-1:-1;;;;;16843:19:0;;16835:68;;;;-1:-1:-1;;;16835:68:0;;12880:2:1;16835:68:0;;;12862:21:1;12919:2;12899:18;;;12892:30;12958:34;12938:18;;;12931:62;-1:-1:-1;;;13009:18:1;;;13002:34;13053:19;;16835:68:0;12852:226:1;16835:68:0;-1:-1:-1;;;;;16922:21:0;;16914:68;;;;-1:-1:-1;;;16914:68:0;;9428:2:1;16914:68:0;;;9410:21:1;9467:2;9447:18;;;9440:30;9506:34;9486:18;;;9479:62;-1:-1:-1;;;9557:18:1;;;9550:32;9599:19;;16914:68:0;9400:224:1;16914:68:0;-1:-1:-1;;;;;16995:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17047:32;;13229:25:1;;;17047:32:0;;13202:18:1;17047:32:0;;;;;;;16750:337;;;:::o;21261:1886::-;21348:4;-1:-1:-1;;;;;21375:20:0;;21367:70;;;;-1:-1:-1;;;21367:70:0;;12474:2:1;21367:70:0;;;12456:21:1;12513:2;12493:18;;;12486:30;12552:34;12532:18;;;12525:62;-1:-1:-1;;;12603:18:1;;;12596:35;12648:19;;21367:70:0;12446:227:1;21367:70:0;-1:-1:-1;;;;;21456:23:0;;21448:71;;;;-1:-1:-1;;;21448:71:0;;8261:2:1;21448:71:0;;;8243:21:1;8300:2;8280:18;;;8273:30;8339:34;8319:18;;;8312:62;-1:-1:-1;;;8390:18:1;;;8383:33;8433:19;;21448:71:0;8233:225:1;21448:71:0;-1:-1:-1;;;;;21539:17:0;;;;;;:9;:17;;;;;;;;21538:18;:43;;;;-1:-1:-1;;;;;;21561:20:0;;;;;;:9;:20;;;;;;;;21560:21;21538:43;21530:85;;;;-1:-1:-1;;;21530:85:0;;10593:2:1;21530:85:0;;;10575:21:1;10632:2;10612:18;;;10605:30;10671:31;10651:18;;;10644:59;10720:18;;21530:85:0;10565:179:1;21530:85:0;21631:16;;-1:-1:-1;;;21631:16:0;;;;21628:1502;;;21681:41;21696:6;21704:9;21715:6;21681:14;:41::i;:::-;21674:48;;;;21628:1502;-1:-1:-1;;;;;21780:23:0;;;;;;:15;:23;;;;;;;;21779:24;:55;;;;-1:-1:-1;;;;;;21808:26:0;;;;;;:15;:26;;;;;;;;21807:27;21779:55;:81;;;;-1:-1:-1;21838:22:0;;-1:-1:-1;;;21838:22:0;;;;21779:81;21776:196;;;21899:12;;21889:6;:22;;21881:75;;;;-1:-1:-1;;;21881:75:0;;10951:2:1;21881:75:0;;;10933:21:1;10990:2;10970:18;;;10963:30;11029:34;11009:18;;;11002:62;-1:-1:-1;;;11080:18:1;;;11073:38;11128:19;;21881:75:0;10923:230:1;21881:75:0;22037:4;21988:28;15893:18;;;:9;:18;;;;;;22113:23;;22089:47;;;;;;;22169:44;;-1:-1:-1;22197:16:0;;-1:-1:-1;;;22197:16:0;;;;22196:17;22169:44;:69;;;;-1:-1:-1;;;;;;22218:20:0;;;;;;:12;:20;;;;;;;;22217:21;22169:69;:94;;;;-1:-1:-1;22242:21:0;;-1:-1:-1;;;22242:21:0;;;;22169:94;22165:305;;;22301:25;;-1:-1:-1;;;22301:25:0;;;;22298:97;;;22372:23;;22349:46;;22298:97;22414:36;22429:20;22414:14;:36::i;:::-;22506:53;;;;;;;;;;;-1:-1:-1;;;22506:53:0;;;;;;;;-1:-1:-1;;;;;22506:17:0;;-1:-1:-1;22506:17:0;;;:9;:17;;;;;;;;:53;;22528:6;;22506:21;:53::i;:::-;-1:-1:-1;;;;;22486:17:0;;;;;;:9;:17;;;;;;;;:73;;;;22599:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;22628:28:0;;;;;;:17;:28;;;;;;;;22599:57;22598:148;;22712:34;22720:6;22728:9;22739:6;22712:7;:34::i;:::-;22598:148;;;22703:6;22598:148;22766:16;;22576:170;;-1:-1:-1;;;;22766:16:0;;;;:51;;;;-1:-1:-1;;;;;;22787:30:0;;;;;;:19;:30;;;;;;;;22786:31;22766:51;22763:191;;;22887:10;;22846:37;22871:11;22846:20;22856:9;-1:-1:-1;;;;;15893:18:0;15866:7;15893:18;;;:9;:18;;;;;;;15800:119;22846:37;:51;;22838:100;;;;-1:-1:-1;;;22838:100:0;;10187:2:1;22838:100:0;;;10169:21:1;10226:2;10206:18;;;10199:30;10265:34;10245:18;;;10238:62;-1:-1:-1;;;10316:18:1;;;10309:35;10361:19;;22838:100:0;10159:227:1;22838:100:0;-1:-1:-1;;;;;22993:20:0;;;;;;:9;:20;;;;;;:37;;23018:11;22993:24;:37::i;:::-;-1:-1:-1;;;;;22970:20:0;;;;;;;:9;:20;;;;;;;:60;;;;23052:40;;;;;;-1:-1:-1;;;;;;;;;;;23052:40:0;;;23080:11;13229:25:1;;13217:2;13202:18;;13184:76;23052:40:0;;;;;;;;23114:4;23107:11;;;;;;;1443:192;1529:7;1565:12;1557:6;;;;1549:29;;;;-1:-1:-1;;;1549:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1589:9:0;1601:5;1605:1;1601;:5;:::i;:::-;1589:17;1443:192;-1:-1:-1;;;;;1443:192:0:o;1299:136::-;1357:7;1384:43;1388:1;1391;1384:43;;;;;;;;;;;;;;;;;:3;:43::i;2041:278::-;2127:7;2162:12;2155:5;2147:28;;;;-1:-1:-1;;;2147:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2186:9:0;2198:5;2202:1;2198;:5;:::i;23464:330::-;23594:53;;;;;;;;;;;-1:-1:-1;;;23594:53:0;;;;;;;;-1:-1:-1;;;;;23594:17:0;;23557:4;23594:17;;;:9;:17;;;;;;;:53;;23616:6;;23594:21;:53::i;:::-;-1:-1:-1;;;;;23574:17:0;;;;;;;:9;:17;;;;;;:73;;;;23681:20;;;;;;;:32;;23706:6;23681:24;:32::i;:::-;-1:-1:-1;;;;;23658:20:0;;;;;;;:9;:20;;;;;;;:55;;;;23729:35;;;;;;-1:-1:-1;;;;;;;;;;;23729:35:0;;;23757:6;13229:25:1;;13217:2;13202:18;;13184:76;23729:35:0;;;;;;;;-1:-1:-1;23782:4:0;23464:330;;;;;:::o;23802:1449::-;13861:16;:23;;-1:-1:-1;;;;13861:23:0;-1:-1:-1;;;13861:23:0;;;23920:18:::1;::::0;23898:17:::1;::::0;13861:23;;23898:41:::1;::::0;:17;:21:::1;:41::i;:::-;23876:63;;23952:22;23977:39;23998:17;;23977:16;;:20;;:39;;;;:::i;:::-;23952:64;;24027:22;24052:39;24073:17;;24052:16;;:20;;:39;;;;:::i;:::-;24027:64:::0;-1:-1:-1;24190:18:0::1;24211:51;24260:1;24211:44;24243:11:::0;24211:44;:7;24223:14;24211:11:::1;:27::i;:::-;:31:::0;::::1;:44::i;:51::-;24190:72:::0;-1:-1:-1;24273:20:0::1;24296:23;:7:::0;24190:72;24296:11:::1;:23::i;:::-;24273:46:::0;-1:-1:-1;24358:21:0::1;24390:30;24273:46:::0;24390:16:::1;:30::i;:::-;24431:23;24458:41;:21;24484:14:::0;24458:25:::1;:41::i;:::-;24431:68:::0;-1:-1:-1;24512:19:0::1;24534:38;24550:21;:14:::0;24569:1:::1;24550:18;:21::i;:::-;24534:11:::0;;:15:::1;:38::i;:::-;24512:60:::0;-1:-1:-1;24585:26:0::1;24614:59;24671:1;24614:52;24512:60:::0;24614:52;:15;24634:14;24614:19:::1;:35::i;:59::-;24585:88:::0;-1:-1:-1;24684:26:0::1;24713:52;24753:11:::0;24713:35:::1;:15:::0;24733:14;24713:19:::1;:35::i;:52::-;24684:81:::0;-1:-1:-1;24776:26:0::1;24805:63;24684:81:::0;24805:39:::1;:15:::0;24825:18;24805:19:::1;:39::i;:63::-;24776:92:::0;-1:-1:-1;24884:22:0;;24881:107:::1;;24931:15;::::0;24923:53:::1;::::0;24931:15:::1;::::0;;::::1;-1:-1:-1::0;;;;;24931:15:0::1;::::0;24923:53:::1;::::0;::::1;;::::0;;;::::1;::::0;;;;24931:15;24923:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24881:107;25003:22:::0;;25000:107:::1;;25050:15;::::0;25042:53:::1;::::0;-1:-1:-1;;;;;25050:15:0;;::::1;::::0;25042:53;::::1;;;::::0;25076:18;;25050:15:::1;25042:53:::0;25050:15;25042:53;25076:18;25050:15;25042:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25000:107;25152:1;25131:18;:22;:40;;;;;25170:1;25157:10;:14;25131:40;25128:116;;;25188:44;25201:10;25213:18;25188:12;:44::i;:::-;-1:-1:-1::0;;13907:16:0;:24;;-1:-1:-1;;;;13907:24:0;;;-1:-1:-1;;;;;;;;;;23802:1449:0:o;26458:622::-;-1:-1:-1;;;;;26619:20:0;;26544:7;26619:20;;;:12;:20;;;;;;26544:7;;26619:20;;26616:223;;;26668:38;26702:3;26668:29;26679:17;;26668:6;:10;;:29;;;;:::i;:38::-;26656:50;;26616:223;;;-1:-1:-1;;;;;26736:23:0;;;;;;:12;:23;;;;;;;;26733:106;;;26788:39;26823:3;26788:30;26799:18;;26788:6;:10;;:30;;;;:::i;:39::-;26776:51;;26733:106;26862:13;;26859:173;;26937:4;26919:24;;;;:9;:24;;;;;;:39;;26948:9;26919:28;:39::i;:::-;26910:4;26892:24;;;;:9;:24;;;;;;;:66;;;;26978:42;;-1:-1:-1;;;;;26978:42:0;;;-1:-1:-1;;;;;;;;;;;26978:42:0;;;27010:9;13229:25:1;;13217:2;13202:18;;13184:76;26978:42:0;;;;;;;;26859:173;27051:21;:6;27062:9;27051:10;:21::i;25263:666::-;25413:16;;;25427:1;25413:16;;;;;;;;25389:21;;25413:16;;;;;;;;;;-1:-1:-1;25413:16:0;25389:40;;25458:4;25440;25445:1;25440:7;;;;;;-1:-1:-1;;;25440:7:0;;;;;;;;;-1:-1:-1;;;;;25440:23:0;;;:7;;;;;;;;;;:23;;;;25484:15;;:22;;;-1:-1:-1;;;25484:22:0;;;;:15;;;;;:20;;:22;;;;;25440:7;;25484:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25474:4;25479:1;25474:7;;;;;;-1:-1:-1;;;25474:7:0;;;;;;;;;-1:-1:-1;;;;;25474:32:0;;;:7;;;;;;;;;:32;25551:15;;25519:62;;25536:4;;25551:15;25569:11;25519:8;:62::i;:::-;25620:15;;:240;;-1:-1:-1;;;25620:240:0;;-1:-1:-1;;;;;25620:15:0;;;;:66;;:240;;25701:11;;25620:15;;25771:4;;25798;;25834:15;;25620:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25886:35;25903:11;25916:4;25886:35;;;;;;;:::i;:::-;;;;;;;;25263:666;;:::o;25937:513::-;26117:15;;26085:62;;26102:4;;-1:-1:-1;;;;;26117:15:0;26135:11;26085:8;:62::i;:::-;26190:15;;-1:-1:-1;;;;;26190:15:0;:31;26229:9;26262:4;26282:11;26190:15;;26394:7;2996;3023:6;-1:-1:-1;;;;;3023:6:0;;2958:79;26394:7;26190:252;;;;;;-1:-1:-1;;;;;;26190:252:0;;;-1:-1:-1;;;;;6771:15:1;;;26190:252:0;;;6753:34:1;6803:18;;;6796:34;;;;6846:18;;;6839:34;;;;6889:18;;;6882:34;6953:15;;;6932:19;;;6925:44;26416:15:0;6985:19:1;;;6978:35;6687:19;;26190:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25937:513;;:::o;14:395:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:2;;166:8;156;149:26;108:2;-1:-1:-1;196:20:1;;239:18;228:30;;225:2;;;278:8;268;261:26;225:2;322:4;314:6;310:17;298:29;;382:3;375:4;365:6;362:1;358:14;350:6;346:27;342:38;339:47;336:2;;;399:1;396;389:12;336:2;98:311;;;;;:::o;414:257::-;473:6;526:2;514:9;505:7;501:23;497:32;494:2;;;547:6;539;532:22;494:2;591:9;578:23;610:31;635:5;610:31;:::i;676:261::-;746:6;799:2;787:9;778:7;774:23;770:32;767:2;;;820:6;812;805:22;767:2;857:9;851:16;876:31;901:5;876:31;:::i;942:398::-;1010:6;1018;1071:2;1059:9;1050:7;1046:23;1042:32;1039:2;;;1092:6;1084;1077:22;1039:2;1136:9;1123:23;1155:31;1180:5;1155:31;:::i;:::-;1205:5;-1:-1:-1;1262:2:1;1247:18;;1234:32;1275:33;1234:32;1275:33;:::i;:::-;1327:7;1317:17;;;1029:311;;;;;:::o;1345:466::-;1422:6;1430;1438;1491:2;1479:9;1470:7;1466:23;1462:32;1459:2;;;1512:6;1504;1497:22;1459:2;1556:9;1543:23;1575:31;1600:5;1575:31;:::i;:::-;1625:5;-1:-1:-1;1682:2:1;1667:18;;1654:32;1695:33;1654:32;1695:33;:::i;:::-;1449:362;;1747:7;;-1:-1:-1;;;1801:2:1;1786:18;;;;1773:32;;1449:362::o;1816:392::-;1881:6;1889;1942:2;1930:9;1921:7;1917:23;1913:32;1910:2;;;1963:6;1955;1948:22;1910:2;2007:9;1994:23;2026:31;2051:5;2026:31;:::i;:::-;2076:5;-1:-1:-1;2133:2:1;2118:18;;2105:32;2146:30;2105:32;2146:30;:::i;2213:325::-;2281:6;2289;2342:2;2330:9;2321:7;2317:23;2313:32;2310:2;;;2363:6;2355;2348:22;2310:2;2407:9;2394:23;2426:31;2451:5;2426:31;:::i;:::-;2476:5;2528:2;2513:18;;;;2500:32;;-1:-1:-1;;;2300:238:1:o;2543:803::-;2665:6;2673;2681;2689;2742:2;2730:9;2721:7;2717:23;2713:32;2710:2;;;2763:6;2755;2748:22;2710:2;2808:9;2795:23;2837:18;2878:2;2870:6;2867:14;2864:2;;;2899:6;2891;2884:22;2864:2;2943:70;3005:7;2996:6;2985:9;2981:22;2943:70;:::i;:::-;3032:8;;-1:-1:-1;2917:96:1;-1:-1:-1;3120:2:1;3105:18;;3092:32;;-1:-1:-1;3136:16:1;;;3133:2;;;3170:6;3162;3155:22;3133:2;;3214:72;3278:7;3267:8;3256:9;3252:24;3214:72;:::i;:::-;2700:646;;;;-1:-1:-1;3305:8:1;-1:-1:-1;;;;2700:646:1:o;3351:251::-;3407:6;3460:2;3448:9;3439:7;3435:23;3431:32;3428:2;;;3481:6;3473;3466:22;3428:2;3525:9;3512:23;3544:28;3566:5;3544:28;:::i;3607:255::-;3674:6;3727:2;3715:9;3706:7;3702:23;3698:32;3695:2;;;3748:6;3740;3733:22;3695:2;3785:9;3779:16;3804:28;3826:5;3804:28;:::i;3867:190::-;3926:6;3979:2;3967:9;3958:7;3954:23;3950:32;3947:2;;;4000:6;3992;3985:22;3947:2;-1:-1:-1;4028:23:1;;3937:120;-1:-1:-1;3937:120:1:o;4062:326::-;4139:6;4147;4155;4208:2;4196:9;4187:7;4183:23;4179:32;4176:2;;;4229:6;4221;4214:22;4176:2;-1:-1:-1;;4257:23:1;;;4327:2;4312:18;;4299:32;;-1:-1:-1;4378:2:1;4363:18;;;4350:32;;4166:222;-1:-1:-1;4166:222:1:o;4393:316::-;4481:6;4489;4497;4550:2;4538:9;4529:7;4525:23;4521:32;4518:2;;;4571:6;4563;4556:22;4518:2;4605:9;4599:16;4589:26;;4655:2;4644:9;4640:18;4634:25;4624:35;;4699:2;4688:9;4684:18;4678:25;4668:35;;4508:201;;;;;:::o;4714:463::-;4767:3;4805:5;4799:12;4832:6;4827:3;4820:19;4858:4;4887:2;4882:3;4878:12;4871:19;;4924:2;4917:5;4913:14;4945:3;4957:195;4971:6;4968:1;4965:13;4957:195;;;5036:13;;-1:-1:-1;;;;;5032:39:1;5020:52;;5092:12;;;;5127:15;;;;5068:1;4986:9;4957:195;;;-1:-1:-1;5168:3:1;;4775:402;-1:-1:-1;;;;;4775:402:1:o;7451:603::-;7563:4;7592:2;7621;7610:9;7603:21;7653:6;7647:13;7696:6;7691:2;7680:9;7676:18;7669:34;7721:4;7734:140;7748:6;7745:1;7742:13;7734:140;;;7843:14;;;7839:23;;7833:30;7809:17;;;7828:2;7805:26;7798:66;7763:10;;7734:140;;;7892:6;7889:1;7886:13;7883:2;;;7962:4;7957:2;7948:6;7937:9;7933:22;7929:31;7922:45;7883:2;-1:-1:-1;8038:2:1;8017:15;-1:-1:-1;;8013:29:1;7998:45;;;;8045:2;7994:54;;7572:482;-1:-1:-1;;;7572:482:1:o;11911:356::-;12113:2;12095:21;;;12132:18;;;12125:30;12191:34;12186:2;12171:18;;12164:62;12258:2;12243:18;;12085:182::o;13265:332::-;13472:6;13461:9;13454:25;13515:2;13510;13499:9;13495:18;13488:30;13435:4;13535:56;13587:2;13576:9;13572:18;13564:6;13535:56;:::i;:::-;13527:64;13444:153;-1:-1:-1;;;;13444:153:1:o;13602:582::-;13901:6;13890:9;13883:25;13944:6;13939:2;13928:9;13924:18;13917:34;13987:3;13982:2;13971:9;13967:18;13960:31;13864:4;14008:57;14060:3;14049:9;14045:19;14037:6;14008:57;:::i;:::-;-1:-1:-1;;;;;14101:32:1;;;;14096:2;14081:18;;14074:60;-1:-1:-1;14165:3:1;14150:19;14143:35;14000:65;13873:311;-1:-1:-1;;;13873:311:1:o;14378:128::-;14418:3;14449:1;14445:6;14442:1;14439:13;14436:2;;;14455:18;;:::i;:::-;-1:-1:-1;14491:9:1;;14426:80::o;14511:217::-;14551:1;14577;14567:2;;-1:-1:-1;;;14602:31:1;;14656:4;14653:1;14646:15;14684:4;14609:1;14674:15;14567:2;-1:-1:-1;14713:9:1;;14557:171::o;14733:168::-;14773:7;14839:1;14835;14831:6;14827:14;14824:1;14821:21;14816:1;14809:9;14802:17;14798:45;14795:2;;;14846:18;;:::i;:::-;-1:-1:-1;14886:9:1;;14785:116::o;14906:125::-;14946:4;14974:1;14971;14968:8;14965:2;;;14979:18;;:::i;:::-;-1:-1:-1;15016:9:1;;14955:76::o;15036:380::-;15115:1;15111:12;;;;15158;;;15179:2;;15233:4;15225:6;15221:17;15211:27;;15179:2;15286;15278:6;15275:14;15255:18;15252:38;15249:2;;;15332:10;15327:3;15323:20;15320:1;15313:31;15367:4;15364:1;15357:15;15395:4;15392:1;15385:15;15249:2;;15091:325;;;:::o;15421:135::-;15460:3;-1:-1:-1;;15481:17:1;;15478:2;;;15501:18;;:::i;:::-;-1:-1:-1;15548:1:1;15537:13;;15468:88::o;15561:127::-;15622:10;15617:3;15613:20;15610:1;15603:31;15653:4;15650:1;15643:15;15677:4;15674:1;15667:15;15693:131;-1:-1:-1;;;;;15768:31:1;;15758:42;;15748:2;;15814:1;15811;15804:12;15829:118;15915:5;15908:13;15901:21;15894:5;15891:32;15881:2;;15937:1;15934;15927:12

Swarm Source

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