ETH Price: $3,477.13 (-1.16%)
Gas: 3 Gwei

Token

King of BrainRot (G-Toilet)
 

Overview

Max Total Supply

4,200,000,000 G-Toilet

Holders

17

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,442,975,389.908408473 G-Toilet

Value
$0.00
0xdc8bb4779cb217acef7ce0e84a3a3b2073848df6
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:
KingofBrainRot

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-05
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.26;


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 KingofBrainRot is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'King of BrainRot';
    string private constant _symbol = 'G-Toilet';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 4200000000 * (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 = 1000;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2100;
    uint256 private sellFee = 1900;
    uint256 private transferFee = 2300;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0xDc8Bb4779CB217acEF7Ce0e84A3A3b2073848Df6; 
    address internal marketing_receiver = 0xDc8Bb4779CB217acEF7Ce0e84A3A3b2073848Df6;
    address internal liquidity_receiver = 0xDc8Bb4779CB217acEF7Ce0e84A3A3b2073848Df6;
    uint256 public _maxTxAmount = ( _totalSupply * 80 ) / 10000;
    uint256 public _maxSellAmount = ( _totalSupply * 80 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 80 ) / 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 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 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 setContractSwapSettings(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 setTax(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 RemoveLimits(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 setInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true;
    }

    function setBot(address[] calldata addresses, bool _enabled) external onlyOwner {
        for(uint i=0; i < addresses.length; i++){
        isBot[addresses[i]] = _enabled; }
    }

    function manualSwap() external onlyOwner {
        swapAndLiquify(swapThreshold);
    }

    function ClearStuckToken(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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"ClearStuckToken","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":"RemoveLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxSellAmount","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":"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":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setContractSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"setInternalAddresses","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":"setTax","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"}]

60806040526100106009600a610488565b61001e9063fa56ea0061049d565b60018181556007805461ffff60a01b1916600160a81b179055600a55620186a09061004b906103e861049d565b61005591906104b4565b600b55620186a0600154600a61006b919061049d565b61007591906104b4565b600c555f600d819055600e8190556103e8600f5560105561083460115561076c6012556108fc60135561271060148190556015805473dc8bb4779cb217acef7ce0e84a3a3b2073848df66001600160a01b03199182168117909255601680548216831790556017805490911690911790556001546100f490605061049d565b6100fe91906104b4565b6018556127106001546050610113919061049d565b61011d91906104b4565b6019556127106001546050610132919061049d565b61013c91906104b4565b601a5534801561014a575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d291906104d3565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561021d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024191906104d3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561028b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102af91906104d3565b600680546001600160a01b038581166001600160a01b031992831617909255600780548484169216919091179055305f908152600460209081526040808320805460ff19908116600190811790925560175486168552828520805482168317905560165486168552828520805482168317905560155490951684528184208054861682179055338085528285208054909616821790955554600283528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506104f9565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156103de578085048111156103c2576103c261038f565b60018416156103d057908102905b60019390931c9280026103a7565b935093915050565b5f826103f457506001610482565b8161040057505f610482565b816001811461041657600281146104205761043c565b6001915050610482565b60ff8411156104315761043161038f565b50506001821b610482565b5060208310610133831016604e8410600b841016171561045f575081810a610482565b61046b5f1984846103a3565b805f190482111561047e5761047e61038f565b0290505b92915050565b5f61049660ff8416836103e6565b9392505050565b80820281158282048414176104825761048261038f565b5f826104ce57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156104e3575f80fd5b81516001600160a01b0381168114610496575f80fd5b611d74806105065f395ff3fe60806040526004361061017e575f3560e01c806378109e54116100cd578063997f92ff11610087578063a9059cbb11610062578063a9059cbb1461048f578063b5c9c4e9146104ae578063dd62ed3e146104cd578063f2fde38b14610511575f80fd5b8063997f92ff146104325780639d8740cb14610451578063a8aa1b3114610470575f80fd5b806378109e54146103745780637cca52fe146103895780637d1db4a51461039e578063893d20e8146103b35780639213c358146103e357806395d89b4114610402575f80fd5b80632f54bf6e116101385780633f4218e0116101135780633f4218e0146102df57806348ff2b8b1461030d57806351bc3c851461032c57806370a0823114610340575f80fd5b80632f54bf6e14610278578063313ce567146102a557806339efcf9e146102c0575f80fd5b806306fdde0314610189578063095ea7b3146101d357806318160ddd1461020257806323b872dd14610224578063293230b8146102435780632be2dfd414610259575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b5060408051808201909152601081526f12da5b99c81bd988109c985a5b949bdd60821b60208201525b6040516101ca919061191c565b60405180910390f35b3480156101de575f80fd5b506101f26101ed366004611968565b610530565b60405190151581526020016101ca565b34801561020d575f80fd5b50610216610546565b6040519081526020016101ca565b34801561022f575f80fd5b506101f261023e366004611992565b6105b6565b34801561024e575f80fd5b5061025761061e565b005b348015610264575f80fd5b506102576102733660046119d0565b610665565b348015610283575f80fd5b506101f26102923660046119f9565b5f546001600160a01b0391821691161490565b3480156102b0575f80fd5b50604051600981526020016101ca565b3480156102cb575f80fd5b506102576102da366004611a21565b6107a1565b3480156102ea575f80fd5b506101f26102f93660046119f9565b60046020525f908152604090205460ff1681565b348015610318575f80fd5b50610257610327366004611aa3565b610834565b348015610337575f80fd5b50610257610887565b34801561034b575f80fd5b5061021661035a3660046119f9565b6001600160a01b03165f9081526002602052604090205490565b34801561037f575f80fd5b50610216601a5481565b348015610394575f80fd5b5061021660195481565b3480156103a9575f80fd5b5061021660185481565b3480156103be575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101ca565b3480156103ee575f80fd5b506102576103fd366004611ada565b6108bd565b34801561040d575f80fd5b5060408051808201909152600881526711cb551bda5b195d60c21b60208201526101bd565b34801561043d575f80fd5b5061025761044c366004611968565b610961565b34801561045c575f80fd5b5061025761046b3660046119d0565b610a75565b34801561047b575f80fd5b506007546103cb906001600160a01b031681565b34801561049a575f80fd5b506101f26104a9366004611968565b610ada565b3480156104b9575f80fd5b506102576104c8366004611b17565b610ae6565b3480156104d8575f80fd5b506102166104e7366004611b5e565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561051c575f80fd5b5061025761052b3660046119f9565b610bdc565b5f61053c338484610c58565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926105b19290916105ab9190610d7b565b90610d7b565b905090565b5f6105c2848484610d86565b610613843361060e85604051806060016040528060288152602001611d17602891396001600160a01b038a165f90815260036020908152604080832033845290915290205491906112c2565b610c58565b5060015b9392505050565b5f546001600160a01b031633146106505760405162461bcd60e51b815260040161064790611b8a565b60405180910390fd5b6007805460ff60a01b1916600160a01b179055565b5f546001600160a01b0316331461068e5760405162461bcd60e51b815260040161064790611b8a565b5f6106b06127106106aa866001546112ed90919063ffffffff16565b906112f8565b90505f6106ce6127106106aa866001546112ed90919063ffffffff16565b90505f6106ec6127106106aa866001546112ed90919063ffffffff16565b60188490556019839055601a81905590505f6107176103e86106aa6005610711610546565b906112ed565b90508084101580156107295750808310155b80156107355750808210155b6107985760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610647565b50505050505050565b5f546001600160a01b031633146107ca5760405162461bcd60e51b815260040161064790611b8a565b5f5b8281101561082e578160055f8686858181106107ea576107ea611baa565b90506020020160208101906107ff91906119f9565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016107cc565b50505050565b5f546001600160a01b0316331461085d5760405162461bcd60e51b815260040161064790611b8a565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146108b05760405162461bcd60e51b815260040161064790611b8a565b6108bb600b54611303565b565b5f546001600160a01b031633146108e65760405162461bcd60e51b815260040161064790611b8a565b601680546001600160a01b039485166001600160a01b0319918216811790925560178054948616948216851790556015805493909516921682179093555f92835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b5f546001600160a01b0316331461098a5760405162461bcd60e51b815260040161064790611b8a565b6040516370a0823160e01b81523060048201525f906109ff906064906106aa9085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156109db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107119190611bbe565b60155460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af1158015610a51573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082e9190611bd5565b5f546001600160a01b03163314610a9e5760405162461bcd60e51b815260040161064790611b8a565b600a839055600154610ab990620186a0906106aa90856112ed565b600b55600154610ad290620186a0906106aa90846112ed565b600c55505050565b5f61053c338484610d86565b5f546001600160a01b03163314610b0f5760405162461bcd60e51b815260040161064790611b8a565b600d879055600e8690556010859055600f849055601183905560128290556013819055601454610b409060016112f8565b60115411158015610b605750601454610b5a9060016112f8565b60125411155b8015610b7b5750601454610b759060016112f8565b60135411155b6107985760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610647565b5f546001600160a01b03163314610c055760405162461bcd60e51b815260040161064790611b8a565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610cba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610647565b6001600160a01b038216610d1b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610647565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6106178284611c04565b6001600160a01b038316610dea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610647565b6001600160a01b038216610e4c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610647565b6001600160a01b0383165f90815260026020526040902054811115610ecd5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610647565b6001600160a01b0383165f9081526004602052604090205460ff16158015610f0d57506001600160a01b0382165f9081526004602052604090205460ff16155b15610f5c57600754600160a01b900460ff16610f5c5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610647565b6001600160a01b0383165f9081526004602052604090205460ff16158015610f9c57506001600160a01b0382165f9081526004602052604090205460ff16155b8015610fb657506007546001600160a01b03838116911614155b8015610fcd57506001600160a01b03821661dead14155b1561104557601a546001600160a01b0383165f90815260026020526040902054610ff79083611473565b11156110455760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610647565b6007546001600160a01b038481169116146110e4576019548111158061108257506001600160a01b0383165f9081526004602052604090205460ff165b806110a457506001600160a01b0382165f9081526004602052604090205460ff165b6110e45760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610647565b6018548111158061110c57506001600160a01b0383165f9081526004602052604090205460ff165b8061112e57506001600160a01b0382165f9081526004602052604090205460ff165b61116e5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610647565b6007546001600160a01b0383811691161480156111a357506001600160a01b0383165f9081526004602052604090205460ff16155b156111c057600160085f8282546111ba9190611c17565b90915550505b6111cb83838361147e565b156111e0576111db600b54611303565b5f6008555b6001600160a01b0383165f908152600260205260409020546112029082610d7b565b6001600160a01b0384165f908152600260205260408120919091556112278484611536565b611231578161123c565b61123c84848461157a565b6001600160a01b0384165f908152600260205260409020549091506112619082611473565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112b49085815260200190565b60405180910390a350505050565b5f81848411156112e55760405162461bcd60e51b8152600401610647919061191c565b505050900390565b5f6106178284611c2a565b5f6106178284611c41565b6009805460ff19166001908117909155600f54600e54600d545f9361133c93600293610711939192611336928391611473565b90611473565b90505f611358826106aa600d54866112ed90919063ffffffff16565b90505f6113658483610d7b565b9050476113718261167c565b5f61137c4783610d7b565b90505f61139e611397600d5488610d7b90919063ffffffff16565b83906112f8565b90505f6113b6600d54836112ed90919063ffffffff16565b905080156113c8576113c886826117cc565b600e545f906113dc906107118560026112ed565b9050801561141d576016546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561141b573d5f803e3d5ffd5b505b47801561145d576015546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561145b573d5f803e3d5ffd5b505b50506009805460ff191690555050505050505050565b5f6106178284611c17565b600c54600b54305f9081526002602052604081205460095491938510159211159060ff161580156114b85750600754600160a81b900460ff165b80156114cd5750600754600160a01b900460ff165b80156114d65750815b80156114fa57506001600160a01b0386165f9081526004602052604090205460ff16155b801561151357506007546001600160a01b038681169116145b80156115235750600a5460085410155b801561152c5750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff161580156106175750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f80611586858561187d565b1115611675575f6115a861159a868661187d565b6014546107119086906112f8565b305f908152600260205260409020549091506115c49082611473565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116149085815260200190565b60405180910390a35f6010541180156116375750601054611635868661187d565b115b15611663576116633061dead61165e601054610711601454896112f890919063ffffffff16565b610d86565b61166d8382610d7b565b915050610617565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106116af576116af611baa565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611706573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172a9190611c60565b8160018151811061173d5761173d611baa565b6001600160a01b0392831660209182029290920101526006546117639130911684610c58565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061179b9085905f90869030904290600401611c7b565b5f604051808303815f87803b1580156117b2575f80fd5b505af11580156117c4573d5f803e3d5ffd5b505050505050565b6006546117e49030906001600160a01b031684610c58565b60065460175460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611851573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118769190611ceb565b5050505050565b6001600160a01b0382165f9081526005602052604081205460ff16806118ba57506001600160a01b0382165f9081526005602052604090205460ff165b156118d4576014546118cd906064610d7b565b9050610540565b6007546001600160a01b03908116908316036118f35750601254610540565b6007546001600160a01b03908116908416036119125750601154610540565b5060135492915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611965575f80fd5b50565b5f8060408385031215611979575f80fd5b823561198481611951565b946020939093013593505050565b5f805f606084860312156119a4575f80fd5b83356119af81611951565b925060208401356119bf81611951565b929592945050506040919091013590565b5f805f606084860312156119e2575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611a09575f80fd5b813561061781611951565b8015158114611965575f80fd5b5f805f60408486031215611a33575f80fd5b833567ffffffffffffffff811115611a49575f80fd5b8401601f81018613611a59575f80fd5b803567ffffffffffffffff811115611a6f575f80fd5b8660208260051b8401011115611a83575f80fd5b602091820194509250840135611a9881611a14565b809150509250925092565b5f8060408385031215611ab4575f80fd5b8235611abf81611951565b91506020830135611acf81611a14565b809150509250929050565b5f805f60608486031215611aec575f80fd5b8335611af781611951565b92506020840135611b0781611951565b91506040840135611a9881611951565b5f805f805f805f60e0888a031215611b2d575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215611b6f575f80fd5b8235611b7a81611951565b91506020830135611acf81611951565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611bce575f80fd5b5051919050565b5f60208284031215611be5575f80fd5b815161061781611a14565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561054057610540611bf0565b8082018082111561054057610540611bf0565b808202811582820484141761054057610540611bf0565b5f82611c5b57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611c70575f80fd5b815161061781611951565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611ccb5783516001600160a01b0316835260209384019390920191600101611ca4565b50506001600160a01b039590951660608401525050608001529392505050565b5f805f60608486031215611cfd575f80fd5b505081516020830151604090930151909492935091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205c1f95dafc2e346c7a039329064969cbed205d64676a7b7be007ca5b35fae49464736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061017e575f3560e01c806378109e54116100cd578063997f92ff11610087578063a9059cbb11610062578063a9059cbb1461048f578063b5c9c4e9146104ae578063dd62ed3e146104cd578063f2fde38b14610511575f80fd5b8063997f92ff146104325780639d8740cb14610451578063a8aa1b3114610470575f80fd5b806378109e54146103745780637cca52fe146103895780637d1db4a51461039e578063893d20e8146103b35780639213c358146103e357806395d89b4114610402575f80fd5b80632f54bf6e116101385780633f4218e0116101135780633f4218e0146102df57806348ff2b8b1461030d57806351bc3c851461032c57806370a0823114610340575f80fd5b80632f54bf6e14610278578063313ce567146102a557806339efcf9e146102c0575f80fd5b806306fdde0314610189578063095ea7b3146101d357806318160ddd1461020257806323b872dd14610224578063293230b8146102435780632be2dfd414610259575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b5060408051808201909152601081526f12da5b99c81bd988109c985a5b949bdd60821b60208201525b6040516101ca919061191c565b60405180910390f35b3480156101de575f80fd5b506101f26101ed366004611968565b610530565b60405190151581526020016101ca565b34801561020d575f80fd5b50610216610546565b6040519081526020016101ca565b34801561022f575f80fd5b506101f261023e366004611992565b6105b6565b34801561024e575f80fd5b5061025761061e565b005b348015610264575f80fd5b506102576102733660046119d0565b610665565b348015610283575f80fd5b506101f26102923660046119f9565b5f546001600160a01b0391821691161490565b3480156102b0575f80fd5b50604051600981526020016101ca565b3480156102cb575f80fd5b506102576102da366004611a21565b6107a1565b3480156102ea575f80fd5b506101f26102f93660046119f9565b60046020525f908152604090205460ff1681565b348015610318575f80fd5b50610257610327366004611aa3565b610834565b348015610337575f80fd5b50610257610887565b34801561034b575f80fd5b5061021661035a3660046119f9565b6001600160a01b03165f9081526002602052604090205490565b34801561037f575f80fd5b50610216601a5481565b348015610394575f80fd5b5061021660195481565b3480156103a9575f80fd5b5061021660185481565b3480156103be575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101ca565b3480156103ee575f80fd5b506102576103fd366004611ada565b6108bd565b34801561040d575f80fd5b5060408051808201909152600881526711cb551bda5b195d60c21b60208201526101bd565b34801561043d575f80fd5b5061025761044c366004611968565b610961565b34801561045c575f80fd5b5061025761046b3660046119d0565b610a75565b34801561047b575f80fd5b506007546103cb906001600160a01b031681565b34801561049a575f80fd5b506101f26104a9366004611968565b610ada565b3480156104b9575f80fd5b506102576104c8366004611b17565b610ae6565b3480156104d8575f80fd5b506102166104e7366004611b5e565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561051c575f80fd5b5061025761052b3660046119f9565b610bdc565b5f61053c338484610c58565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926105b19290916105ab9190610d7b565b90610d7b565b905090565b5f6105c2848484610d86565b610613843361060e85604051806060016040528060288152602001611d17602891396001600160a01b038a165f90815260036020908152604080832033845290915290205491906112c2565b610c58565b5060015b9392505050565b5f546001600160a01b031633146106505760405162461bcd60e51b815260040161064790611b8a565b60405180910390fd5b6007805460ff60a01b1916600160a01b179055565b5f546001600160a01b0316331461068e5760405162461bcd60e51b815260040161064790611b8a565b5f6106b06127106106aa866001546112ed90919063ffffffff16565b906112f8565b90505f6106ce6127106106aa866001546112ed90919063ffffffff16565b90505f6106ec6127106106aa866001546112ed90919063ffffffff16565b60188490556019839055601a81905590505f6107176103e86106aa6005610711610546565b906112ed565b90508084101580156107295750808310155b80156107355750808210155b6107985760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610647565b50505050505050565b5f546001600160a01b031633146107ca5760405162461bcd60e51b815260040161064790611b8a565b5f5b8281101561082e578160055f8686858181106107ea576107ea611baa565b90506020020160208101906107ff91906119f9565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016107cc565b50505050565b5f546001600160a01b0316331461085d5760405162461bcd60e51b815260040161064790611b8a565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146108b05760405162461bcd60e51b815260040161064790611b8a565b6108bb600b54611303565b565b5f546001600160a01b031633146108e65760405162461bcd60e51b815260040161064790611b8a565b601680546001600160a01b039485166001600160a01b0319918216811790925560178054948616948216851790556015805493909516921682179093555f92835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b5f546001600160a01b0316331461098a5760405162461bcd60e51b815260040161064790611b8a565b6040516370a0823160e01b81523060048201525f906109ff906064906106aa9085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156109db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107119190611bbe565b60155460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af1158015610a51573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082e9190611bd5565b5f546001600160a01b03163314610a9e5760405162461bcd60e51b815260040161064790611b8a565b600a839055600154610ab990620186a0906106aa90856112ed565b600b55600154610ad290620186a0906106aa90846112ed565b600c55505050565b5f61053c338484610d86565b5f546001600160a01b03163314610b0f5760405162461bcd60e51b815260040161064790611b8a565b600d879055600e8690556010859055600f849055601183905560128290556013819055601454610b409060016112f8565b60115411158015610b605750601454610b5a9060016112f8565b60125411155b8015610b7b5750601454610b759060016112f8565b60135411155b6107985760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610647565b5f546001600160a01b03163314610c055760405162461bcd60e51b815260040161064790611b8a565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610cba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610647565b6001600160a01b038216610d1b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610647565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6106178284611c04565b6001600160a01b038316610dea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610647565b6001600160a01b038216610e4c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610647565b6001600160a01b0383165f90815260026020526040902054811115610ecd5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610647565b6001600160a01b0383165f9081526004602052604090205460ff16158015610f0d57506001600160a01b0382165f9081526004602052604090205460ff16155b15610f5c57600754600160a01b900460ff16610f5c5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610647565b6001600160a01b0383165f9081526004602052604090205460ff16158015610f9c57506001600160a01b0382165f9081526004602052604090205460ff16155b8015610fb657506007546001600160a01b03838116911614155b8015610fcd57506001600160a01b03821661dead14155b1561104557601a546001600160a01b0383165f90815260026020526040902054610ff79083611473565b11156110455760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610647565b6007546001600160a01b038481169116146110e4576019548111158061108257506001600160a01b0383165f9081526004602052604090205460ff165b806110a457506001600160a01b0382165f9081526004602052604090205460ff165b6110e45760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610647565b6018548111158061110c57506001600160a01b0383165f9081526004602052604090205460ff165b8061112e57506001600160a01b0382165f9081526004602052604090205460ff165b61116e5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610647565b6007546001600160a01b0383811691161480156111a357506001600160a01b0383165f9081526004602052604090205460ff16155b156111c057600160085f8282546111ba9190611c17565b90915550505b6111cb83838361147e565b156111e0576111db600b54611303565b5f6008555b6001600160a01b0383165f908152600260205260409020546112029082610d7b565b6001600160a01b0384165f908152600260205260408120919091556112278484611536565b611231578161123c565b61123c84848461157a565b6001600160a01b0384165f908152600260205260409020549091506112619082611473565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112b49085815260200190565b60405180910390a350505050565b5f81848411156112e55760405162461bcd60e51b8152600401610647919061191c565b505050900390565b5f6106178284611c2a565b5f6106178284611c41565b6009805460ff19166001908117909155600f54600e54600d545f9361133c93600293610711939192611336928391611473565b90611473565b90505f611358826106aa600d54866112ed90919063ffffffff16565b90505f6113658483610d7b565b9050476113718261167c565b5f61137c4783610d7b565b90505f61139e611397600d5488610d7b90919063ffffffff16565b83906112f8565b90505f6113b6600d54836112ed90919063ffffffff16565b905080156113c8576113c886826117cc565b600e545f906113dc906107118560026112ed565b9050801561141d576016546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561141b573d5f803e3d5ffd5b505b47801561145d576015546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561145b573d5f803e3d5ffd5b505b50506009805460ff191690555050505050505050565b5f6106178284611c17565b600c54600b54305f9081526002602052604081205460095491938510159211159060ff161580156114b85750600754600160a81b900460ff165b80156114cd5750600754600160a01b900460ff165b80156114d65750815b80156114fa57506001600160a01b0386165f9081526004602052604090205460ff16155b801561151357506007546001600160a01b038681169116145b80156115235750600a5460085410155b801561152c5750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff161580156106175750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f80611586858561187d565b1115611675575f6115a861159a868661187d565b6014546107119086906112f8565b305f908152600260205260409020549091506115c49082611473565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116149085815260200190565b60405180910390a35f6010541180156116375750601054611635868661187d565b115b15611663576116633061dead61165e601054610711601454896112f890919063ffffffff16565b610d86565b61166d8382610d7b565b915050610617565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106116af576116af611baa565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611706573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172a9190611c60565b8160018151811061173d5761173d611baa565b6001600160a01b0392831660209182029290920101526006546117639130911684610c58565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061179b9085905f90869030904290600401611c7b565b5f604051808303815f87803b1580156117b2575f80fd5b505af11580156117c4573d5f803e3d5ffd5b505050505050565b6006546117e49030906001600160a01b031684610c58565b60065460175460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611851573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118769190611ceb565b5050505050565b6001600160a01b0382165f9081526005602052604081205460ff16806118ba57506001600160a01b0382165f9081526005602052604090205460ff165b156118d4576014546118cd906064610d7b565b9050610540565b6007546001600160a01b03908116908316036118f35750601254610540565b6007546001600160a01b03908116908416036119125750601154610540565b5060135492915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611965575f80fd5b50565b5f8060408385031215611979575f80fd5b823561198481611951565b946020939093013593505050565b5f805f606084860312156119a4575f80fd5b83356119af81611951565b925060208401356119bf81611951565b929592945050506040919091013590565b5f805f606084860312156119e2575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611a09575f80fd5b813561061781611951565b8015158114611965575f80fd5b5f805f60408486031215611a33575f80fd5b833567ffffffffffffffff811115611a49575f80fd5b8401601f81018613611a59575f80fd5b803567ffffffffffffffff811115611a6f575f80fd5b8660208260051b8401011115611a83575f80fd5b602091820194509250840135611a9881611a14565b809150509250925092565b5f8060408385031215611ab4575f80fd5b8235611abf81611951565b91506020830135611acf81611a14565b809150509250929050565b5f805f60608486031215611aec575f80fd5b8335611af781611951565b92506020840135611b0781611951565b91506040840135611a9881611951565b5f805f805f805f60e0888a031215611b2d575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215611b6f575f80fd5b8235611b7a81611951565b91506020830135611acf81611951565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611bce575f80fd5b5051919050565b5f60208284031215611be5575f80fd5b815161061781611a14565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561054057610540611bf0565b8082018082111561054057610540611bf0565b808202811582820484141761054057610540611bf0565b5f82611c5b57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611c70575f80fd5b815161061781611951565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611ccb5783516001600160a01b0316835260209384019390920191600101611ca4565b50506001600160a01b039590951660608401525050608001529392505050565b5f805f60608486031215611cfd575f80fd5b505081516020830151604090930151909492935091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205c1f95dafc2e346c7a039329064969cbed205d64676a7b7be007ca5b35fae49464736f6c634300081a0033

Deployed Bytecode Sourcemap

4670:11347:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7123:67;;;;;;;;;;-1:-1:-1;7183:5:0;;;;;;;;;;;;-1:-1:-1;;;7183:5:0;;;;7123:67;;;;;;;:::i;:::-;;;;;;;;8004:133;;;;;;;;;;-1:-1:-1;8004:133:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;8004:133:0;945:187:1;8143:132:0;;;;;;;;;;;;;:::i;:::-;;;1283:25:1;;;1271:2;1256:18;8143:132:0;1137:177:1;15360:309:0;;;;;;;;;;-1:-1:-1;15360:309:0;;;;;:::i;:::-;;:::i;7346:67::-;;;;;;;;;;;;;:::i;:::-;;9533:548;;;;;;;;;;-1:-1:-1;9533:548:0;;;;;:::i;:::-;;:::i;3574:87::-;;;;;;;;;;-1:-1:-1;3574:87:0;;;;;:::i;:::-;3629:4;3654:5;-1:-1:-1;;;;;3643:16:0;;;3654:5;;3643:16;;3574:87;7273:67;;;;;;;;;;-1:-1:-1;7273:67:0;;4896:1;2697:36:1;;2685:2;2670:18;7273:67:0;2555:184:1;10435:182:0;;;;;;;;;;-1:-1:-1;10435:182:0;;;;;:::i;:::-;;:::i;5093:44::-;;;;;;;;;;-1:-1:-1;5093:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7890:108;;;;;;;;;;-1:-1:-1;7890:108:0;;;;;:::i;:::-;;:::i;10625:89::-;;;;;;;;;;;;;:::i;7503:103::-;;;;;;;;;;-1:-1:-1;7503:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7586:18:0;7569:7;7586:18;;;:9;:18;;;;;;;7503:103;6407:62;;;;;;;;;;;;;;;;6339:61;;;;;;;;;;;;;;;;6273:59;;;;;;;;;;;;;;;;7419:78;;;;;;;;;;-1:-1:-1;7471:7:0;7489:5;-1:-1:-1;;;;;7489:5:0;7419:78;;;-1:-1:-1;;;;;4168:32:1;;;4150:51;;4138:2;4123:18;7419:78:0;4004:203:1;10089:338:0;;;;;;;;;;-1:-1:-1;10089:338:0;;;;;:::i;:::-;;:::i;7196:71::-;;;;;;;;;;-1:-1:-1;7258:7:0;;;;;;;;;;;;-1:-1:-1;;;7258:7:0;;;;7196:71;;10722:246;;;;;;;;;;-1:-1:-1;10722:246:0;;;;;:::i;:::-;;:::i;8694:319::-;;;;;;;;;;-1:-1:-1;8694:319:0;;;;;:::i;:::-;;:::i;5211:19::-;;;;;;;;;;-1:-1:-1;5211:19:0;;;;-1:-1:-1;;;;;5211:19:0;;;7612:139;;;;;;;;;;-1:-1:-1;7612:139:0;;;;;:::i;:::-;;:::i;9021:504::-;;;;;;;;;;-1:-1:-1;9021:504:0;;;;;:::i;:::-;;:::i;7757:127::-;;;;;;;;;;-1:-1:-1;7757:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7855:18:0;;;7838:7;7855:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7757:127;3667:111;;;;;;;;;;-1:-1:-1;3667:111:0;;;;;:::i;:::-;;:::i;8004:133::-;8079:4;8086:37;8095:10;8107:7;8116:6;8086:8;:37::i;:::-;-1:-1:-1;8131:4:0;8004:133;;;;;:::o;8143:132::-;7586:9;:18;;;;5960:42;8196:7;7586:18;;;;;8213:12;;8196:7;;8213:60;;7586:18;;8213:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8206:67;;8143:132;:::o;15360:309::-;15458:4;15475:36;15485:6;15493:9;15504:6;15475:9;:36::i;:::-;15522:117;15531:6;15539:10;15551:87;15587:6;15551:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15551:19:0;;;;;;:11;:19;;;;;;;;15571:10;15551:31;;;;;;;;;:87;:35;:87::i;:::-;15522:8;:117::i;:::-;-1:-1:-1;15657:4:0;15360:309;;;;;;:::o;7346:67::-;3629:4;3654:5;-1:-1:-1;;;;;3654:5:0;3541:10;3643:16;3525:38;;;;-1:-1:-1;;;3525:38:0;;;;;;;:::i;:::-;;;;;;;;;7390:14:::1;:21:::0;;-1:-1:-1;;;;7390:21:0::1;-1:-1:-1::0;;;7390:21:0::1;::::0;;7346:67::o;9533:548::-;3629:4;3654:5;-1:-1:-1;;;;;3654:5:0;3541:10;3643:16;3525:38;;;;-1:-1:-1;;;3525:38:0;;;;;;;:::i;:::-;9631:13:::1;9647:33;9674:5;9647:22;9664:4;9647:12;;:16;;:22;;;;:::i;:::-;:26:::0;::::1;:33::i;:::-;9631:49;;9682:19;9704:34;9732:5;9704:23;9721:5;9704:12;;:16;;:23;;;;:::i;:34::-;9682:56;;9740:17;9760:36;9790:5;9760:25;9777:7;9760:12;;:16;;:25;;;;:::i;:36::-;9807:12;:20:::0;;;9829:14:::1;:28:::0;;;9859:15:::1;:27:::0;;;9740:56;-1:-1:-1;;9913:30:0::1;9938:4;9913:20;9931:1;9913:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:30::-;9897:46;;9971:5;9962;:14;;:38;;;;;9995:5;9980:11;:20;;9962:38;:60;;;;;10017:5;10004:9;:18;;9962:60;9954:119;;;::::0;-1:-1:-1;;;9954:119:0;;6890:2:1;9954:119:0::1;::::0;::::1;6872:21:1::0;6929:2;6909:18;;;6902:30;6968:34;6948:18;;;6941:62;-1:-1:-1;;;7019:18:1;;;7012:44;7073:19;;9954:119:0::1;6688:410:1::0;9954:119:0::1;9620:461;;;;9533:548:::0;;;:::o;10435:182::-;3629:4;3654:5;-1:-1:-1;;;;;3654:5:0;3541:10;3643:16;3525:38;;;;-1:-1:-1;;;3525:38:0;;;;;;;:::i;:::-;10530:6:::1;10526:84;10540:20:::0;;::::1;10526:84;;;10599:8;10577:5;:19;10583:9;;10593:1;10583:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10577:19:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;10577:19:0;:30;;-1:-1:-1;;10577:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;10562:3:0::1;10526:84;;;;10435:182:::0;;;:::o;7890:108::-;3629:4;3654:5;-1:-1:-1;;;;;3654:5:0;3541:10;3643:16;3525:38;;;;-1:-1:-1;;;3525:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7964:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;7964:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7890:108::o;10625:89::-;3629:4;3654:5;-1:-1:-1;;;;;3654:5:0;3541:10;3643:16;3525:38;;;;-1:-1:-1;;;3525:38:0;;;;;;;:::i;:::-;10677:29:::1;10692:13;;10677:14;:29::i;:::-;10625:89::o:0;10089:338::-;3629:4;3654:5;-1:-1:-1;;;;;3654:5:0;3541:10;3643:16;3525:38;;;;-1:-1:-1;;;3525:38:0;;;;;;;:::i;:::-;10211:18:::1;:31:::0;;-1:-1:-1;;;;;10211:31:0;;::::1;-1:-1:-1::0;;;;;;10211:31:0;;::::1;::::0;::::1;::::0;;;10244:18:::1;:31:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;10277:20:::1;:35:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;10211:18:::1;10323:23:::0;;;:11:::1;:23;::::0;;;;;:30;;-1:-1:-1;;10323:30:0;;::::1;10211:31:::0;10323:30;;::::1;::::0;;;10355:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;10387:25;;;;;;:32;;;;::::1;::::0;;::::1;::::0;;10089:338::o;10722:246::-;3629:4;3654:5;-1:-1:-1;;;;;3654:5:0;3541:10;3643:16;3525:38;;;;-1:-1:-1;;;3525:38:0;;;;;;;:::i;:::-;10830:41:::1;::::0;-1:-1:-1;;;10830:41:0;;10865:4:::1;10830:41;::::0;::::1;4150:51:1::0;10812:15:0::1;::::0;10830:63:::1;::::0;10889:3:::1;::::0;10830:54:::1;::::0;10876:7;;-1:-1:-1;;;;;10830:26:0;::::1;::::0;::::1;::::0;4123:18:1;;10830:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:63::-;10930:20;::::0;10904:56:::1;::::0;-1:-1:-1;;;10904:56:0;;-1:-1:-1;;;;;10930:20:0;;::::1;10904:56;::::0;::::1;7644:51:1::0;7711:18;;;7704:34;;;10812:81:0;;-1:-1:-1;10904:25:0;::::1;::::0;::::1;::::0;7617:18:1;;10904:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8694:319::-:0;3629:4;3654:5;-1:-1:-1;;;;;3654:5:0;3541:10;3643:16;3525:38;;;;-1:-1:-1;;;3525:38:0;;;;;;;:::i;:::-;8827:10:::1;:24:::0;;;8869:12:::1;::::0;:53:::1;::::0;8914:6:::1;::::0;8869:32:::1;::::0;8886:14;8869:16:::1;:32::i;:53::-;8853:13;:69:::0;8951:12:::1;::::0;:54:::1;::::0;8997:6:::1;::::0;8951:33:::1;::::0;8968:15;8951:16:::1;:33::i;:54::-;8934:14;:71:::0;-1:-1:-1;;;8694:319:0:o;7612:139::-;7690:4;7697:40;7707:10;7719:9;7730:6;7697:9;:40::i;9021:504::-;3629:4;3654:5;-1:-1:-1;;;;;3654:5:0;3541:10;3643:16;3525:38;;;;-1:-1:-1;;;3525:38:0;;;;;;;:::i;:::-;9191:12:::1;:25:::0;;;9218:12:::1;:25:::0;;;9245:7:::1;:15:::0;;;9262:14:::1;:29:::0;;;9293:8:::1;:17:::0;;;9312:7:::1;:15:::0;;;9329:11:::1;:20:::0;;;9380:11:::1;::::0;:18:::1;::::0;-1:-1:-1;9380:15:0::1;:18::i;:::-;9368:8;;:30;;:63;;;;-1:-1:-1::0;9413:11:0::1;::::0;:18:::1;::::0;9429:1:::1;9413:15;:18::i;:::-;9402:7;;:29;;9368:63;:100;;;;-1:-1:-1::0;9450:11:0::1;::::0;:18:::1;::::0;9466:1:::1;9450:15;:18::i;:::-;9435:11;;:33;;9368:100;9360:157;;;::::0;-1:-1:-1;;;9360:157:0;;8201:2:1;9360:157:0::1;::::0;::::1;8183:21:1::0;8240:2;8220:18;;;8213:30;8279:34;8259:18;;;8252:62;-1:-1:-1;;;8330:18:1;;;8323:42;8382:19;;9360:157:0::1;7999:408:1::0;3667:111:0;3629:4;3654:5;-1:-1:-1;;;;;3654:5:0;3541:10;3643:16;3525:38;;;;-1:-1:-1;;;3525:38:0;;;;;;;:::i;:::-;3733:5:::1;:11:::0;;-1:-1:-1;;;;;;3733:11:0::1;-1:-1:-1::0;;;;;3733:11:0;::::1;::::0;;::::1;::::0;;;3751:25:::1;::::0;4150:51:1;;;3751:25:0::1;::::0;4138:2:1;4123:18;3751:25:0::1;;;;;;;3667:111:::0;:::o;15677:335::-;-1:-1:-1;;;;;15770:19:0;;15762:68;;;;-1:-1:-1;;;15762:68:0;;8830:2:1;15762:68:0;;;8812:21:1;8869:2;8849:18;;;8842:30;8908:34;8888:18;;;8881:62;-1:-1:-1;;;8959:18:1;;;8952:34;9003:19;;15762:68:0;8628:400:1;15762:68:0;-1:-1:-1;;;;;15849:21:0;;15841:68;;;;-1:-1:-1;;;15841:68:0;;9235:2:1;15841:68:0;;;9217:21:1;9274:2;9254:18;;;9247:30;9313:34;9293:18;;;9286:62;-1:-1:-1;;;9364:18:1;;;9357:32;9406:19;;15841:68:0;9033:398:1;15841:68:0;-1:-1:-1;;;;;15920:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15972:32;;1283:25:1;;;15972:32:0;;1256:18:1;15972:32:0;;;;;;;15677:335;;;:::o;1313:98::-;1371:7;1398:5;1402:1;1398;:5;:::i;13919:1433::-;-1:-1:-1;;;;;14016:20:0;;14008:70;;;;-1:-1:-1;;;14008:70:0;;9903:2:1;14008:70:0;;;9885:21:1;9942:2;9922:18;;;9915:30;9981:34;9961:18;;;9954:62;-1:-1:-1;;;10032:18:1;;;10025:35;10077:19;;14008:70:0;9701:401:1;14008:70:0;-1:-1:-1;;;;;14097:23:0;;14089:71;;;;-1:-1:-1;;;14089:71:0;;10309:2:1;14089:71:0;;;10291:21:1;10348:2;10328:18;;;10321:30;10387:34;10367:18;;;10360:62;-1:-1:-1;;;10438:18:1;;;10431:33;10481:19;;14089:71:0;10107:399:1;14089:71:0;-1:-1:-1;;;;;7586:18:0;;7569:7;7586:18;;;:9;:18;;;;;;14179:6;:27;;14171:88;;;;-1:-1:-1;;;14171:88:0;;10713:2:1;14171:88:0;;;10695:21:1;10752:2;10732:18;;;10725:30;10791:34;10771:18;;;10764:62;-1:-1:-1;;;10842:18:1;;;10835:47;10899:19;;14171:88:0;10511:413:1;14171:88:0;-1:-1:-1;;;;;14274:19:0;;;;;;:11;:19;;;;;;;;14273:20;:47;;;;-1:-1:-1;;;;;;14298:22:0;;;;;;:11;:22;;;;;;;;14297:23;14273:47;14270:95;;;14330:14;;-1:-1:-1;;;14330:14:0;;;;14322:41;;;;-1:-1:-1;;;14322:41:0;;11131:2:1;14322:41:0;;;11113:21:1;11170:2;11150:18;;;11143:30;-1:-1:-1;;;11189:18:1;;;11182:44;11243:18;;14322:41:0;10929:338:1;14322:41:0;-1:-1:-1;;;;;14379:19:0;;;;;;:11;:19;;;;;;;;14378:20;:47;;;;-1:-1:-1;;;;;;14403:22:0;;;;;;:11;:22;;;;;;;;14402:23;14378:47;:77;;;;-1:-1:-1;14450:4:0;;-1:-1:-1;;;;;14429:26:0;;;14450:4;;14429:26;;14378:77;:107;;;;-1:-1:-1;;;;;;14459:26:0;;5960:42;14459:26;;14378:107;14375:220;;;14543:15;;-1:-1:-1;;;;;14506:20:0;;;;;;:9;:20;;;;;;:32;;14531:6;14506:24;:32::i;:::-;14505:53;;14497:96;;;;-1:-1:-1;;;14497:96:0;;11474:2:1;14497:96:0;;;11456:21:1;11513:2;11493:18;;;11486:30;11552:32;11532:18;;;11525:60;11602:18;;14497:96:0;11272:354:1;14497:96:0;14618:4;;-1:-1:-1;;;;;14608:14:0;;;14618:4;;14608:14;14605:124;;14642:14;;14632:6;:24;;:47;;;-1:-1:-1;;;;;;14660:19:0;;;;;;:11;:19;;;;;;;;14632:47;:73;;;-1:-1:-1;;;;;;14683:22:0;;;;;;:11;:22;;;;;;;;14632:73;14624:103;;;;-1:-1:-1;;;14624:103:0;;11833:2:1;14624:103:0;;;11815:21:1;11872:2;11852:18;;;11845:30;-1:-1:-1;;;11891:18:1;;;11884:47;11948:18;;14624:103:0;11631:341:1;14624:103:0;14757:12;;14747:6;:22;;:45;;;-1:-1:-1;;;;;;14773:19:0;;;;;;:11;:19;;;;;;;;14747:45;:71;;;-1:-1:-1;;;;;;14796:22:0;;;;;;:11;:22;;;;;;;;14747:71;14739:101;;;;-1:-1:-1;;;14739:101:0;;11833:2:1;14739:101:0;;;11815:21:1;11872:2;11852:18;;;11845:30;-1:-1:-1;;;11891:18:1;;;11884:47;11948:18;;14739:101:0;11631:341:1;14739:101:0;14868:4;;-1:-1:-1;;;;;14855:17:0;;;14868:4;;14855:17;:41;;;;-1:-1:-1;;;;;;14877:19:0;;;;;;:11;:19;;;;;;;;14876:20;14855:41;14852:71;;;14919:1;14898:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;14852:71:0;14936:45;14955:6;14963:9;14974:6;14936:18;:45::i;:::-;14933:105;;;14983:29;14998:13;;14983:14;:29::i;:::-;15034:1;15014:9;:22;14933:105;-1:-1:-1;;;;;15068:17:0;;;;;;:9;:17;;;;;;:29;;15090:6;15068:21;:29::i;:::-;-1:-1:-1;;;;;15048:17:0;;;;;;:9;:17;;;;;:49;;;;15133:32;15058:6;15155:9;15133:13;:32::i;:::-;:78;;15205:6;15133:78;;;15168:34;15176:6;15184:9;15195:6;15168:7;:34::i;:::-;-1:-1:-1;;;;;15245:20:0;;;;;;:9;:20;;;;;;15108:103;;-1:-1:-1;15245:40:0;;15108:103;15245:24;:40::i;:::-;-1:-1:-1;;;;;15222:20:0;;;;;;;:9;:20;;;;;;;:63;;;;15301:43;;;;;;;;;;15329:14;1283:25:1;;1271:2;1256:18;;1137:177;15301:43:0;;;;;;;;13997:1355;13919:1433;;;:::o;1737:240::-;1857:7;1918:12;1910:6;;;;1902:29;;;;-1:-1:-1;;;1902:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1953:5:0;;;1737:240::o;1419:98::-;1477:7;1504:5;1508:1;1504;:5;:::i;1525:98::-;1583:7;1610:5;1614:1;1610;:5;:::i;10976:1063::-;5569:8;:15;;-1:-1:-1;;5569:15:0;5580:4;5569:15;;;;;;11113:14:::1;::::0;11095:12:::1;::::0;11071::::1;::::0;5569:8;;11070:66:::1;::::0;11134:1:::1;::::0;11071:57:::1;::::0;11113:14;;11071:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;11070:66::-;11047:89;;11147:32;11182:42;11211:12;11182:24;11193:12;;11182:6;:10;;:24;;;;:::i;:42::-;11147:77:::0;-1:-1:-1;11235:14:0::1;11252:36;:6:::0;11147:77;11252:10:::1;:36::i;:::-;11235:53:::0;-1:-1:-1;11324:21:0::1;11356:24;11235:53:::0;11356:16:::1;:24::i;:::-;11391:20;11414:41;:21;11440:14:::0;11414:25:::1;:41::i;:::-;11391:64;;11466:19;11487:48;11504:30;11521:12;;11504;:16;;:30;;;;:::i;:::-;11487:12:::0;;:16:::1;:48::i;:::-;11466:69;;11546:29;11578;11594:12;;11578:11;:15;;:29;;;;:::i;:::-;11546:61:::0;-1:-1:-1;11621:34:0;;11618:103:::1;;11657:61;11670:24;11696:21;11657:12;:61::i;:::-;11777:12;::::0;11731:20:::1;::::0;11754:36:::1;::::0;:18:::1;:11:::0;11770:1:::1;11754:15;:18::i;:36::-;11731:59:::0;-1:-1:-1;11804:16:0;;11801:73:::1;;11830:18;::::0;11822:50:::1;::::0;-1:-1:-1;;;;;11830:18:0;;::::1;::::0;11822:50;::::1;;;::::0;11859:12;;11830:18:::1;11822:50:::0;11830:18;11822:50;11859:12;11830:18;11822:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11801:73;11910:21;11945:28:::0;;11942:90:::1;;11983:20;::::0;11975:55:::1;::::0;-1:-1:-1;;;;;11983:20:0;;::::1;::::0;11975:55;::::1;;;::::0;12014:15;;11983:20:::1;11975:55:::0;11983:20;11975:55;12014:15;11983:20;11975:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11942:90;-1:-1:-1::0;;5589:8:0;:16;;-1:-1:-1;;5589:16:0;;;-1:-1:-1;;;;;;;;10976:1063:0:o;1207:98::-;1265:7;1292:5;1296:1;1292;:5;:::i;8283:403::-;8428:14;;8503:13;;8493:4;8385;7586:18;;;:9;:18;;;;;;8535:8;;8385:4;;8418:24;;;;-1:-1:-1;8475:41:0;;8535:8;;8534:9;:24;;;;-1:-1:-1;8547:11:0;;-1:-1:-1;;;8547:11:0;;;;8534:24;:42;;;;-1:-1:-1;8562:14:0;;-1:-1:-1;;;8562:14:0;;;;8534:42;:54;;;;;8580:8;8534:54;:78;;;;-1:-1:-1;;;;;;8593:19:0;;;;;;:11;:19;;;;;;;;8592:20;8534:78;:99;;;;-1:-1:-1;8629:4:0;;-1:-1:-1;;;;;8616:17:0;;;8629:4;;8616:17;8534:99;:126;;;;;8650:10;;8637:9;;:23;;8534:126;:144;;;;;8664:14;8534:144;8527:151;8283:403;-1:-1:-1;;;;;;8283:403:0:o;12840:160::-;-1:-1:-1;;;;;12946:19:0;;12921:4;12946:19;;;:11;:19;;;;;;;;12945:20;:47;;;;-1:-1:-1;;;;;;;12970:22:0;;;;;:11;:22;;;;;;;;12969:23;;12840:160;-1:-1:-1;12840:160:0:o;13321:590::-;13407:7;13463:1;13430:30;13442:6;13450:9;13430:11;:30::i;:::-;:34;13427:462;;;13476:17;13496:59;13524:30;13536:6;13544:9;13524:11;:30::i;:::-;13507:11;;13496:23;;:6;;:10;:23::i;:59::-;13611:4;13593:24;;;;:9;:24;;;;;;13476:79;;-1:-1:-1;13593:39:0;;13476:79;13593:28;:39::i;:::-;13584:4;13566:24;;;;:9;:24;;;;;;;:66;;;;13648:42;;-1:-1:-1;;;;;13648:42:0;;;;;;;13680:9;1283:25:1;;1271:2;1256:18;;1137:177;13648:42:0;;;;;;;;13722:1;13704:7;;:20;:64;;;;;13761:7;;13728:30;13740:6;13748:9;13728:11;:30::i;:::-;:40;13704:64;13701:148;;;13770:77;13788:4;5960:42;13810:36;13838:7;;13810:23;13821:11;;13810:6;:10;;:23;;;;:::i;:36::-;13770:9;:77::i;:::-;13866:21;:6;13877:9;13866:10;:21::i;:::-;13859:28;;;;;13427:462;-1:-1:-1;13897:6:0;13321:590;-1:-1:-1;;13321:590:0:o;12398:434::-;12488:16;;;12502:1;12488:16;;;;;;;;12464:21;;12488:16;;;;;;;;;;-1:-1:-1;12488:16:0;12464:40;;12533:4;12515;12520:1;12515:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12515:23:0;;;:7;;;;;;;;;;:23;;;;12559:6;;:13;;;-1:-1:-1;;;12559:13:0;;;;:6;;;;;:11;;:13;;;;;12515:7;;12559:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12549:4;12554:1;12549:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12549:23:0;;;:7;;;;;;;;;:23;12615:6;;12583:53;;12600:4;;12615:6;12624:11;12583:8;:53::i;:::-;12647:6;;:177;;-1:-1:-1;;;12647:177:0;;-1:-1:-1;;;;;12647:6:0;;;;:57;;:177;;12719:11;;12647:6;;12761:4;;12788;;12808:15;;12647:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12453:379;12398:434;:::o;12047:343::-;12160:6;;12128:53;;12145:4;;-1:-1:-1;;;;;12160:6:0;12169:11;12128:8;:53::i;:::-;12192:6;;12333:18;;12192:190;;-1:-1:-1;;;12192:190:0;;12255:4;12192:190;;;14157:51:1;14224:18;;;14217:34;;;12192:6:0;14267:18:1;;;14260:34;;;14310:18;;;14303:34;-1:-1:-1;;;;;12333:18:0;;;14353:19:1;;;14346:61;12366:15:0;14423:19:1;;;14416:35;12192:6:0;;;:22;;12222:9;;14129:19:1;;12192:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12047:343;;:::o;13008:305::-;-1:-1:-1;;;;;13110:13:0;;13087:7;13110:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;13127:16:0;;;;;;:5;:16;;;;;;;;13110:33;13107:76;;;13152:11;;:29;;13176:3;13152:15;:29::i;:::-;13145:36;;;;13107:76;13209:4;;-1:-1:-1;;;;;13209:4:0;;;13196:17;;;;13193:38;;-1:-1:-1;13222:7:0;;13215:14;;13193:38;13254:4;;-1:-1:-1;;;;;13254:4:0;;;13244:14;;;;13241:36;;-1:-1:-1;13267:8:0;;13260:15;;13241:36;-1:-1:-1;13294:11:0;;13008: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:466::-;1909:6;1917;1925;1978:2;1966:9;1957:7;1953:23;1949:32;1946:52;;;1994:1;1991;1984:12;1946:52;-1:-1:-1;;2039:23:1;;;2159:2;2144:18;;2131:32;;-1:-1:-1;2262:2:1;2247:18;;;2234:32;;1832:466;-1:-1:-1;1832:466:1:o;2303:247::-;2362:6;2415:2;2403:9;2394:7;2390:23;2386:32;2383:52;;;2431:1;2428;2421:12;2383:52;2470:9;2457:23;2489:31;2514:5;2489:31;:::i;2744:118::-;2830:5;2823:13;2816:21;2809:5;2806:32;2796:60;;2852:1;2849;2842:12;2867:745;2959:6;2967;2975;3028:2;3016:9;3007:7;3003:23;2999:32;2996:52;;;3044:1;3041;3034:12;2996:52;3084:9;3071:23;3117:18;3109:6;3106:30;3103:50;;;3149:1;3146;3139:12;3103:50;3172:22;;3225:4;3217:13;;3213:27;-1:-1:-1;3203:55:1;;3254:1;3251;3244:12;3203:55;3294:2;3281:16;3320:18;3312:6;3309:30;3306:50;;;3352:1;3349;3342:12;3306:50;3407:7;3400:4;3390:6;3387:1;3383:14;3379:2;3375:23;3371:34;3368:47;3365:67;;;3428:1;3425;3418:12;3365:67;3459:4;3451:13;;;;-1:-1:-1;3483:6:1;-1:-1:-1;3524:20:1;;3511:34;3554:28;3511:34;3554:28;:::i;:::-;3601:5;3591:15;;;2867:745;;;;;:::o;3617:382::-;3682:6;3690;3743:2;3731:9;3722:7;3718:23;3714:32;3711:52;;;3759:1;3756;3749:12;3711:52;3798:9;3785:23;3817:31;3842:5;3817:31;:::i;:::-;3867:5;-1:-1:-1;3924:2:1;3909:18;;3896:32;3937:30;3896:32;3937:30;:::i;:::-;3986:7;3976:17;;;3617:382;;;;;:::o;4212:529::-;4289:6;4297;4305;4358:2;4346:9;4337:7;4333:23;4329:32;4326:52;;;4374:1;4371;4364:12;4326:52;4413:9;4400:23;4432:31;4457:5;4432:31;:::i;:::-;4482:5;-1:-1:-1;4539:2:1;4524:18;;4511:32;4552:33;4511:32;4552:33;:::i;:::-;4604:7;-1:-1:-1;4663:2:1;4648:18;;4635:32;4676:33;4635:32;4676:33;:::i;4746:950::-;4859:6;4867;4875;4883;4891;4899;4907;4960:3;4948:9;4939:7;4935:23;4931:33;4928:53;;;4977:1;4974;4967:12;4928:53;-1:-1:-1;;5022:23:1;;;5142:2;5127:18;;5114:32;;-1:-1:-1;5245:2:1;5230:18;;5217:32;;5348:2;5333:18;;5320:32;;-1:-1:-1;5451:3:1;5436:19;;5423:33;;-1:-1:-1;5555:3:1;5540:19;;5527:33;;-1:-1:-1;5659:3:1;5644:19;5631:33;;-1:-1:-1;4746:950:1;-1:-1:-1;4746:950:1:o;5701:388::-;5769:6;5777;5830:2;5818:9;5809:7;5805:23;5801:32;5798:52;;;5846:1;5843;5836:12;5798:52;5885:9;5872:23;5904:31;5929:5;5904:31;:::i;:::-;5954:5;-1:-1:-1;6011:2:1;5996:18;;5983:32;6024:33;5983:32;6024:33;:::i;6354:329::-;6556:2;6538:21;;;6595:1;6575:18;;;6568:29;-1:-1:-1;;;6628:2:1;6613:18;;6606:36;6674:2;6659:18;;6354:329::o;7103:127::-;7164:10;7159:3;7155:20;7152:1;7145:31;7195:4;7192:1;7185:15;7219:4;7216:1;7209:15;7235:230;7305:6;7358:2;7346:9;7337:7;7333:23;7329:32;7326:52;;;7374:1;7371;7364:12;7326:52;-1:-1:-1;7419:16:1;;7235:230;-1:-1:-1;7235:230:1:o;7749:245::-;7816:6;7869:2;7857:9;7848:7;7844:23;7840:32;7837:52;;;7885:1;7882;7875:12;7837:52;7917:9;7911:16;7936:28;7958:5;7936:28;:::i;9436:127::-;9497:10;9492:3;9488:20;9485:1;9478:31;9528:4;9525:1;9518:15;9552:4;9549:1;9542:15;9568:128;9635:9;;;9656:11;;;9653:37;;;9670:18;;:::i;11977:125::-;12042:9;;;12063:10;;;12060:36;;;12076:18;;:::i;12107:168::-;12180:9;;;12211;;12228:15;;;12222:22;;12208:37;12198:71;;12249:18;;:::i;12280:217::-;12320:1;12346;12336:132;;12390:10;12385:3;12381:20;12378:1;12371:31;12425:4;12422:1;12415:15;12453:4;12450:1;12443:15;12336:132;-1:-1:-1;12482:9:1;;12280:217::o;12634:251::-;12704:6;12757:2;12745:9;12736:7;12732:23;12728:32;12725:52;;;12773:1;12770;12763:12;12725:52;12805:9;12799:16;12824:31;12849:5;12824:31;:::i;12890:959::-;13152:4;13200:3;13189:9;13185:19;13231:6;13220:9;13213:25;13274:6;13269:2;13258:9;13254:18;13247:34;13317:3;13312:2;13301:9;13297:18;13290:31;13341:6;13376;13370:13;13407:6;13399;13392:22;13445:3;13434:9;13430:19;13423:26;;13484:2;13476:6;13472:15;13458:29;;13505:1;13515:195;13529:6;13526:1;13523:13;13515:195;;;13594:13;;-1:-1:-1;;;;;13590:39:1;13578:52;;13659:2;13685:15;;;;13650:12;;;;13626:1;13544:9;13515:195;;;-1:-1:-1;;;;;;;13766:32:1;;;;13761:2;13746:18;;13739:60;-1:-1:-1;;13830:3:1;13815:19;13808:35;13727:3;12890:959;-1:-1:-1;;;12890:959:1:o;14462:456::-;14550:6;14558;14566;14619:2;14607:9;14598:7;14594:23;14590:32;14587:52;;;14635:1;14632;14625:12;14587:52;-1:-1:-1;;14680:16:1;;14786:2;14771:18;;14765:25;14882:2;14867:18;;;14861:25;14680:16;;14765:25;;-1:-1:-1;14861:25:1;14462:456;-1:-1:-1;14462:456:1:o

Swarm Source

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