ETH Price: $3,698.92 (+1.24%)

Token

ERC-20: Nyan Cat (NYAN)
 

Overview

Max Total Supply

1,000,000,000 NYAN

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
780,488.460273202 NYAN

Value
$0.00
0x4fa9a083ab95622f2b0cb4f92cbeefd28d087147
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:
NYAN

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-11
*/

/**
TG: https://t.me/nyancatoneth

X: https://x.com/NyanCatOnETH

WEB: https://nyancateth.xyz
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;


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

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

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

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

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

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

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

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

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

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

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

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

    function 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 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 NYAN is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Nyan Cat';
    string private constant _symbol = 'NYAN';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 150; // 10000;
    uint256 private _maxTransferPercent = 150;
    uint256 private _maxWalletPercent = 150;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 2000;
    uint256 private developmentFee = 0;
    uint256 private totalFee = 2000;
    uint256 private sellFee = 2000;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping; 
    uint256 public swapThreshold = ( _totalSupply * 100 ) / 10000;
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 2000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x8E6504c2717942D18ca7325dB73e24e36A5725C4; 
    address internal marketing_receiver = 0x8E6504c2717942D18ca7325dB73e24e36A5725C4;
    address internal liquidity_receiver = 0x8E6504c2717942D18ca7325dB73e24e36A5725C4;

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

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function enableTrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisfeeExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(address(0)));}
    function _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;}

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

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

    function setallTaxes(uint256 _liquidity, uint256 _marketing, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(5) && sellFee <= denominator.div(5), "totalFee and sellFee cannot be more than 10%");
    }

    function setallLimits(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function changeReceiverAddresses(address _liquidity_receiver, address _marketing_receiver, address _development_receiver) external onlyOwner {
        liquidity_receiver = _liquidity_receiver;
        marketing_receiver = _marketing_receiver;
        development_receiver = _development_receiver;
    }

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

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

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxTransferAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)){payable(development_receiver).transfer(remainingBalance);}
    }

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

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

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

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

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

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

    function setMinTokenAmountForSwap(uint256 newMinTokenAmount) external onlyOwner {
        require(newMinTokenAmount > 0 && newMinTokenAmount < 1000000, "Minimum token amount must be greater than 0 and less than 0.1% of total supply");
        _minTokenAmount = newMinTokenAmount * (10 ** _decimals);
    }

    function changeSwapthreshold(uint256 _swapThreshold) public onlyOwner {
        require(_swapThreshold > 0 && _swapThreshold < 10000000, "Swap threshold must be greater than 0 and less than 1% of total supply");
        swapThreshold = _swapThreshold * (10 ** _decimals);
    
    }

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

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

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"_liquidity_receiver","type":"address"},{"internalType":"address","name":"_marketing_receiver","type":"address"},{"internalType":"address","name":"_development_receiver","type":"address"}],"name":"changeReceiverAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapThreshold","type":"uint256"}],"name":"changeSwapthreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinTokenAmount","type":"uint256"}],"name":"setMinTokenAmountForSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setallLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setallTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisfeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000461565b6200002290633b9aca0062000478565b60018181556096600281905560038190556004556009805460ff60a01b191690555f600a8190556107d0600b819055600c829055600d819055600e55600f5561271060108190556011805460ff1916909217909155906200008590606462000478565b62000091919062000492565b6014556107d0600154600a620000a8919062000478565b620000b4919062000492565b60155560168054738e6504c2717942d18ca7325db73e24e36a5725c46001600160a01b031991821681179092556017805482168317905560188054909116909117905534801562000103575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000168573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200018e9190620004b2565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001da573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002009190620004b2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200024b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002719190620004b2565b600880546001600160a01b038581166001600160a01b031992831617909255600980548484169216919091179055305f908152600760209081526040808320805460ff19908116600190811790925560185486168552828520805482168317905560175486168552828520805482168317905560165490951684528184208054861682179055338085528285208054909616821790955554600583528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620004da565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003a657815f19048211156200038a576200038a62000352565b808516156200039857918102915b93841c93908002906200036b565b509250929050565b5f82620003be575060016200045b565b81620003cc57505f6200045b565b8160018114620003e55760028114620003f05762000410565b60019150506200045b565b60ff84111562000404576200040462000352565b50506001821b6200045b565b5060208310610133831016604e8410600b841016171562000435575081810a6200045b565b62000441838362000366565b805f190482111562000457576200045762000352565b0290505b92915050565b5f6200047160ff841683620003ae565b9392505050565b80820281158282048414176200045b576200045b62000352565b5f82620004ad57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620004c3575f80fd5b81516001600160a01b038116811462000471575f80fd5b611cd980620004e85f395ff3fe608060405260043610610164575f3560e01c806383ddf828116100cd578063a8aa1b3111610087578063dac9853e11610062578063dac9853e14610444578063dd62ed3e14610463578063ebae8e21146104a7578063f2fde38b146104c6575f80fd5b8063a8aa1b31146103e7578063a9059cbb14610406578063d37e917714610425575f80fd5b806383ddf82814610318578063893d20e8146103395780638a8c523c1461036957806393ff69a51461037d57806395d89b411461039c5780639abba4e6146103c8575f80fd5b80632f54bf6e1161011e5780632f54bf6e14610246578063313ce567146102735780633f4218e01461028e57806370a08231146102bc57806378109e54146102f05780637d1db4a514610304575f80fd5b80630445b6671461016f57806306fdde0314610197578063095ea7b3146101d057806318160ddd146101ff5780631f976b7e1461021357806323b872dd14610227575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5061018460145481565b6040519081526020015b60405180910390f35b3480156101a2575f80fd5b50604080518082019091526008815267139e585b8810d85d60c21b60208201525b60405161018e9190611821565b3480156101db575f80fd5b506101ef6101ea366004611883565b6104e5565b604051901515815260200161018e565b34801561020a575f80fd5b506101846104fb565b34801561021e575f80fd5b50610184610537565b348015610232575f80fd5b506101ef6102413660046118ad565b61055a565b348015610251575f80fd5b506101ef6102603660046118eb565b5f546001600160a01b0391821691161490565b34801561027e575f80fd5b506040516009815260200161018e565b348015610299575f80fd5b506101ef6102a83660046118eb565b60076020525f908152604090205460ff1681565b3480156102c7575f80fd5b506101846102d63660046118eb565b6001600160a01b03165f9081526005602052604090205490565b3480156102fb575f80fd5b506101846105c2565b34801561030f575f80fd5b506101846105d1565b348015610323575f80fd5b50610337610332366004611906565b6105e0565b005b348015610344575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161018e565b348015610374575f80fd5b50610337610651565b348015610388575f80fd5b5061033761039736600461194e565b61068f565b3480156103a7575f80fd5b50604080518082019091526004815263272ca0a760e11b60208201526101c3565b3480156103d3575f80fd5b506103376103e2366004611977565b6107da565b3480156103f2575f80fd5b50600954610351906001600160a01b031681565b348015610411575f80fd5b506101ef610420366004611883565b6108b1565b348015610430575f80fd5b5061033761043f36600461198e565b6108bd565b34801561044f575f80fd5b5061033761045e366004611977565b610910565b34801561046e575f80fd5b5061018461047d3660046119c9565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b3480156104b2575f80fd5b506103376104c13660046119f5565b6109ef565b3480156104d1575f80fd5b506103376104e03660046118eb565b610acd565b5f6104f1338484610b49565b5060015b92915050565b5f80805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5460015461053291610c6c565b905090565b5f6010546003546105466104fb565b6105509190611a48565b6105329190611a5f565b5f610566848484610c77565b6105b784336105b285604051806060016040528060288152602001611c7c602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610d99565b610b49565b5060015b9392505050565b5f6010546004546105466104fb565b5f6010546002546105466104fb565b5f546001600160a01b031633146106125760405162461bcd60e51b815260040161060990611a7e565b60405180910390fd5b601880546001600160a01b039485166001600160a01b031991821617909155601780549385169382169390931790925560168054919093169116179055565b5f546001600160a01b0316331461067a5760405162461bcd60e51b815260040161060990611a7e565b6009805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146106b85760405162461bcd60e51b815260040161060990611a7e565b5f612710846106c56104fb565b6106cf9190611a48565b6106d99190611a5f565b90505f612710846106e86104fb565b6106f29190611a48565b6106fc9190611a5f565b90505f6127108461070b6104fb565b6107159190611a48565b61071f9190611a5f565b60028790556003869055600485905590505f6107506103e861074a60056107446104fb565b90610dc4565b90610dcf565b90508084101580156107625750808310155b801561076e5750808210155b6107d15760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610609565b50505050505050565b5f546001600160a01b031633146108035760405162461bcd60e51b815260040161060990611a7e565b5f8111801561081457506298968081105b6108955760405162461bcd60e51b815260206004820152604660248201527f53776170207468726573686f6c64206d7573742062652067726561746572207460448201527f68616e203020616e64206c657373207468616e203125206f6620746f74616c20606482015265737570706c7960d01b608482015260a401610609565b6108a16009600a611b7e565b6108ab9082611a48565b60145550565b5f6104f1338484610c77565b5f546001600160a01b031633146108e65760405162461bcd60e51b815260040161060990611a7e565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146109395760405162461bcd60e51b815260040161060990611a7e565b5f8111801561094a5750620f424081105b6109d35760405162461bcd60e51b815260206004820152604e60248201527f4d696e696d756d20746f6b656e20616d6f756e74206d7573742062652067726560448201527f61746572207468616e203020616e64206c657373207468616e20302e3125206f60648201526d6620746f74616c20737570706c7960901b608482015260a401610609565b6109df6009600a611b7e565b6109e99082611a48565b60155550565b5f546001600160a01b03163314610a185760405162461bcd60e51b815260040161060990611a7e565b600a869055600b859055600c849055600d839055600e829055600f819055601054610a44906005610dcf565b600d5411158015610a645750601054610a5e906005610dcf565b600e5411155b610ac55760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2031302560a01b6064820152608401610609565b505050505050565b5f546001600160a01b03163314610af65760405162461bcd60e51b815260040161060990611a7e565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610bab5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610609565b6001600160a01b038216610c0c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610609565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6105bb8284611b8c565b610c82838383610dda565b610c8c8383610f87565b610c9783838361101a565b610ca18383611108565b610cac83838361115d565b610cb7838383611290565b6001600160a01b0383165f90815260056020526040902054610cd99082610c6c565b6001600160a01b0384165f90815260056020526040812091909155610cfe84846112b4565b610d085781610d13565b610d138484846112f8565b6001600160a01b0384165f90815260056020526040902054909150610d3890826113b3565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d8b9085815260200190565b60405180910390a350505050565b5f8184841115610dbc5760405162461bcd60e51b81526004016106099190611821565b505050900390565b5f6105bb8284611a48565b5f6105bb8284611a5f565b6001600160a01b038316610e3e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610609565b6001600160a01b038216610ea05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610609565b5f8111610f015760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610609565b6001600160a01b0383165f90815260056020526040902054811115610f825760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610609565b505050565b6001600160a01b0382165f9081526007602052604090205460ff16158015610fc757506001600160a01b0381165f9081526007602052604090205460ff16155b1561101657600954600160a01b900460ff166110165760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610609565b5050565b6001600160a01b0383165f9081526007602052604090205460ff1615801561105a57506001600160a01b0382165f9081526007602052604090205460ff16155b801561107457506009546001600160a01b03838116911614155b801561108b57506001600160a01b03821661dead14155b15610f82576110986105c2565b6001600160a01b0383165f908152600560205260409020546110ba90836113b3565b1115610f825760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610609565b6009546001600160a01b03828116911614801561113d57506001600160a01b0382165f9081526007602052604090205460ff16155b1561101657600160125f8282546111549190611b9f565b90915550505050565b6009546001600160a01b038481169116146112015761117a610537565b8111158061119f57506001600160a01b0383165f9081526007602052604090205460ff165b806111c157506001600160a01b0382165f9081526007602052604090205460ff165b6112015760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610609565b6112096105d1565b8111158061122e57506001600160a01b0383165f9081526007602052604090205460ff165b8061125057506001600160a01b0382165f9081526007602052604090205460ff165b610f825760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610609565b61129b8383836113be565b15610f82576112ab60145461146e565b5f601255505050565b6001600160a01b0382165f9081526007602052604081205460ff161580156105bb5750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f8061130485856115de565b11156113ac575f61132661131886866115de565b601054610744908690610dcf565b305f9081526005602052604090205490915061134290826113b3565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113929085815260200190565b60405180910390a36113a48382610c6c565b9150506105bb565b5092915050565b5f6105bb8284611b9f565b601554601454305f9081526005602052604081205460135491938510159211159060ff161580156113f1575060115460ff165b80156114065750600954600160a01b900460ff165b801561140f5750815b801561143357506001600160a01b0386165f9081526007602052604090205460ff16155b801561144c57506009546001600160a01b038681169116145b801561145b5750600160125410155b80156114645750805b9695505050505050565b6013805460ff19166001908117909155600c54600b54600a545f936114a7936002936107449391926114a19283916113b3565b906113b3565b90505f6114c38261074a600a5486610dc490919063ffffffff16565b90505f6114d08483610c6c565b9050476114dc82611628565b5f6114e74783610c6c565b90505f611509611502600a5488610c6c90919063ffffffff16565b8390610dcf565b90505f611521600a5483610dc490919063ffffffff16565b90508015611533576115338682611770565b600b545f9061154790610744856002610dc4565b90508015611588576017546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611586573d5f803e3d5ffd5b505b4780156115c8576016546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156115c6573d5f803e3d5ffd5b505b50506013805460ff191690555050505050505050565b6009545f906001600160a01b03908116908316036115ff5750600e546104f5565b6009546001600160a01b039081169084160361161e5750600d546104f5565b50600f5492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061165b5761165b611bb2565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d69190611bc6565b816001815181106116e9576116e9611bb2565b6001600160a01b03928316602091820292909201015260085461170f9130911684610b49565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906117479085905f90869030904290600401611be1565b5f604051808303815f87803b15801561175e575f80fd5b505af1158015610ac5573d5f803e3d5ffd5b6008546117889030906001600160a01b031684610b49565b60085460185460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156117f5573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061181a9190611c50565b5050505050565b5f6020808352835180828501525f5b8181101561184c57858101830151858201604001528201611830565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611880575f80fd5b50565b5f8060408385031215611894575f80fd5b823561189f8161186c565b946020939093013593505050565b5f805f606084860312156118bf575f80fd5b83356118ca8161186c565b925060208401356118da8161186c565b929592945050506040919091013590565b5f602082840312156118fb575f80fd5b81356105bb8161186c565b5f805f60608486031215611918575f80fd5b83356119238161186c565b925060208401356119338161186c565b915060408401356119438161186c565b809150509250925092565b5f805f60608486031215611960575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611987575f80fd5b5035919050565b5f806040838503121561199f575f80fd5b82356119aa8161186c565b9150602083013580151581146119be575f80fd5b809150509250929050565b5f80604083850312156119da575f80fd5b82356119e58161186c565b915060208301356119be8161186c565b5f805f805f8060c08789031215611a0a575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176104f5576104f5611a34565b5f82611a7957634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b80851115611ad857815f1904821115611abe57611abe611a34565b80851615611acb57918102915b93841c9390800290611aa3565b509250929050565b5f82611aee575060016104f5565b81611afa57505f6104f5565b8160018114611b105760028114611b1a57611b36565b60019150506104f5565b60ff841115611b2b57611b2b611a34565b50506001821b6104f5565b5060208310610133831016604e8410600b8410161715611b59575081810a6104f5565b611b638383611a9e565b805f1904821115611b7657611b76611a34565b029392505050565b5f6105bb60ff841683611ae0565b818103818111156104f5576104f5611a34565b808201808211156104f5576104f5611a34565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611bd6575f80fd5b81516105bb8161186c565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611c2f5784516001600160a01b031683529383019391830191600101611c0a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611c62575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207d8c683c8147d6a6aef7803e60ca84144d6b5d67aa4e0cfc8d5f9ce3c714c78f64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610164575f3560e01c806383ddf828116100cd578063a8aa1b3111610087578063dac9853e11610062578063dac9853e14610444578063dd62ed3e14610463578063ebae8e21146104a7578063f2fde38b146104c6575f80fd5b8063a8aa1b31146103e7578063a9059cbb14610406578063d37e917714610425575f80fd5b806383ddf82814610318578063893d20e8146103395780638a8c523c1461036957806393ff69a51461037d57806395d89b411461039c5780639abba4e6146103c8575f80fd5b80632f54bf6e1161011e5780632f54bf6e14610246578063313ce567146102735780633f4218e01461028e57806370a08231146102bc57806378109e54146102f05780637d1db4a514610304575f80fd5b80630445b6671461016f57806306fdde0314610197578063095ea7b3146101d057806318160ddd146101ff5780631f976b7e1461021357806323b872dd14610227575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5061018460145481565b6040519081526020015b60405180910390f35b3480156101a2575f80fd5b50604080518082019091526008815267139e585b8810d85d60c21b60208201525b60405161018e9190611821565b3480156101db575f80fd5b506101ef6101ea366004611883565b6104e5565b604051901515815260200161018e565b34801561020a575f80fd5b506101846104fb565b34801561021e575f80fd5b50610184610537565b348015610232575f80fd5b506101ef6102413660046118ad565b61055a565b348015610251575f80fd5b506101ef6102603660046118eb565b5f546001600160a01b0391821691161490565b34801561027e575f80fd5b506040516009815260200161018e565b348015610299575f80fd5b506101ef6102a83660046118eb565b60076020525f908152604090205460ff1681565b3480156102c7575f80fd5b506101846102d63660046118eb565b6001600160a01b03165f9081526005602052604090205490565b3480156102fb575f80fd5b506101846105c2565b34801561030f575f80fd5b506101846105d1565b348015610323575f80fd5b50610337610332366004611906565b6105e0565b005b348015610344575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161018e565b348015610374575f80fd5b50610337610651565b348015610388575f80fd5b5061033761039736600461194e565b61068f565b3480156103a7575f80fd5b50604080518082019091526004815263272ca0a760e11b60208201526101c3565b3480156103d3575f80fd5b506103376103e2366004611977565b6107da565b3480156103f2575f80fd5b50600954610351906001600160a01b031681565b348015610411575f80fd5b506101ef610420366004611883565b6108b1565b348015610430575f80fd5b5061033761043f36600461198e565b6108bd565b34801561044f575f80fd5b5061033761045e366004611977565b610910565b34801561046e575f80fd5b5061018461047d3660046119c9565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b3480156104b2575f80fd5b506103376104c13660046119f5565b6109ef565b3480156104d1575f80fd5b506103376104e03660046118eb565b610acd565b5f6104f1338484610b49565b5060015b92915050565b5f80805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5460015461053291610c6c565b905090565b5f6010546003546105466104fb565b6105509190611a48565b6105329190611a5f565b5f610566848484610c77565b6105b784336105b285604051806060016040528060288152602001611c7c602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610d99565b610b49565b5060015b9392505050565b5f6010546004546105466104fb565b5f6010546002546105466104fb565b5f546001600160a01b031633146106125760405162461bcd60e51b815260040161060990611a7e565b60405180910390fd5b601880546001600160a01b039485166001600160a01b031991821617909155601780549385169382169390931790925560168054919093169116179055565b5f546001600160a01b0316331461067a5760405162461bcd60e51b815260040161060990611a7e565b6009805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146106b85760405162461bcd60e51b815260040161060990611a7e565b5f612710846106c56104fb565b6106cf9190611a48565b6106d99190611a5f565b90505f612710846106e86104fb565b6106f29190611a48565b6106fc9190611a5f565b90505f6127108461070b6104fb565b6107159190611a48565b61071f9190611a5f565b60028790556003869055600485905590505f6107506103e861074a60056107446104fb565b90610dc4565b90610dcf565b90508084101580156107625750808310155b801561076e5750808210155b6107d15760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610609565b50505050505050565b5f546001600160a01b031633146108035760405162461bcd60e51b815260040161060990611a7e565b5f8111801561081457506298968081105b6108955760405162461bcd60e51b815260206004820152604660248201527f53776170207468726573686f6c64206d7573742062652067726561746572207460448201527f68616e203020616e64206c657373207468616e203125206f6620746f74616c20606482015265737570706c7960d01b608482015260a401610609565b6108a16009600a611b7e565b6108ab9082611a48565b60145550565b5f6104f1338484610c77565b5f546001600160a01b031633146108e65760405162461bcd60e51b815260040161060990611a7e565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146109395760405162461bcd60e51b815260040161060990611a7e565b5f8111801561094a5750620f424081105b6109d35760405162461bcd60e51b815260206004820152604e60248201527f4d696e696d756d20746f6b656e20616d6f756e74206d7573742062652067726560448201527f61746572207468616e203020616e64206c657373207468616e20302e3125206f60648201526d6620746f74616c20737570706c7960901b608482015260a401610609565b6109df6009600a611b7e565b6109e99082611a48565b60155550565b5f546001600160a01b03163314610a185760405162461bcd60e51b815260040161060990611a7e565b600a869055600b859055600c849055600d839055600e829055600f819055601054610a44906005610dcf565b600d5411158015610a645750601054610a5e906005610dcf565b600e5411155b610ac55760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2031302560a01b6064820152608401610609565b505050505050565b5f546001600160a01b03163314610af65760405162461bcd60e51b815260040161060990611a7e565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610bab5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610609565b6001600160a01b038216610c0c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610609565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6105bb8284611b8c565b610c82838383610dda565b610c8c8383610f87565b610c9783838361101a565b610ca18383611108565b610cac83838361115d565b610cb7838383611290565b6001600160a01b0383165f90815260056020526040902054610cd99082610c6c565b6001600160a01b0384165f90815260056020526040812091909155610cfe84846112b4565b610d085781610d13565b610d138484846112f8565b6001600160a01b0384165f90815260056020526040902054909150610d3890826113b3565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d8b9085815260200190565b60405180910390a350505050565b5f8184841115610dbc5760405162461bcd60e51b81526004016106099190611821565b505050900390565b5f6105bb8284611a48565b5f6105bb8284611a5f565b6001600160a01b038316610e3e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610609565b6001600160a01b038216610ea05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610609565b5f8111610f015760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610609565b6001600160a01b0383165f90815260056020526040902054811115610f825760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610609565b505050565b6001600160a01b0382165f9081526007602052604090205460ff16158015610fc757506001600160a01b0381165f9081526007602052604090205460ff16155b1561101657600954600160a01b900460ff166110165760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610609565b5050565b6001600160a01b0383165f9081526007602052604090205460ff1615801561105a57506001600160a01b0382165f9081526007602052604090205460ff16155b801561107457506009546001600160a01b03838116911614155b801561108b57506001600160a01b03821661dead14155b15610f82576110986105c2565b6001600160a01b0383165f908152600560205260409020546110ba90836113b3565b1115610f825760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610609565b6009546001600160a01b03828116911614801561113d57506001600160a01b0382165f9081526007602052604090205460ff16155b1561101657600160125f8282546111549190611b9f565b90915550505050565b6009546001600160a01b038481169116146112015761117a610537565b8111158061119f57506001600160a01b0383165f9081526007602052604090205460ff165b806111c157506001600160a01b0382165f9081526007602052604090205460ff165b6112015760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610609565b6112096105d1565b8111158061122e57506001600160a01b0383165f9081526007602052604090205460ff165b8061125057506001600160a01b0382165f9081526007602052604090205460ff165b610f825760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610609565b61129b8383836113be565b15610f82576112ab60145461146e565b5f601255505050565b6001600160a01b0382165f9081526007602052604081205460ff161580156105bb5750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f8061130485856115de565b11156113ac575f61132661131886866115de565b601054610744908690610dcf565b305f9081526005602052604090205490915061134290826113b3565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113929085815260200190565b60405180910390a36113a48382610c6c565b9150506105bb565b5092915050565b5f6105bb8284611b9f565b601554601454305f9081526005602052604081205460135491938510159211159060ff161580156113f1575060115460ff165b80156114065750600954600160a01b900460ff165b801561140f5750815b801561143357506001600160a01b0386165f9081526007602052604090205460ff16155b801561144c57506009546001600160a01b038681169116145b801561145b5750600160125410155b80156114645750805b9695505050505050565b6013805460ff19166001908117909155600c54600b54600a545f936114a7936002936107449391926114a19283916113b3565b906113b3565b90505f6114c38261074a600a5486610dc490919063ffffffff16565b90505f6114d08483610c6c565b9050476114dc82611628565b5f6114e74783610c6c565b90505f611509611502600a5488610c6c90919063ffffffff16565b8390610dcf565b90505f611521600a5483610dc490919063ffffffff16565b90508015611533576115338682611770565b600b545f9061154790610744856002610dc4565b90508015611588576017546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611586573d5f803e3d5ffd5b505b4780156115c8576016546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156115c6573d5f803e3d5ffd5b505b50506013805460ff191690555050505050505050565b6009545f906001600160a01b03908116908316036115ff5750600e546104f5565b6009546001600160a01b039081169084160361161e5750600d546104f5565b50600f5492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061165b5761165b611bb2565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d69190611bc6565b816001815181106116e9576116e9611bb2565b6001600160a01b03928316602091820292909201015260085461170f9130911684610b49565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906117479085905f90869030904290600401611be1565b5f604051808303815f87803b15801561175e575f80fd5b505af1158015610ac5573d5f803e3d5ffd5b6008546117889030906001600160a01b031684610b49565b60085460185460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156117f5573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061181a9190611c50565b5050505050565b5f6020808352835180828501525f5b8181101561184c57858101830151858201604001528201611830565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611880575f80fd5b50565b5f8060408385031215611894575f80fd5b823561189f8161186c565b946020939093013593505050565b5f805f606084860312156118bf575f80fd5b83356118ca8161186c565b925060208401356118da8161186c565b929592945050506040919091013590565b5f602082840312156118fb575f80fd5b81356105bb8161186c565b5f805f60608486031215611918575f80fd5b83356119238161186c565b925060208401356119338161186c565b915060408401356119438161186c565b809150509250925092565b5f805f60608486031215611960575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611987575f80fd5b5035919050565b5f806040838503121561199f575f80fd5b82356119aa8161186c565b9150602083013580151581146119be575f80fd5b809150509250929050565b5f80604083850312156119da575f80fd5b82356119e58161186c565b915060208301356119be8161186c565b5f805f805f8060c08789031215611a0a575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176104f5576104f5611a34565b5f82611a7957634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b80851115611ad857815f1904821115611abe57611abe611a34565b80851615611acb57918102915b93841c9390800290611aa3565b509250929050565b5f82611aee575060016104f5565b81611afa57505f6104f5565b8160018114611b105760028114611b1a57611b36565b60019150506104f5565b60ff841115611b2b57611b2b611a34565b50506001821b6104f5565b5060208310610133831016604e8410600b8410161715611b59575081810a6104f5565b611b638383611a9e565b805f1904821115611b7657611b76611a34565b029392505050565b5f6105bb60ff841683611ae0565b818103818111156104f5576104f5611a34565b808201808211156104f5576104f5611a34565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611bd6575f80fd5b81516105bb8161186c565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611c2f5784516001600160a01b031683529383019391830191600101611c0a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611c62575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207d8c683c8147d6a6aef7803e60ca84144d6b5d67aa4e0cfc8d5f9ce3c714c78f64736f6c63430008150033

Deployed Bytecode Sourcemap

4716:12106:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5785:61;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5785:61:0;;;;;;;;6992:67;;;;;;;;;;-1:-1:-1;7052:5:0;;;;;;;;;;;;-1:-1:-1;;;7052:5:0;;;;6992:67;;;;;;;:::i;8011:133::-;;;;;;;;;;-1:-1:-1;8011:133:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;8011:133:0;1205:187:1;8150:111:0;;;;;;;;;;;;;:::i;8506:119::-;;;;;;;;;;;;;:::i;16165:309::-;;;;;;;;;;-1:-1:-1;16165:309:0;;;;;:::i;:::-;;:::i;3096:87::-;;;;;;;;;;-1:-1:-1;3096:87:0;;;;;:::i;:::-;3151:4;3176:5;-1:-1:-1;;;;;3165:16:0;;;3176:5;;3165:16;;3096:87;7142:67;;;;;;;;;;-1:-1:-1;7142:67:0;;4920:1;2252:36:1;;2240:2;2225:18;7142:67:0;2110:184:1;5269:44:0;;;;;;;;;;-1:-1:-1;5269:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7373:103;;;;;;;;;;-1:-1:-1;7373:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7456:18:0;7439:7;7456:18;;;:9;:18;;;;;;;7373:103;8267:114;;;;;;;;;;;;;:::i;8387:113::-;;;;;;;;;;;;;:::i;10858:306::-;;;;;;;;;;-1:-1:-1;10858:306:0;;;;;:::i;:::-;;:::i;:::-;;7289:78;;;;;;;;;;-1:-1:-1;7341:7:0;7359:5;-1:-1:-1;;;;;7359:5:0;7289:78;;;-1:-1:-1;;;;;2997:32:1;;;2979:51;;2967:2;2952:18;7289:78:0;2833:203:1;7215:68:0;;;;;;;;;;;;;:::i;10267:583::-;;;;;;;;;;-1:-1:-1;10267:583:0;;;;;:::i;:::-;;:::i;7065:71::-;;;;;;;;;;-1:-1:-1;7127:7:0;;;;;;;;;;;;-1:-1:-1;;;7127:7:0;;;;7065:71;;15431:286;;;;;;;;;;-1:-1:-1;15431:286:0;;;;;:::i;:::-;;:::i;5341:19::-;;;;;;;;;;-1:-1:-1;5341:19:0;;;;-1:-1:-1;;;;;5341:19:0;;;7482:139;;;;;;;;;;-1:-1:-1;7482:139:0;;;;;:::i;:::-;;:::i;7894:111::-;;;;;;;;;;-1:-1:-1;7894:111:0;;;;;:::i;:::-;;:::i;15115:308::-;;;;;;;;;;-1:-1:-1;15115:308:0;;;;;:::i;:::-;;:::i;7627:127::-;;;;;;;;;;-1:-1:-1;7627:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7725:18:0;;;7708:7;7725:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7627:127;9774:485;;;;;;;;;;-1:-1:-1;9774:485:0;;;;;:::i;:::-;;:::i;3189:111::-;;;;;;;;;;-1:-1:-1;3189:111:0;;;;;:::i;:::-;;:::i;8011:133::-;8086:4;8093:37;8102:10;8114:7;8123:6;8093:8;:37::i;:::-;-1:-1:-1;8138:4:0;8011:133;;;;;:::o;8150:111::-;8203:7;7456:18;;;:9;:18;;;;8220:12;;:39;;:16;:39::i;:::-;8213:46;;8150:111;:::o;8506:119::-;8557:7;8612:11;;8590:19;;8574:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;16165:309::-;16263:4;16280:36;16290:6;16298:9;16309:6;16280:9;:36::i;:::-;16327:117;16336:6;16344:10;16356:87;16392:6;16356:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16356:19:0;;;;;;:11;:19;;;;;;;;16376:10;16356:31;;;;;;;;;:87;:35;:87::i;:::-;16327:8;:117::i;:::-;-1:-1:-1;16462:4:0;16165:309;;;;;;:::o;8267:114::-;8315:7;8368:11;;8348:17;;8332:13;:11;:13::i;8387:113::-;8432:7;8487:11;;8465:19;;8449:13;:11;:13::i;10858:306::-;3151:4;3176:5;-1:-1:-1;;;;;3176:5:0;3063:10;3165:16;3047:38;;;;-1:-1:-1;;;3047:38:0;;;;;;;:::i;:::-;;;;;;;;;11010:18:::1;:40:::0;;-1:-1:-1;;;;;11010:40:0;;::::1;-1:-1:-1::0;;;;;;11010:40:0;;::::1;;::::0;;;11061:18:::1;:40:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;11112:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;10858:306::o;7215:68::-;3151:4;3176:5;-1:-1:-1;;;;;3176:5:0;3063:10;3165:16;3047:38;;;;-1:-1:-1;;;3047:38:0;;;;;;;:::i;:::-;7260:14:::1;:21:::0;;-1:-1:-1;;;;7260:21:0::1;-1:-1:-1::0;;;7260:21:0::1;::::0;;7215:68::o;10267:583::-;3151:4;3176:5;-1:-1:-1;;;;;3176:5:0;3063:10;3165:16;3047:38;;;;-1:-1:-1;;;3047:38:0;;;;;;;:::i;:::-;10366:13:::1;10407:5;10399:4;10383:13;:11;:13::i;:::-;:20;;;;:::i;:::-;10382:30;;;;:::i;:::-;10366:46;;10423:19;10472:5;10462:6;10446:13;:11;:13::i;:::-;:22;;;;:::i;:::-;10445:32;;;;:::i;:::-;10423:54;;10488:17;10536:5;10525:7;10509:13;:11;:13::i;:::-;:23;;;;:::i;:::-;10508:33;;;;:::i;:::-;10552:19;:26:::0;;;10589:19:::1;:28:::0;;;10628:17:::1;:27:::0;;;10488:53;-1:-1:-1;;10682:30:0::1;10707:4;10682:20;10700:1;10682:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;10666:46;;10740:5;10731;:14;;:38;;;;;10764:5;10749:11;:20;;10731:38;:60;;;;;10786:5;10773:9;:18;;10731:60;10723:119;;;::::0;-1:-1:-1;;;10723:119:0;;6212:2:1;10723:119:0::1;::::0;::::1;6194:21:1::0;6251:2;6231:18;;;6224:30;6290:34;6270:18;;;6263:62;-1:-1:-1;;;6341:18:1;;;6334:44;6395:19;;10723:119:0::1;6010:410:1::0;10723:119:0::1;10355:495;;;;10267:583:::0;;;:::o;15431:286::-;3151:4;3176:5;-1:-1:-1;;;;;3176:5:0;3063:10;3165:16;3047:38;;;;-1:-1:-1;;;3047:38:0;;;;;;;:::i;:::-;15537:1:::1;15520:14;:18;:47;;;;;15559:8;15542:14;:25;15520:47;15512:130;;;::::0;-1:-1:-1;;;15512:130:0;;6627:2:1;15512:130:0::1;::::0;::::1;6609:21:1::0;6666:2;6646:18;;;6639:30;6705:34;6685:18;;;6678:62;6776:34;6756:18;;;6749:62;-1:-1:-1;;;6827:19:1;;;6820:37;6874:19;;15512:130:0::1;6425:474:1::0;15512:130:0::1;15687:15;4920:1;15687:2;:15;:::i;:::-;15669:34;::::0;:14;:34:::1;:::i;:::-;15653:13;:50:::0;-1:-1:-1;15431:286:0:o;7482:139::-;7560:4;7567:40;7577:10;7589:9;7600:6;7567:9;:40::i;7894:111::-;3151:4;3176:5;-1:-1:-1;;;;;3176:5:0;3063:10;3165:16;3047:38;;;;-1:-1:-1;;;3047:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7971:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;7971:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7894:111::o;15115:308::-;3151:4;3176:5;-1:-1:-1;;;;;3176:5:0;3063:10;3165:16;3047:38;;;;-1:-1:-1;;;3047:38:0;;;;;;;:::i;:::-;15234:1:::1;15214:17;:21;:52;;;;;15259:7;15239:17;:27;15214:52;15206:143;;;::::0;-1:-1:-1;;;15206:143:0;;8489:2:1;15206:143:0::1;::::0;::::1;8471:21:1::0;8528:2;8508:18;;;8501:30;8567:34;8547:18;;;8540:62;8638:34;8618:18;;;8611:62;-1:-1:-1;;;8689:19:1;;;8682:45;8744:19;;15206:143:0::1;8287:482:1::0;15206:143:0::1;15399:15;4920:1;15399:2;:15;:::i;:::-;15378:37;::::0;:17;:37:::1;:::i;:::-;15360:15;:55:::0;-1:-1:-1;15115:308:0:o;9774:485::-;3151:4;3176:5;-1:-1:-1;;;;;3176:5:0;3063:10;3165:16;3047:38;;;;-1:-1:-1;;;3047:38:0;;;;;;;:::i;:::-;9934:12:::1;:25:::0;;;9970:12:::1;:25:::0;;;10006:14:::1;:29:::0;;;10046:8:::1;:17:::0;;;10074:7:::1;:15:::0;;;10100:11:::1;:20:::0;;;10151:11:::1;::::0;:18:::1;::::0;10167:1:::1;10151:15;:18::i;:::-;10139:8;;:30;;:63;;;;-1:-1:-1::0;10184:11:0::1;::::0;:18:::1;::::0;10200:1:::1;10184:15;:18::i;:::-;10173:7;;:29;;10139:63;10131:120;;;::::0;-1:-1:-1;;;10131:120:0;;8976:2:1;10131:120:0::1;::::0;::::1;8958:21:1::0;9015:2;8995:18;;;8988:30;9054:34;9034:18;;;9027:62;-1:-1:-1;;;9105:18:1;;;9098:42;9157:19;;10131:120:0::1;8774:408:1::0;10131:120:0::1;9774:485:::0;;;;;;:::o;3189:111::-;3151:4;3176:5;-1:-1:-1;;;;;3176:5:0;3063:10;3165:16;3047:38;;;;-1:-1:-1;;;3047:38:0;;;;;;;:::i;:::-;3255:5:::1;:11:::0;;-1:-1:-1;;;;;;3255:11:0::1;-1:-1:-1::0;;;;;3255:11:0;::::1;::::0;;::::1;::::0;;;3273:25:::1;::::0;2979:51:1;;;3273:25:0::1;::::0;2967:2:1;2952:18;3273:25:0::1;;;;;;;3189:111:::0;:::o;16482:335::-;-1:-1:-1;;;;;16575:19:0;;16567:68;;;;-1:-1:-1;;;16567:68:0;;9605:2:1;16567:68:0;;;9587:21:1;9644:2;9624:18;;;9617:30;9683:34;9663:18;;;9656:62;-1:-1:-1;;;9734:18:1;;;9727:34;9778:19;;16567:68:0;9403:400:1;16567:68:0;-1:-1:-1;;;;;16654:21:0;;16646:68;;;;-1:-1:-1;;;16646:68:0;;10010:2:1;16646:68:0;;;9992:21:1;10049:2;10029:18;;;10022:30;10088:34;10068:18;;;10061:62;-1:-1:-1;;;10139:18:1;;;10132:32;10181:19;;16646:68:0;9808:398:1;16646:68:0;-1:-1:-1;;;;;16725:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16777:32;;160:25:1;;;16777:32:0;;133:18:1;16777:32:0;;;;;;;16482:335;;;:::o;282:82::-;340:7;357:5;361:1;357;:5;:::i;9080:686::-;9169:37;9180:6;9188:9;9199:6;9169:10;:37::i;:::-;9217:38;9237:6;9245:9;9217:19;:38::i;:::-;9266:41;9281:6;9289:9;9300:6;9266:14;:41::i;:::-;9319:35;9336:6;9344:9;9319:16;:35::i;:::-;9365:39;9378:6;9386:9;9397:6;9365:12;:39::i;:::-;9416:35;9425:6;9433:9;9444:6;9416:8;:35::i;:::-;-1:-1:-1;;;;;9482:17:0;;;;;;:9;:17;;;;;;:29;;9504:6;9482:21;:29::i;:::-;-1:-1:-1;;;;;9462:17:0;;;;;;:9;:17;;;;;:49;;;;9547:32;9472:6;9569:9;9547:13;:32::i;:::-;:78;;9619:6;9547:78;;;9582:34;9590:6;9598:9;9609:6;9582:7;:34::i;:::-;-1:-1:-1;;;;;9659:20:0;;;;;;:9;:20;;;;;;9522:103;;-1:-1:-1;9659:40:0;;9522:103;9659:24;:40::i;:::-;-1:-1:-1;;;;;9636:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9715:43;;;;;;;;;;9743:14;160:25:1;;148:2;133:18;;14:177;9715:43:0;;;;;;;;9158:608;9080:686;;;:::o;1495:162::-;1581:7;1627:12;1619:6;;;;1611:29;;;;-1:-1:-1;;;1611:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1649:5:0;;;1495:162::o;370:82::-;428:7;445:5;449:1;445;:5;:::i;458:82::-;516:7;533:5;537:1;533;:5;:::i;8633:439::-;-1:-1:-1;;;;;8737:20:0;;8729:70;;;;-1:-1:-1;;;8729:70:0;;10546:2:1;8729:70:0;;;10528:21:1;10585:2;10565:18;;;10558:30;10624:34;10604:18;;;10597:62;-1:-1:-1;;;10675:18:1;;;10668:35;10720:19;;8729:70:0;10344:401:1;8729:70:0;-1:-1:-1;;;;;8818:23:0;;8810:71;;;;-1:-1:-1;;;8810:71:0;;10952:2:1;8810:71:0;;;10934:21:1;10991:2;10971:18;;;10964:30;11030:34;11010:18;;;11003:62;-1:-1:-1;;;11081:18:1;;;11074:33;11124:19;;8810:71:0;10750:399:1;8810:71:0;8917:1;8900:6;:19;8892:73;;;;-1:-1:-1;;;8892:73:0;;11356:2:1;8892:73:0;;;11338:21:1;11395:2;11375:18;;;11368:30;11434:34;11414:18;;;11407:62;-1:-1:-1;;;11485:18:1;;;11478:39;11534:19;;8892:73:0;11154:405:1;8892:73:0;-1:-1:-1;;;;;7456:18:0;;7439:7;7456:18;;;:9;:18;;;;;;8984:6;:27;;8976:88;;;;-1:-1:-1;;;8976:88:0;;11766:2:1;8976:88:0;;;11748:21:1;11805:2;11785:18;;;11778:30;11844:34;11824:18;;;11817:62;-1:-1:-1;;;11895:18:1;;;11888:47;11952:19;;8976:88:0;11564:413:1;8976:88:0;8633:439;;;:::o;11172:191::-;-1:-1:-1;;;;;11265:19:0;;;;;;:11;:19;;;;;;;;11264:20;:47;;;;-1:-1:-1;;;;;;11289:22:0;;;;;;:11;:22;;;;;;;;11288:23;11264:47;11261:95;;;11321:14;;-1:-1:-1;;;11321:14:0;;;;11313:41;;;;-1:-1:-1;;;11313:41:0;;12184:2:1;11313:41:0;;;12166:21:1;12223:2;12203:18;;;12196:30;-1:-1:-1;;;12242:18:1;;;12235:44;12296:18;;11313:41:0;11982:338:1;11313:41:0;11172:191;;:::o;11375:333::-;-1:-1:-1;;;;;11479:19:0;;;;;;:11;:19;;;;;;;;11478:20;:47;;;;-1:-1:-1;;;;;;11503:22:0;;;;;;:11;:22;;;;;;;;11502:23;11478:47;:77;;;;-1:-1:-1;11550:4:0;;-1:-1:-1;;;;;11529:26:0;;;11550:4;;11529:26;;11478:77;:107;;;;-1:-1:-1;;;;;;11559:26:0;;6023:42;11559:26;;11478:107;11475:226;;;11647:17;:15;:17::i;:::-;-1:-1:-1;;;;;11610:20:0;;;;;;:9;:20;;;;;;:32;;11635:6;11610:24;:32::i;:::-;11609:55;;11601:98;;;;-1:-1:-1;;;11601:98:0;;12527:2:1;11601:98:0;;;12509:21:1;12566:2;12546:18;;;12539:30;12605:32;12585:18;;;12578:60;12655:18;;11601:98:0;12325:354:1;11716:159:0;11813:4;;-1:-1:-1;;;;;11800:17:0;;;11813:4;;11800:17;:41;;;;-1:-1:-1;;;;;;11822:19:0;;;;;;:11;:19;;;;;;;;11821:20;11800:41;11797:71;;;11864:1;11843:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11716:159:0;;:::o;11883:349::-;11994:4;;-1:-1:-1;;;;;11984:14:0;;;11994:4;;11984:14;11981:130;;12018:20;:18;:20::i;:::-;12008:6;:30;;:53;;;-1:-1:-1;;;;;;12042:19:0;;;;;;:11;:19;;;;;;;;12008:53;:79;;;-1:-1:-1;;;;;;12065:22:0;;;;;;:11;:22;;;;;;;;12008:79;12000:109;;;;-1:-1:-1;;;12000:109:0;;13016:2:1;12000:109:0;;;12998:21:1;13055:2;13035:18;;;13028:30;-1:-1:-1;;;13074:18:1;;;13067:47;13131:18;;12000:109:0;12814:341:1;12000:109:0;12139:14;:12;:14::i;:::-;12129:6;:24;;:47;;;-1:-1:-1;;;;;;12157:19:0;;;;;;:11;:19;;;;;;;;12129:47;:73;;;-1:-1:-1;;;;;;12180:22:0;;;;;;:11;:22;;;;;;;;12129:73;12121:103;;;;-1:-1:-1;;;12121:103:0;;13016:2:1;12121:103:0;;;12998:21:1;13055:2;13035:18;;;13028:30;-1:-1:-1;;;13074:18:1;;;13067:47;13131:18;;12121:103:0;12814:341:1;14515:197:0;14607:41;14622:6;14630:9;14641:6;14607:14;:41::i;:::-;14604:101;;;14650:29;14665:13;;14650:14;:29::i;:::-;14701:1;14681:9;:22;14515:197;;;:::o;14720:160::-;-1:-1:-1;;;;;14826:19:0;;14801:4;14826:19;;;:11;:19;;;;;;;;14825:20;:47;;;;-1:-1:-1;;;;;;;14850:22:0;;;;;:11;:22;;;;;;;;14849:23;;14720:160;-1:-1:-1;14720:160:0:o;15725:432::-;15811:7;15867:1;15834:30;15846:6;15854:9;15834:11;:30::i;:::-;:34;15831:304;;;15880:17;15900:59;15928:30;15940:6;15948:9;15928:11;:30::i;:::-;15911:11;;15900:23;;:6;;:10;:23::i;:59::-;16015:4;15997:24;;;;:9;:24;;;;;;15880:79;;-1:-1:-1;15997:39:0;;15880:79;15997:28;:39::i;:::-;15988:4;15970:24;;;;:9;:24;;;;;;;:66;;;;16052:42;;-1:-1:-1;;;;;16052:42:0;;;;;;;16084:9;160:25:1;;148:2;133:18;;14:177;16052:42:0;;;;;;;;16112:21;:6;16123:9;16112:10;:21::i;:::-;16105:28;;;;;15831:304;-1:-1:-1;16143:6:0;15725:432;-1:-1:-1;;15725:432:0:o;194:82::-;252:7;269:5;273:1;269;:5;:::i;14107:400::-;14248:15;;14324:13;;14314:4;14205;7456:18;;;:9;:18;;;;;;14356:8;;14205:4;;14238:25;;;;-1:-1:-1;14296:41:0;;14356:8;;14355:9;:24;;;;-1:-1:-1;14368:11:0;;;;14355:24;:42;;;;-1:-1:-1;14383:14:0;;-1:-1:-1;;;14383:14:0;;;;14355:42;:54;;;;;14401:8;14355:54;:78;;;;-1:-1:-1;;;;;;14414:19:0;;;;;;:11;:19;;;;;;;;14413:20;14355:78;:99;;;;-1:-1:-1;14450:4:0;;-1:-1:-1;;;;;14437:17:0;;;14450:4;;14437:17;14355:99;:126;;;;;14479:1;14458:9;;:23;;14355:126;:144;;;;;14485:14;14355:144;14348:151;14107:400;-1:-1:-1;;;;;;14107:400:0:o;12240:1066::-;5944:8;:15;;-1:-1:-1;;5944:15:0;5955:4;5944:15;;;;;;12377:14:::1;::::0;12359:12:::1;::::0;12335::::1;::::0;5944:8;;12334:66:::1;::::0;12398:1:::1;::::0;12335:57:::1;::::0;12377:14;;12335:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;12334:66::-;12311:89;;12411:32;12446:42;12475:12;12446:24;12457:12;;12446:6;:10;;:24;;;;:::i;:42::-;12411:77:::0;-1:-1:-1;12499:14:0::1;12516:36;:6:::0;12411:77;12516:10:::1;:36::i;:::-;12499:53:::0;-1:-1:-1;12588:21:0::1;12620:24;12499:53:::0;12620:16:::1;:24::i;:::-;12655:20;12678:41;:21;12704:14:::0;12678:25:::1;:41::i;:::-;12655:64;;12730:19;12751:48;12768:30;12785:12;;12768;:16;;:30;;;;:::i;:::-;12751:12:::0;;:16:::1;:48::i;:::-;12730:69;;12810:29;12842;12858:12;;12842:11;:15;;:29;;;;:::i;:::-;12810:61:::0;-1:-1:-1;12885:34:0;;12882:103:::1;;12921:61;12934:24;12960:21;12921:12;:61::i;:::-;13041:12;::::0;12995:20:::1;::::0;13018:36:::1;::::0;:18:::1;:11:::0;13034:1:::1;13018:15;:18::i;:36::-;12995:59:::0;-1:-1:-1;13068:16:0;;13065:73:::1;;13094:18;::::0;13086:50:::1;::::0;-1:-1:-1;;;;;13094:18:0;;::::1;::::0;13086:50;::::1;;;::::0;13123:12;;13094:18:::1;13086:50:::0;13094:18;13086:50;13123:12;13094:18;13086:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13065:73;13175:21;13210:29:::0;;13207:92:::1;;13249:20;::::0;13241:56:::1;::::0;-1:-1:-1;;;;;13249:20:0;;::::1;::::0;13241:56;::::1;;;::::0;13280:16;;13249:20:::1;13241:56:::0;13249:20;13241:56;13280:16;13249:20;13241:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13207:92;-1:-1:-1::0;;5964:8:0;:16;;-1:-1:-1;;5964:16:0;;;-1:-1:-1;;;;;;;;12240:1066:0:o;14888:219::-;15003:4;;14967:7;;-1:-1:-1;;;;;15003:4:0;;;14990:17;;;;14987:38;;-1:-1:-1;15016:7:0;;15009:14;;14987:38;15048:4;;-1:-1:-1;;;;;15048:4:0;;;15038:14;;;;15035:36;;-1:-1:-1;15061:8:0;;15054:15;;15035:36;-1:-1:-1;15088:11:0;;14888:219;;;;:::o;13665:434::-;13755:16;;;13769:1;13755:16;;;;;;;;13731:21;;13755:16;;;;;;;;;;-1:-1:-1;13755:16:0;13731:40;;13800:4;13782;13787:1;13782:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13782:23:0;;;:7;;;;;;;;;;:23;;;;13826:6;;:13;;;-1:-1:-1;;;13826:13:0;;;;:6;;;;;:11;;:13;;;;;13782:7;;13826:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13816:4;13821:1;13816:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13816:23:0;;;:7;;;;;;;;;:23;13882:6;;13850:53;;13867:4;;13882:6;13891:11;13850:8;:53::i;:::-;13914:6;;:177;;-1:-1:-1;;;13914:177:0;;-1:-1:-1;;;;;13914:6:0;;;;:57;;:177;;13986:11;;13914:6;;14028:4;;14055;;14075:15;;13914:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:343;13427:6;;13395:53;;13412:4;;-1:-1:-1;;;;;13427:6:0;13436:11;13395:8;:53::i;:::-;13459:6;;13600:18;;13459:190;;-1:-1:-1;;;13459:190:0;;13522:4;13459:190;;;15006:34:1;15056:18;;;15049:34;;;13459:6:0;15099:18:1;;;15092:34;;;15142:18;;;15135:34;-1:-1:-1;;;;;13600:18:0;;;15185:19:1;;;15178:44;13633:15:0;15238:19:1;;;15231:35;13459:6:0;;;:22;;13489:9;;14940:19:1;;13459:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13314:343;;:::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2299:529::-;2376:6;2384;2392;2445:2;2433:9;2424:7;2420:23;2416:32;2413:52;;;2461:1;2458;2451:12;2413:52;2500:9;2487:23;2519:31;2544:5;2519:31;:::i;:::-;2569:5;-1:-1:-1;2626:2:1;2611:18;;2598:32;2639:33;2598:32;2639:33;:::i;:::-;2691:7;-1:-1:-1;2750:2:1;2735:18;;2722:32;2763:33;2722:32;2763:33;:::i;:::-;2815:7;2805:17;;;2299:529;;;;;:::o;3041:316::-;3118:6;3126;3134;3187:2;3175:9;3166:7;3162:23;3158:32;3155:52;;;3203:1;3200;3193:12;3155:52;-1:-1:-1;;3226:23:1;;;3296:2;3281:18;;3268:32;;-1:-1:-1;3347:2:1;3332:18;;;3319:32;;3041:316;-1:-1:-1;3041:316:1:o;3362:180::-;3421:6;3474:2;3462:9;3453:7;3449:23;3445:32;3442:52;;;3490:1;3487;3480:12;3442:52;-1:-1:-1;3513:23:1;;3362:180;-1:-1:-1;3362:180:1:o;3547:416::-;3612:6;3620;3673:2;3661:9;3652:7;3648:23;3644:32;3641:52;;;3689:1;3686;3679:12;3641:52;3728:9;3715:23;3747:31;3772:5;3747:31;:::i;:::-;3797:5;-1:-1:-1;3854:2:1;3839:18;;3826:32;3896:15;;3889:23;3877:36;;3867:64;;3927:1;3924;3917:12;3867:64;3950:7;3940:17;;;3547:416;;;;;:::o;3968:388::-;4036:6;4044;4097:2;4085:9;4076:7;4072:23;4068:32;4065:52;;;4113:1;4110;4103:12;4065:52;4152:9;4139:23;4171:31;4196:5;4171:31;:::i;:::-;4221:5;-1:-1:-1;4278:2:1;4263:18;;4250:32;4291:33;4250:32;4291:33;:::i;4361:523::-;4465:6;4473;4481;4489;4497;4505;4558:3;4546:9;4537:7;4533:23;4529:33;4526:53;;;4575:1;4572;4565:12;4526:53;-1:-1:-1;;4598:23:1;;;4668:2;4653:18;;4640:32;;-1:-1:-1;4719:2:1;4704:18;;4691:32;;4770:2;4755:18;;4742:32;;-1:-1:-1;4821:3:1;4806:19;;4793:33;;-1:-1:-1;4873:3:1;4858:19;4845:33;;-1:-1:-1;4361:523:1;-1:-1:-1;4361:523:1:o;5149:127::-;5210:10;5205:3;5201:20;5198:1;5191:31;5241:4;5238:1;5231:15;5265:4;5262:1;5255:15;5281:168;5354:9;;;5385;;5402:15;;;5396:22;;5382:37;5372:71;;5423:18;;:::i;5454:217::-;5494:1;5520;5510:132;;5564:10;5559:3;5555:20;5552:1;5545:31;5599:4;5596:1;5589:15;5627:4;5624:1;5617:15;5510:132;-1:-1:-1;5656:9:1;;5454:217::o;5676:329::-;5878:2;5860:21;;;5917:1;5897:18;;;5890:29;-1:-1:-1;;;5950:2:1;5935:18;;5928:36;5996:2;5981:18;;5676:329::o;6904:422::-;6993:1;7036:5;6993:1;7050:270;7071:7;7061:8;7058:21;7050:270;;;7130:4;7126:1;7122:6;7118:17;7112:4;7109:27;7106:53;;;7139:18;;:::i;:::-;7189:7;7179:8;7175:22;7172:55;;;7209:16;;;;7172:55;7288:22;;;;7248:15;;;;7050:270;;;7054:3;6904:422;;;;;:::o;7331:806::-;7380:5;7410:8;7400:80;;-1:-1:-1;7451:1:1;7465:5;;7400:80;7499:4;7489:76;;-1:-1:-1;7536:1:1;7550:5;;7489:76;7581:4;7599:1;7594:59;;;;7667:1;7662:130;;;;7574:218;;7594:59;7624:1;7615:10;;7638:5;;;7662:130;7699:3;7689:8;7686:17;7683:43;;;7706:18;;:::i;:::-;-1:-1:-1;;7762:1:1;7748:16;;7777:5;;7574:218;;7876:2;7866:8;7863:16;7857:3;7851:4;7848:13;7844:36;7838:2;7828:8;7825:16;7820:2;7814:4;7811:12;7807:35;7804:77;7801:159;;;-1:-1:-1;7913:19:1;;;7945:5;;7801:159;7992:34;8017:8;8011:4;7992:34;:::i;:::-;8062:6;8058:1;8054:6;8050:19;8041:7;8038:32;8035:58;;;8073:18;;:::i;:::-;8111:20;;7331:806;-1:-1:-1;;;7331:806:1:o;8142:140::-;8200:5;8229:47;8270:4;8260:8;8256:19;8250:4;8229:47;:::i;10211:128::-;10278:9;;;10299:11;;;10296:37;;;10313:18;;:::i;12684:125::-;12749:9;;;12770:10;;;12767:36;;;12783:18;;:::i;13292:127::-;13353:10;13348:3;13344:20;13341:1;13334:31;13384:4;13381:1;13374:15;13408:4;13405:1;13398:15;13424:251;13494:6;13547:2;13535:9;13526:7;13522:23;13518:32;13515:52;;;13563:1;13560;13553:12;13515:52;13595:9;13589:16;13614:31;13639:5;13614:31;:::i;13680:980::-;13942:4;13990:3;13979:9;13975:19;14021:6;14010:9;14003:25;14047:2;14085:6;14080:2;14069:9;14065:18;14058:34;14128:3;14123:2;14112:9;14108:18;14101:31;14152:6;14187;14181:13;14218:6;14210;14203:22;14256:3;14245:9;14241:19;14234:26;;14295:2;14287:6;14283:15;14269:29;;14316:1;14326:195;14340:6;14337:1;14334:13;14326:195;;;14405:13;;-1:-1:-1;;;;;14401:39:1;14389:52;;14496:15;;;;14461:12;;;;14437:1;14355:9;14326:195;;;-1:-1:-1;;;;;;;14577:32:1;;;;14572:2;14557:18;;14550:60;-1:-1:-1;;;14641:3:1;14626:19;14619:35;14538:3;13680:980;-1:-1:-1;;;13680:980:1:o;15277:306::-;15365:6;15373;15381;15434:2;15422:9;15413:7;15409:23;15405:32;15402:52;;;15450:1;15447;15440:12;15402:52;15479:9;15473:16;15463:26;;15529:2;15518:9;15514:18;15508:25;15498:35;;15573:2;15562:9;15558:18;15552:25;15542:35;;15277:306;;;;;:::o

Swarm Source

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