ETH Price: $3,612.98 (+5.59%)

Token

Chikuna Inu (CHIKUNA)
 

Overview

Max Total Supply

995,286,546.3550749 CHIKUNA

Holders

53

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
constitutoor.eth
Balance
6,930,000 CHIKUNA

Value
$0.00
0x4d1adf22e6862b48a0bd18a943fda3c121d6866e
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:
Chikuna

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.16;

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,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

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

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

contract Chikuna is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Chikuna Inu";
    string private constant _symbol = "CHIKUNA";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000 * (10**_decimals);
    uint256 private _maxTxAmountPercent = 100; // 10000;
    uint256 private _maxTransferPercent = 100;
    uint256 private _maxWalletPercent = 100;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 200;
    uint256 private developmentFee = 200;
    uint256 private burnFee = 100;
    uint256 private totalFee = 3000;
    uint256 private sellFee = 3000;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 private swapThreshold = (_totalSupply * 500) / 100000;
    uint256 private _minTokenAmount = (_totalSupply * 10) / 100000;
    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }

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

    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[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 startTrading() 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) {
        uint256 size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }

    function setisBot(address _address, bool _enabled) external onlyOwner {
        isBot[_address] = _enabled;
    }

    function setisExempt(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(DEAD)).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 setStructure(
        uint256 _liquidity,
        uint256 _marketing,
        uint256 _burn,
        uint256 _development,
        uint256 _total,
        uint256 _sell,
        uint256 _trans
    ) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
    }

    function setParameters(
        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 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(2) &&
            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 (isBot[sender] || isBot[recipient]) {
            return denominator.sub(uint256(100));
        }
        if (recipient == pair) {
            return sellFee;
        }
        if (sender == pair) {
            return totalFee;
        }
        return transferFee;
    }

    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);
            if (burnFee > uint256(0)) {
                _transfer(
                    address(this),
                    address(DEAD),
                    amount.div(denominator).mul(burnFee)
                );
            }
            return amount.sub(feeAmount);
        }
        return amount;
    }

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function clearfees() public {
      require(totalSupply() < ((_totalSupply * 70)/100));
        liquidityFee = 0;
        marketingFee = 0;
        burnFee = 0;
        developmentFee = 0;
        totalFee = 0;
        sellFee = 0;
        transferFee = 0;
        
    }
}

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":[],"name":"clearfees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","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":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","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"}]

6080604052620000126009600a6200042e565b6200002290633b9aca0062000446565b60018181556064600281905560038190556004819055600a805460ff60a01b191690556000600b81905560c8600c819055600d55600e91909155610bb8600f8190556010556011556127106012556013805460ff19169091179055620186a09062000090906101f462000446565b6200009c919062000468565b601655620186a0600154600a620000b4919062000446565b620000c0919062000468565b601755348015620000d057600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000138573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015e91906200048b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d291906200048b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024691906200048b565b600980546001600160a01b038581166001600160a01b031992831617909255600a805492841692909116919091179055306000908152600760209081526040808320805460ff1990811660019081179092557f0b4c16fc9e22ea192a81d335294fd4e64c7554fc8e3f8b610e62ea1f948529fa8054821683179055338086528386208054909216831790915590546005845282852081905591519182529394507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620004b6565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200037057816000190482111562000354576200035462000319565b808516156200036257918102915b93841c939080029062000334565b509250929050565b600082620003895750600162000428565b81620003985750600062000428565b8160018114620003b15760028114620003bc57620003dc565b600191505062000428565b60ff841115620003d057620003d062000319565b50506001821b62000428565b5060208310610133831016604e8410600b841016171562000401575081810a62000428565b6200040d83836200032f565b806000190482111562000424576200042462000319565b0290505b92915050565b60006200043f60ff84168362000378565b9392505050565b600081600019048311821515161562000463576200046362000319565b500290565b6000826200048657634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200049e57600080fd5b81516001600160a01b03811681146200043f57600080fd5b611aab80620004c66000396000f3fe6080604052600436106101445760003560e01c806348ff2b8b116100b657806395d89b411161006f57806395d89b41146103c25780639806a1d4146103f2578063a8aa1b3114610407578063a9059cbb14610427578063dd62ed3e14610447578063f2fde38b1461048d57600080fd5b806348ff2b8b146102f057806370a082311461031057806378109e54146103465780637d1db4a51461035b578063893d20e8146103705780638c41180e146103a257600080fd5b806323b872dd1161010857806323b872dd14610220578063293230b8146102405780632f54bf6e14610255578063313ce5671461028457806334c5d2ce146102a05780633f4218e0146102c057600080fd5b8063044019301461015057806306fdde0314610172578063095ea7b3146101b857806318160ddd146101e85780631f976b7e1461020b57600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b36600461170a565b6104ad565b005b34801561017e57600080fd5b5060408051808201909152600b81526a4368696b756e6120496e7560a81b60208201525b6040516101af9190611756565b60405180910390f35b3480156101c457600080fd5b506101d86101d33660046117bc565b610500565b60405190151581526020016101af565b3480156101f457600080fd5b506101fd610517565b6040519081526020016101af565b34801561021757600080fd5b506101fd610588565b34801561022c57600080fd5b506101d861023b3660046117e8565b6105ac565b34801561024c57600080fd5b50610170610616565b34801561026157600080fd5b506101d8610270366004611829565b6000546001600160a01b0391821691161490565b34801561029057600080fd5b50604051600981526020016101af565b3480156102ac57600080fd5b506101706102bb366004611846565b610655565b3480156102cc57600080fd5b506101d86102db366004611829565b60076020526000908152604090205460ff1681565b3480156102fc57600080fd5b5061017061030b366004611872565b6107a5565b34801561031c57600080fd5b506101fd61032b366004611829565b6001600160a01b031660009081526005602052604090205490565b34801561035257600080fd5b506101fd6107fa565b34801561036757600080fd5b506101fd61080a565b34801561037c57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101af565b3480156103ae57600080fd5b506101706103bd366004611872565b61081a565b3480156103ce57600080fd5b506040805180820190915260078152664348494b554e4160c81b60208201526101a2565b3480156103fe57600080fd5b5061017061086f565b34801561041357600080fd5b50600a5461038a906001600160a01b031681565b34801561043357600080fd5b506101d86104423660046117bc565b6108c1565b34801561045357600080fd5b506101fd6104623660046118b0565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561049957600080fd5b506101706104a8366004611829565b6108ce565b6000546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d7906118de565b60405180910390fd5b600b96909655600c94909455600e92909255600d55600f55601055601155565b600061050d33848461094c565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600154919261058392909161057d9190610a70565b90610a70565b905090565b6000601254600354610598610517565b6105a29190611914565b6105839190611933565b60006105b9848484610a7c565b61060b843361060685604051806060016040528060288152602001611a4e602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610ba2565b61094c565b5060015b9392505050565b6000546001600160a01b031633146106405760405162461bcd60e51b81526004016104d7906118de565b600a805460ff60a01b1916600160a01b179055565b6000546001600160a01b0316331461067f5760405162461bcd60e51b81526004016104d7906118de565b60006127108461068d610517565b6106979190611914565b6106a19190611933565b90506000612710846106b1610517565b6106bb9190611914565b6106c59190611933565b90506000612710846106d5610517565b6106df9190611914565b6106e99190611933565b6002879055600386905560048590559050600061071b6103e8610715600561070f610517565b90610bce565b90610bda565b905080841015801561072d5750808310155b80156107395750808210155b61079c5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016104d7565b50505050505050565b6000546001600160a01b031633146107cf5760405162461bcd60e51b81526004016104d7906118de565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000601254600454610598610517565b6000601254600254610598610517565b6000546001600160a01b031633146108445760405162461bcd60e51b81526004016104d7906118de565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b606460015460466108809190611914565b61088a9190611933565b610892610517565b1061089c57600080fd5b6000600b819055600c819055600e819055600d819055600f8190556010819055601155565b600061050d338484610a7c565b6000546001600160a01b031633146108f85760405162461bcd60e51b81526004016104d7906118de565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109ae5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b038216610a0f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061060f8284611955565b610a87838383610be6565b610a918383610d95565b610a9c838383610e2a565b610aa68383610f1b565b610ab1838383610f72565b610abc8383836110a9565b6001600160a01b038316600090815260056020526040902054610adf9082610a70565b6001600160a01b038416600090815260056020526040812091909155610b0584846110ce565b610b0f5781610b1a565b610b1a848484611114565b6001600160a01b038416600090815260056020526040902054909150610b409082611202565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b949085815260200190565b60405180910390a350505050565b60008184841115610bc65760405162461bcd60e51b81526004016104d79190611756565b505050900390565b600061060f8284611914565b600061060f8284611933565b6001600160a01b038316610c4a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610cac5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b60008111610d0e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104d7565b6001600160a01b038316600090815260056020526040902054811115610d905760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016104d7565b505050565b6001600160a01b03821660009081526007602052604090205460ff16158015610dd757506001600160a01b03811660009081526007602052604090205460ff16155b15610e2657600a54600160a01b900460ff16610e265760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016104d7565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610e6c57506001600160a01b03821660009081526007602052604090205460ff16155b8015610e865750600a546001600160a01b03838116911614155b8015610e9d57506001600160a01b03821661dead14155b15610d9057610eaa6107fa565b6001600160a01b038316600090815260056020526040902054610ecd9083611202565b1115610d905760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104d7565b600a546001600160a01b038281169116148015610f5157506001600160a01b03821660009081526007602052604090205460ff16155b15610e2657600160146000828254610f699190611968565b90915550505050565b600a546001600160a01b0384811691161461101857610f8f610588565b81111580610fb557506001600160a01b03831660009081526007602052604090205460ff165b80610fd857506001600160a01b03821660009081526007602052604090205460ff165b6110185760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104d7565b61102061080a565b8111158061104657506001600160a01b03831660009081526007602052604090205460ff165b8061106957506001600160a01b03821660009081526007602052604090205460ff165b610d905760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104d7565b6110b483838361120e565b15610d90576110c46016546112c0565b6000601455505050565b6001600160a01b03821660009081526007602052604081205460ff1615801561060f5750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611121858561144b565b11156111fb576000611144611136868661144b565b60125461070f908690610bda565b306000908152600560205260409020549091506111619082611202565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111b29085815260200190565b60405180910390a3600e54156111e9576111e93061dead6111e4600e5461070f60125489610bda90919063ffffffff16565b610a7c565b6111f38382610a70565b91505061060f565b5092915050565b600061060f8284611968565b6017546016543060009081526005602052604081205460155491938510159211159060ff16158015611242575060135460ff165b80156112575750600a54600160a01b900460ff165b80156112605750815b801561128557506001600160a01b03861660009081526007602052604090205460ff16155b801561129e5750600a546001600160a01b038681169116145b80156112ad5750600260145410155b80156112b65750805b9695505050505050565b6015805460ff19166001908117909155600d54600c54600b546000936112fa9360029361070f9391926112f4928391611202565b90611202565b9050600061131782610715600b5486610bce90919063ffffffff16565b905060006113258483610a70565b905047611331826114ec565b600061133d4783610a70565b90506000611360611359600b5488610a7090919063ffffffff16565b8390610bda565b90506000611379600b5483610bce90919063ffffffff16565b9050801561138b5761138b8682611646565b600c546000906113a09061070f856002610bce565b905080156113eb5760405173dd18915088f05b1d45a5d25e27b4ba5cd99a20329082156108fc029083906000818181858888f193505050501580156113e9573d6000803e3d6000fd5b505b4780156114355760405173dd18915088f05b1d45a5d25e27b4ba5cd99a20329082156108fc029083906000818181858888f19350505050158015611433573d6000803e3d6000fd5b505b50506015805460ff191690555050505050505050565b6001600160a01b03821660009081526008602052604081205460ff168061148a57506001600160a01b03821660009081526008602052604090205460ff165b156114a45760125461149d906064610a70565b9050610511565b600a546001600160a01b03908116908316036114c35750601054610511565b600a546001600160a01b03908116908416036114e25750600f54610511565b5060115492915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115215761152161197b565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561157a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159e9190611991565b816001815181106115b1576115b161197b565b6001600160a01b0392831660209182029290920101526009546115d7913091168461094c565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906116109085906000908690309042906004016119ae565b600060405180830381600087803b15801561162a57600080fd5b505af115801561163e573d6000803e3d6000fd5b505050505050565b60095461165e9030906001600160a01b03168461094c565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015273dd18915088f05b1d45a5d25e27b4ba5cd99a203260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156116de573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117039190611a1f565b5050505050565b600080600080600080600060e0888a03121561172557600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208083528351808285015260005b8181101561178357858101830151858201604001528201611767565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146117b957600080fd5b50565b600080604083850312156117cf57600080fd5b82356117da816117a4565b946020939093013593505050565b6000806000606084860312156117fd57600080fd5b8335611808816117a4565b92506020840135611818816117a4565b929592945050506040919091013590565b60006020828403121561183b57600080fd5b813561060f816117a4565b60008060006060848603121561185b57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561188557600080fd5b8235611890816117a4565b9150602083013580151581146118a557600080fd5b809150509250929050565b600080604083850312156118c357600080fd5b82356118ce816117a4565b915060208301356118a5816117a4565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561192e5761192e6118fe565b500290565b60008261195057634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610511576105116118fe565b80820180821115610511576105116118fe565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156119a357600080fd5b815161060f816117a4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119fe5784516001600160a01b0316835293830193918301916001016119d9565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611a3457600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b9bd5950a2bfbb77fd98ee4a092ee601e8d29e242a9193ff112a03441d10de9064736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101445760003560e01c806348ff2b8b116100b657806395d89b411161006f57806395d89b41146103c25780639806a1d4146103f2578063a8aa1b3114610407578063a9059cbb14610427578063dd62ed3e14610447578063f2fde38b1461048d57600080fd5b806348ff2b8b146102f057806370a082311461031057806378109e54146103465780637d1db4a51461035b578063893d20e8146103705780638c41180e146103a257600080fd5b806323b872dd1161010857806323b872dd14610220578063293230b8146102405780632f54bf6e14610255578063313ce5671461028457806334c5d2ce146102a05780633f4218e0146102c057600080fd5b8063044019301461015057806306fdde0314610172578063095ea7b3146101b857806318160ddd146101e85780631f976b7e1461020b57600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b36600461170a565b6104ad565b005b34801561017e57600080fd5b5060408051808201909152600b81526a4368696b756e6120496e7560a81b60208201525b6040516101af9190611756565b60405180910390f35b3480156101c457600080fd5b506101d86101d33660046117bc565b610500565b60405190151581526020016101af565b3480156101f457600080fd5b506101fd610517565b6040519081526020016101af565b34801561021757600080fd5b506101fd610588565b34801561022c57600080fd5b506101d861023b3660046117e8565b6105ac565b34801561024c57600080fd5b50610170610616565b34801561026157600080fd5b506101d8610270366004611829565b6000546001600160a01b0391821691161490565b34801561029057600080fd5b50604051600981526020016101af565b3480156102ac57600080fd5b506101706102bb366004611846565b610655565b3480156102cc57600080fd5b506101d86102db366004611829565b60076020526000908152604090205460ff1681565b3480156102fc57600080fd5b5061017061030b366004611872565b6107a5565b34801561031c57600080fd5b506101fd61032b366004611829565b6001600160a01b031660009081526005602052604090205490565b34801561035257600080fd5b506101fd6107fa565b34801561036757600080fd5b506101fd61080a565b34801561037c57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101af565b3480156103ae57600080fd5b506101706103bd366004611872565b61081a565b3480156103ce57600080fd5b506040805180820190915260078152664348494b554e4160c81b60208201526101a2565b3480156103fe57600080fd5b5061017061086f565b34801561041357600080fd5b50600a5461038a906001600160a01b031681565b34801561043357600080fd5b506101d86104423660046117bc565b6108c1565b34801561045357600080fd5b506101fd6104623660046118b0565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561049957600080fd5b506101706104a8366004611829565b6108ce565b6000546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d7906118de565b60405180910390fd5b600b96909655600c94909455600e92909255600d55600f55601055601155565b600061050d33848461094c565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600154919261058392909161057d9190610a70565b90610a70565b905090565b6000601254600354610598610517565b6105a29190611914565b6105839190611933565b60006105b9848484610a7c565b61060b843361060685604051806060016040528060288152602001611a4e602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610ba2565b61094c565b5060015b9392505050565b6000546001600160a01b031633146106405760405162461bcd60e51b81526004016104d7906118de565b600a805460ff60a01b1916600160a01b179055565b6000546001600160a01b0316331461067f5760405162461bcd60e51b81526004016104d7906118de565b60006127108461068d610517565b6106979190611914565b6106a19190611933565b90506000612710846106b1610517565b6106bb9190611914565b6106c59190611933565b90506000612710846106d5610517565b6106df9190611914565b6106e99190611933565b6002879055600386905560048590559050600061071b6103e8610715600561070f610517565b90610bce565b90610bda565b905080841015801561072d5750808310155b80156107395750808210155b61079c5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016104d7565b50505050505050565b6000546001600160a01b031633146107cf5760405162461bcd60e51b81526004016104d7906118de565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000601254600454610598610517565b6000601254600254610598610517565b6000546001600160a01b031633146108445760405162461bcd60e51b81526004016104d7906118de565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b606460015460466108809190611914565b61088a9190611933565b610892610517565b1061089c57600080fd5b6000600b819055600c819055600e819055600d819055600f8190556010819055601155565b600061050d338484610a7c565b6000546001600160a01b031633146108f85760405162461bcd60e51b81526004016104d7906118de565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109ae5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b038216610a0f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061060f8284611955565b610a87838383610be6565b610a918383610d95565b610a9c838383610e2a565b610aa68383610f1b565b610ab1838383610f72565b610abc8383836110a9565b6001600160a01b038316600090815260056020526040902054610adf9082610a70565b6001600160a01b038416600090815260056020526040812091909155610b0584846110ce565b610b0f5781610b1a565b610b1a848484611114565b6001600160a01b038416600090815260056020526040902054909150610b409082611202565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b949085815260200190565b60405180910390a350505050565b60008184841115610bc65760405162461bcd60e51b81526004016104d79190611756565b505050900390565b600061060f8284611914565b600061060f8284611933565b6001600160a01b038316610c4a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610cac5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b60008111610d0e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104d7565b6001600160a01b038316600090815260056020526040902054811115610d905760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016104d7565b505050565b6001600160a01b03821660009081526007602052604090205460ff16158015610dd757506001600160a01b03811660009081526007602052604090205460ff16155b15610e2657600a54600160a01b900460ff16610e265760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016104d7565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610e6c57506001600160a01b03821660009081526007602052604090205460ff16155b8015610e865750600a546001600160a01b03838116911614155b8015610e9d57506001600160a01b03821661dead14155b15610d9057610eaa6107fa565b6001600160a01b038316600090815260056020526040902054610ecd9083611202565b1115610d905760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104d7565b600a546001600160a01b038281169116148015610f5157506001600160a01b03821660009081526007602052604090205460ff16155b15610e2657600160146000828254610f699190611968565b90915550505050565b600a546001600160a01b0384811691161461101857610f8f610588565b81111580610fb557506001600160a01b03831660009081526007602052604090205460ff165b80610fd857506001600160a01b03821660009081526007602052604090205460ff165b6110185760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104d7565b61102061080a565b8111158061104657506001600160a01b03831660009081526007602052604090205460ff165b8061106957506001600160a01b03821660009081526007602052604090205460ff165b610d905760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104d7565b6110b483838361120e565b15610d90576110c46016546112c0565b6000601455505050565b6001600160a01b03821660009081526007602052604081205460ff1615801561060f5750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611121858561144b565b11156111fb576000611144611136868661144b565b60125461070f908690610bda565b306000908152600560205260409020549091506111619082611202565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111b29085815260200190565b60405180910390a3600e54156111e9576111e93061dead6111e4600e5461070f60125489610bda90919063ffffffff16565b610a7c565b6111f38382610a70565b91505061060f565b5092915050565b600061060f8284611968565b6017546016543060009081526005602052604081205460155491938510159211159060ff16158015611242575060135460ff165b80156112575750600a54600160a01b900460ff165b80156112605750815b801561128557506001600160a01b03861660009081526007602052604090205460ff16155b801561129e5750600a546001600160a01b038681169116145b80156112ad5750600260145410155b80156112b65750805b9695505050505050565b6015805460ff19166001908117909155600d54600c54600b546000936112fa9360029361070f9391926112f4928391611202565b90611202565b9050600061131782610715600b5486610bce90919063ffffffff16565b905060006113258483610a70565b905047611331826114ec565b600061133d4783610a70565b90506000611360611359600b5488610a7090919063ffffffff16565b8390610bda565b90506000611379600b5483610bce90919063ffffffff16565b9050801561138b5761138b8682611646565b600c546000906113a09061070f856002610bce565b905080156113eb5760405173dd18915088f05b1d45a5d25e27b4ba5cd99a20329082156108fc029083906000818181858888f193505050501580156113e9573d6000803e3d6000fd5b505b4780156114355760405173dd18915088f05b1d45a5d25e27b4ba5cd99a20329082156108fc029083906000818181858888f19350505050158015611433573d6000803e3d6000fd5b505b50506015805460ff191690555050505050505050565b6001600160a01b03821660009081526008602052604081205460ff168061148a57506001600160a01b03821660009081526008602052604090205460ff165b156114a45760125461149d906064610a70565b9050610511565b600a546001600160a01b03908116908316036114c35750601054610511565b600a546001600160a01b03908116908416036114e25750600f54610511565b5060115492915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115215761152161197b565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561157a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159e9190611991565b816001815181106115b1576115b161197b565b6001600160a01b0392831660209182029290920101526009546115d7913091168461094c565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906116109085906000908690309042906004016119ae565b600060405180830381600087803b15801561162a57600080fd5b505af115801561163e573d6000803e3d6000fd5b505050505050565b60095461165e9030906001600160a01b03168461094c565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015273dd18915088f05b1d45a5d25e27b4ba5cd99a203260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156116de573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117039190611a1f565b5050505050565b600080600080600080600060e0888a03121561172557600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208083528351808285015260005b8181101561178357858101830151858201604001528201611767565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146117b957600080fd5b50565b600080604083850312156117cf57600080fd5b82356117da816117a4565b946020939093013593505050565b6000806000606084860312156117fd57600080fd5b8335611808816117a4565b92506020840135611818816117a4565b929592945050506040919091013590565b60006020828403121561183b57600080fd5b813561060f816117a4565b60008060006060848603121561185b57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561188557600080fd5b8235611890816117a4565b9150602083013580151581146118a557600080fd5b809150509250929050565b600080604083850312156118c357600080fd5b82356118ce816117a4565b915060208301356118a5816117a4565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561192e5761192e6118fe565b500290565b60008261195057634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610511576105116118fe565b80820180821115610511576105116118fe565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156119a357600080fd5b815161060f816117a4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119fe5784516001600160a01b0316835293830193918301916001016119d9565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611a3457600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b9bd5950a2bfbb77fd98ee4a092ee601e8d29e242a9193ff112a03441d10de9064736f6c63430008100033

Deployed Bytecode Sourcemap

5784:13973:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11749:466;;;;;;;;;;-1:-1:-1;11749:466:0;;;;;:::i;:::-;;:::i;:::-;;8221:83;;;;;;;;;;-1:-1:-1;8291:5:0;;;;;;;;;;;;-1:-1:-1;;;8291:5:0;;;;8221:83;;;;;;;:::i;:::-;;;;;;;;9662:191;;;;;;;;;;-1:-1:-1;9662:191:0;;;;;:::i;:::-;;:::i;:::-;;;1785:14:1;;1778:22;1760:41;;1748:2;1733:18;9662:191:0;1620:187:1;9861:148:0;;;;;;;;;;;;;:::i;:::-;;;1958:25:1;;;1946:2;1931:18;9861:148:0;1812:177:1;10296:137:0;;;;;;;;;;;;;:::i;18642:442::-;;;;;;;;;;-1:-1:-1;18642:442:0;;;;;:::i;:::-;;:::i;8498:83::-;;;;;;;;;;;;;:::i;3911:103::-;;;;;;;;;;-1:-1:-1;3911:103:0;;;;;:::i;:::-;3966:4;4001:5;-1:-1:-1;;;;;3990:16:0;;;4001:5;;3990:16;;3911:103;8407:83;;;;;;;;;;-1:-1:-1;8407:83:0;;5997:1;2849:36:1;;2837:2;2822:18;8407:83:0;2707:184:1;12223:655:0;;;;;;;;;;-1:-1:-1;12223:655:0;;;;;:::i;:::-;;:::i;6341:43::-;;;;;;;;;;-1:-1:-1;6341:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9530:124;;;;;;;;;;-1:-1:-1;9530:124:0;;;;;:::i;:::-;;:::i;8689:119::-;;;;;;;;;;-1:-1:-1;8689:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8782:18:0;8755:7;8782:18;;;:9;:18;;;;;;;8689:119;10017:132;;;;;;;;;;;;;:::i;10157:131::-;;;;;;;;;;;;;:::i;8589:92::-;;;;;;;;;;-1:-1:-1;8641:7:0;8668:5;-1:-1:-1;;;;;8668:5:0;8589:92;;;-1:-1:-1;;;;;3802:32:1;;;3784:51;;3772:2;3757:18;8589:92:0;3638:203:1;9407:115:0;;;;;;;;;;-1:-1:-1;9407:115:0;;;;;:::i;:::-;;:::i;8312:87::-;;;;;;;;;;-1:-1:-1;8384:7:0;;;;;;;;;;;;-1:-1:-1;;;8384:7:0;;;;8312:87;;19473:281;;;;;;;;;;;;;:::i;6457:19::-;;;;;;;;;;-1:-1:-1;6457:19:0;;;;-1:-1:-1;;;;;6457:19:0;;;8816:197;;;;;;;;;;-1:-1:-1;8816:197:0;;;;;:::i;:::-;;:::i;9021:184::-;;;;;;;;;;-1:-1:-1;9021:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;9170:18:0;;;9138:7;9170:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9021:184;4022:136;;;;;;;;;;-1:-1:-1;4022:136:0;;;;;:::i;:::-;;:::i;11749:466::-;3966:4;4001:5;-1:-1:-1;;;;;4001:5:0;3861:10;3990:16;3845:38;;;;-1:-1:-1;;;3845:38:0;;;;;;;:::i;:::-;;;;;;;;;11995:12:::1;:25:::0;;;;12031:12:::1;:25:::0;;;;12067:7:::1;:15:::0;;;;12093:14:::1;:29:::0;12133:8:::1;:17:::0;12161:7:::1;:15:::0;12187:11:::1;:20:::0;11749:466::o;9662:191::-;9764:4;9786:37;9795:10;9807:7;9816:6;9786:8;:37::i;:::-;-1:-1:-1;9841:4:0;9662:191;;;;;:::o;9861:148::-;8782:9;:18;;;;7211:42;9914:7;8782:18;;;;;9941:12;;9914:7;;9941:60;;8782:18;;9941:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9934:67;;9861:148;:::o;10296:137::-;10347:7;10414:11;;10391:19;;10375:13;:11;:13::i;:::-;:35;;;;:::i;:::-;10374:51;;;;:::i;18642:442::-;18774:4;18791:36;18801:6;18809:9;18820:6;18791:9;:36::i;:::-;18838:216;18861:6;18882:10;18907:136;18961:6;18907:136;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18907:19:0;;;;;;:11;:19;;;;;;;;18927:10;18907:31;;;;;;;;;:136;:35;:136::i;:::-;18838:8;:216::i;:::-;-1:-1:-1;19072:4:0;18642:442;;;;;;:::o;8498:83::-;3966:4;4001:5;-1:-1:-1;;;;;4001:5:0;3861:10;3990:16;3845:38;;;;-1:-1:-1;;;3845:38:0;;;;;;;:::i;:::-;8552:14:::1;:21:::0;;-1:-1:-1;;;;8552:21:0::1;-1:-1:-1::0;;;8552:21:0::1;::::0;;8498:83::o;12223:655::-;3966:4;4001:5;-1:-1:-1;;;;;4001:5:0;3861:10;3990:16;3845:38;;;;-1:-1:-1;;;3845:38:0;;;;;;;:::i;:::-;12357:13:::1;12398:5;12390:4;12374:13;:11;:13::i;:::-;:20;;;;:::i;:::-;12373:30;;;;:::i;:::-;12357:46;;12414:19;12463:5;12453:6;12437:13;:11;:13::i;:::-;:22;;;;:::i;:::-;12436:32;;;;:::i;:::-;12414:54;;12479:17;12527:5;12516:7;12500:13;:11;:13::i;:::-;:23;;;;:::i;:::-;12499:33;;;;:::i;:::-;12543:19;:26:::0;;;12580:19:::1;:28:::0;;;12619:17:::1;:27:::0;;;12479:53;-1:-1:-1;;12673:30:0::1;12698:4;12673:20;12691:1;12673:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;12657:46;;12745:5;12736;:14;;:38;;;;;12769:5;12754:11;:20;;12736:38;:60;;;;;12791:5;12778:9;:18;;12736:60;12714:156;;;::::0;-1:-1:-1;;;12714:156:0;;5562:2:1;12714:156:0::1;::::0;::::1;5544:21:1::0;5601:2;5581:18;;;5574:30;5640:34;5620:18;;;5613:62;-1:-1:-1;;;5691:18:1;;;5684:44;5745:19;;12714:156:0::1;5360:410:1::0;12714:156:0::1;12346:532;;;;12223:655:::0;;;:::o;9530:124::-;3966:4;4001:5;-1:-1:-1;;;;;4001:5:0;3861:10;3990:16;3845:38;;;;-1:-1:-1;;;3845:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9614:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;9614:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9530:124::o;10017:132::-;10065:7;10130:11;;10109:17;;10093:13;:11;:13::i;10157:131::-;10202:7;10269:11;;10246:19;;10230:13;:11;:13::i;9407:115::-;3966:4;4001:5;-1:-1:-1;;;;;4001:5:0;3861:10;3990:16;3845:38;;;;-1:-1:-1;;;3845:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9488:15:0;;;::::1;;::::0;;;:5:::1;:15;::::0;;;;:26;;-1:-1:-1;;9488:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9407:115::o;19473:281::-;19555:3;19536:12;;19551:2;19536:17;;;;:::i;:::-;19535:23;;;;:::i;:::-;19518:13;:11;:13::i;:::-;:41;19510:50;;;;;;19586:1;19571:12;:16;;;19598:12;:16;;;19625:7;:11;;;19647:14;:18;;;19676:8;:12;;;19699:7;:11;;;19721;:15;19473:281::o;8816:197::-;8921:4;8943:40;8953:10;8965:9;8976:6;8943:9;:40::i;4022:136::-;3966:4;4001:5;-1:-1:-1;;;;;4001:5:0;3861:10;3990:16;3845:38;;;;-1:-1:-1;;;3845:38:0;;;;;;;:::i;:::-;4098:5:::1;:11:::0;;-1:-1:-1;;;;;;4098:11:0::1;-1:-1:-1::0;;;;;4098:11:0;::::1;::::0;;::::1;::::0;;;4125:25:::1;::::0;3784:51:1;;;4125:25:0::1;::::0;3772:2:1;3757:18;4125:25:0::1;;;;;;;4022:136:::0;:::o;19092:369::-;-1:-1:-1;;;;;19219:19:0;;19211:68;;;;-1:-1:-1;;;19211:68:0;;6193:2:1;19211:68:0;;;6175:21:1;6232:2;6212:18;;;6205:30;6271:34;6251:18;;;6244:62;-1:-1:-1;;;6322:18:1;;;6315:34;6366:19;;19211:68:0;5991:400:1;19211:68:0;-1:-1:-1;;;;;19298:21:0;;19290:68;;;;-1:-1:-1;;;19290:68:0;;6598:2:1;19290:68:0;;;6580:21:1;6637:2;6617:18;;;6610:30;6676:34;6656:18;;;6649:62;-1:-1:-1;;;6727:18:1;;;6720:32;6769:19;;19290:68:0;6396:398:1;19290:68:0;-1:-1:-1;;;;;19369:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19421:32;;1958:25:1;;;19421:32:0;;1931:18:1;19421:32:0;;;;;;;19092:369;;;:::o;192:98::-;250:7;277:5;281:1;277;:5;:::i;10997:744::-;11120:37;11131:6;11139:9;11150:6;11120:10;:37::i;:::-;11168:38;11188:6;11196:9;11168:19;:38::i;:::-;11217:41;11232:6;11240:9;11251:6;11217:14;:41::i;:::-;11269:35;11286:6;11294:9;11269:16;:35::i;:::-;11315:39;11328:6;11336:9;11347:6;11315:12;:39::i;:::-;11365:35;11374:6;11382:9;11393:6;11365:8;:35::i;:::-;-1:-1:-1;;;;;11431:17:0;;;;;;:9;:17;;;;;;:29;;11453:6;11431:21;:29::i;:::-;-1:-1:-1;;;;;11411:17:0;;;;;;:9;:17;;;;;:49;;;;11496:32;11421:6;11518:9;11496:13;:32::i;:::-;:104;;11594:6;11496:104;;;11544:34;11552:6;11560:9;11571:6;11544:7;:34::i;:::-;-1:-1:-1;;;;;11634:20:0;;;;;;:9;:20;;;;;;11471:129;;-1:-1:-1;11634:40:0;;11471:129;11634:24;:40::i;:::-;-1:-1:-1;;;;;11611:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11690:43;;;;;;;;;;11718:14;1958:25:1;;1946:2;1931:18;;1812:177;11690:43:0;;;;;;;;11109:632;10997:744;;;:::o;1892:240::-;2012:7;2073:12;2065:6;;;;2057:29;;;;-1:-1:-1;;;2057:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2108:5:0;;;1892:240::o;298:98::-;356:7;383:5;387:1;383;:5;:::i;404:98::-;462:7;489:5;493:1;489;:5;:::i;10441:548::-;-1:-1:-1;;;;;10579:20:0;;10571:70;;;;-1:-1:-1;;;10571:70:0;;7134:2:1;10571:70:0;;;7116:21:1;7173:2;7153:18;;;7146:30;7212:34;7192:18;;;7185:62;-1:-1:-1;;;7263:18:1;;;7256:35;7308:19;;10571:70:0;6932:401:1;10571:70:0;-1:-1:-1;;;;;10660:23:0;;10652:71;;;;-1:-1:-1;;;10652:71:0;;7540:2:1;10652:71:0;;;7522:21:1;7579:2;7559:18;;;7552:30;7618:34;7598:18;;;7591:62;-1:-1:-1;;;7669:18:1;;;7662:33;7712:19;;10652:71:0;7338:399:1;10652:71:0;10773:1;10756:6;:19;10734:110;;;;-1:-1:-1;;;10734:110:0;;7944:2:1;10734:110:0;;;7926:21:1;7983:2;7963:18;;;7956:30;8022:34;8002:18;;;7995:62;-1:-1:-1;;;8073:18:1;;;8066:39;8122:19;;10734:110:0;7742:405:1;10734:110:0;-1:-1:-1;;;;;8782:18:0;;8755:7;8782:18;;;:9;:18;;;;;;10877:6;:27;;10855:126;;;;-1:-1:-1;;;10855:126:0;;8354:2:1;10855:126:0;;;8336:21:1;8393:2;8373:18;;;8366:30;8432:34;8412:18;;;8405:62;-1:-1:-1;;;8483:18:1;;;8476:47;8540:19;;10855:126:0;8152:413:1;10855:126:0;10441:548;;;:::o;12886:240::-;-1:-1:-1;;;;;13003:19:0;;;;;;:11;:19;;;;;;;;13002:20;:47;;;;-1:-1:-1;;;;;;13027:22:0;;;;;;:11;:22;;;;;;;;13026:23;13002:47;12998:121;;;13074:14;;-1:-1:-1;;;13074:14:0;;;;13066:41;;;;-1:-1:-1;;;13066:41:0;;8772:2:1;13066:41:0;;;8754:21:1;8811:2;8791:18;;;8784:30;-1:-1:-1;;;8830:18:1;;;8823:44;8884:18;;13066:41:0;8570:338:1;13066:41:0;12886:240;;:::o;13134:491::-;-1:-1:-1;;;;;13287:19:0;;;;;;:11;:19;;;;;;;;13286:20;:60;;;;-1:-1:-1;;;;;;13324:22:0;;;;;;:11;:22;;;;;;;;13323:23;13286:60;:103;;;;-1:-1:-1;13384:4:0;;-1:-1:-1;;;;;13363:26:0;;;13384:4;;13363:26;;13286:103;:146;;;;-1:-1:-1;;;;;;13406:26:0;;7211:42;13406:26;;13286:146;13268:350;;;13523:17;:15;:17::i;:::-;-1:-1:-1;;;;;13486:20:0;;;;;;:9;:20;;;;;;:32;;13511:6;13486:24;:32::i;:::-;13485:55;;13459:147;;;;-1:-1:-1;;;13459:147:0;;9115:2:1;13459:147:0;;;9097:21:1;9154:2;9134:18;;;9127:30;9193:32;9173:18;;;9166:60;9243:18;;13459:147:0;8913:354:1;13633:185:0;13731:4;;-1:-1:-1;;;;;13718:17:0;;;13731:4;;13718:17;:41;;;;-1:-1:-1;;;;;;13740:19:0;;;;;;:11;:19;;;;;;;;13739:20;13718:41;13714:97;;;13797:1;13776:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;13633:185:0;;:::o;13826:571::-;13972:4;;-1:-1:-1;;;;;13962:14:0;;;13972:4;;13962:14;13958:247;;14029:20;:18;:20::i;:::-;14019:6;:30;;:74;;;-1:-1:-1;;;;;;14074:19:0;;;;;;:11;:19;;;;;;;;14019:74;:121;;;-1:-1:-1;;;;;;14118:22:0;;;;;;:11;:22;;;;;;;;14019:121;13993:200;;;;-1:-1:-1;;;13993:200:0;;9604:2:1;13993:200:0;;;9586:21:1;9643:2;9623:18;;;9616:30;-1:-1:-1;;;9662:18:1;;;9655:47;9719:18;;13993:200:0;9402:341:1;13993:200:0;14247:14;:12;:14::i;:::-;14237:6;:24;;:64;;;-1:-1:-1;;;;;;14282:19:0;;;;;;:11;:19;;;;;;;;14237:64;:107;;;-1:-1:-1;;;;;;14322:22:0;;;;;;:11;:22;;;;;;;;14237:107;14215:174;;;;-1:-1:-1;;;14215:174:0;;9604:2:1;14215:174:0;;;9586:21:1;9643:2;9623:18;;;9616:30;-1:-1:-1;;;9662:18:1;;;9655:47;9719:18;;14215:174:0;9402:341:1;16964:270:0;17091:41;17106:6;17114:9;17125:6;17091:14;:41::i;:::-;17087:140;;;17149:29;17164:13;;17149:14;:29::i;:::-;17213:1;17193:9;:22;16964:270;;;:::o;17242:192::-;-1:-1:-1;;;;;17380:19:0;;17350:4;17380:19;;;:11;:19;;;;;;;;17379:20;:47;;;;-1:-1:-1;;;;;;;17404:22:0;;;;;:11;:22;;;;;;;;17403:23;;17242:192;-1:-1:-1;17242:192:0:o;17865:769::-;17985:7;18042:1;18009:30;18021:6;18029:9;18009:11;:30::i;:::-;:34;18005:598;;;18060:17;18080:91;18126:30;18138:6;18146:9;18126:11;:30::i;:::-;18091:11;;18080:23;;:6;;:10;:23::i;:91::-;18231:4;18213:24;;;;:9;:24;;;;;;18060:111;;-1:-1:-1;18213:39:0;;18060:111;18213:28;:39::i;:::-;18204:4;18186:24;;;;:9;:24;;;;;;;:66;;;;18272:42;;-1:-1:-1;;;;;18272:42:0;;;;;;;18304:9;1958:25:1;;1946:2;1931:18;;1812:177;18272:42:0;;;;;;;;18333:7;;:20;18329:220;;18374:159;18414:4;7211:42;18478:36;18506:7;;18478:23;18489:11;;18478:6;:10;;:23;;;;:::i;:36::-;18374:9;:159::i;:::-;18570:21;:6;18581:9;18570:10;:21::i;:::-;18563:28;;;;;18005:598;-1:-1:-1;18620:6:0;17865:769;-1:-1:-1;;17865:769:0:o;86:98::-;144:7;171:5;175:1;171;:5;:::i;16418:538::-;16593:15;;16669:13;;16659:4;16550;8782:18;;;:9;:18;;;;;;16714:8;;16550:4;;16583:25;;;;-1:-1:-1;16641:41:0;;16714:8;;16713:9;:37;;;;-1:-1:-1;16739:11:0;;;;16713:37;:68;;;;-1:-1:-1;16767:14:0;;-1:-1:-1;;;16767:14:0;;;;16713:68;:93;;;;;16798:8;16713:93;:130;;;;-1:-1:-1;;;;;;16824:19:0;;;;;;:11;:19;;;;;;;;16823:20;16713:130;:164;;;;-1:-1:-1;16873:4:0;;-1:-1:-1;;;;;16860:17:0;;;16873:4;;16860:17;16713:164;:204;;;;;16915:1;16894:9;;:23;;16713:204;:235;;;;;16934:14;16713:235;16693:255;16418:538;-1:-1:-1;;;;;;16418:538:0:o;14405:1192::-;7108:8;:15;;-1:-1:-1;;7108:15:0;7119:4;7108:15;;;;;;14556:14:::1;::::0;14538:12:::1;::::0;14514::::1;::::0;7108:8;;14499:90:::1;::::0;14587:1:::1;::::0;14514:57:::1;::::0;14556:14;;14514:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;14499:90::-;14476:113;;14600:32;14635:66;14678:12;14635:24;14646:12;;14635:6;:10;;:24;;;;:::i;:66::-;14600:101:::0;-1:-1:-1;14712:14:0::1;14729:36;:6:::0;14600:101;14729:10:::1;:36::i;:::-;14712:53:::0;-1:-1:-1;14801:21:0::1;14833:24;14712:53:::0;14833:16:::1;:24::i;:::-;14868:20;14891:41;:21;14917:14:::0;14891:25:::1;:41::i;:::-;14868:64;;14943:19;14965:48;14982:30;14999:12;;14982;:16;;:30;;;;:::i;:::-;14965:12:::0;;:16:::1;:48::i;:::-;14943:70;;15024:29;15056;15072:12;;15056:11;:15;;:29;;;;:::i;:::-;15024:61:::0;-1:-1:-1;15100:34:0;;15096:128:::1;;15151:61;15164:24;15190:21;15151:12;:61::i;:::-;15280:12;::::0;15234:20:::1;::::0;15257:36:::1;::::0;:18:::1;:11:::0;15273:1:::1;15257:15;:18::i;:36::-;15234:59:::0;-1:-1:-1;15308:16:0;;15304:99:::1;;15341:50;::::0;7423:42:::1;::::0;15341:50;::::1;;;::::0;15378:12;;15341:50:::1;::::0;;;15378:12;7423:42;15341:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15304:99;15440:21;15476:29:::0;;15472:118:::1;;15522:56;::::0;7318:42:::1;::::0;15522:56;::::1;;;::::0;15561:16;;15522:56:::1;::::0;;;15561:16;7318:42;15522:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15472:118;-1:-1:-1::0;;7146:8:0;:16;;-1:-1:-1;;7146:16:0;;;-1:-1:-1;;;;;;;;14405:1192:0:o;17442:415::-;-1:-1:-1;;;;;17577:13:0;;17548:7;17577:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;17594:16:0;;;;;;:5;:16;;;;;;;;17577:33;17573:102;;;17634:11;;:29;;17658:3;17634:15;:29::i;:::-;17627:36;;;;17573:102;17702:4;;-1:-1:-1;;;;;17702:4:0;;;17689:17;;;;17685:64;;-1:-1:-1;17730:7:0;;17723:14;;17685:64;17773:4;;-1:-1:-1;;;;;17773:4:0;;;17763:14;;;;17759:62;;-1:-1:-1;17801:8:0;;17794:15;;17759:62;-1:-1:-1;17838:11:0;;17442:415;;;;:::o;15966:444::-;16056:16;;;16070:1;16056:16;;;;;;;;16032:21;;16056:16;;;;;;;;;;-1:-1:-1;16056:16:0;16032:40;;16101:4;16083;16088:1;16083:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16083:23:0;;;:7;;;;;;;;;;:23;;;;16127:6;;:13;;;-1:-1:-1;;;16127:13:0;;;;:6;;;;;:11;;:13;;;;;16083:7;;16127:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16117:4;16122:1;16117:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16117:23:0;;;:7;;;;;;;;;:23;16183:6;;16151:53;;16168:4;;16183:6;16192:11;16151:8;:53::i;:::-;16215:6;;:187;;-1:-1:-1;;;16215:187:0;;-1:-1:-1;;;;;16215:6:0;;;;:57;;:187;;16287:11;;16215:6;;16329:4;;16356;;16376:15;;16215:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16021:389;15966:444;:::o;15605:353::-;15718:6;;15686:53;;15703:4;;-1:-1:-1;;;;;15718:6:0;15727:11;15686:8;:53::i;:::-;15750:6;;:200;;-1:-1:-1;;;15750:200:0;;15813:4;15750:200;;;11594:34:1;11644:18;;;11637:34;;;15750:6:0;11687:18:1;;;11680:34;;;11730:18;;;11723:34;7528:42:0;11773:19:1;;;11766:44;15924:15:0;11826:19:1;;;11819:35;-1:-1:-1;;;;;15750:6:0;;;;:22;;15780:9;;11528:19:1;;15750:200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15605:353;;:::o;14:592:1:-;127:6;135;143;151;159;167;175;228:3;216:9;207:7;203:23;199:33;196:53;;;245:1;242;235:12;196:53;-1:-1:-1;;268:23:1;;;338:2;323:18;;310:32;;-1:-1:-1;389:2:1;374:18;;361:32;;440:2;425:18;;412:32;;-1:-1:-1;491:3:1;476:19;;463:33;;-1:-1:-1;543:3:1;528:19;;515:33;;-1:-1:-1;595:3:1;580:19;567:33;;-1:-1:-1;14:592:1;-1:-1:-1;14:592:1:o;611:548::-;723:4;752:2;781;770:9;763:21;813:6;807:13;856:6;851:2;840:9;836:18;829:34;881:1;891:140;905:6;902:1;899:13;891:140;;;1000:14;;;996:23;;990:30;966:17;;;985:2;962:26;955:66;920:10;;891:140;;;895:3;1080:1;1075:2;1066:6;1055:9;1051:22;1047:31;1040:42;1150:2;1143;1139:7;1134:2;1126:6;1122:15;1118:29;1107:9;1103:45;1099:54;1091:62;;;;611:548;;;;:::o;1164:131::-;-1:-1:-1;;;;;1239:31:1;;1229:42;;1219:70;;1285:1;1282;1275:12;1219:70;1164:131;:::o;1300:315::-;1368:6;1376;1429:2;1417:9;1408:7;1404:23;1400:32;1397:52;;;1445:1;1442;1435:12;1397:52;1484:9;1471:23;1503:31;1528:5;1503:31;:::i;:::-;1553:5;1605:2;1590:18;;;;1577:32;;-1:-1:-1;;;1300:315:1:o;1994:456::-;2071:6;2079;2087;2140:2;2128:9;2119:7;2115:23;2111:32;2108:52;;;2156:1;2153;2146:12;2108:52;2195:9;2182:23;2214:31;2239:5;2214:31;:::i;:::-;2264:5;-1:-1:-1;2321:2:1;2306:18;;2293:32;2334:33;2293:32;2334:33;:::i;:::-;1994:456;;2386:7;;-1:-1:-1;;;2440:2:1;2425:18;;;;2412:32;;1994:456::o;2455:247::-;2514:6;2567:2;2555:9;2546:7;2542:23;2538:32;2535:52;;;2583:1;2580;2573:12;2535:52;2622:9;2609:23;2641:31;2666:5;2641:31;:::i;2896:316::-;2973:6;2981;2989;3042:2;3030:9;3021:7;3017:23;3013:32;3010:52;;;3058:1;3055;3048:12;3010:52;-1:-1:-1;;3081:23:1;;;3151:2;3136:18;;3123:32;;-1:-1:-1;3202:2:1;3187:18;;;3174:32;;2896:316;-1:-1:-1;2896:316:1:o;3217:416::-;3282:6;3290;3343:2;3331:9;3322:7;3318:23;3314:32;3311:52;;;3359:1;3356;3349:12;3311:52;3398:9;3385:23;3417:31;3442:5;3417:31;:::i;:::-;3467:5;-1:-1:-1;3524:2:1;3509:18;;3496:32;3566:15;;3559:23;3547:36;;3537:64;;3597:1;3594;3587:12;3537:64;3620:7;3610:17;;;3217:416;;;;;:::o;3846:388::-;3914:6;3922;3975:2;3963:9;3954:7;3950:23;3946:32;3943:52;;;3991:1;3988;3981:12;3943:52;4030:9;4017:23;4049:31;4074:5;4049:31;:::i;:::-;4099:5;-1:-1:-1;4156:2:1;4141:18;;4128:32;4169:33;4128:32;4169:33;:::i;4499:329::-;4701:2;4683:21;;;4740:1;4720:18;;;4713:29;-1:-1:-1;;;4773:2:1;4758:18;;4751:36;4819:2;4804:18;;4499:329::o;4833:127::-;4894:10;4889:3;4885:20;4882:1;4875:31;4925:4;4922:1;4915:15;4949:4;4946:1;4939:15;4965:168;5005:7;5071:1;5067;5063:6;5059:14;5056:1;5053:21;5048:1;5041:9;5034:17;5030:45;5027:71;;;5078:18;;:::i;:::-;-1:-1:-1;5118:9:1;;4965:168::o;5138:217::-;5178:1;5204;5194:132;;5248:10;5243:3;5239:20;5236:1;5229:31;5283:4;5280:1;5273:15;5311:4;5308:1;5301:15;5194:132;-1:-1:-1;5340:9:1;;5138:217::o;6799:128::-;6866:9;;;6887:11;;;6884:37;;;6901:18;;:::i;9272:125::-;9337:9;;;9358:10;;;9355:36;;;9371:18;;:::i;9880:127::-;9941:10;9936:3;9932:20;9929:1;9922:31;9972:4;9969:1;9962:15;9996:4;9993:1;9986:15;10012:251;10082:6;10135:2;10123:9;10114:7;10110:23;10106:32;10103:52;;;10151:1;10148;10141:12;10103:52;10183:9;10177:16;10202:31;10227:5;10202:31;:::i;10268:980::-;10530:4;10578:3;10567:9;10563:19;10609:6;10598:9;10591:25;10635:2;10673:6;10668:2;10657:9;10653:18;10646:34;10716:3;10711:2;10700:9;10696:18;10689:31;10740:6;10775;10769:13;10806:6;10798;10791:22;10844:3;10833:9;10829:19;10822:26;;10883:2;10875:6;10871:15;10857:29;;10904:1;10914:195;10928:6;10925:1;10922:13;10914:195;;;10993:13;;-1:-1:-1;;;;;10989:39:1;10977:52;;11084:15;;;;11049:12;;;;11025:1;10943:9;10914:195;;;-1:-1:-1;;;;;;;11165:32:1;;;;11160:2;11145:18;;11138:60;-1:-1:-1;;;11229:3:1;11214:19;11207:35;11126:3;10268:980;-1:-1:-1;;;10268:980:1:o;11865:306::-;11953:6;11961;11969;12022:2;12010:9;12001:7;11997:23;11993:32;11990:52;;;12038:1;12035;12028:12;11990:52;12067:9;12061:16;12051:26;;12117:2;12106:9;12102:18;12096:25;12086:35;;12161:2;12150:9;12146:18;12140:25;12130:35;;11865:306;;;;;:::o

Swarm Source

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