ETH Price: $3,439.10 (+3.28%)

Token

Buttcoin-mEthereum-VitalikButterin (BUTT)
 

Overview

Max Total Supply

6,900,000,000 BUTT

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
124,019,752.081556022 BUTT

Value
$0.00
0x6ac056b5554c1ae041d80a088fc3e5601902e98b
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:
BUTT

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-19
*/

//https://linktr.ee/BUTTonEthereum
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.27;


library SafeMath {

    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 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 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 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 totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}

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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract BUTT is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Buttcoin-mEthereum-VitalikButterin';
    string private constant _symbol = 'BUTT';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 6900000000 * (10 ** _decimals);
    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;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 1000;
    uint256 private sellFee = 1000;
    uint256 private transferFee = 1000;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x85abCf0077d4C182e8b3534994249A55C7D69047; 
    address internal marketing_receiver = 0x85abCf0077d4C182e8b3534994249A55C7D69047;
    address internal liquidity_receiver = 0x85abCf0077d4C182e8b3534994249A55C7D69047;
    uint256 public maxTxAmount = ( _totalSupply * 100 ) / 10000;
    uint256 public _maxSellAmount = ( _totalSupply * 100 ) / 10000;
    uint256 public maxWalletToken = ( _totalSupply * 200 ) / 10000;

    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 FartTrading() 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 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 shouldContractSwap(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 >= swapAmount && aboveThreshold;
    }

    function delBots(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function reduceFee(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;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }

    function removeLimit(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
        maxTxAmount = newTx; _maxSellAmount = newTransfer; maxWalletToken = newWallet;
        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 manualSwap() external onlyOwner {
        swapAndLiquify(swapThreshold);
    }

    function rescueETH(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(development_receiver, _amount);
    }

    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 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
    }

    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 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) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= maxWalletToken, "Exceeds maximum wallet amount.");}
        if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); 
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
        if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
        _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 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":"FartTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxSellAmount","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"delBots","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":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":[],"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":"_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":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueETH","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":"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"}]

60806040526100106009600a610486565b61001f9064019b45a50061049b565b60018181556007805461ffff60a01b1916600160a81b179055600a55620186a09061004c906103e861049b565b61005691906104b2565b600b55620186a0600154600a61006c919061049b565b61007691906104b2565b600c555f600d819055600e819055600f8190556010556103e8601181905560128190556013556127106014819055601580547385abcf0077d4c182e8b3534994249a55c7d690476001600160a01b03199182168117909255601680548216831790556017805490911690911790556001546100f290606461049b565b6100fc91906104b2565b6018556127106001546064610111919061049b565b61011b91906104b2565b60195561271060015460c8610130919061049b565b61013a91906104b2565b601a55348015610148575f5ffd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa1580156101ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d091906104d1565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561021b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023f91906104d1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610289573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ad91906104d1565b600680546001600160a01b038581166001600160a01b031992831617909255600780548484169216919091179055305f908152600460209081526040808320805460ff19908116600190811790925560175486168552828520805482168317905560165486168552828520805482168317905560155490951684528184208054861682179055338085528285208054909616821790955554600283528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506104f7565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156103dc578085048111156103c0576103c061038d565b60018416156103ce57908102905b60019390931c9280026103a5565b935093915050565b5f826103f257506001610480565b816103fe57505f610480565b8160018114610414576002811461041e5761043a565b6001915050610480565b60ff84111561042f5761042f61038d565b50506001821b610480565b5060208310610133831016604e8410600b841016171561045d575081810a610480565b6104695f1984846103a1565b805f190482111561047c5761047c61038d565b0290505b92915050565b5f61049460ff8416836103e4565b9392505050565b80820281158282048414176104805761048061038d565b5f826104cc57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156104e1575f5ffd5b81516001600160a01b0381168114610494575f5ffd5b611b30806105045f395ff3fe60806040526004361061014a575f3560e01c806370a08231116100b3578063a8aa1b311161006d578063a8aa1b31146103c5578063a9059cbb146103e4578063dd62ed3e14610403578063e6c75f7114610447578063f2fde38b1461045c578063f358b1811461047b575f5ffd5b806370a08231146102f757806371e3669d1461032b5780637cca52fe1461033f578063893d20e8146103545780638c0b5e221461038457806395d89b4114610399575f5ffd5b8063313ce56711610104578063313ce5671461023d5780633f4218e01461025857806348ff2b8b1461028657806351bc3c85146102a55780635a3b3e2d146102b95780636f5ec871146102d8575f5ffd5b806306fdde0314610155578063095ea7b31461017f578063099a04e5146101ae57806318160ddd146101cf57806323b872dd146101f15780632f54bf6e14610210575f5ffd5b3661015157005b5f5ffd5b348015610160575f5ffd5b5061016961049a565b6040516101769190611775565b60405180910390f35b34801561018a575f5ffd5b5061019e6101993660046117c1565b6104ba565b6040519015158152602001610176565b3480156101b9575f5ffd5b506101cd6101c83660046117c1565b6104d0565b005b3480156101da575f5ffd5b506101e36105ff565b604051908152602001610176565b3480156101fc575f5ffd5b5061019e61020b3660046117eb565b61066f565b34801561021b575f5ffd5b5061019e61022a366004611829565b5f546001600160a01b0391821691161490565b348015610248575f5ffd5b5060405160098152602001610176565b348015610263575f5ffd5b5061019e610272366004611829565b60046020525f908152604090205460ff1681565b348015610291575f5ffd5b506101cd6102a0366004611851565b6106d7565b3480156102b0575f5ffd5b506101cd61072a565b3480156102c4575f5ffd5b506101cd6102d3366004611888565b610760565b3480156102e3575f5ffd5b506101cd6102f23660046118b1565b610890565b348015610302575f5ffd5b506101e3610311366004611829565b6001600160a01b03165f9081526002602052604090205490565b348015610336575f5ffd5b506101cd610986565b34801561034a575f5ffd5b506101e360195481565b34801561035f575f5ffd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610176565b34801561038f575f5ffd5b506101e360185481565b3480156103a4575f5ffd5b506040805180820190915260048152631095551560e21b6020820152610169565b3480156103d0575f5ffd5b5060075461036c906001600160a01b031681565b3480156103ef575f5ffd5b5061019e6103fe3660046117c1565b6109c4565b34801561040e575f5ffd5b506101e361041d3660046118f8565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610452575f5ffd5b506101e3601a5481565b348015610467575f5ffd5b506101cd610476366004611829565b6109d0565b348015610486575f5ffd5b506101cd610495366004611888565b610a4c565b6060604051806060016040528060228152602001611ad960229139905090565b5f6104c6338484610ab1565b5060015b92915050565b5f546001600160a01b031633146105025760405162461bcd60e51b81526004016104f990611924565b60405180910390fd5b6040516370a0823160e01b81523060048201525f906105839060649061057d9085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610553573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105779190611944565b90610bd4565b90610bdf565b60155460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af11580156105d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f9919061195b565b50505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261066a9290916106649190610bea565b90610bea565b905090565b5f61067b848484610bf5565b6106cc84336106c785604051806060016040528060288152602001611ab1602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190611131565b610ab1565b5060015b9392505050565b5f546001600160a01b031633146107005760405162461bcd60e51b81526004016104f990611924565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146107535760405162461bcd60e51b81526004016104f990611924565b61075e600b5461115c565b565b5f546001600160a01b031633146107895760405162461bcd60e51b81526004016104f990611924565b5f6107a561271061057d86600154610bd490919063ffffffff16565b90505f6107c361271061057d86600154610bd490919063ffffffff16565b90505f6107e161271061057d86600154610bd490919063ffffffff16565b60188490556019839055601a81905590505f6108066103e861057d60056105776105ff565b90508084101580156108185750808310155b80156108245750808210155b6108875760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016104f9565b50505050505050565b5f546001600160a01b031633146108b95760405162461bcd60e51b81526004016104f990611924565b600d879055600e8690556010859055600f8490556011839055601282905560138190556014546108ea906001610bdf565b6011541115801561090a5750601454610904906001610bdf565b60125411155b8015610925575060145461091f906001610bdf565b60135411155b6108875760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016104f9565b5f546001600160a01b031633146109af5760405162461bcd60e51b81526004016104f990611924565b6007805460ff60a01b1916600160a01b179055565b5f6104c6338484610bf5565b5f546001600160a01b031633146109f95760405162461bcd60e51b81526004016104f990611924565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b5f546001600160a01b03163314610a755760405162461bcd60e51b81526004016104f990611924565b600a839055600154610a9090620186a09061057d9085610bd4565b600b55600154610aa990620186a09061057d9084610bd4565b600c55505050565b6001600160a01b038316610b135760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f9565b6001600160a01b038216610b745760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f9565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6106d0828461198a565b5f6106d082846119a1565b5f6106d082846119c0565b6001600160a01b038316610c595760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f9565b6001600160a01b038216610cbb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f9565b6001600160a01b0383165f90815260026020526040902054811115610d3c5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016104f9565b6001600160a01b0383165f9081526004602052604090205460ff16158015610d7c57506001600160a01b0382165f9081526004602052604090205460ff16155b15610dcb57600754600160a01b900460ff16610dcb5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016104f9565b6001600160a01b0383165f9081526004602052604090205460ff16158015610e0b57506001600160a01b0382165f9081526004602052604090205460ff16155b8015610e2557506007546001600160a01b03838116911614155b8015610e3c57506001600160a01b03821661dead14155b15610eb457601a546001600160a01b0383165f90815260026020526040902054610e6690836112cc565b1115610eb45760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104f9565b6007546001600160a01b03848116911614610f535760195481111580610ef157506001600160a01b0383165f9081526004602052604090205460ff165b80610f1357506001600160a01b0382165f9081526004602052604090205460ff165b610f535760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104f9565b60185481111580610f7b57506001600160a01b0383165f9081526004602052604090205460ff165b80610f9d57506001600160a01b0382165f9081526004602052604090205460ff165b610fdd5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104f9565b6007546001600160a01b03838116911614801561101257506001600160a01b0383165f9081526004602052604090205460ff16155b1561102f57600160085f82825461102991906119d3565b90915550505b61103a8383836112d7565b1561104f5761104a600b5461115c565b5f6008555b6001600160a01b0383165f908152600260205260409020546110719082610bea565b6001600160a01b0384165f90815260026020526040812091909155611096848461138f565b6110a057816110ab565b6110ab8484846113d3565b6001600160a01b0384165f908152600260205260409020549091506110d090826112cc565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111239085815260200190565b60405180910390a350505050565b5f81848411156111545760405162461bcd60e51b81526004016104f99190611775565b505050900390565b6009805460ff19166001908117909155600f54600e54600d545f936111959360029361057793919261118f9283916112cc565b906112cc565b90505f6111b18261057d600d5486610bd490919063ffffffff16565b90505f6111be8483610bea565b9050476111ca826114d5565b5f6111d54783610bea565b90505f6111f76111f0600d5488610bea90919063ffffffff16565b8390610bdf565b90505f61120f600d5483610bd490919063ffffffff16565b90508015611221576112218682611625565b600e545f9061123590610577856002610bd4565b90508015611276576016546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611274573d5f5f3e3d5ffd5b505b4780156112b6576015546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156112b4573d5f5f3e3d5ffd5b505b50506009805460ff191690555050505050505050565b5f6106d082846119d3565b600c54600b54305f9081526002602052604081205460095491938510159211159060ff161580156113115750600754600160a81b900460ff165b80156113265750600754600160a01b900460ff165b801561132f5750815b801561135357506001600160a01b0386165f9081526004602052604090205460ff16155b801561136c57506007546001600160a01b038681169116145b801561137c5750600a5460085410155b80156113855750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff161580156106d05750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f5f6113df85856116d6565b11156114ce575f6114016113f386866116d6565b601454610577908690610bdf565b305f9081526002602052604090205490915061141d90826112cc565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061146d9085815260200190565b60405180910390a35f601054118015611490575060105461148e86866116d6565b115b156114bc576114bc3061dead6114b760105461057760145489610bdf90919063ffffffff16565b610bf5565b6114c68382610bea565b9150506106d0565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611508576115086119e6565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561155f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061158391906119fa565b81600181518110611596576115966119e6565b6001600160a01b0392831660209182029290920101526006546115bc9130911684610ab1565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906115f49085905f90869030904290600401611a15565b5f604051808303815f87803b15801561160b575f5ffd5b505af115801561161d573d5f5f3e3d5ffd5b505050505050565b60065461163d9030906001600160a01b031684610ab1565b60065460175460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156116aa573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116cf9190611a85565b5050505050565b6001600160a01b0382165f9081526005602052604081205460ff168061171357506001600160a01b0382165f9081526005602052604090205460ff165b1561172d57601454611726906064610bea565b90506104ca565b6007546001600160a01b039081169083160361174c57506012546104ca565b6007546001600160a01b039081169084160361176b57506011546104ca565b5060135492915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146117be575f5ffd5b50565b5f5f604083850312156117d2575f5ffd5b82356117dd816117aa565b946020939093013593505050565b5f5f5f606084860312156117fd575f5ffd5b8335611808816117aa565b92506020840135611818816117aa565b929592945050506040919091013590565b5f60208284031215611839575f5ffd5b81356106d0816117aa565b80151581146117be575f5ffd5b5f5f60408385031215611862575f5ffd5b823561186d816117aa565b9150602083013561187d81611844565b809150509250929050565b5f5f5f6060848603121561189a575f5ffd5b505081359360208301359350604090920135919050565b5f5f5f5f5f5f5f60e0888a0312156118c7575f5ffd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f5f60408385031215611909575f5ffd5b8235611914816117aa565b9150602083013561187d816117aa565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f60208284031215611954575f5ffd5b5051919050565b5f6020828403121561196b575f5ffd5b81516106d081611844565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176104ca576104ca611976565b5f826119bb57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104ca576104ca611976565b808201808211156104ca576104ca611976565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611a0a575f5ffd5b81516106d0816117aa565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611a655783516001600160a01b0316835260209384019390920191600101611a3e565b50506001600160a01b039590951660608401525050608001529392505050565b5f5f5f60608486031215611a97575f5ffd5b505081516020830151604090930151909492935091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542757474636f696e2d6d457468657265756d2d566974616c696b427574746572696ea2646970667358221220cc8ff1e9ef94bbc81f86dc003289281c3f8d1e3647b84053ce92eb14e9aede7a64736f6c634300081b0033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c806370a08231116100b3578063a8aa1b311161006d578063a8aa1b31146103c5578063a9059cbb146103e4578063dd62ed3e14610403578063e6c75f7114610447578063f2fde38b1461045c578063f358b1811461047b575f5ffd5b806370a08231146102f757806371e3669d1461032b5780637cca52fe1461033f578063893d20e8146103545780638c0b5e221461038457806395d89b4114610399575f5ffd5b8063313ce56711610104578063313ce5671461023d5780633f4218e01461025857806348ff2b8b1461028657806351bc3c85146102a55780635a3b3e2d146102b95780636f5ec871146102d8575f5ffd5b806306fdde0314610155578063095ea7b31461017f578063099a04e5146101ae57806318160ddd146101cf57806323b872dd146101f15780632f54bf6e14610210575f5ffd5b3661015157005b5f5ffd5b348015610160575f5ffd5b5061016961049a565b6040516101769190611775565b60405180910390f35b34801561018a575f5ffd5b5061019e6101993660046117c1565b6104ba565b6040519015158152602001610176565b3480156101b9575f5ffd5b506101cd6101c83660046117c1565b6104d0565b005b3480156101da575f5ffd5b506101e36105ff565b604051908152602001610176565b3480156101fc575f5ffd5b5061019e61020b3660046117eb565b61066f565b34801561021b575f5ffd5b5061019e61022a366004611829565b5f546001600160a01b0391821691161490565b348015610248575f5ffd5b5060405160098152602001610176565b348015610263575f5ffd5b5061019e610272366004611829565b60046020525f908152604090205460ff1681565b348015610291575f5ffd5b506101cd6102a0366004611851565b6106d7565b3480156102b0575f5ffd5b506101cd61072a565b3480156102c4575f5ffd5b506101cd6102d3366004611888565b610760565b3480156102e3575f5ffd5b506101cd6102f23660046118b1565b610890565b348015610302575f5ffd5b506101e3610311366004611829565b6001600160a01b03165f9081526002602052604090205490565b348015610336575f5ffd5b506101cd610986565b34801561034a575f5ffd5b506101e360195481565b34801561035f575f5ffd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610176565b34801561038f575f5ffd5b506101e360185481565b3480156103a4575f5ffd5b506040805180820190915260048152631095551560e21b6020820152610169565b3480156103d0575f5ffd5b5060075461036c906001600160a01b031681565b3480156103ef575f5ffd5b5061019e6103fe3660046117c1565b6109c4565b34801561040e575f5ffd5b506101e361041d3660046118f8565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610452575f5ffd5b506101e3601a5481565b348015610467575f5ffd5b506101cd610476366004611829565b6109d0565b348015610486575f5ffd5b506101cd610495366004611888565b610a4c565b6060604051806060016040528060228152602001611ad960229139905090565b5f6104c6338484610ab1565b5060015b92915050565b5f546001600160a01b031633146105025760405162461bcd60e51b81526004016104f990611924565b60405180910390fd5b6040516370a0823160e01b81523060048201525f906105839060649061057d9085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610553573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105779190611944565b90610bd4565b90610bdf565b60155460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af11580156105d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f9919061195b565b50505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261066a9290916106649190610bea565b90610bea565b905090565b5f61067b848484610bf5565b6106cc84336106c785604051806060016040528060288152602001611ab1602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190611131565b610ab1565b5060015b9392505050565b5f546001600160a01b031633146107005760405162461bcd60e51b81526004016104f990611924565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146107535760405162461bcd60e51b81526004016104f990611924565b61075e600b5461115c565b565b5f546001600160a01b031633146107895760405162461bcd60e51b81526004016104f990611924565b5f6107a561271061057d86600154610bd490919063ffffffff16565b90505f6107c361271061057d86600154610bd490919063ffffffff16565b90505f6107e161271061057d86600154610bd490919063ffffffff16565b60188490556019839055601a81905590505f6108066103e861057d60056105776105ff565b90508084101580156108185750808310155b80156108245750808210155b6108875760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016104f9565b50505050505050565b5f546001600160a01b031633146108b95760405162461bcd60e51b81526004016104f990611924565b600d879055600e8690556010859055600f8490556011839055601282905560138190556014546108ea906001610bdf565b6011541115801561090a5750601454610904906001610bdf565b60125411155b8015610925575060145461091f906001610bdf565b60135411155b6108875760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016104f9565b5f546001600160a01b031633146109af5760405162461bcd60e51b81526004016104f990611924565b6007805460ff60a01b1916600160a01b179055565b5f6104c6338484610bf5565b5f546001600160a01b031633146109f95760405162461bcd60e51b81526004016104f990611924565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b5f546001600160a01b03163314610a755760405162461bcd60e51b81526004016104f990611924565b600a839055600154610a9090620186a09061057d9085610bd4565b600b55600154610aa990620186a09061057d9084610bd4565b600c55505050565b6001600160a01b038316610b135760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f9565b6001600160a01b038216610b745760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f9565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6106d0828461198a565b5f6106d082846119a1565b5f6106d082846119c0565b6001600160a01b038316610c595760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f9565b6001600160a01b038216610cbb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f9565b6001600160a01b0383165f90815260026020526040902054811115610d3c5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016104f9565b6001600160a01b0383165f9081526004602052604090205460ff16158015610d7c57506001600160a01b0382165f9081526004602052604090205460ff16155b15610dcb57600754600160a01b900460ff16610dcb5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016104f9565b6001600160a01b0383165f9081526004602052604090205460ff16158015610e0b57506001600160a01b0382165f9081526004602052604090205460ff16155b8015610e2557506007546001600160a01b03838116911614155b8015610e3c57506001600160a01b03821661dead14155b15610eb457601a546001600160a01b0383165f90815260026020526040902054610e6690836112cc565b1115610eb45760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104f9565b6007546001600160a01b03848116911614610f535760195481111580610ef157506001600160a01b0383165f9081526004602052604090205460ff165b80610f1357506001600160a01b0382165f9081526004602052604090205460ff165b610f535760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104f9565b60185481111580610f7b57506001600160a01b0383165f9081526004602052604090205460ff165b80610f9d57506001600160a01b0382165f9081526004602052604090205460ff165b610fdd5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104f9565b6007546001600160a01b03838116911614801561101257506001600160a01b0383165f9081526004602052604090205460ff16155b1561102f57600160085f82825461102991906119d3565b90915550505b61103a8383836112d7565b1561104f5761104a600b5461115c565b5f6008555b6001600160a01b0383165f908152600260205260409020546110719082610bea565b6001600160a01b0384165f90815260026020526040812091909155611096848461138f565b6110a057816110ab565b6110ab8484846113d3565b6001600160a01b0384165f908152600260205260409020549091506110d090826112cc565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111239085815260200190565b60405180910390a350505050565b5f81848411156111545760405162461bcd60e51b81526004016104f99190611775565b505050900390565b6009805460ff19166001908117909155600f54600e54600d545f936111959360029361057793919261118f9283916112cc565b906112cc565b90505f6111b18261057d600d5486610bd490919063ffffffff16565b90505f6111be8483610bea565b9050476111ca826114d5565b5f6111d54783610bea565b90505f6111f76111f0600d5488610bea90919063ffffffff16565b8390610bdf565b90505f61120f600d5483610bd490919063ffffffff16565b90508015611221576112218682611625565b600e545f9061123590610577856002610bd4565b90508015611276576016546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611274573d5f5f3e3d5ffd5b505b4780156112b6576015546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156112b4573d5f5f3e3d5ffd5b505b50506009805460ff191690555050505050505050565b5f6106d082846119d3565b600c54600b54305f9081526002602052604081205460095491938510159211159060ff161580156113115750600754600160a81b900460ff165b80156113265750600754600160a01b900460ff165b801561132f5750815b801561135357506001600160a01b0386165f9081526004602052604090205460ff16155b801561136c57506007546001600160a01b038681169116145b801561137c5750600a5460085410155b80156113855750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff161580156106d05750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f5f6113df85856116d6565b11156114ce575f6114016113f386866116d6565b601454610577908690610bdf565b305f9081526002602052604090205490915061141d90826112cc565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061146d9085815260200190565b60405180910390a35f601054118015611490575060105461148e86866116d6565b115b156114bc576114bc3061dead6114b760105461057760145489610bdf90919063ffffffff16565b610bf5565b6114c68382610bea565b9150506106d0565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611508576115086119e6565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561155f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061158391906119fa565b81600181518110611596576115966119e6565b6001600160a01b0392831660209182029290920101526006546115bc9130911684610ab1565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906115f49085905f90869030904290600401611a15565b5f604051808303815f87803b15801561160b575f5ffd5b505af115801561161d573d5f5f3e3d5ffd5b505050505050565b60065461163d9030906001600160a01b031684610ab1565b60065460175460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156116aa573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116cf9190611a85565b5050505050565b6001600160a01b0382165f9081526005602052604081205460ff168061171357506001600160a01b0382165f9081526005602052604090205460ff165b1561172d57601454611726906064610bea565b90506104ca565b6007546001600160a01b039081169083160361174c57506012546104ca565b6007546001600160a01b039081169084160361176b57506011546104ca565b5060135492915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146117be575f5ffd5b50565b5f5f604083850312156117d2575f5ffd5b82356117dd816117aa565b946020939093013593505050565b5f5f5f606084860312156117fd575f5ffd5b8335611808816117aa565b92506020840135611818816117aa565b929592945050506040919091013590565b5f60208284031215611839575f5ffd5b81356106d0816117aa565b80151581146117be575f5ffd5b5f5f60408385031215611862575f5ffd5b823561186d816117aa565b9150602083013561187d81611844565b809150509250929050565b5f5f5f6060848603121561189a575f5ffd5b505081359360208301359350604090920135919050565b5f5f5f5f5f5f5f60e0888a0312156118c7575f5ffd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f5f60408385031215611909575f5ffd5b8235611914816117aa565b9150602083013561187d816117aa565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f60208284031215611954575f5ffd5b5051919050565b5f6020828403121561196b575f5ffd5b81516106d081611844565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176104ca576104ca611976565b5f826119bb57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104ca576104ca611976565b808201808211156104ca576104ca611976565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611a0a575f5ffd5b81516106d0816117aa565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611a655783516001600160a01b0316835260209384019390920191600101611a3e565b50506001600160a01b039590951660608401525050608001529392505050565b5f5f5f60608486031215611a97575f5ffd5b505081516020830151604090930151909492935091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542757474636f696e2d6d457468657265756d2d566974616c696b427574746572696ea2646970667358221220cc8ff1e9ef94bbc81f86dc003289281c3f8d1e3647b84053ce92eb14e9aede7a64736f6c634300081b0033

Deployed Bytecode Sourcemap

4706:10788:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7161:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8041:133;;;;;;;;;;-1:-1:-1;8041:133:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;8041:133:0;945:187:1;10207:240:0;;;;;;;;;;-1:-1:-1;10207:240:0;;;;;:::i;:::-;;:::i;:::-;;8180:132;;;;;;;;;;;;;:::i;:::-;;;1283:25:1;;;1271:2;1256:18;8180:132:0;1137:177:1;14837:309:0;;;;;;;;;;-1:-1:-1;14837:309:0;;;;;:::i;:::-;;:::i;3610:87::-;;;;;;;;;;-1:-1:-1;3610:87:0;;;;;:::i;:::-;3665:4;3690:5;-1:-1:-1;;;;;3679:16:0;;;3690:5;;3679:16;;3610:87;7311:67;;;;;;;;;;-1:-1:-1;7311:67:0;;4936:1;2226:36:1;;2214:2;2199:18;7311:67:0;2084:184:1;5133:44:0;;;;;;;;;;-1:-1:-1;5133:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7927:108;;;;;;;;;;-1:-1:-1;7927:108:0;;;;;:::i;:::-;;:::i;10110:89::-;;;;;;;;;;;;;:::i;9557:545::-;;;;;;;;;;-1:-1:-1;9557:545:0;;;;;:::i;:::-;;:::i;9042:507::-;;;;;;;;;;-1:-1:-1;9042:507:0;;;;;:::i;:::-;;:::i;7540:103::-;;;;;;;;;;-1:-1:-1;7540:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7623:18:0;7606:7;7623:18;;;:9;:18;;;;;;;7540:103;7384:66;;;;;;;;;;;;;:::i;6376:62::-;;;;;;;;;;;;;;;;7456:78;;;;;;;;;;-1:-1:-1;7508:7:0;7526:5;-1:-1:-1;;;;;7526:5:0;7456:78;;;-1:-1:-1;;;;;4373:32:1;;;4355:51;;4343:2;4328:18;7456:78:0;4209:203:1;6310:59:0;;;;;;;;;;;;;;;;7234:71;;;;;;;;;;-1:-1:-1;7296:7:0;;;;;;;;;;;;-1:-1:-1;;;7296:7:0;;;;7234:71;;5251:19;;;;;;;;;;-1:-1:-1;5251:19:0;;;;-1:-1:-1;;;;;5251:19:0;;;7649:139;;;;;;;;;;-1:-1:-1;7649:139:0;;;;;:::i;:::-;;:::i;7794:127::-;;;;;;;;;;-1:-1:-1;7794:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7892:18:0;;;7875:7;7892:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7794:127;6445:62;;;;;;;;;;;;;;;;3703:111;;;;;;;;;;-1:-1:-1;3703:111:0;;;;;:::i;:::-;;:::i;8731:303::-;;;;;;;;;;-1:-1:-1;8731:303:0;;;;;:::i;:::-;;:::i;7161:67::-;7198:13;7221:5;;;;;;;;;;;;;;;;;7214:12;;7161:67;:::o;8041:133::-;8116:4;8123:37;8132:10;8144:7;8153:6;8123:8;:37::i;:::-;-1:-1:-1;8168:4:0;8041:133;;;;;:::o;10207:240::-;3665:4;3690:5;-1:-1:-1;;;;;3690:5:0;3577:10;3679:16;3561:38;;;;-1:-1:-1;;;3561:38:0;;;;;;;:::i;:::-;;;;;;;;;10309:41:::1;::::0;-1:-1:-1;;;10309:41:0;;10344:4:::1;10309:41;::::0;::::1;4355:51:1::0;10291:15:0::1;::::0;10309:63:::1;::::0;10368:3:::1;::::0;10309:54:::1;::::0;10355:7;;-1:-1:-1;;;;;10309:26:0;::::1;::::0;::::1;::::0;4328:18:1;;10309:41:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45:::0;::::1;:54::i;:::-;:58:::0;::::1;:63::i;:::-;10409:20;::::0;10383:56:::1;::::0;-1:-1:-1;;;10383:56:0;;-1:-1:-1;;;;;10409:20:0;;::::1;10383:56;::::0;::::1;5813:51:1::0;5880:18;;;5873:34;;;10291:81:0;;-1:-1:-1;10383:25:0;::::1;::::0;::::1;::::0;5786:18:1;;10383:56:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10280:167;10207:240:::0;;:::o;8180:132::-;7623:9;:18;;;;5997:42;8233:7;7623:18;;;;;8250:12;;8233:7;;8250:60;;7623:18;;8250:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8243:67;;8180:132;:::o;14837:309::-;14935:4;14952:36;14962:6;14970:9;14981:6;14952:9;:36::i;:::-;14999:117;15008:6;15016:10;15028:87;15064:6;15028:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15028:19:0;;;;;;:11;:19;;;;;;;;15048:10;15028:31;;;;;;;;;:87;:35;:87::i;:::-;14999:8;:117::i;:::-;-1:-1:-1;15134:4:0;14837:309;;;;;;:::o;7927:108::-;3665:4;3690:5;-1:-1:-1;;;;;3690:5:0;3577:10;3679:16;3561:38;;;;-1:-1:-1;;;3561:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8001:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;8001:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7927:108::o;10110:89::-;3665:4;3690:5;-1:-1:-1;;;;;3690:5:0;3577:10;3679:16;3561:38;;;;-1:-1:-1;;;3561:38:0;;;;;;;:::i;:::-;10162:29:::1;10177:13;;10162:14;:29::i;:::-;10110:89::o:0;9557:545::-;3665:4;3690:5;-1:-1:-1;;;;;3690:5:0;3577:10;3679:16;3561:38;;;;-1:-1:-1;;;3561:38:0;;;;;;;:::i;:::-;9654:13:::1;9670:33;9697:5;9670:22;9687:4;9670:12;;:16;;:22;;;;:::i;:33::-;9654:49;;9705:19;9727:34;9755:5;9727:23;9744:5;9727:12;;:16;;:23;;;;:::i;:34::-;9705:56;;9763:17;9783:36;9813:5;9783:25;9800:7;9783:12;;:16;;:25;;;;:::i;:36::-;9830:11;:19:::0;;;9851:14:::1;:28:::0;;;9881:14:::1;:26:::0;;;9763:56;-1:-1:-1;;9934:30:0::1;9959:4;9934:20;9952:1;9934:13;:11;:13::i;:30::-;9918:46;;9992:5;9983;:14;;:38;;;;;10016:5;10001:11;:20;;9983:38;:60;;;;;10038:5;10025:9;:18;;9983:60;9975:119;;;::::0;-1:-1:-1;;;9975:119:0;;6370:2:1;9975:119:0::1;::::0;::::1;6352:21:1::0;6409:2;6389:18;;;6382:30;6448:34;6428:18;;;6421:62;-1:-1:-1;;;6499:18:1;;;6492:44;6553:19;;9975:119:0::1;6168:410:1::0;9975:119:0::1;9643:459;;;;9557:545:::0;;;:::o;9042:507::-;3665:4;3690:5;-1:-1:-1;;;;;3690:5:0;3577:10;3679:16;3561:38;;;;-1:-1:-1;;;3561:38:0;;;;;;;:::i;:::-;9215:12:::1;:25:::0;;;9242:12:::1;:25:::0;;;9269:7:::1;:15:::0;;;9286:14:::1;:29:::0;;;9317:8:::1;:17:::0;;;9336:7:::1;:15:::0;;;9353:11:::1;:20:::0;;;9404:11:::1;::::0;:18:::1;::::0;-1:-1:-1;9404:15:0::1;:18::i;:::-;9392:8;;:30;;:63;;;;-1:-1:-1::0;9437:11:0::1;::::0;:18:::1;::::0;9453:1:::1;9437:15;:18::i;:::-;9426:7;;:29;;9392:63;:100;;;;-1:-1:-1::0;9474:11:0::1;::::0;:18:::1;::::0;9490:1:::1;9474:15;:18::i;:::-;9459:11;;:33;;9392:100;9384:157;;;::::0;-1:-1:-1;;;9384:157:0;;6785:2:1;9384:157:0::1;::::0;::::1;6767:21:1::0;6824:2;6804:18;;;6797:30;6863:34;6843:18;;;6836:62;-1:-1:-1;;;6914:18:1;;;6907:42;6966:19;;9384:157:0::1;6583:408:1::0;7384:66:0;3665:4;3690:5;-1:-1:-1;;;;;3690:5:0;3577:10;3679:16;3561:38;;;;-1:-1:-1;;;3561:38:0;;;;;;;:::i;:::-;7427:14:::1;:21:::0;;-1:-1:-1;;;;7427:21:0::1;-1:-1:-1::0;;;7427:21:0::1;::::0;;7384:66::o;7649:139::-;7727:4;7734:40;7744:10;7756:9;7767:6;7734:9;:40::i;3703:111::-;3665:4;3690:5;-1:-1:-1;;;;;3690:5:0;3577:10;3679:16;3561:38;;;;-1:-1:-1;;;3561:38:0;;;;;;;:::i;:::-;3769:5:::1;:11:::0;;-1:-1:-1;;;;;;3769:11:0::1;-1:-1:-1::0;;;;;3769:11:0;::::1;::::0;;::::1;::::0;;;3787:25:::1;::::0;4355:51:1;;;3787:25:0::1;::::0;4343:2:1;4328:18;3787:25:0::1;;;;;;;3703:111:::0;:::o;8731:303::-;3665:4;3690:5;-1:-1:-1;;;;;3690:5:0;3577:10;3679:16;3561:38;;;;-1:-1:-1;;;3561:38:0;;;;;;;:::i;:::-;8848:10:::1;:24:::0;;;8890:12:::1;::::0;:53:::1;::::0;8935:6:::1;::::0;8890:32:::1;::::0;8907:14;8890:16:::1;:32::i;:53::-;8874:13;:69:::0;8972:12:::1;::::0;:54:::1;::::0;9018:6:::1;::::0;8972:33:::1;::::0;8989:15;8972:16:::1;:33::i;:54::-;8955:14;:71:::0;-1:-1:-1;;;8731:303:0:o;15154:335::-;-1:-1:-1;;;;;15247:19:0;;15239:68;;;;-1:-1:-1;;;15239:68:0;;7414:2:1;15239:68:0;;;7396:21:1;7453:2;7433:18;;;7426:30;7492:34;7472:18;;;7465:62;-1:-1:-1;;;7543:18:1;;;7536:34;7587:19;;15239:68:0;7212:400:1;15239:68:0;-1:-1:-1;;;;;15326:21:0;;15318:68;;;;-1:-1:-1;;;15318:68:0;;7819:2:1;15318:68:0;;;7801:21:1;7858:2;7838:18;;;7831:30;7897:34;7877:18;;;7870:62;-1:-1:-1;;;7948:18:1;;;7941:32;7990:19;;15318:68:0;7617:398:1;15318:68:0;-1:-1:-1;;;;;15397:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15449:32;;1283:25:1;;;15449:32:0;;1256:18:1;15449:32:0;;;;;;;15154:335;;;:::o;1455:98::-;1513:7;1540:5;1544:1;1540;:5;:::i;1561:98::-;1619:7;1646:5;1650:1;1646;:5;:::i;1349:98::-;1407:7;1434:5;1438:1;1434;:5;:::i;13398:1431::-;-1:-1:-1;;;;;13495:20:0;;13487:70;;;;-1:-1:-1;;;13487:70:0;;8882:2:1;13487:70:0;;;8864:21:1;8921:2;8901:18;;;8894:30;8960:34;8940:18;;;8933:62;-1:-1:-1;;;9011:18:1;;;9004:35;9056:19;;13487:70:0;8680:401:1;13487:70:0;-1:-1:-1;;;;;13576:23:0;;13568:71;;;;-1:-1:-1;;;13568:71:0;;9288:2:1;13568:71:0;;;9270:21:1;9327:2;9307:18;;;9300:30;9366:34;9346:18;;;9339:62;-1:-1:-1;;;9417:18:1;;;9410:33;9460:19;;13568:71:0;9086:399:1;13568:71:0;-1:-1:-1;;;;;7623:18:0;;7606:7;7623:18;;;:9;:18;;;;;;13658:6;:27;;13650:88;;;;-1:-1:-1;;;13650:88:0;;9692:2:1;13650:88:0;;;9674:21:1;9731:2;9711:18;;;9704:30;9770:34;9750:18;;;9743:62;-1:-1:-1;;;9821:18:1;;;9814:47;9878:19;;13650:88:0;9490:413:1;13650:88:0;-1:-1:-1;;;;;13753:19:0;;;;;;:11;:19;;;;;;;;13752:20;:47;;;;-1:-1:-1;;;;;;13777:22:0;;;;;;:11;:22;;;;;;;;13776:23;13752:47;13749:95;;;13809:14;;-1:-1:-1;;;13809:14:0;;;;13801:41;;;;-1:-1:-1;;;13801:41:0;;10110:2:1;13801:41:0;;;10092:21:1;10149:2;10129:18;;;10122:30;-1:-1:-1;;;10168:18:1;;;10161:44;10222:18;;13801:41:0;9908:338:1;13801:41:0;-1:-1:-1;;;;;13858:19:0;;;;;;:11;:19;;;;;;;;13857:20;:47;;;;-1:-1:-1;;;;;;13882:22:0;;;;;;:11;:22;;;;;;;;13881:23;13857:47;:77;;;;-1:-1:-1;13929:4:0;;-1:-1:-1;;;;;13908:26:0;;;13929:4;;13908:26;;13857:77;:107;;;;-1:-1:-1;;;;;;13938:26:0;;5997:42;13938:26;;13857:107;13854:219;;;14022:14;;-1:-1:-1;;;;;13985:20:0;;;;;;:9;:20;;;;;;:32;;14010:6;13985:24;:32::i;:::-;13984:52;;13976:95;;;;-1:-1:-1;;;13976:95:0;;10453:2:1;13976:95:0;;;10435:21:1;10492:2;10472:18;;;10465:30;10531:32;10511:18;;;10504:60;10581:18;;13976:95:0;10251:354:1;13976:95:0;14096:4;;-1:-1:-1;;;;;14086:14:0;;;14096:4;;14086:14;14083:124;;14120:14;;14110:6;:24;;:47;;;-1:-1:-1;;;;;;14138:19:0;;;;;;:11;:19;;;;;;;;14110:47;:73;;;-1:-1:-1;;;;;;14161:22:0;;;;;;:11;:22;;;;;;;;14110:73;14102:103;;;;-1:-1:-1;;;14102:103:0;;10812:2:1;14102:103:0;;;10794:21:1;10851:2;10831:18;;;10824:30;-1:-1:-1;;;10870:18:1;;;10863:47;10927:18;;14102:103:0;10610:341:1;14102:103:0;14235:11;;14225:6;:21;;:44;;;-1:-1:-1;;;;;;14250:19:0;;;;;;:11;:19;;;;;;;;14225:44;:70;;;-1:-1:-1;;;;;;14273:22:0;;;;;;:11;:22;;;;;;;;14225:70;14217:100;;;;-1:-1:-1;;;14217:100:0;;10812:2:1;14217:100:0;;;10794:21:1;10851:2;10831:18;;;10824:30;-1:-1:-1;;;10870:18:1;;;10863:47;10927:18;;14217:100:0;10610:341:1;14217:100:0;14345:4;;-1:-1:-1;;;;;14332:17:0;;;14345:4;;14332:17;:41;;;;-1:-1:-1;;;;;;14354:19:0;;;;;;:11;:19;;;;;;;;14353:20;14332:41;14329:71;;;14396:1;14375:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;14329:71:0;14413:45;14432:6;14440:9;14451:6;14413:18;:45::i;:::-;14410:105;;;14460:29;14475:13;;14460:14;:29::i;:::-;14511:1;14491:9;:22;14410:105;-1:-1:-1;;;;;14545:17:0;;;;;;:9;:17;;;;;;:29;;14567:6;14545:21;:29::i;:::-;-1:-1:-1;;;;;14525:17:0;;;;;;:9;:17;;;;;:49;;;;14610:32;14535:6;14632:9;14610:13;:32::i;:::-;:78;;14682:6;14610:78;;;14645:34;14653:6;14661:9;14672:6;14645:7;:34::i;:::-;-1:-1:-1;;;;;14722:20:0;;;;;;:9;:20;;;;;;14585:103;;-1:-1:-1;14722:40:0;;14585:103;14722:24;:40::i;:::-;-1:-1:-1;;;;;14699:20:0;;;;;;;:9;:20;;;;;;;:63;;;;14778:43;;;;;;;;;;14806:14;1283:25:1;;1271:2;1256:18;;1137:177;14778:43:0;;;;;;;;13476:1353;13398:1431;;;:::o;1773:240::-;1893:7;1954:12;1946:6;;;;1938:29;;;;-1:-1:-1;;;1938:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1989:5:0;;;1773:240::o;10455:1063::-;5609:8;:15;;-1:-1:-1;;5609:15:0;5620:4;5609:15;;;;;;10592:14:::1;::::0;10574:12:::1;::::0;10550::::1;::::0;5609:8;;10549:66:::1;::::0;10613:1:::1;::::0;10550:57:::1;::::0;10592:14;;10550:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;10549:66::-;10526:89;;10626:32;10661:42;10690:12;10661:24;10672:12;;10661:6;:10;;:24;;;;:::i;:42::-;10626:77:::0;-1:-1:-1;10714:14:0::1;10731:36;:6:::0;10626:77;10731:10:::1;:36::i;:::-;10714:53:::0;-1:-1:-1;10803:21:0::1;10835:24;10714:53:::0;10835:16:::1;:24::i;:::-;10870:20;10893:41;:21;10919:14:::0;10893:25:::1;:41::i;:::-;10870:64;;10945:19;10966:48;10983:30;11000:12;;10983;:16;;:30;;;;:::i;:::-;10966:12:::0;;:16:::1;:48::i;:::-;10945:69;;11025:29;11057;11073:12;;11057:11;:15;;:29;;;;:::i;:::-;11025:61:::0;-1:-1:-1;11100:34:0;;11097:103:::1;;11136:61;11149:24;11175:21;11136:12;:61::i;:::-;11256:12;::::0;11210:20:::1;::::0;11233:36:::1;::::0;:18:::1;:11:::0;11249:1:::1;11233:15;:18::i;:36::-;11210:59:::0;-1:-1:-1;11283:16:0;;11280:73:::1;;11309:18;::::0;11301:50:::1;::::0;-1:-1:-1;;;;;11309:18:0;;::::1;::::0;11301:50;::::1;;;::::0;11338:12;;11309:18:::1;11301:50:::0;11309:18;11301:50;11338:12;11309:18;11301:50;::::1;;;;;;;;;;;;;;;;;;;;11280:73;11389:21;11424:28:::0;;11421:90:::1;;11462:20;::::0;11454:55:::1;::::0;-1:-1:-1;;;;;11462:20:0;;::::1;::::0;11454:55;::::1;;;::::0;11493:15;;11462:20:::1;11454:55:::0;11462:20;11454:55;11493:15;11462:20;11454:55;::::1;;;;;;;;;;;;;;;;;;;;11421:90;-1:-1:-1::0;;5629:8:0;:16;;-1:-1:-1;;5629:16:0;;;-1:-1:-1;;;;;;;;10455:1063:0:o;1243:98::-;1301:7;1328:5;1332:1;1328;:5;:::i;8320:403::-;8465:14;;8540:13;;8530:4;8422;7623:18;;;:9;:18;;;;;;8572:8;;8422:4;;8455:24;;;;-1:-1:-1;8512:41:0;;8572:8;;8571:9;:24;;;;-1:-1:-1;8584:11:0;;-1:-1:-1;;;8584:11:0;;;;8571:24;:42;;;;-1:-1:-1;8599:14:0;;-1:-1:-1;;;8599:14:0;;;;8571:42;:54;;;;;8617:8;8571:54;:78;;;;-1:-1:-1;;;;;;8630:19:0;;;;;;:11;:19;;;;;;;;8629:20;8571:78;:99;;;;-1:-1:-1;8666:4:0;;-1:-1:-1;;;;;8653:17:0;;;8666:4;;8653:17;8571:99;:126;;;;;8687:10;;8674:9;;:23;;8571:126;:144;;;;;8701:14;8571:144;8564:151;8320:403;-1:-1:-1;;;;;;8320:403:0:o;12319:160::-;-1:-1:-1;;;;;12425:19:0;;12400:4;12425:19;;;:11;:19;;;;;;;;12424:20;:47;;;;-1:-1:-1;;;;;;;12449:22:0;;;;;:11;:22;;;;;;;;12448:23;;12319:160;-1:-1:-1;12319:160:0:o;12800:590::-;12886:7;12942:1;12909:30;12921:6;12929:9;12909:11;:30::i;:::-;:34;12906:462;;;12955:17;12975:59;13003:30;13015:6;13023:9;13003:11;:30::i;:::-;12986:11;;12975:23;;:6;;:10;:23::i;:59::-;13090:4;13072:24;;;;:9;:24;;;;;;12955:79;;-1:-1:-1;13072:39:0;;12955:79;13072:28;:39::i;:::-;13063:4;13045:24;;;;:9;:24;;;;;;;:66;;;;13127:42;;-1:-1:-1;;;;;13127:42:0;;;;;;;13159:9;1283:25:1;;1271:2;1256:18;;1137:177;13127:42:0;;;;;;;;13201:1;13183:7;;:20;:64;;;;;13240:7;;13207:30;13219:6;13227:9;13207:11;:30::i;:::-;:40;13183:64;13180:148;;;13249:77;13267:4;5997:42;13289:36;13317:7;;13289:23;13300:11;;13289:6;:10;;:23;;;;:::i;:36::-;13249:9;:77::i;:::-;13345:21;:6;13356:9;13345:10;:21::i;:::-;13338:28;;;;;12906:462;-1:-1:-1;13376:6:0;12800:590;-1:-1:-1;;12800:590:0:o;11877:434::-;11967:16;;;11981:1;11967:16;;;;;;;;11943:21;;11967:16;;;;;;;;;;-1:-1:-1;11967:16:0;11943:40;;12012:4;11994;11999:1;11994:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11994:23:0;;;:7;;;;;;;;;;:23;;;;12038:6;;:13;;;-1:-1:-1;;;12038:13:0;;;;:6;;;;;:11;;:13;;;;;11994:7;;12038:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12028:4;12033:1;12028:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12028:23:0;;;:7;;;;;;;;;:23;12094:6;;12062:53;;12079:4;;12094:6;12103:11;12062:8;:53::i;:::-;12126:6;;:177;;-1:-1:-1;;;12126:177:0;;-1:-1:-1;;;;;12126:6:0;;;;:57;;:177;;12198:11;;12126:6;;12240:4;;12267;;12287:15;;12126:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11932:379;11877:434;:::o;11526:343::-;11639:6;;11607:53;;11624:4;;-1:-1:-1;;;;;11639:6:0;11648:11;11607:8;:53::i;:::-;11671:6;;11812:18;;11671:190;;-1:-1:-1;;;11671:190:0;;11734:4;11671:190;;;12873:51:1;12940:18;;;12933:34;;;11671:6:0;12983:18:1;;;12976:34;;;13026:18;;;13019:34;-1:-1:-1;;;;;11812:18:0;;;13069:19:1;;;13062:61;11845:15:0;13139:19:1;;;13132:35;11671:6:0;;;:22;;11701:9;;12845:19:1;;11671:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11526:343;;:::o;12487:305::-;-1:-1:-1;;;;;12589:13:0;;12566:7;12589:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;12606:16:0;;;;;;:5;:16;;;;;;;;12589:33;12586:76;;;12631:11;;:29;;12655:3;12631:15;:29::i;:::-;12624:36;;;;12586:76;12688:4;;-1:-1:-1;;;;;12688:4:0;;;12675:17;;;;12672:38;;-1:-1:-1;12701:7:0;;12694:14;;12672:38;12733:4;;-1:-1:-1;;;;;12733:4:0;;;12723:14;;;;12720:36;;-1:-1:-1;12746:8:0;;12739:15;;12720:36;-1:-1:-1;12773:11:0;;12487:305;;;;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;492:70;437:131;:::o;573:367::-;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1319:508::-;1396:6;1404;1412;1465:2;1453:9;1444:7;1440:23;1436:32;1433:52;;;1481:1;1478;1471:12;1433:52;1520:9;1507:23;1539:31;1564:5;1539:31;:::i;:::-;1589:5;-1:-1:-1;1646:2:1;1631:18;;1618:32;1659:33;1618:32;1659:33;:::i;:::-;1319:508;;1711:7;;-1:-1:-1;;;1791:2:1;1776:18;;;;1763:32;;1319:508::o;1832:247::-;1891:6;1944:2;1932:9;1923:7;1919:23;1915:32;1912:52;;;1960:1;1957;1950:12;1912:52;1999:9;1986:23;2018:31;2043:5;2018:31;:::i;2273:118::-;2359:5;2352:13;2345:21;2338:5;2335:32;2325:60;;2381:1;2378;2371:12;2396:382;2461:6;2469;2522:2;2510:9;2501:7;2497:23;2493:32;2490:52;;;2538:1;2535;2528:12;2490:52;2577:9;2564:23;2596:31;2621:5;2596:31;:::i;:::-;2646:5;-1:-1:-1;2703:2:1;2688:18;;2675:32;2716:30;2675:32;2716:30;:::i;:::-;2765:7;2755:17;;;2396:382;;;;;:::o;2783:466::-;2860:6;2868;2876;2929:2;2917:9;2908:7;2904:23;2900:32;2897:52;;;2945:1;2942;2935:12;2897:52;-1:-1:-1;;2990:23:1;;;3110:2;3095:18;;3082:32;;-1:-1:-1;3213:2:1;3198:18;;;3185:32;;2783:466;-1:-1:-1;2783:466:1:o;3254:950::-;3367:6;3375;3383;3391;3399;3407;3415;3468:3;3456:9;3447:7;3443:23;3439:33;3436:53;;;3485:1;3482;3475:12;3436:53;-1:-1:-1;;3530:23:1;;;3650:2;3635:18;;3622:32;;-1:-1:-1;3753:2:1;3738:18;;3725:32;;3856:2;3841:18;;3828:32;;-1:-1:-1;3959:3:1;3944:19;;3931:33;;-1:-1:-1;4063:3:1;4048:19;;4035:33;;-1:-1:-1;4167:3:1;4152:19;4139:33;;-1:-1:-1;3254:950:1;-1:-1:-1;3254:950:1:o;4417:388::-;4485:6;4493;4546:2;4534:9;4525:7;4521:23;4517:32;4514:52;;;4562:1;4559;4552:12;4514:52;4601:9;4588:23;4620:31;4645:5;4620:31;:::i;:::-;4670:5;-1:-1:-1;4727:2:1;4712:18;;4699:32;4740:33;4699:32;4740:33;:::i;5070:329::-;5272:2;5254:21;;;5311:1;5291:18;;;5284:29;-1:-1:-1;;;5344:2:1;5329:18;;5322:36;5390:2;5375:18;;5070:329::o;5404:230::-;5474:6;5527:2;5515:9;5506:7;5502:23;5498:32;5495:52;;;5543:1;5540;5533:12;5495:52;-1:-1:-1;5588:16:1;;5404:230;-1:-1:-1;5404:230:1:o;5918:245::-;5985:6;6038:2;6026:9;6017:7;6013:23;6009:32;6006:52;;;6054:1;6051;6044:12;6006:52;6086:9;6080:16;6105:28;6127:5;6105:28;:::i;8020:127::-;8081:10;8076:3;8072:20;8069:1;8062:31;8112:4;8109:1;8102:15;8136:4;8133:1;8126:15;8152:168;8225:9;;;8256;;8273:15;;;8267:22;;8253:37;8243:71;;8294:18;;:::i;8325:217::-;8365:1;8391;8381:132;;8435:10;8430:3;8426:20;8423:1;8416:31;8470:4;8467:1;8460:15;8498:4;8495:1;8488:15;8381:132;-1:-1:-1;8527:9:1;;8325:217::o;8547:128::-;8614:9;;;8635:11;;;8632:37;;;8649:18;;:::i;10956:125::-;11021:9;;;11042:10;;;11039:36;;;11055:18;;:::i;11218:127::-;11279:10;11274:3;11270:20;11267:1;11260:31;11310:4;11307:1;11300:15;11334:4;11331:1;11324:15;11350:251;11420:6;11473:2;11461:9;11452:7;11448:23;11444:32;11441:52;;;11489:1;11486;11479:12;11441:52;11521:9;11515:16;11540:31;11565:5;11540:31;:::i;11606:959::-;11868:4;11916:3;11905:9;11901:19;11947:6;11936:9;11929:25;11990:6;11985:2;11974:9;11970:18;11963:34;12033:3;12028:2;12017:9;12013:18;12006:31;12057:6;12092;12086:13;12123:6;12115;12108:22;12161:3;12150:9;12146:19;12139:26;;12200:2;12192:6;12188:15;12174:29;;12221:1;12231:195;12245:6;12242:1;12239:13;12231:195;;;12310:13;;-1:-1:-1;;;;;12306:39:1;12294:52;;12375:2;12401:15;;;;12366:12;;;;12342:1;12260:9;12231:195;;;-1:-1:-1;;;;;;;12482:32:1;;;;12477:2;12462:18;;12455:60;-1:-1:-1;;12546:3:1;12531:19;12524:35;12443:3;11606:959;-1:-1:-1;;;11606:959:1:o;13178:456::-;13266:6;13274;13282;13335:2;13323:9;13314:7;13310:23;13306:32;13303:52;;;13351:1;13348;13341:12;13303:52;-1:-1:-1;;13396:16:1;;13502:2;13487:18;;13481:25;13598:2;13583:18;;;13577:25;13396:16;;13481:25;;-1:-1:-1;13577:25:1;13178:456;-1:-1:-1;13178:456:1:o

Swarm Source

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