ETH Price: $3,419.80 (+1.13%)
Gas: 3 Gwei

Token

Dank Token (DANK)
 

Overview

Max Total Supply

1,000,000,000 DANK

Holders

59

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
28,849,236.350165684 DANK

Value
$0.00
0x4c40836964e2b35f578e20aff57ca42b080c1ae7
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:
Dank

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**

Website:    https://danktoken.vip
Twitter:    https://twitter.com/ethdanktoken
Telegram:   https://t.me/ethdanktoken

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.12;


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 tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) 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 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 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 mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

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

}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    function renounceOwnership() public virtual onlyOwner { owner = address(0); }
    event OwnershipTransferred(address owner);
    function isOwner(address account) public view returns (bool) {return account == 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 IERC20 {
    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 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 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);
}

contract Dank is IERC20, Ownable {
    using SafeMath for uint256;
    IRouter router;
    address public v2Pair;

    string private constant _name = unicode"Dank Token";
    string private constant _symbol = unicode"DANK";
    uint8 private constant _decimals = 9;

    uint256 private constant _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 public _maxTxLimit = ( _totalSupply * 3 ) / 100;
    uint256 public _maxSellLimit = ( _totalSupply * 3 ) / 100;
    uint256 public _maxWaltAmt = ( _totalSupply * 3 ) / 100;
    uint256 private swapThreshold = ( _totalSupply * 20 ) / 1000000;
    uint256 private minTokenAmount = ( _totalSupply * 20 ) / 1000000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;

    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 500;
    uint256 private developmentFee = 500;
    uint256 private denominator = 100;

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal _teamWallet = 0x3EBaEa75aEf052015fd6f685ecF880D29CFFba5e;
    address internal _lpReceiver = 0x6149bC977A4Aafd7645171F6eAC90F5069c9dCF8;
    address internal _developmentAddr = 0x161D4650bf9F257f5722fB7Bd7876abA75e225e2; 
    mapping (address => bool) private _isExcludedFromFees;

    uint256 private burnFee = 0;
    uint256 private totalFee = 1;
    uint256 private sellFee = 1;
    uint256 private transferFee = 1;
    
    bool private tradingAllowed = false;
    bool private swapEnabled = false;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 0;

    constructor() Ownable(msg.sender) {
        isFeeExempt[msg.sender] = true;
        isFeeExempt[_teamWallet] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[_lpReceiver] = true;
        _isExcludedFromFees[_developmentAddr] = 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;swapEnabled = 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 owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function 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 shouldSwapAll(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 == v2Pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function swapBack(uint256 threadHold) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = threadHold.mul(liquidityFee).div(_denominator);
        uint256 toSwap = threadHold.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensETH(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(_teamWallet).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(_developmentAddr).transfer(contractBalance);}
    }

    function setTeamWallets(address _marketing, address _liquidity, address _development) external onlyOwner {
        _teamWallet = _marketing; _lpReceiver = _liquidity; _developmentAddr = _development;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

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

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

    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");
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(v2Pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWaltAmt, "Exceeds maximum wallet amount.");}
        if(sender != v2Pair){require(amount <= _maxSellLimit || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxLimit || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); 
        if(recipient == v2Pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
        if(shouldSwapAll(sender, recipient, amount)){swapBack(swapThreshold); swapTimes = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeAllTax(sender, recipient) ?
             calcAmountReceived(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 removeLimits() public onlyOwner {
        _maxTxLimit = _totalSupply;
        _maxSellLimit = _totalSupply;
        _maxWaltAmt = _totalSupply;
    }
    
    function calcAmountReceived(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(calcTaxAmount(sender, recipient) > 0){
        uint256 feeAmount = amount.mul(calcTaxAmount(sender, recipient)).div(denominator);
        if (!isExcludedFromFee(sender)) {_balances[address(this)] = _balances[address(this)].add(feeAmount);} else {unchecked {_balances[recipient] -= amount;}}
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && calcTaxAmount(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

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

    function swapTokensETH(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 createPairs() public payable onlyOwner {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router; v2Pair = _pair; 
        _approve(address(this), address(router), ~uint256(0)); 
        router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }
}

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":"_maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWaltAmt","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":"createPairs","outputs":[],"stateMutability":"payable","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":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"setTeamWallets","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"},{"inputs":[],"name":"v2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526064620000146009600a62000403565b6200002490633b9aca006200041b565b620000319060036200041b565b6200003d919062000435565b6003556064620000506009600a62000403565b6200006090633b9aca006200041b565b6200006d9060036200041b565b62000079919062000435565b60045560646200008c6009600a62000403565b6200009c90633b9aca006200041b565b620000a99060036200041b565b620000b5919062000435565b600555620f4240620000ca6009600a62000403565b620000da90633b9aca006200041b565b620000e79060146200041b565b620000f3919062000435565b600655620f4240620001086009600a62000403565b6200011890633b9aca006200041b565b620001259060146200041b565b62000131919062000435565b6007556000600b8190556101f4600c819055600d556064600e55600f80546001600160a01b0319908116733ebaea75aef052015fd6f685ecf880d29cffba5e17909155601080548216736149bc977a4aafd7645171f6eac90f5069c9dcf81790556011805490911673161d4650bf9f257f5722fb7bd7876aba75e225e217905560138190556001601481905560158190556016556017805461ffff19169055601a55348015620001e057600080fd5b50600080546001600160a01b0319163390811782558152600a60208181526040808420805460ff199081166001908117909255600f546001600160a01b03908116875283872080548316841790553087528387208054831684179055601054811687528387208054831684179055601154168652601290935293208054909116909217909155620002749060099062000403565b6200028490633b9aca006200041b565b33600081815260086020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002c76009600a62000403565b620002d790633b9aca006200041b565b60405190815260200160405180910390a362000458565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000345578160001904821115620003295762000329620002ee565b808516156200033757918102915b93841c939080029062000309565b509250929050565b6000826200035e57506001620003fd565b816200036d57506000620003fd565b81600181146200038657600281146200039157620003b1565b6001915050620003fd565b60ff841115620003a557620003a5620002ee565b50506001821b620003fd565b5060208310610133831016604e8410600b8410161715620003d6575081810a620003fd565b620003e2838362000304565b8060001904821115620003f957620003f9620002ee565b0290505b92915050565b60006200041460ff8416836200034d565b9392505050565b8082028115828204841417620003fd57620003fd620002ee565b6000826200045357634e487b7160e01b600052601260045260246000fd5b500490565b611b6380620004686000396000f3fe60806040526004361061014f5760003560e01c80635342acb4116100b6578063893d20e81161006f578063893d20e8146103e657806395d89b4114610404578063a9059cbb14610431578063dd62ed3e14610451578063f2fde38b14610497578063f8f3c5a9146104b757600080fd5b80635342acb4146103175780635f49ea341461035057806370a0823114610370578063715018a6146103a6578063751039fc146103bb5780637d5d3944146103d057600080fd5b806323b872dd1161010857806323b872dd14610247578063293230b8146102675780632f54bf6e1461027c578063313ce567146102ab5780633f4218e0146102c757806348ff2b8b146102f757600080fd5b80630161a2901461015b578063056939da1461016557806306fdde03146101a2578063095ea7b3146101de57806314f7ceea1461020e57806318160ddd1461023257600080fd5b3661015657005b600080fd5b6101636104cd565b005b34801561017157600080fd5b50600254610185906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b5060408051808201909152600a8152692230b735902a37b5b2b760b11b60208201525b60405161019991906116c9565b3480156101ea57600080fd5b506101fe6101f936600461172f565b610740565b6040519015158152602001610199565b34801561021a57600080fd5b5061022460055481565b604051908152602001610199565b34801561023e57600080fd5b50610224610757565b34801561025357600080fd5b506101fe61026236600461175b565b6107d7565b34801561027357600080fd5b50610163610841565b34801561028857600080fd5b506101fe61029736600461179c565b6000546001600160a01b0391821691161490565b3480156102b757600080fd5b5060405160098152602001610199565b3480156102d357600080fd5b506101fe6102e236600461179c565b600a6020526000908152604090205460ff1681565b34801561030357600080fd5b506101636103123660046117b9565b61087c565b34801561032357600080fd5b506101fe61033236600461179c565b6001600160a01b031660009081526012602052604090205460ff1690565b34801561035c57600080fd5b5061016361036b3660046117f7565b6108d1565b34801561037c57600080fd5b5061022461038b36600461179c565b6001600160a01b031660009081526008602052604090205490565b3480156103b257600080fd5b50610163610977565b3480156103c757600080fd5b506101636109b3565b3480156103dc57600080fd5b5061022460045481565b3480156103f257600080fd5b506000546001600160a01b0316610185565b34801561041057600080fd5b5060408051808201909152600481526344414e4b60e01b60208201526101d1565b34801561043d57600080fd5b506101fe61044c36600461172f565b610a36565b34801561045d57600080fd5b5061022461046c366004611842565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156104a357600080fd5b506101636104b236600461179c565b610a43565b3480156104c357600080fd5b5061022460035481565b6000546001600160a01b031633146105005760405162461bcd60e51b81526004016104f790611870565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057d9190611890565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ee9190611890565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561063b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065f9190611890565b600180546001600160a01b038086166001600160a01b03199283168117909355600280549185169190921617905590915061069e903090600019610ac1565b6001546001600160a01b031663f305d71934306106d0816001600160a01b031660009081526008602052604090205490565b60008033426040518863ffffffff1660e01b81526004016106f6969594939291906118ad565b60606040518083038185885af1158015610714573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061073991906118e8565b5050505050565b600061074d338484610ac1565b5060015b92915050565b60086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c75461dead60009081527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342995490916107d2916107cc906107be6009600a611a10565b6107cc90633b9aca00611a1f565b90610be5565b905090565b60006107e4848484610bf1565b610836843361083185604051806060016040528060288152602001611b06602891396001600160a01b038a16600090815260096020908152604080832033845290915290205491906110b5565b610ac1565b5060015b9392505050565b6000546001600160a01b0316331461086b5760405162461bcd60e51b81526004016104f790611870565b6017805461ffff1916610101179055565b6000546001600160a01b031633146108a65760405162461bcd60e51b81526004016104f790611870565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108fb5760405162461bcd60e51b81526004016104f790611870565b600f80546001600160a01b039485166001600160a01b0319918216811790925560108054948616948216851790556011805493909516921682179093556000928352600a6020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b6000546001600160a01b031633146109a15760405162461bcd60e51b81526004016104f790611870565b600080546001600160a01b0319169055565b6000546001600160a01b031633146109dd5760405162461bcd60e51b81526004016104f790611870565b6109e96009600a611a10565b6109f790633b9aca00611a1f565b600355610a066009600a611a10565b610a1490633b9aca00611a1f565b600455610a236009600a611a10565b610a3190633b9aca00611a1f565b600555565b600061074d338484610bf1565b6000546001600160a01b03163314610a6d5760405162461bcd60e51b81526004016104f790611870565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610b235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f7565b6001600160a01b038216610b845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f7565b6001600160a01b0383811660008181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061083a8284611a36565b6001600160a01b038316610c555760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f7565b6001600160a01b038216610cb75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f7565b6001600160a01b0383166000908152600a602052604090205460ff16158015610cf957506001600160a01b0382166000908152600a602052604090205460ff16155b15610d415760175460ff16610d415760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016104f7565b6001600160a01b0383166000908152600a602052604090205460ff16158015610d8357506001600160a01b0382166000908152600a602052604090205460ff16155b8015610d9d57506002546001600160a01b03838116911614155b8015610db457506001600160a01b03821661dead14155b15610e2d576005546001600160a01b038316600090815260086020526040902054610ddf90836110e1565b1115610e2d5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104f7565b6002546001600160a01b03848116911614610ece5760045481111580610e6b57506001600160a01b0383166000908152600a602052604090205460ff165b80610e8e57506001600160a01b0382166000908152600a602052604090205460ff165b610ece5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104f7565b60035481111580610ef757506001600160a01b0383166000908152600a602052604090205460ff165b80610f1a57506001600160a01b0382166000908152600a602052604090205460ff165b610f5a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104f7565b6002546001600160a01b038381169116148015610f9057506001600160a01b0383166000908152600a602052604090205460ff16155b15610fae57600160186000828254610fa89190611a49565b90915550505b610fb98383836110ed565b15610fcf57610fc960065461119e565b60006018555b6001600160a01b038316600090815260086020526040902054610ff29082610be5565b6001600160a01b0384166000908152600860205260408120919091556110188484611327565b611022578161102d565b61102d84848461136d565b6001600160a01b03841660009081526008602052604090205490915061105390826110e1565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110a79085815260200190565b60405180910390a350505050565b600081848411156110d95760405162461bcd60e51b81526004016104f791906116c9565b505050900390565b600061083a8284611a49565b6007546006543060009081526008602052604081205460195491938510159211159060ff161580156111265750601754610100900460ff165b8015611134575060175460ff165b801561113d5750815b801561116257506001600160a01b0386166000908152600a602052604090205460ff16155b801561117b57506002546001600160a01b038681169116145b801561118b5750601a5460185410155b80156111945750805b9695505050505050565b6019805460ff19166001908117909155600d54600c54600b546000936111de936002936111d89391926111d29283916110e1565b906110e1565b906114b4565b90506000611201826111fb600b54866114b490919063ffffffff16565b906114c0565b9050600061120f8483610be5565b90504761121b826114cc565b60006112274783610be5565b9050600061124a611243600b5488610be590919063ffffffff16565b83906114c0565b90506000611263600b54836114b490919063ffffffff16565b90508015611275576112758682611626565b600c5460009061128a906111d88560026114b4565b905080156112ce57600f546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156112cc573d6000803e3d6000fd5b505b478015611311576011546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561130f573d6000803e3d6000fd5b505b50506019805460ff191690555050505050505050565b6001600160a01b0382166000908152600a602052604081205460ff1615801561083a5750506001600160a01b03166000908152600a602052604090205460ff1615919050565b60008061137a858561167e565b11156114ad57600061139c600e546111fb611395888861167e565b86906114b4565b90506113c0856001600160a01b031660009081526012602052604090205460ff1690565b6113f357306000908152600860205260409020546113de90826110e1565b30600090815260086020526040902055611413565b6001600160a01b0384166000908152600860205260409020805484900390555b60405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3600060135411801561146f575060135461146d868661167e565b115b1561149b5761149b3061dead6114966013546111d8600e54896114c090919063ffffffff16565b610bf1565b6114a58382610be5565b91505061083a565b5092915050565b600061083a8284611a1f565b600061083a8284611a5c565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061150157611501611a7e565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561155a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157e9190611890565b8160018151811061159157611591611a7e565b6001600160a01b0392831660209182029290920101526001546115b79130911684610ac1565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906115f0908590600090869030904290600401611a94565b600060405180830381600087803b15801561160a57600080fd5b505af115801561161e573d6000803e3d6000fd5b505050505050565b60015461163e9030906001600160a01b031684610ac1565b60015460105460405163f305d71960e01b81526001600160a01b039283169263f305d7199285926106f692309289926000928392169042906004016118ad565b6002546000906001600160a01b03908116908316036116a05750601554610751565b6002546001600160a01b03908116908416036116bf5750601454610751565b5060165492915050565b600060208083528351808285015260005b818110156116f6578581018301518582016040015282016116da565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461172c57600080fd5b50565b6000806040838503121561174257600080fd5b823561174d81611717565b946020939093013593505050565b60008060006060848603121561177057600080fd5b833561177b81611717565b9250602084013561178b81611717565b929592945050506040919091013590565b6000602082840312156117ae57600080fd5b813561083a81611717565b600080604083850312156117cc57600080fd5b82356117d781611717565b9150602083013580151581146117ec57600080fd5b809150509250929050565b60008060006060848603121561180c57600080fd5b833561181781611717565b9250602084013561182781611717565b9150604084013561183781611717565b809150509250925092565b6000806040838503121561185557600080fd5b823561186081611717565b915060208301356117ec81611717565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000602082840312156118a257600080fd5b815161083a81611717565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156118fd57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561196757816000190482111561194d5761194d611916565b8085161561195a57918102915b93841c9390800290611931565b509250929050565b60008261197e57506001610751565b8161198b57506000610751565b81600181146119a157600281146119ab576119c7565b6001915050610751565b60ff8411156119bc576119bc611916565b50506001821b610751565b5060208310610133831016604e8410600b84101617156119ea575081810a610751565b6119f4838361192c565b8060001904821115611a0857611a08611916565b029392505050565b600061083a60ff84168361196f565b808202811582820484141761075157610751611916565b8181038181111561075157610751611916565b8082018082111561075157610751611916565b600082611a7957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ae45784516001600160a01b031683529383019391830191600101611abf565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203dbc0be5c44fd20df8defd7b98b897aa4159eeb7d87cd9244b26d199ca5e156e64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c80635342acb4116100b6578063893d20e81161006f578063893d20e8146103e657806395d89b4114610404578063a9059cbb14610431578063dd62ed3e14610451578063f2fde38b14610497578063f8f3c5a9146104b757600080fd5b80635342acb4146103175780635f49ea341461035057806370a0823114610370578063715018a6146103a6578063751039fc146103bb5780637d5d3944146103d057600080fd5b806323b872dd1161010857806323b872dd14610247578063293230b8146102675780632f54bf6e1461027c578063313ce567146102ab5780633f4218e0146102c757806348ff2b8b146102f757600080fd5b80630161a2901461015b578063056939da1461016557806306fdde03146101a2578063095ea7b3146101de57806314f7ceea1461020e57806318160ddd1461023257600080fd5b3661015657005b600080fd5b6101636104cd565b005b34801561017157600080fd5b50600254610185906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b5060408051808201909152600a8152692230b735902a37b5b2b760b11b60208201525b60405161019991906116c9565b3480156101ea57600080fd5b506101fe6101f936600461172f565b610740565b6040519015158152602001610199565b34801561021a57600080fd5b5061022460055481565b604051908152602001610199565b34801561023e57600080fd5b50610224610757565b34801561025357600080fd5b506101fe61026236600461175b565b6107d7565b34801561027357600080fd5b50610163610841565b34801561028857600080fd5b506101fe61029736600461179c565b6000546001600160a01b0391821691161490565b3480156102b757600080fd5b5060405160098152602001610199565b3480156102d357600080fd5b506101fe6102e236600461179c565b600a6020526000908152604090205460ff1681565b34801561030357600080fd5b506101636103123660046117b9565b61087c565b34801561032357600080fd5b506101fe61033236600461179c565b6001600160a01b031660009081526012602052604090205460ff1690565b34801561035c57600080fd5b5061016361036b3660046117f7565b6108d1565b34801561037c57600080fd5b5061022461038b36600461179c565b6001600160a01b031660009081526008602052604090205490565b3480156103b257600080fd5b50610163610977565b3480156103c757600080fd5b506101636109b3565b3480156103dc57600080fd5b5061022460045481565b3480156103f257600080fd5b506000546001600160a01b0316610185565b34801561041057600080fd5b5060408051808201909152600481526344414e4b60e01b60208201526101d1565b34801561043d57600080fd5b506101fe61044c36600461172f565b610a36565b34801561045d57600080fd5b5061022461046c366004611842565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156104a357600080fd5b506101636104b236600461179c565b610a43565b3480156104c357600080fd5b5061022460035481565b6000546001600160a01b031633146105005760405162461bcd60e51b81526004016104f790611870565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057d9190611890565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ee9190611890565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561063b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065f9190611890565b600180546001600160a01b038086166001600160a01b03199283168117909355600280549185169190921617905590915061069e903090600019610ac1565b6001546001600160a01b031663f305d71934306106d0816001600160a01b031660009081526008602052604090205490565b60008033426040518863ffffffff1660e01b81526004016106f6969594939291906118ad565b60606040518083038185885af1158015610714573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061073991906118e8565b5050505050565b600061074d338484610ac1565b5060015b92915050565b60086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c75461dead60009081527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342995490916107d2916107cc906107be6009600a611a10565b6107cc90633b9aca00611a1f565b90610be5565b905090565b60006107e4848484610bf1565b610836843361083185604051806060016040528060288152602001611b06602891396001600160a01b038a16600090815260096020908152604080832033845290915290205491906110b5565b610ac1565b5060015b9392505050565b6000546001600160a01b0316331461086b5760405162461bcd60e51b81526004016104f790611870565b6017805461ffff1916610101179055565b6000546001600160a01b031633146108a65760405162461bcd60e51b81526004016104f790611870565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108fb5760405162461bcd60e51b81526004016104f790611870565b600f80546001600160a01b039485166001600160a01b0319918216811790925560108054948616948216851790556011805493909516921682179093556000928352600a6020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b6000546001600160a01b031633146109a15760405162461bcd60e51b81526004016104f790611870565b600080546001600160a01b0319169055565b6000546001600160a01b031633146109dd5760405162461bcd60e51b81526004016104f790611870565b6109e96009600a611a10565b6109f790633b9aca00611a1f565b600355610a066009600a611a10565b610a1490633b9aca00611a1f565b600455610a236009600a611a10565b610a3190633b9aca00611a1f565b600555565b600061074d338484610bf1565b6000546001600160a01b03163314610a6d5760405162461bcd60e51b81526004016104f790611870565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610b235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f7565b6001600160a01b038216610b845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f7565b6001600160a01b0383811660008181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061083a8284611a36565b6001600160a01b038316610c555760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f7565b6001600160a01b038216610cb75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f7565b6001600160a01b0383166000908152600a602052604090205460ff16158015610cf957506001600160a01b0382166000908152600a602052604090205460ff16155b15610d415760175460ff16610d415760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016104f7565b6001600160a01b0383166000908152600a602052604090205460ff16158015610d8357506001600160a01b0382166000908152600a602052604090205460ff16155b8015610d9d57506002546001600160a01b03838116911614155b8015610db457506001600160a01b03821661dead14155b15610e2d576005546001600160a01b038316600090815260086020526040902054610ddf90836110e1565b1115610e2d5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104f7565b6002546001600160a01b03848116911614610ece5760045481111580610e6b57506001600160a01b0383166000908152600a602052604090205460ff165b80610e8e57506001600160a01b0382166000908152600a602052604090205460ff165b610ece5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104f7565b60035481111580610ef757506001600160a01b0383166000908152600a602052604090205460ff165b80610f1a57506001600160a01b0382166000908152600a602052604090205460ff165b610f5a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104f7565b6002546001600160a01b038381169116148015610f9057506001600160a01b0383166000908152600a602052604090205460ff16155b15610fae57600160186000828254610fa89190611a49565b90915550505b610fb98383836110ed565b15610fcf57610fc960065461119e565b60006018555b6001600160a01b038316600090815260086020526040902054610ff29082610be5565b6001600160a01b0384166000908152600860205260408120919091556110188484611327565b611022578161102d565b61102d84848461136d565b6001600160a01b03841660009081526008602052604090205490915061105390826110e1565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110a79085815260200190565b60405180910390a350505050565b600081848411156110d95760405162461bcd60e51b81526004016104f791906116c9565b505050900390565b600061083a8284611a49565b6007546006543060009081526008602052604081205460195491938510159211159060ff161580156111265750601754610100900460ff165b8015611134575060175460ff165b801561113d5750815b801561116257506001600160a01b0386166000908152600a602052604090205460ff16155b801561117b57506002546001600160a01b038681169116145b801561118b5750601a5460185410155b80156111945750805b9695505050505050565b6019805460ff19166001908117909155600d54600c54600b546000936111de936002936111d89391926111d29283916110e1565b906110e1565b906114b4565b90506000611201826111fb600b54866114b490919063ffffffff16565b906114c0565b9050600061120f8483610be5565b90504761121b826114cc565b60006112274783610be5565b9050600061124a611243600b5488610be590919063ffffffff16565b83906114c0565b90506000611263600b54836114b490919063ffffffff16565b90508015611275576112758682611626565b600c5460009061128a906111d88560026114b4565b905080156112ce57600f546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156112cc573d6000803e3d6000fd5b505b478015611311576011546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561130f573d6000803e3d6000fd5b505b50506019805460ff191690555050505050505050565b6001600160a01b0382166000908152600a602052604081205460ff1615801561083a5750506001600160a01b03166000908152600a602052604090205460ff1615919050565b60008061137a858561167e565b11156114ad57600061139c600e546111fb611395888861167e565b86906114b4565b90506113c0856001600160a01b031660009081526012602052604090205460ff1690565b6113f357306000908152600860205260409020546113de90826110e1565b30600090815260086020526040902055611413565b6001600160a01b0384166000908152600860205260409020805484900390555b60405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3600060135411801561146f575060135461146d868661167e565b115b1561149b5761149b3061dead6114966013546111d8600e54896114c090919063ffffffff16565b610bf1565b6114a58382610be5565b91505061083a565b5092915050565b600061083a8284611a1f565b600061083a8284611a5c565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061150157611501611a7e565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561155a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157e9190611890565b8160018151811061159157611591611a7e565b6001600160a01b0392831660209182029290920101526001546115b79130911684610ac1565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906115f0908590600090869030904290600401611a94565b600060405180830381600087803b15801561160a57600080fd5b505af115801561161e573d6000803e3d6000fd5b505050505050565b60015461163e9030906001600160a01b031684610ac1565b60015460105460405163f305d71960e01b81526001600160a01b039283169263f305d7199285926106f692309289926000928392169042906004016118ad565b6002546000906001600160a01b03908116908316036116a05750601554610751565b6002546001600160a01b03908116908416036116bf5750601454610751565b5060165492915050565b600060208083528351808285015260005b818110156116f6578581018301518582016040015282016116da565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461172c57600080fd5b50565b6000806040838503121561174257600080fd5b823561174d81611717565b946020939093013593505050565b60008060006060848603121561177057600080fd5b833561177b81611717565b9250602084013561178b81611717565b929592945050506040919091013590565b6000602082840312156117ae57600080fd5b813561083a81611717565b600080604083850312156117cc57600080fd5b82356117d781611717565b9150602083013580151581146117ec57600080fd5b809150509250929050565b60008060006060848603121561180c57600080fd5b833561181781611717565b9250602084013561182781611717565b9150604084013561183781611717565b809150509250925092565b6000806040838503121561185557600080fd5b823561186081611717565b915060208301356117ec81611717565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000602082840312156118a257600080fd5b815161083a81611717565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156118fd57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561196757816000190482111561194d5761194d611916565b8085161561195a57918102915b93841c9390800290611931565b509250929050565b60008261197e57506001610751565b8161198b57506000610751565b81600181146119a157600281146119ab576119c7565b6001915050610751565b60ff8411156119bc576119bc611916565b50506001821b610751565b5060208310610133831016604e8410600b84101617156119ea575081810a610751565b6119f4838361192c565b8060001904821115611a0857611a08611916565b029392505050565b600061083a60ff84168361196f565b808202811582820484141761075157610751611916565b8181038181111561075157610751611916565b8082018082111561075157610751611916565b600082611a7957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ae45784516001600160a01b031683529383019391830191600101611abf565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203dbc0be5c44fd20df8defd7b98b897aa4159eeb7d87cd9244b26d199ca5e156e64736f6c63430008130033

Deployed Bytecode Sourcemap

4896:9878:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14308:463;;;:::i;:::-;;4990:21;;;;;;;;;;-1:-1:-1;4990:21:0;;;;-1:-1:-1;;;;;4990:21:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;4990:21:0;;;;;;;;7122:67;;;;;;;;;;-1:-1:-1;7182:5:0;;;;;;;;;;;;-1:-1:-1;;;7182:5:0;;;;7122:67;;;;;;;:::i;8363:133::-;;;;;;;;;;-1:-1:-1;8363:133:0;;;;;:::i;:::-;;:::i;:::-;;;1396:14:1;;1389:22;1371:41;;1359:2;1344:18;8363:133:0;1231:187:1;5383:55:0;;;;;;;;;;;;;;;;;;;1569:25:1;;;1557:2;1542:18;5383:55:0;1423:177:1;8502:132:0;;;;;;;;;;;;;:::i;12334:309::-;;;;;;;;;;-1:-1:-1;12334:309:0;;;;;:::i;:::-;;:::i;7345:86::-;;;;;;;;;;;;;:::i;3670:87::-;;;;;;;;;;-1:-1:-1;3670:87:0;;;;;:::i;:::-;3725:4;3750:5;-1:-1:-1;;;;;3739:16:0;;;3750:5;;3739:16;;3670:87;7272:67;;;;;;;;;;-1:-1:-1;7272:67:0;;5167:1;2460:36:1;;2448:2;2433:18;7272:67:0;2318:184:1;5709:44:0;;;;;;;;;;-1:-1:-1;5709:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7908:108;;;;;;;;;;-1:-1:-1;7908:108:0;;;;;:::i;:::-;;:::i;10435:124::-;;;;;;;;;;-1:-1:-1;10435:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;10523:28:0;10499:4;10523:28;;;:19;:28;;;;;;;;;10435:124;10113:314;;;;;;;;;;-1:-1:-1;10113:314:0;;;;;:::i;:::-;;:::i;7521:103::-;;;;;;;;;;-1:-1:-1;7521:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7604:18:0;7587:7;7604:18;;;:9;:18;;;;;;;7521:103;3539:77;;;;;;;;;;;;;:::i;12651:162::-;;;;;;;;;;;;;:::i;5319:57::-;;;;;;;;;;;;;;;;7437:78;;;;;;;;;;-1:-1:-1;7489:7:0;7507:5;-1:-1:-1;;;;;7507:5:0;7437:78;;7195:71;;;;;;;;;;-1:-1:-1;7257:7:0;;;;;;;;;;;;-1:-1:-1;;;7257:7:0;;;;7195:71;;7630:139;;;;;;;;;;-1:-1:-1;7630:139:0;;;;;:::i;:::-;;:::i;7775:127::-;;;;;;;;;;-1:-1:-1;7775:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7873:18:0;;;7856:7;7873:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7775:127;3422:111;;;;;;;;;;-1:-1:-1;3422:111:0;;;;;:::i;:::-;;:::i;5257:55::-;;;;;;;;;;;;;;;;14308:463;3725:4;3750:5;-1:-1:-1;;;;;3750:5:0;3389:10;3739:16;3373:38;;;;-1:-1:-1;;;3373:38:0;;;;;;;:::i;:::-;;;;;;;;;14367:15:::1;14393:42;14367:69;;14447:13;14472:7;-1:-1:-1::0;;;;;14472:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14463:38:0::1;;14510:4;14517:7;-1:-1:-1::0;;;;;14517:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14463:69;::::0;-1:-1:-1;;;;;;14463:69:0::1;::::0;;;;;;-1:-1:-1;;;;;4935:15:1;;;14463:69:0::1;::::0;::::1;4917:34:1::0;4987:15;;4967:18;;;4960:43;4852:18;;14463:69:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14543:6;:16:::0;;-1:-1:-1;;;;;14543:16:0;;::::1;-1:-1:-1::0;;;;;;14543:16:0;;::::1;::::0;::::1;::::0;;;14561:6:::1;:14:::0;;;;::::1;::::0;;;::::1;;::::0;;14447:85;;-1:-1:-1;14587:53:0::1;::::0;14604:4:::1;::::0;-1:-1:-1;;14587:8:0::1;:53::i;:::-;14652:6;::::0;-1:-1:-1;;;;;14652:6:0::1;:22;14682:9;14701:4;14707:24;14701:4:::0;-1:-1:-1;;;;;7604:18:0;7587:7;7604:18;;;:9;:18;;;;;;;7521:103;14707:24:::1;14732:1;14734::::0;14736:10:::1;14747:15;14652:111;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14356:415;;14308:463::o:0;8363:133::-;8438:4;8445:37;8454:10;8466:7;8475:6;8445:8;:37::i;:::-;-1:-1:-1;8490:4:0;8363:133;;;;;:::o;8502:132::-;7604:9;:18;;;;6026:42;8555:7;7604:18;;;;;8555:7;;8572:60;;:33;;5234:15;5167:1;5234:2;:15;:::i;:::-;5217:33;;:13;:33;:::i;:::-;8572:16;;:33::i;:60::-;8565:67;;8502:132;:::o;12334:309::-;12432:4;12449:36;12459:6;12467:9;12478:6;12449:9;:36::i;:::-;12496:117;12505:6;12513:10;12525:87;12561:6;12525:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12525:19:0;;;;;;:11;:19;;;;;;;;12545:10;12525:31;;;;;;;;;:87;:35;:87::i;:::-;12496:8;:117::i;:::-;-1:-1:-1;12631:4:0;12334:309;;;;;;:::o;7345:86::-;3725:4;3750:5;-1:-1:-1;;;;;3750:5:0;3389:10;3739:16;3373:38;;;;-1:-1:-1;;;3373:38:0;;;;;;;:::i;:::-;7389:14:::1;:21:::0;;-1:-1:-1;;7411:18:0;;;;;7345:86::o;7908:108::-;3725:4;3750:5;-1:-1:-1;;;;;3750:5:0;3389:10;3739:16;3373:38;;;;-1:-1:-1;;;3373:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7982:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;7982:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7908:108::o;10113:314::-;3725:4;3750:5;-1:-1:-1;;;;;3750:5:0;3389:10;3739:16;3373:38;;;;-1:-1:-1;;;3373:38:0;;;;;;;:::i;:::-;10229:11:::1;:24:::0;;-1:-1:-1;;;;;10229:24:0;;::::1;-1:-1:-1::0;;;;;;10229:24:0;;::::1;::::0;::::1;::::0;;;10255:11:::1;:24:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;10281:16:::1;:31:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;10229:11:::1;10323:23:::0;;;:11:::1;:23;::::0;;;;;:30;;-1:-1:-1;;10323:30:0;;::::1;10229:24:::0;10323:30;;::::1;::::0;;;10355:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;10387:25;;;;;;:32;;;;::::1;::::0;;::::1;::::0;;10113:314::o;3539:77::-;3725:4;3750:5;-1:-1:-1;;;;;3750:5:0;3389:10;3739:16;3373:38;;;;-1:-1:-1;;;3373:38:0;;;;;;;:::i;:::-;3611:1:::1;3595:18:::0;;-1:-1:-1;;;;;;3595:18:0::1;::::0;;3539:77::o;12651:162::-;3725:4;3750:5;-1:-1:-1;;;;;3750:5:0;3389:10;3739:16;3373:38;;;;-1:-1:-1;;;3373:38:0;;;;;;;:::i;:::-;5234:15:::1;5167:1;5234:2;:15;:::i;:::-;5217:33;::::0;:13:::1;:33;:::i;:::-;12703:11;:26:::0;5234:15:::1;5167:1;5234:2;:15;:::i;:::-;5217:33;::::0;:13:::1;:33;:::i;:::-;12740:13;:28:::0;5234:15:::1;5167:1;5234:2;:15;:::i;:::-;5217:33;::::0;:13:::1;:33;:::i;:::-;12779:11;:26:::0;12651:162::o;7630:139::-;7708:4;7715:40;7725:10;7737:9;7748:6;7715:9;:40::i;3422:111::-;3725:4;3750:5;-1:-1:-1;;;;;3750:5:0;3389:10;3739:16;3373:38;;;;-1:-1:-1;;;3373:38:0;;;;;;;:::i;:::-;3488:5:::1;:11:::0;;-1:-1:-1;;;;;;3488:11:0::1;-1:-1:-1::0;;;;;3488:11:0;::::1;::::0;;::::1;::::0;;;3506:25:::1;::::0;160:51:1;;;3506:25:0::1;::::0;148:2:1;133:18;3506:25:0::1;;;;;;;3422:111:::0;:::o;8022:335::-;-1:-1:-1;;;;;8115:19:0;;8107:68;;;;-1:-1:-1;;;8107:68:0;;8043:2:1;8107:68:0;;;8025:21:1;8082:2;8062:18;;;8055:30;8121:34;8101:18;;;8094:62;-1:-1:-1;;;8172:18:1;;;8165:34;8216:19;;8107:68:0;7841:400:1;8107:68:0;-1:-1:-1;;;;;8194:21:0;;8186:68;;;;-1:-1:-1;;;8186:68:0;;8448:2:1;8186:68:0;;;8430:21:1;8487:2;8467:18;;;8460:30;8526:34;8506:18;;;8499:62;-1:-1:-1;;;8577:18:1;;;8570:32;8619:19;;8186:68:0;8246:398:1;8186:68:0;-1:-1:-1;;;;;8265:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8317:32;;1569:25:1;;;8317:32:0;;1542:18:1;8317:32:0;;;;;;;8022:335;;;:::o;1450:98::-;1508:7;1535:5;1539:1;1535;:5;:::i;10971:1355::-;-1:-1:-1;;;;;11068:20:0;;11060:70;;;;-1:-1:-1;;;11060:70:0;;8984:2:1;11060:70:0;;;8966:21:1;9023:2;9003:18;;;8996:30;9062:34;9042:18;;;9035:62;-1:-1:-1;;;9113:18:1;;;9106:35;9158:19;;11060:70:0;8782:401:1;11060:70:0;-1:-1:-1;;;;;11149:23:0;;11141:71;;;;-1:-1:-1;;;11141:71:0;;9390:2:1;11141:71:0;;;9372:21:1;9429:2;9409:18;;;9402:30;9468:34;9448:18;;;9441:62;-1:-1:-1;;;9519:18:1;;;9512:33;9562:19;;11141:71:0;9188:399:1;11141:71:0;-1:-1:-1;;;;;11227:19:0;;;;;;:11;:19;;;;;;;;11226:20;:47;;;;-1:-1:-1;;;;;;11251:22:0;;;;;;:11;:22;;;;;;;;11250:23;11226:47;11223:95;;;11283:14;;;;11275:41;;;;-1:-1:-1;;;11275:41:0;;9794:2:1;11275:41:0;;;9776:21:1;9833:2;9813:18;;;9806:30;-1:-1:-1;;;9852:18:1;;;9845:44;9906:18;;11275:41:0;9592:338:1;11275:41:0;-1:-1:-1;;;;;11332:19:0;;;;;;:11;:19;;;;;;;;11331:20;:47;;;;-1:-1:-1;;;;;;11356:22:0;;;;;;:11;:22;;;;;;;;11355:23;11331:47;:79;;;;-1:-1:-1;11403:6:0;;-1:-1:-1;;;;;11382:28:0;;;11403:6;;11382:28;;11331:79;:109;;;;-1:-1:-1;;;;;;11414:26:0;;6026:42;11414:26;;11331:109;11328:222;;;11502:11;;-1:-1:-1;;;;;11465:20:0;;;;;;:9;:20;;;;;;:32;;11490:6;11465:24;:32::i;:::-;11464:49;;11456:92;;;;-1:-1:-1;;;11456:92:0;;10137:2:1;11456:92:0;;;10119:21:1;10176:2;10156:18;;;10149:30;10215:32;10195:18;;;10188:60;10265:18;;11456:92:0;9935:354:1;11456:92:0;11573:6;;-1:-1:-1;;;;;11563:16:0;;;11573:6;;11563:16;11560:125;;11599:13;;11589:6;:23;;:46;;;-1:-1:-1;;;;;;11616:19:0;;;;;;:11;:19;;;;;;;;11589:46;:72;;;-1:-1:-1;;;;;;11639:22:0;;;;;;:11;:22;;;;;;;;11589:72;11581:102;;;;-1:-1:-1;;;11581:102:0;;10496:2:1;11581:102:0;;;10478:21:1;10535:2;10515:18;;;10508:30;-1:-1:-1;;;10554:18:1;;;10547:47;10611:18;;11581:102:0;10294:341:1;11581:102:0;11713:11;;11703:6;:21;;:44;;;-1:-1:-1;;;;;;11728:19:0;;;;;;:11;:19;;;;;;;;11703:44;:70;;;-1:-1:-1;;;;;;11751:22:0;;;;;;:11;:22;;;;;;;;11703:70;11695:100;;;;-1:-1:-1;;;11695:100:0;;10496:2:1;11695:100:0;;;10478:21:1;10535:2;10515:18;;;10508:30;-1:-1:-1;;;10554:18:1;;;10547:47;10611:18;;11695:100:0;10294:341:1;11695:100:0;11823:6;;-1:-1:-1;;;;;11810:19:0;;;11823:6;;11810:19;:43;;;;-1:-1:-1;;;;;;11834:19:0;;;;;;:11;:19;;;;;;;;11833:20;11810:43;11807:73;;;11876:1;11855:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11807:73:0;11893:40;11907:6;11915:9;11926:6;11893:13;:40::i;:::-;11890:94;;;11935:23;11944:13;;11935:8;:23::i;:::-;11980:1;11960:9;:22;11890:94;-1:-1:-1;;;;;12014:17:0;;;;;;:9;:17;;;;;;:29;;12036:6;12014:21;:29::i;:::-;-1:-1:-1;;;;;11994:17:0;;;;;;:9;:17;;;;;:49;;;;12079:35;12004:6;12104:9;12079:16;:35::i;:::-;:106;;12179:6;12079:106;;;12131:45;12150:6;12158:9;12169:6;12131:18;:45::i;:::-;-1:-1:-1;;;;;12219:20:0;;;;;;:9;:20;;;;;;12054:131;;-1:-1:-1;12219:40:0;;12054:131;12219:24;:40::i;:::-;-1:-1:-1;;;;;12196:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12275:43;;;;;;;;;;12303:14;1569:25:1;;1557:2;1542:18;;1423:177;12275:43:0;;;;;;;;11049:1277;10971:1355;;;:::o;1770:240::-;1890:7;1951:12;1943:6;;;;1935:29;;;;-1:-1:-1;;;1935:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1986:5:0;;;1770:240::o;1344:98::-;1402:7;1429:5;1433:1;1429;:5;:::i;8642:400::-;8782:14;;8857:13;;8847:4;8739;7604:18;;;:9;:18;;;;;;8889:8;;8739:4;;8772:24;;;;-1:-1:-1;8829:41:0;;8889:8;;8888:9;:24;;;;-1:-1:-1;8901:11:0;;;;;;;8888:24;:42;;;;-1:-1:-1;8916:14:0;;;;8888:42;:54;;;;;8934:8;8888:54;:78;;;;-1:-1:-1;;;;;;8947:19:0;;;;;;:11;:19;;;;;;;;8946:20;8888:78;:101;;;;-1:-1:-1;8983:6:0;;-1:-1:-1;;;;;8970:19:0;;;8983:6;;8970:19;8888:101;:128;;;;;9006:10;;8993:9;;:23;;8888:128;:146;;;;;9020:14;8888:146;8881:153;8642:400;-1:-1:-1;;;;;;8642:400:0:o;9050:1055::-;5784:8;:15;;-1:-1:-1;;5784:15:0;5795:4;5784:15;;;;;;9185:14:::1;::::0;9167:12:::1;::::0;9143::::1;::::0;5784:8;;9142:66:::1;::::0;9206:1:::1;::::0;9143:57:::1;::::0;9185:14;;9143:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;:57::-;9142:63:::0;::::1;:66::i;:::-;9119:89;;9219:32;9254:46;9287:12;9254:28;9269:12;;9254:10;:14;;:28;;;;:::i;:::-;:32:::0;::::1;:46::i;:::-;9219:81:::0;-1:-1:-1;9311:14:0::1;9328:40;:10:::0;9219:81;9328:14:::1;:40::i;:::-;9311:57:::0;-1:-1:-1;9404:21:0::1;9436;9311:57:::0;9436:13:::1;:21::i;:::-;9468:20;9491:41;:21;9517:14:::0;9491:25:::1;:41::i;:::-;9468:64;;9543:19;9564:48;9581:30;9598:12;;9581;:16;;:30;;;;:::i;:::-;9564:12:::0;;:16:::1;:48::i;:::-;9543:69;;9623:29;9655;9671:12;;9655:11;:15;;:29;;;;:::i;:::-;9623:61:::0;-1:-1:-1;9698:34:0;;9695:103:::1;;9734:61;9747:24;9773:21;9734:12;:61::i;:::-;9854:12;::::0;9808:20:::1;::::0;9831:36:::1;::::0;:18:::1;:11:::0;9847:1:::1;9831:15;:18::i;:36::-;9808:59:::0;-1:-1:-1;9881:16:0;;9878:66:::1;;9907:11;::::0;9899:43:::1;::::0;-1:-1:-1;;;;;9907:11:0;;::::1;::::0;9899:43;::::1;;;::::0;9929:12;;9907:11:::1;9899:43:::0;9907:11;9899:43;9929:12;9907:11;9899:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;9878:66;9980:21;10015:28:::0;;10012:86:::1;;10053:16;::::0;10045:51:::1;::::0;-1:-1:-1;;;;;10053:16:0;;::::1;::::0;10045:51;::::1;;;::::0;10080:15;;10053:16:::1;10045:51:::0;10053:16;10045:51;10080:15;10053:16;10045:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10012:86;-1:-1:-1::0;;5804:8:0;:16;;-1:-1:-1;;5804:16:0;;;-1:-1:-1;;;;;;;;9050:1055:0:o;10567:163::-;-1:-1:-1;;;;;10676:19:0;;10651:4;10676:19;;;:11;:19;;;;;;;;10675:20;:47;;;;-1:-1:-1;;;;;;;10700:22:0;;;;;:11;:22;;;;;;;;10699:23;;10567:163;-1:-1:-1;10567:163:0:o;12825:692::-;12922:7;12980:1;12945:32;12959:6;12967:9;12945:13;:32::i;:::-;:36;12942:553;;;12993:17;13013:61;13062:11;;13013:44;13024:32;13038:6;13046:9;13024:13;:32::i;:::-;13013:6;;:10;:44::i;:61::-;12993:81;;13090:25;13108:6;-1:-1:-1;;;;;10523:28:0;10499:4;10523:28;;;:19;:28;;;;;;;;;10435:124;13090:25;13085:152;;13163:4;13145:24;;;;:9;:24;;;;;;:39;;13174:9;13145:28;:39::i;:::-;13136:4;13118:24;;;;:9;:24;;;;;:66;13085:152;;;-1:-1:-1;;;;;13204:20:0;;;;;;:9;:20;;;;;:30;;;;;;;13085:152;13252:42;;1569:25:1;;;13277:4:0;;-1:-1:-1;;;;;13252:42:0;;;;;1557:2:1;1542:18;13252:42:0;;;;;;;13326:1;13308:7;;:20;:66;;;;;13367:7;;13332:32;13346:6;13354:9;13332:13;:32::i;:::-;:42;13308:66;13305:150;;;13376:77;13394:4;6026:42;13416:36;13444:7;;13416:23;13427:11;;13416:6;:10;;:23;;;;:::i;:36::-;13376:9;:77::i;:::-;13472:21;:6;13483:9;13472:10;:21::i;:::-;13465:28;;;;;12942:553;-1:-1:-1;13503:6:0;12825:692;-1:-1:-1;;12825:692:0:o;1556:98::-;1614:7;1641:5;1645:1;1641;:5;:::i;2265:98::-;2323:7;2350:5;2354:1;2350;:5;:::i;13869:431::-;13956:16;;;13970:1;13956:16;;;;;;;;13932:21;;13956:16;;;;;;;;;;-1:-1:-1;13956:16:0;13932:40;;14001:4;13983;13988:1;13983:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13983:23:0;;;:7;;;;;;;;;;:23;;;;14027:6;;:13;;;-1:-1:-1;;;14027:13:0;;;;:6;;;;;:11;;:13;;;;;13983:7;;14027:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14017:4;14022:1;14017:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14017:23:0;;;:7;;;;;;;;;:23;14083:6;;14051:53;;14068:4;;14083:6;14092:11;14051:8;:53::i;:::-;14115:6;;:177;;-1:-1:-1;;;14115:177:0;;-1:-1:-1;;;;;14115:6:0;;;;:57;;:177;;14187:11;;14115:6;;14229:4;;14256;;14276:15;;14115:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13921:379;13869:431;:::o;13525:336::-;13638:6;;13606:53;;13623:4;;-1:-1:-1;;;;;13638:6:0;13647:11;13606:8;:53::i;:::-;13670:6;;13811:11;;13670:183;;-1:-1:-1;;;13670:183:0;;-1:-1:-1;;;;;13670:6:0;;;;:22;;13700:9;;13670:183;;13733:4;;13753:11;;13670:6;;;;13811:11;;13837:15;;13670:183;;;:::i;10738:225::-;10855:6;;10819:7;;-1:-1:-1;;;;;10855:6:0;;;10842:19;;;;10839:40;;-1:-1:-1;10870:7:0;;10863:14;;10839:40;10902:6;;-1:-1:-1;;;;;10902:6:0;;;10892:16;;;;10889:38;;-1:-1:-1;10917:8:0;;10910:15;;10889:38;-1:-1:-1;10944:11:0;;10738:225;;;;:::o;222:548:1:-;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;506:3;691:1;686:2;677:6;666:9;662:22;658:31;651:42;761:2;754;750:7;745:2;737:6;733:15;729:29;718:9;714:45;710:54;702:62;;;;222:548;;;;:::o;775:131::-;-1:-1:-1;;;;;850:31:1;;840:42;;830:70;;896:1;893;886:12;830:70;775:131;:::o;911:315::-;979:6;987;1040:2;1028:9;1019:7;1015:23;1011:32;1008:52;;;1056:1;1053;1046:12;1008:52;1095:9;1082:23;1114:31;1139:5;1114:31;:::i;:::-;1164:5;1216:2;1201:18;;;;1188:32;;-1:-1:-1;;;911:315:1:o;1605:456::-;1682:6;1690;1698;1751:2;1739:9;1730:7;1726:23;1722:32;1719:52;;;1767:1;1764;1757:12;1719:52;1806:9;1793:23;1825:31;1850:5;1825:31;:::i;:::-;1875:5;-1:-1:-1;1932:2:1;1917:18;;1904:32;1945:33;1904:32;1945:33;:::i;:::-;1605:456;;1997:7;;-1:-1:-1;;;2051:2:1;2036:18;;;;2023:32;;1605:456::o;2066:247::-;2125:6;2178:2;2166:9;2157:7;2153:23;2149:32;2146:52;;;2194:1;2191;2184:12;2146:52;2233:9;2220:23;2252:31;2277:5;2252:31;:::i;2507:416::-;2572:6;2580;2633:2;2621:9;2612:7;2608:23;2604:32;2601:52;;;2649:1;2646;2639:12;2601:52;2688:9;2675:23;2707:31;2732:5;2707:31;:::i;:::-;2757:5;-1:-1:-1;2814:2:1;2799:18;;2786:32;2856:15;;2849:23;2837:36;;2827:64;;2887:1;2884;2877:12;2827:64;2910:7;2900:17;;;2507:416;;;;;:::o;2928:529::-;3005:6;3013;3021;3074:2;3062:9;3053:7;3049:23;3045:32;3042:52;;;3090:1;3087;3080:12;3042:52;3129:9;3116:23;3148:31;3173:5;3148:31;:::i;:::-;3198:5;-1:-1:-1;3255:2:1;3240:18;;3227:32;3268:33;3227:32;3268:33;:::i;:::-;3320:7;-1:-1:-1;3379:2:1;3364:18;;3351:32;3392:33;3351:32;3392:33;:::i;:::-;3444:7;3434:17;;;2928:529;;;;;:::o;3462:388::-;3530:6;3538;3591:2;3579:9;3570:7;3566:23;3562:32;3559:52;;;3607:1;3604;3597:12;3559:52;3646:9;3633:23;3665:31;3690:5;3665:31;:::i;:::-;3715:5;-1:-1:-1;3772:2:1;3757:18;;3744:32;3785:33;3744:32;3785:33;:::i;4115:329::-;4317:2;4299:21;;;4356:1;4336:18;;;4329:29;-1:-1:-1;;;4389:2:1;4374:18;;4367:36;4435:2;4420:18;;4115:329::o;4449:251::-;4519:6;4572:2;4560:9;4551:7;4547:23;4543:32;4540:52;;;4588:1;4585;4578:12;4540:52;4620:9;4614:16;4639:31;4664:5;4639:31;:::i;5014:607::-;-1:-1:-1;;;;;5373:15:1;;;5355:34;;5420:2;5405:18;;5398:34;;;;5463:2;5448:18;;5441:34;;;;5506:2;5491:18;;5484:34;;;;5555:15;;;5549:3;5534:19;;5527:44;5335:3;5587:19;;5580:35;;;;5304:3;5289:19;;5014:607::o;5626:306::-;5714:6;5722;5730;5783:2;5771:9;5762:7;5758:23;5754:32;5751:52;;;5799:1;5796;5789:12;5751:52;5828:9;5822:16;5812:26;;5878:2;5867:9;5863:18;5857:25;5847:35;;5922:2;5911:9;5907:18;5901:25;5891:35;;5626:306;;;;;:::o;5937:127::-;5998:10;5993:3;5989:20;5986:1;5979:31;6029:4;6026:1;6019:15;6053:4;6050:1;6043:15;6069:422;6158:1;6201:5;6158:1;6215:270;6236:7;6226:8;6223:21;6215:270;;;6295:4;6291:1;6287:6;6283:17;6277:4;6274:27;6271:53;;;6304:18;;:::i;:::-;6354:7;6344:8;6340:22;6337:55;;;6374:16;;;;6337:55;6453:22;;;;6413:15;;;;6215:270;;;6219:3;6069:422;;;;;:::o;6496:806::-;6545:5;6575:8;6565:80;;-1:-1:-1;6616:1:1;6630:5;;6565:80;6664:4;6654:76;;-1:-1:-1;6701:1:1;6715:5;;6654:76;6746:4;6764:1;6759:59;;;;6832:1;6827:130;;;;6739:218;;6759:59;6789:1;6780:10;;6803:5;;;6827:130;6864:3;6854:8;6851:17;6848:43;;;6871:18;;:::i;:::-;-1:-1:-1;;6927:1:1;6913:16;;6942:5;;6739:218;;7041:2;7031:8;7028:16;7022:3;7016:4;7013:13;7009:36;7003:2;6993:8;6990:16;6985:2;6979:4;6976:12;6972:35;6969:77;6966:159;;;-1:-1:-1;7078:19:1;;;7110:5;;6966:159;7157:34;7182:8;7176:4;7157:34;:::i;:::-;7227:6;7223:1;7219:6;7215:19;7206:7;7203:32;7200:58;;;7238:18;;:::i;:::-;7276:20;;6496:806;-1:-1:-1;;;6496:806:1:o;7307:140::-;7365:5;7394:47;7435:4;7425:8;7421:19;7415:4;7394:47;:::i;7452:168::-;7525:9;;;7556;;7573:15;;;7567:22;;7553:37;7543:71;;7594:18;;:::i;8649:128::-;8716:9;;;8737:11;;;8734:37;;;8751:18;;:::i;10640:125::-;10705:9;;;10726:10;;;10723:36;;;10739:18;;:::i;10770:217::-;10810:1;10836;10826:132;;10880:10;10875:3;10871:20;10868:1;10861:31;10915:4;10912:1;10905:15;10943:4;10940:1;10933:15;10826:132;-1:-1:-1;10972:9:1;;10770:217::o;11124:127::-;11185:10;11180:3;11176:20;11173:1;11166:31;11216:4;11213:1;11206:15;11240:4;11237:1;11230:15;11256:980;11518:4;11566:3;11555:9;11551:19;11597:6;11586:9;11579:25;11623:2;11661:6;11656:2;11645:9;11641:18;11634:34;11704:3;11699:2;11688:9;11684:18;11677:31;11728:6;11763;11757:13;11794:6;11786;11779:22;11832:3;11821:9;11817:19;11810:26;;11871:2;11863:6;11859:15;11845:29;;11892:1;11902:195;11916:6;11913:1;11910:13;11902:195;;;11981:13;;-1:-1:-1;;;;;11977:39:1;11965:52;;12072:15;;;;12037:12;;;;12013:1;11931:9;11902:195;;;-1:-1:-1;;;;;;;12153:32:1;;;;12148:2;12133:18;;12126:60;-1:-1:-1;;;12217:3:1;12202:19;12195:35;12114:3;11256:980;-1:-1:-1;;;11256:980:1:o

Swarm Source

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