ETH Price: $2,980.90 (+1.69%)
Gas: 1 Gwei

Token

Taika Suru 退化する (Taika)
 

Overview

Max Total Supply

1,000,000,000,000,000 Taika

Holders

191

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
340,043,147,896.852028895 Taika

Value
$0.00
0xce864729ab8b45b8464993e5f7d873e6f6fc9a56
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:
Taika

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-14
*/

/**
https://t.me/TaikaResearch

https://twitter.com/TaikaResearch
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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;
    }

}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
} 

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 Taika is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1 * 1e15 * 1e9; 
    uint256 public _maxWalletSize;
    uint256 public _maxTxn;

    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _sellTax;
    uint256 private _buyTax;
    uint256 public SWAPamount = 1 * 1e13 * 1e9; // 1%
    
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private dev;
    address payable private mktg;


    event maxWalletSizeamountUpdated(uint _maxWalletSize);
    event maxTxnUpdate(uint _maxTxn);
    event SWAPamountUpdated(uint SWAPamount);

    string private constant _name = unicode"Taika Suru 退化する";
    string private constant _symbol = "Taika";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
   
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        dev = payable(0x822333AA385E454787bedE9A776D5eC1fa9c473A);
        mktg = payable(0x7eE9425a459a278D4A206568A501c8e3136B370E);

        _rOwned[address(this)] = _rTotal;
        _sellTax = 30;
        _buyTax = 0;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[dev] = true;
        _isExcludedFromFee[address(0)] = true;


        emit Transfer(address(0), address(this), _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 tokenFromReflection(_rOwned[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 tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    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(!bots[from] && !bots[to]);
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if (! _isExcludedFromFee[to] && ! _isExcludedFromFee[from]) {
            _feeAddr1 = 0;
            _feeAddr2 = _buyTax;
        }

        if (to != uniswapV2Pair && ! _isExcludedFromFee[to] && ! _isExcludedFromFee[from]) {
            require(amount + balanceOf(to) <= _maxWalletSize, "Over max wallet size.");
            require(amount <= _maxTxn, "Buy transfer amount exceeds the maxTransactionAmount.");

        }
        

        if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
            require(!bots[from] && !bots[to]);
            _feeAddr1 = 0;
            _feeAddr2 = _sellTax;
        }

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            _feeAddr1 = 0;
            _feeAddr2 = 0;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        if (!inSwap && from != uniswapV2Pair && swapEnabled) {
            if (contractTokenBalance > SWAPamount) {
                swapTokensForEth(contractTokenBalance);
            }
            
            uint256 contractETHBalance = address(this).balance;
            if(contractETHBalance > 0) {
                sendETHToFee(address(this).balance);
            }
        }    
		
        _tokenTransfer(from,to,amount);
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        _maxWalletSize = 3 * 1e13 * 1e9; //3%
        _maxTxn = 3 * 1e13 * 1e9;

        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    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 updateFees(uint256 sellTax, uint256 reflections, uint256 buyTax) external onlyOwner {
        _feeAddr1 = reflections;
        _sellTax = sellTax;
        _buyTax = buyTax;
        require(reflections <= 5, "Must keep fees at 5% or less");
        require(sellTax <= 30, "Must keep fees at 30% or less");
        require(buyTax <= 10, "Must keep fees at 10% or less");
    }
    
    function liftMax() external {
        require(_msgSender() == dev);
        _maxWalletSize = _tTotal;
        _maxTxn = _tTotal;
        
    }

    function sendETHToFee(uint256 amount) private {
        dev.transfer((amount).div(5).mul(3));
        mktg.transfer((amount).div(5).mul(2));

    }

    function setMarketingWallet(address payable walletAddress) public onlyOwner {
        mktg = walletAddress;
    }

    function updateSWAPamount(uint256 newNum) external {
        require(_msgSender() == dev);
        SWAPamount = newNum;
    }

    function updateMaxWalletamount(uint256 newNum) external onlyOwner {
        _maxWalletSize = newNum;
    }

    function updateMaxTxn(uint256 newNum) external onlyOwner {
        _maxTxn = newNum;
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function manualswap() external {
        require(_msgSender() == dev);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == dev);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
    
    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _feeAddr1, _feeAddr2);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

	function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"SWAPamount","type":"uint256"}],"name":"SWAPamountUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxn","type":"uint256"}],"name":"maxTxnUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxWalletSize","type":"uint256"}],"name":"maxWalletSizeamountUpdated","type":"event"},{"inputs":[],"name":"SWAPamount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liftMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"walletAddress","type":"address"}],"name":"setMarketingWallet","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellTax","type":"uint256"},{"internalType":"uint256","name":"reflections","type":"uint256"},{"internalType":"uint256","name":"buyTax","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletamount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateSWAPamount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001c69d3c21bcecceda10000006000196200022a565b6200002a9060001962000206565b60085569021e19e0c9bab2400000600c556012805461ffff60a81b191690553480156200005657600080fd5b506200006233620001b6565b600f80546001600160a01b031990811673822333aa385e454787bede9a776d5ec1fa9c473a1790915560108054909116737ee9425a459a278d4a206568a501c8e3136b370e179055600854306000908152600160208190526040822092909255601e600a55600b819055600490620000e26000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308082526004909452828120805486166001908117909155600f54909216815282812080548616831790558080527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec8054909516909117909355519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620001a89069d3c21bcecceda1000000815260200190565b60405180910390a36200024b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000828210156200022557634e487b7160e01b81526011600452602481fd5b500390565b6000826200024657634e487b7160e01b81526012600452602481fd5b500690565b611ec0806200025b6000396000f3fe6080604052600436106101855760003560e01c8063753e3aa9116100d1578063c3a6912e1161008a578063dd62ed3e11610064578063dd62ed3e1461046a578063e13071d7146104b0578063ea3105d9146104d0578063f2fde38b146104e557600080fd5b8063c3a6912e1461042a578063c3c8cd8014610440578063c9567bf91461045557600080fd5b8063753e3aa91461035e5780638da5cb5b1461037e5780638f9a55c0146103a657806395d89b41146103bc578063a9059cbb146103ea578063b515566a1461040a57600080fd5b80632bc4d48b1161013e5780635d098b38116101185780635d098b38146102f45780636fc3eaec1461031457806370a0823114610329578063715018a61461034957600080fd5b80632bc4d48b146102a2578063313ce567146102c25780635cbde150146102de57600080fd5b806306fdde0314610191578063095ea7b3146101e957806318160ddd14610219578063224290851461024057806323b872dd14610262578063273123b71461028257600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b5060408051808201909152601781527f5461696b61205375727520e98080e58c96e38199e3828b00000000000000000060208201525b6040516101e09190611ca0565b60405180910390f35b3480156101f557600080fd5b50610209610204366004611b1e565b610505565b60405190151581526020016101e0565b34801561022557600080fd5b5069d3c21bcecceda10000005b6040519081526020016101e0565b34801561024c57600080fd5b5061026061025b366004611c48565b61051c565b005b34801561026e57600080fd5b5061020961027d366004611ade565b610656565b34801561028e57600080fd5b5061026061029d366004611a6e565b6106bf565b3480156102ae57600080fd5b506102606102bd366004611c30565b61070a565b3480156102ce57600080fd5b50604051600981526020016101e0565b3480156102ea57600080fd5b50610232600c5481565b34801561030057600080fd5b5061026061030f366004611a6e565b610739565b34801561032057600080fd5b50610260610785565b34801561033557600080fd5b50610232610344366004611a6e565b6107b2565b34801561035557600080fd5b506102606107d4565b34801561036a57600080fd5b50610260610379366004611c30565b61080a565b34801561038a57600080fd5b506000546040516001600160a01b0390911681526020016101e0565b3480156103b257600080fd5b5061023260065481565b3480156103c857600080fd5b506040805180820190915260058152645461696b6160d81b60208201526101d3565b3480156103f657600080fd5b50610209610405366004611b1e565b610839565b34801561041657600080fd5b50610260610425366004611b49565b610846565b34801561043657600080fd5b5061023260075481565b34801561044c57600080fd5b506102606108ea565b34801561046157600080fd5b50610260610920565b34801561047657600080fd5b50610232610485366004611aa6565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156104bc57600080fd5b506102606104cb366004611c30565b610ce9565b3480156104dc57600080fd5b50610260610d0e565b3480156104f157600080fd5b50610260610500366004611a6e565b610d43565b6000610512338484610ddb565b5060015b92915050565b6000546001600160a01b0316331461054f5760405162461bcd60e51b815260040161054690611cf3565b60405180910390fd5b600d829055600a839055600b81905560058211156105af5760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203525206f72206c657373000000006044820152606401610546565b601e8311156106005760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610546565b600a8111156106515760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610546565b505050565b6000610663848484610eff565b6106b584336106b085604051806060016040528060288152602001611e63602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906112ad565b610ddb565b5060019392505050565b6000546001600160a01b031633146106e95760405162461bcd60e51b815260040161054690611cf3565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146107345760405162461bcd60e51b815260040161054690611cf3565b600755565b6000546001600160a01b031633146107635760405162461bcd60e51b815260040161054690611cf3565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600f546001600160a01b0316336001600160a01b0316146107a557600080fd5b476107af816112e7565b50565b6001600160a01b0381166000908152600160205260408120546105169061137c565b6000546001600160a01b031633146107fe5760405162461bcd60e51b815260040161054690611cf3565b6108086000611400565b565b6000546001600160a01b031633146108345760405162461bcd60e51b815260040161054690611cf3565b600655565b6000610512338484610eff565b6000546001600160a01b031633146108705760405162461bcd60e51b815260040161054690611cf3565b60005b81518110156108e6576001600560008484815181106108a257634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806108de81611e06565b915050610873565b5050565b600f546001600160a01b0316336001600160a01b03161461090a57600080fd5b6000610915306107b2565b90506107af81611450565b6000546001600160a01b0316331461094a5760405162461bcd60e51b815260040161054690611cf3565b601254600160a01b900460ff16156109a45760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610546565b601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109e2308269d3c21bcecceda1000000610ddb565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610a1b57600080fd5b505afa158015610a2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a539190611a8a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9b57600080fd5b505afa158015610aaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad39190611a8a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610b1b57600080fd5b505af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b539190611a8a565b601280546001600160a01b0319166001600160a01b039283161790556011541663f305d7194730610b83816107b2565b600080610b986000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015610bfb57600080fd5b505af1158015610c0f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c349190611c73565b50506012805469065a4da25d3016c00000600681905560075562ff00ff60a01b1981166201000160a01b1790915560115460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b158015610cb157600080fd5b505af1158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e69190611c10565b600f546001600160a01b0316336001600160a01b031614610d0957600080fd5b600c55565b600f546001600160a01b0316336001600160a01b031614610d2e57600080fd5b69d3c21bcecceda10000006006819055600755565b6000546001600160a01b03163314610d6d5760405162461bcd60e51b815260040161054690611cf3565b6001600160a01b038116610dd25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610546565b6107af81611400565b6001600160a01b038316610e3d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610546565b6001600160a01b038216610e9e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610546565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526005602052604090205460ff16158015610f4157506001600160a01b03821660009081526005602052604090205460ff16155b610f4a57600080fd5b60008111610fac5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610546565b6001600160a01b03821660009081526004602052604090205460ff16158015610fee57506001600160a01b03831660009081526004602052604090205460ff16155b15610fff576000600d55600b54600e555b6012546001600160a01b0383811691161480159061103657506001600160a01b03821660009081526004602052604090205460ff16155b801561105b57506001600160a01b03831660009081526004602052604090205460ff16155b1561112c5760065461106c836107b2565b6110769083611d98565b11156110bc5760405162461bcd60e51b815260206004820152601560248201527427bb32b91036b0bc103bb0b63632ba1039b4bd329760591b6044820152606401610546565b60075481111561112c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610546565b6012546001600160a01b03838116911614801561115757506011546001600160a01b03848116911614155b801561117c57506001600160a01b03831660009081526004602052604090205460ff16155b156111d8576001600160a01b03831660009081526005602052604090205460ff161580156111c357506001600160a01b03821660009081526005602052604090205460ff16155b6111cc57600080fd5b6000600d55600a54600e555b6001600160a01b03831660009081526004602052604090205460ff168061121757506001600160a01b03821660009081526004602052604090205460ff165b15611227576000600d819055600e555b6000611232306107b2565b601254909150600160a81b900460ff1615801561125d57506012546001600160a01b03858116911614155b80156112725750601254600160b01b900460ff165b1561129c57600c5481111561128a5761128a81611450565b47801561129a5761129a476112e7565b505b6112a78484846115f5565b50505050565b600081848411156112d15760405162461bcd60e51b81526004016105469190611ca0565b5060006112de8486611def565b95945050505050565b600f546001600160a01b03166108fc61130c6003611306856005611600565b90611642565b6040518115909202916000818181858888f19350505050158015611334573d6000803e3d6000fd5b506010546001600160a01b03166108fc6113546002611306856005611600565b6040518115909202916000818181858888f193505050501580156108e6573d6000803e3d6000fd5b60006008548211156113e35760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610546565b60006113ed6116c1565b90506113f98382611600565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6012805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106114a657634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156114fa57600080fd5b505afa15801561150e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115329190611a8a565b8160018151811061155357634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526011546115799130911684610ddb565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac947906115b2908590600090869030904290600401611d28565b600060405180830381600087803b1580156115cc57600080fd5b505af11580156115e0573d6000803e3d6000fd5b50506012805460ff60a81b1916905550505050565b6106518383836116e4565b60006113f983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117db565b60008261165157506000610516565b600061165d8385611dd0565b90508261166a8583611db0565b146113f95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610546565b60008060006116ce611809565b90925090506116dd8282611600565b9250505090565b6000806000806000806116f68761184d565b6001600160a01b038f16600090815260016020526040902054959b5093995091975095509350915061172890876118aa565b6001600160a01b03808b1660009081526001602052604080822093909355908a168152205461175790866118ec565b6001600160a01b0389166000908152600160205260409020556117798161194b565b6117838483611995565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516117c891815260200190565b60405180910390a3505050505050505050565b600081836117fc5760405162461bcd60e51b81526004016105469190611ca0565b5060006112de8486611db0565b600854600090819069d3c21bcecceda10000006118268282611600565b8210156118445750506008549269d3c21bcecceda100000092509050565b90939092509050565b600080600080600080600080600061186a8a600d54600e546119b9565b925092509250600061187a6116c1565b9050600080600061188d8e878787611a0e565b919e509c509a509598509396509194505050505091939550919395565b60006113f983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112ad565b6000806118f98385611d98565b9050838110156113f95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610546565b60006119556116c1565b905060006119638383611642565b3060009081526001602052604090205490915061198090826118ec565b30600090815260016020526040902055505050565b6008546119a290836118aa565b6008556009546119b290826118ec565b6009555050565b60008080806119d360646119cd8989611642565b90611600565b905060006119e660646119cd8a89611642565b905060006119fe826119f88b866118aa565b906118aa565b9992985090965090945050505050565b6000808080611a1d8886611642565b90506000611a2b8887611642565b90506000611a398888611642565b90506000611a4b826119f886866118aa565b939b939a50919850919650505050505050565b8035611a6981611e4d565b919050565b600060208284031215611a7f578081fd5b81356113f981611e4d565b600060208284031215611a9b578081fd5b81516113f981611e4d565b60008060408385031215611ab8578081fd5b8235611ac381611e4d565b91506020830135611ad381611e4d565b809150509250929050565b600080600060608486031215611af2578081fd5b8335611afd81611e4d565b92506020840135611b0d81611e4d565b929592945050506040919091013590565b60008060408385031215611b30578182fd5b8235611b3b81611e4d565b946020939093013593505050565b60006020808385031215611b5b578182fd5b823567ffffffffffffffff80821115611b72578384fd5b818501915085601f830112611b85578384fd5b813581811115611b9757611b97611e37565b8060051b604051601f19603f83011681018181108582111715611bbc57611bbc611e37565b604052828152858101935084860182860187018a1015611bda578788fd5b8795505b83861015611c0357611bef81611a5e565b855260019590950194938601938601611bde565b5098975050505050505050565b600060208284031215611c21578081fd5b815180151581146113f9578182fd5b600060208284031215611c41578081fd5b5035919050565b600080600060608486031215611c5c578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215611c87578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b81811015611ccc57858101830151858201604001528201611cb0565b81811115611cdd5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611d775784516001600160a01b031683529383019391830191600101611d52565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611dab57611dab611e21565b500190565b600082611dcb57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611dea57611dea611e21565b500290565b600082821015611e0157611e01611e21565b500390565b6000600019821415611e1a57611e1a611e21565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146107af57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fa9a9e12015f0023113be8904a96005e98b282be1939882e40aa2fa9cbeca10964736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101855760003560e01c8063753e3aa9116100d1578063c3a6912e1161008a578063dd62ed3e11610064578063dd62ed3e1461046a578063e13071d7146104b0578063ea3105d9146104d0578063f2fde38b146104e557600080fd5b8063c3a6912e1461042a578063c3c8cd8014610440578063c9567bf91461045557600080fd5b8063753e3aa91461035e5780638da5cb5b1461037e5780638f9a55c0146103a657806395d89b41146103bc578063a9059cbb146103ea578063b515566a1461040a57600080fd5b80632bc4d48b1161013e5780635d098b38116101185780635d098b38146102f45780636fc3eaec1461031457806370a0823114610329578063715018a61461034957600080fd5b80632bc4d48b146102a2578063313ce567146102c25780635cbde150146102de57600080fd5b806306fdde0314610191578063095ea7b3146101e957806318160ddd14610219578063224290851461024057806323b872dd14610262578063273123b71461028257600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b5060408051808201909152601781527f5461696b61205375727520e98080e58c96e38199e3828b00000000000000000060208201525b6040516101e09190611ca0565b60405180910390f35b3480156101f557600080fd5b50610209610204366004611b1e565b610505565b60405190151581526020016101e0565b34801561022557600080fd5b5069d3c21bcecceda10000005b6040519081526020016101e0565b34801561024c57600080fd5b5061026061025b366004611c48565b61051c565b005b34801561026e57600080fd5b5061020961027d366004611ade565b610656565b34801561028e57600080fd5b5061026061029d366004611a6e565b6106bf565b3480156102ae57600080fd5b506102606102bd366004611c30565b61070a565b3480156102ce57600080fd5b50604051600981526020016101e0565b3480156102ea57600080fd5b50610232600c5481565b34801561030057600080fd5b5061026061030f366004611a6e565b610739565b34801561032057600080fd5b50610260610785565b34801561033557600080fd5b50610232610344366004611a6e565b6107b2565b34801561035557600080fd5b506102606107d4565b34801561036a57600080fd5b50610260610379366004611c30565b61080a565b34801561038a57600080fd5b506000546040516001600160a01b0390911681526020016101e0565b3480156103b257600080fd5b5061023260065481565b3480156103c857600080fd5b506040805180820190915260058152645461696b6160d81b60208201526101d3565b3480156103f657600080fd5b50610209610405366004611b1e565b610839565b34801561041657600080fd5b50610260610425366004611b49565b610846565b34801561043657600080fd5b5061023260075481565b34801561044c57600080fd5b506102606108ea565b34801561046157600080fd5b50610260610920565b34801561047657600080fd5b50610232610485366004611aa6565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156104bc57600080fd5b506102606104cb366004611c30565b610ce9565b3480156104dc57600080fd5b50610260610d0e565b3480156104f157600080fd5b50610260610500366004611a6e565b610d43565b6000610512338484610ddb565b5060015b92915050565b6000546001600160a01b0316331461054f5760405162461bcd60e51b815260040161054690611cf3565b60405180910390fd5b600d829055600a839055600b81905560058211156105af5760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203525206f72206c657373000000006044820152606401610546565b601e8311156106005760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610546565b600a8111156106515760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610546565b505050565b6000610663848484610eff565b6106b584336106b085604051806060016040528060288152602001611e63602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906112ad565b610ddb565b5060019392505050565b6000546001600160a01b031633146106e95760405162461bcd60e51b815260040161054690611cf3565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146107345760405162461bcd60e51b815260040161054690611cf3565b600755565b6000546001600160a01b031633146107635760405162461bcd60e51b815260040161054690611cf3565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600f546001600160a01b0316336001600160a01b0316146107a557600080fd5b476107af816112e7565b50565b6001600160a01b0381166000908152600160205260408120546105169061137c565b6000546001600160a01b031633146107fe5760405162461bcd60e51b815260040161054690611cf3565b6108086000611400565b565b6000546001600160a01b031633146108345760405162461bcd60e51b815260040161054690611cf3565b600655565b6000610512338484610eff565b6000546001600160a01b031633146108705760405162461bcd60e51b815260040161054690611cf3565b60005b81518110156108e6576001600560008484815181106108a257634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806108de81611e06565b915050610873565b5050565b600f546001600160a01b0316336001600160a01b03161461090a57600080fd5b6000610915306107b2565b90506107af81611450565b6000546001600160a01b0316331461094a5760405162461bcd60e51b815260040161054690611cf3565b601254600160a01b900460ff16156109a45760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610546565b601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109e2308269d3c21bcecceda1000000610ddb565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610a1b57600080fd5b505afa158015610a2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a539190611a8a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9b57600080fd5b505afa158015610aaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad39190611a8a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610b1b57600080fd5b505af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b539190611a8a565b601280546001600160a01b0319166001600160a01b039283161790556011541663f305d7194730610b83816107b2565b600080610b986000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015610bfb57600080fd5b505af1158015610c0f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c349190611c73565b50506012805469065a4da25d3016c00000600681905560075562ff00ff60a01b1981166201000160a01b1790915560115460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b158015610cb157600080fd5b505af1158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e69190611c10565b600f546001600160a01b0316336001600160a01b031614610d0957600080fd5b600c55565b600f546001600160a01b0316336001600160a01b031614610d2e57600080fd5b69d3c21bcecceda10000006006819055600755565b6000546001600160a01b03163314610d6d5760405162461bcd60e51b815260040161054690611cf3565b6001600160a01b038116610dd25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610546565b6107af81611400565b6001600160a01b038316610e3d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610546565b6001600160a01b038216610e9e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610546565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526005602052604090205460ff16158015610f4157506001600160a01b03821660009081526005602052604090205460ff16155b610f4a57600080fd5b60008111610fac5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610546565b6001600160a01b03821660009081526004602052604090205460ff16158015610fee57506001600160a01b03831660009081526004602052604090205460ff16155b15610fff576000600d55600b54600e555b6012546001600160a01b0383811691161480159061103657506001600160a01b03821660009081526004602052604090205460ff16155b801561105b57506001600160a01b03831660009081526004602052604090205460ff16155b1561112c5760065461106c836107b2565b6110769083611d98565b11156110bc5760405162461bcd60e51b815260206004820152601560248201527427bb32b91036b0bc103bb0b63632ba1039b4bd329760591b6044820152606401610546565b60075481111561112c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610546565b6012546001600160a01b03838116911614801561115757506011546001600160a01b03848116911614155b801561117c57506001600160a01b03831660009081526004602052604090205460ff16155b156111d8576001600160a01b03831660009081526005602052604090205460ff161580156111c357506001600160a01b03821660009081526005602052604090205460ff16155b6111cc57600080fd5b6000600d55600a54600e555b6001600160a01b03831660009081526004602052604090205460ff168061121757506001600160a01b03821660009081526004602052604090205460ff165b15611227576000600d819055600e555b6000611232306107b2565b601254909150600160a81b900460ff1615801561125d57506012546001600160a01b03858116911614155b80156112725750601254600160b01b900460ff165b1561129c57600c5481111561128a5761128a81611450565b47801561129a5761129a476112e7565b505b6112a78484846115f5565b50505050565b600081848411156112d15760405162461bcd60e51b81526004016105469190611ca0565b5060006112de8486611def565b95945050505050565b600f546001600160a01b03166108fc61130c6003611306856005611600565b90611642565b6040518115909202916000818181858888f19350505050158015611334573d6000803e3d6000fd5b506010546001600160a01b03166108fc6113546002611306856005611600565b6040518115909202916000818181858888f193505050501580156108e6573d6000803e3d6000fd5b60006008548211156113e35760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610546565b60006113ed6116c1565b90506113f98382611600565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6012805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106114a657634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156114fa57600080fd5b505afa15801561150e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115329190611a8a565b8160018151811061155357634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526011546115799130911684610ddb565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac947906115b2908590600090869030904290600401611d28565b600060405180830381600087803b1580156115cc57600080fd5b505af11580156115e0573d6000803e3d6000fd5b50506012805460ff60a81b1916905550505050565b6106518383836116e4565b60006113f983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117db565b60008261165157506000610516565b600061165d8385611dd0565b90508261166a8583611db0565b146113f95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610546565b60008060006116ce611809565b90925090506116dd8282611600565b9250505090565b6000806000806000806116f68761184d565b6001600160a01b038f16600090815260016020526040902054959b5093995091975095509350915061172890876118aa565b6001600160a01b03808b1660009081526001602052604080822093909355908a168152205461175790866118ec565b6001600160a01b0389166000908152600160205260409020556117798161194b565b6117838483611995565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516117c891815260200190565b60405180910390a3505050505050505050565b600081836117fc5760405162461bcd60e51b81526004016105469190611ca0565b5060006112de8486611db0565b600854600090819069d3c21bcecceda10000006118268282611600565b8210156118445750506008549269d3c21bcecceda100000092509050565b90939092509050565b600080600080600080600080600061186a8a600d54600e546119b9565b925092509250600061187a6116c1565b9050600080600061188d8e878787611a0e565b919e509c509a509598509396509194505050505091939550919395565b60006113f983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112ad565b6000806118f98385611d98565b9050838110156113f95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610546565b60006119556116c1565b905060006119638383611642565b3060009081526001602052604090205490915061198090826118ec565b30600090815260016020526040902055505050565b6008546119a290836118aa565b6008556009546119b290826118ec565b6009555050565b60008080806119d360646119cd8989611642565b90611600565b905060006119e660646119cd8a89611642565b905060006119fe826119f88b866118aa565b906118aa565b9992985090965090945050505050565b6000808080611a1d8886611642565b90506000611a2b8887611642565b90506000611a398888611642565b90506000611a4b826119f886866118aa565b939b939a50919850919650505050505050565b8035611a6981611e4d565b919050565b600060208284031215611a7f578081fd5b81356113f981611e4d565b600060208284031215611a9b578081fd5b81516113f981611e4d565b60008060408385031215611ab8578081fd5b8235611ac381611e4d565b91506020830135611ad381611e4d565b809150509250929050565b600080600060608486031215611af2578081fd5b8335611afd81611e4d565b92506020840135611b0d81611e4d565b929592945050506040919091013590565b60008060408385031215611b30578182fd5b8235611b3b81611e4d565b946020939093013593505050565b60006020808385031215611b5b578182fd5b823567ffffffffffffffff80821115611b72578384fd5b818501915085601f830112611b85578384fd5b813581811115611b9757611b97611e37565b8060051b604051601f19603f83011681018181108582111715611bbc57611bbc611e37565b604052828152858101935084860182860187018a1015611bda578788fd5b8795505b83861015611c0357611bef81611a5e565b855260019590950194938601938601611bde565b5098975050505050505050565b600060208284031215611c21578081fd5b815180151581146113f9578182fd5b600060208284031215611c41578081fd5b5035919050565b600080600060608486031215611c5c578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215611c87578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b81811015611ccc57858101830151858201604001528201611cb0565b81811115611cdd5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611d775784516001600160a01b031683529383019391830191600101611d52565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611dab57611dab611e21565b500190565b600082611dcb57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611dea57611dea611e21565b500290565b600082821015611e0157611e01611e21565b500390565b6000600019821415611e1a57611e1a611e21565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146107af57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fa9a9e12015f0023113be8904a96005e98b282be1939882e40aa2fa9cbeca10964736f6c63430008040033

Deployed Bytecode Sourcemap

3849:11415:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5851:83;;;;;;;;;;-1:-1:-1;5921:5:0;;;;;;;;;;;;;;;;;5851:83;;;;;;;:::i;:::-;;;;;;;;6703:161;;;;;;;;;;-1:-1:-1;6703:161:0;;;;;:::i;:::-;;:::i;:::-;;;6059:14:1;;6052:22;6034:41;;6022:2;6007:18;6703:161:0;5989:92:1;6128:95:0;;;;;;;;;;-1:-1:-1;4300:14:0;6128:95;;;12192:25:1;;;12180:2;12165:18;6128:95:0;12147:76:1;10653:390:0;;;;;;;;;;-1:-1:-1;10653:390:0;;;;;:::i;:::-;;:::i;:::-;;6872:313;;;;;;;;;;-1:-1:-1;6872:313:0;;;;;:::i;:::-;;:::i;15173:88::-;;;;;;;;;;-1:-1:-1;15173:88:0;;;;;:::i;:::-;;:::i;11745:92::-;;;;;;;;;;-1:-1:-1;11745:92:0;;;;;:::i;:::-;;:::i;6037:83::-;;;;;;;;;;-1:-1:-1;6037:83:0;;5039:1;13358:36:1;;13346:2;13331:18;6037:83:0;13313:87:1;4539:42:0;;;;;;;;;;;;;;;;11370:115;;;;;;;;;;-1:-1:-1;11370:115:0;;;;;:::i;:::-;;:::i;13110:182::-;;;;;;;;;;;;;:::i;6231:138::-;;;;;;;;;;-1:-1:-1;6231:138:0;;;;;:::i;:::-;;:::i;2568:103::-;;;;;;;;;;;;;:::i;11629:108::-;;;;;;;;;;-1:-1:-1;11629:108:0;;;;;:::i;:::-;;:::i;2345:87::-;;;;;;;;;;-1:-1:-1;2391:7:0;2418:6;2345:87;;-1:-1:-1;;;;;2418:6:0;;;4632:51:1;;4620:2;4605:18;2345:87:0;4587:102:1;4322:29:0;;;;;;;;;;;;;;;;5942:87;;;;;;;;;;-1:-1:-1;6014:7:0;;;;;;;;;;;;-1:-1:-1;;;6014:7:0;;;;5942:87;;6377:167;;;;;;;;;;-1:-1:-1;6377:167:0;;;;;:::i;:::-;;:::i;14997:164::-;;;;;;;;;;-1:-1:-1;14997:164:0;;;;;:::i;:::-;;:::i;4358:22::-;;;;;;;;;;;;;;;;12915:183;;;;;;;;;;;;;:::i;9332:822::-;;;;;;;;;;;;;:::i;6552:143::-;;;;;;;;;;-1:-1:-1;6552:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6660:18:0;;;6633:7;6660:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6552:143;11493:128;;;;;;;;;;-1:-1:-1;11493:128:0;;;;;:::i;:::-;;:::i;11055:148::-;;;;;;;;;;;;;:::i;2679:201::-;;;;;;;;;;-1:-1:-1;2679:201:0;;;;;:::i;:::-;;:::i;6703:161::-;6778:4;6795:39;258:10;6818:7;6827:6;6795:8;:39::i;:::-;-1:-1:-1;6852:4:0;6703:161;;;;;:::o;10653:390::-;2391:7;2418:6;-1:-1:-1;;;;;2418:6:0;258:10;2480:23;2472:68;;;;-1:-1:-1;;;2472:68:0;;;;;;;:::i;:::-;;;;;;;;;10757:9:::1;:23:::0;;;10791:8:::1;:18:::0;;;10820:7:::1;:16:::0;;;10870:1:::1;10855:16:::0;::::1;;10847:57;;;::::0;-1:-1:-1;;;10847:57:0;;10784:2:1;10847:57:0::1;::::0;::::1;10766:21:1::0;10823:2;10803:18;;;10796:30;10862;10842:18;;;10835:58;10910:18;;10847:57:0::1;10756:178:1::0;10847:57:0::1;10934:2;10923:7;:13;;10915:55;;;::::0;-1:-1:-1;;;10915:55:0;;8831:2:1;10915:55:0::1;::::0;::::1;8813:21:1::0;8870:2;8850:18;;;8843:30;8909:31;8889:18;;;8882:59;8958:18;;10915:55:0::1;8803:179:1::0;10915:55:0::1;10999:2;10989:6;:12;;10981:54;;;::::0;-1:-1:-1;;;10981:54:0;;6896:2:1;10981:54:0::1;::::0;::::1;6878:21:1::0;6935:2;6915:18;;;6908:30;6974:31;6954:18;;;6947:59;7023:18;;10981:54:0::1;6868:179:1::0;10981:54:0::1;10653:390:::0;;;:::o;6872:313::-;6970:4;6987:36;6997:6;7005:9;7016:6;6987:9;:36::i;:::-;7034:121;7043:6;258:10;7065:89;7103:6;7065:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7065:19:0;;;;;;:11;:19;;;;;;;;258:10;7065:33;;;;;;;;;;:37;:89::i;:::-;7034:8;:121::i;:::-;-1:-1:-1;7173:4:0;6872:313;;;;;:::o;15173:88::-;2391:7;2418:6;-1:-1:-1;;;;;2418:6:0;258:10;2480:23;2472:68;;;;-1:-1:-1;;;2472:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15233:12:0::1;15248:5;15233:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;15233:20:0::1;::::0;;15173:88::o;11745:92::-;2391:7;2418:6;-1:-1:-1;;;;;2418:6:0;258:10;2480:23;2472:68;;;;-1:-1:-1;;;2472:68:0;;;;;;;:::i;:::-;11813:7:::1;:16:::0;11745:92::o;11370:115::-;2391:7;2418:6;-1:-1:-1;;;;;2418:6:0;258:10;2480:23;2472:68;;;;-1:-1:-1;;;2472:68:0;;;;;;;:::i;:::-;11457:4:::1;:20:::0;;-1:-1:-1;;;;;;11457:20:0::1;-1:-1:-1::0;;;;;11457:20:0;;;::::1;::::0;;;::::1;::::0;;11370:115::o;13110:182::-;13176:3;;-1:-1:-1;;;;;13176:3:0;258:10;-1:-1:-1;;;;;13160:19:0;;13152:28;;;;;;13220:21;13252:32;13220:21;13252:12;:32::i;:::-;13110:182;:::o;6231:138::-;-1:-1:-1;;;;;6344:16:0;;6297:7;6344:16;;;:7;:16;;;;;;6324:37;;:19;:37::i;2568:103::-;2391:7;2418:6;-1:-1:-1;;;;;2418:6:0;258:10;2480:23;2472:68;;;;-1:-1:-1;;;2472:68:0;;;;;;;:::i;:::-;2633:30:::1;2660:1;2633:18;:30::i;:::-;2568:103::o:0;11629:108::-;2391:7;2418:6;-1:-1:-1;;;;;2418:6:0;258:10;2480:23;2472:68;;;;-1:-1:-1;;;2472:68:0;;;;;;;:::i;:::-;11706:14:::1;:23:::0;11629:108::o;6377:167::-;6455:4;6472:42;258:10;6496:9;6507:6;6472:9;:42::i;14997:164::-;2391:7;2418:6;-1:-1:-1;;;;;2418:6:0;258:10;2480:23;2472:68;;;;-1:-1:-1;;;2472:68:0;;;;;;;:::i;:::-;15071:6:::1;15066:88;15087:5;:12;15083:1;:16;15066:88;;;15138:4;15121;:14;15126:5;15132:1;15126:8;;;;;;-1:-1:-1::0;;;15126:8:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;15121:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;15121:14:0;:21;;-1:-1:-1;;15121:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15101:3;::::1;::::0;::::1;:::i;:::-;;;;15066:88;;;;14997:164:::0;:::o;12915:183::-;12981:3;;-1:-1:-1;;;;;12981:3:0;258:10;-1:-1:-1;;;;;12965:19:0;;12957:28;;;;;;12996:23;13022:24;13040:4;13022:9;:24::i;:::-;12996:50;;13057:33;13074:15;13057:16;:33::i;9332:822::-;2391:7;2418:6;-1:-1:-1;;;;;2418:6:0;258:10;2480:23;2472:68;;;;-1:-1:-1;;;2472:68:0;;;;;;;:::i;:::-;9396:11:::1;::::0;-1:-1:-1;;;9396:11:0;::::1;;;9395:12;9387:47;;;::::0;-1:-1:-1;;;9387:47:0;;11896:2:1;9387:47:0::1;::::0;::::1;11878:21:1::0;11935:2;11915:18;;;11908:30;11974:25;11954:18;;;11947:53;12017:18;;9387:47:0::1;11868:173:1::0;9387:47:0::1;9556:15;:34:::0;;-1:-1:-1;;;;;;9556:34:0::1;9502:42;9556:34:::0;;::::1;::::0;;;9601:58:::1;9618:4;9502:42:::0;4300:14:::1;9601:8;:58::i;:::-;9704:16;-1:-1:-1::0;;;;;9704:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9686:56:0::1;;9751:4;9758:16;-1:-1:-1::0;;;;;9758:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9686:96;::::0;-1:-1:-1;;;;;;9686:96:0::1;::::0;;;;;;-1:-1:-1;;;;;4924:15:1;;;9686:96:0::1;::::0;::::1;4906:34:1::0;4976:15;;4956:18;;;4949:43;4841:18;;9686:96:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9670:13;:112:::0;;-1:-1:-1;;;;;;9670:112:0::1;-1:-1:-1::0;;;;;9670:112:0;;::::1;;::::0;;9793:15:::1;::::0;::::1;:31;9832:21;9863:4;9869:24;9863:4:::0;9869:9:::1;:24::i;:::-;9894:1;9896::::0;9898:7:::1;2391::::0;2418:6;-1:-1:-1;;;;;2418:6:0;;2345:87;9898:7:::1;9793:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;9793:129:0;;;-1:-1:-1;;;;;5641:15:1;;;9793:129:0::1;::::0;::::1;5623:34:1::0;5673:18;;;5666:34;;;;5716:18;;;5709:34;;;;5759:18;;;5752:34;5823:15;;;5802:19;;;5795:44;9906:15:0::1;5855:19:1::0;;;5848:35;5557:19;;9793:129:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;9933:11:0::1;:18:::0;;9979:14:::1;9962;:31:::0;;;10009:7:::1;:24:::0;-1:-1:-1;;;;10046:18:0;;-1:-1:-1;;;10046:18:0;;;;10113:15:::1;::::0;10075:71:::1;::::0;-1:-1:-1;;;10075:71:0;;-1:-1:-1;;;;;10113:15:0;;::::1;10075:71;::::0;::::1;5177:51:1::0;-1:-1:-1;;5244:18:1;;;5237:34;10082:13:0;;;-1:-1:-1;10075:29:0::1;::::0;5150:18:1;;10075:71:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11493:128::-:0;11579:3;;-1:-1:-1;;;;;11579:3:0;258:10;-1:-1:-1;;;;;11563:19:0;;11555:28;;;;;;11594:10;:19;11493:128::o;11055:148::-;11118:3;;-1:-1:-1;;;;;11118:3:0;258:10;-1:-1:-1;;;;;11102:19:0;;11094:28;;;;;;4300:14;11133;:24;;;11168:7;:17;11055:148::o;2679:201::-;2391:7;2418:6;-1:-1:-1;;;;;2418:6:0;258:10;2480:23;2472:68;;;;-1:-1:-1;;;2472:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2768:22:0;::::1;2760:73;;;::::0;-1:-1:-1;;;2760:73:0;;7665:2:1;2760:73:0::1;::::0;::::1;7647:21:1::0;7704:2;7684:18;;;7677:30;7743:34;7723:18;;;7716:62;-1:-1:-1;;;7794:18:1;;;7787:36;7840:19;;2760:73:0::1;7637:228:1::0;2760:73:0::1;2844:28;2863:8;2844:18;:28::i;7455:335::-:0;-1:-1:-1;;;;;7548:19:0;;7540:68;;;;-1:-1:-1;;;7540:68:0;;11491:2:1;7540:68:0;;;11473:21:1;11530:2;11510:18;;;11503:30;11569:34;11549:18;;;11542:62;-1:-1:-1;;;11620:18:1;;;11613:34;11664:19;;7540:68:0;11463:226:1;7540:68:0;-1:-1:-1;;;;;7627:21:0;;7619:68;;;;-1:-1:-1;;;7619:68:0;;8072:2:1;7619:68:0;;;8054:21:1;8111:2;8091:18;;;8084:30;8150:34;8130:18;;;8123:62;-1:-1:-1;;;8201:18:1;;;8194:32;8243:19;;7619:68:0;8044:224:1;7619:68:0;-1:-1:-1;;;;;7698:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7750:32;;12192:25:1;;;7750:32:0;;12165:18:1;7750:32:0;;;;;;;7455:335;;;:::o;7798:1526::-;-1:-1:-1;;;;;7887:10:0;;;;;;:4;:10;;;;;;;;7886:11;:24;;;;-1:-1:-1;;;;;;7902:8:0;;;;;;:4;:8;;;;;;;;7901:9;7886:24;7878:33;;;;;;7939:1;7930:6;:10;7922:64;;;;-1:-1:-1;;;7922:64:0;;10374:2:1;7922:64:0;;;10356:21:1;10413:2;10393:18;;;10386:30;10452:34;10432:18;;;10425:62;-1:-1:-1;;;10503:18:1;;;10496:39;10552:19;;7922:64:0;10346:231:1;7922:64:0;-1:-1:-1;;;;;8013:22:0;;;;;;:18;:22;;;;;;;;8011:24;:54;;;;-1:-1:-1;;;;;;8041:24:0;;;;;;:18;:24;;;;;;;;8039:26;8011:54;8007:134;;;8094:1;8082:9;:13;8122:7;;8110:9;:19;8007:134;8163:13;;-1:-1:-1;;;;;8157:19:0;;;8163:13;;8157:19;;;;:47;;-1:-1:-1;;;;;;8182:22:0;;;;;;:18;:22;;;;;;;;8180:24;8157:47;:77;;;;-1:-1:-1;;;;;;8210:24:0;;;;;;:18;:24;;;;;;;;8208:26;8157:77;8153:284;;;8285:14;;8268:13;8278:2;8268:9;:13::i;:::-;8259:22;;:6;:22;:::i;:::-;:40;;8251:74;;;;-1:-1:-1;;;8251:74:0;;11141:2:1;8251:74:0;;;11123:21:1;11180:2;11160:18;;;11153:30;-1:-1:-1;;;11199:18:1;;;11192:51;11260:18;;8251:74:0;11113:171:1;8251:74:0;8358:7;;8348:6;:17;;8340:83;;;;-1:-1:-1;;;8340:83:0;;9189:2:1;8340:83:0;;;9171:21:1;9228:2;9208:18;;;9201:30;9267:34;9247:18;;;9240:62;-1:-1:-1;;;9318:18:1;;;9311:51;9379:19;;8340:83:0;9161:243:1;8340:83:0;8469:13;;-1:-1:-1;;;;;8463:19:0;;;8469:13;;8463:19;:55;;;;-1:-1:-1;8502:15:0;;-1:-1:-1;;;;;8486:32:0;;;8502:15;;8486:32;;8463:55;:85;;;;-1:-1:-1;;;;;;8524:24:0;;;;;;:18;:24;;;;;;;;8522:26;8463:85;8459:214;;;-1:-1:-1;;;;;8574:10:0;;;;;;:4;:10;;;;;;;;8573:11;:24;;;;-1:-1:-1;;;;;;8589:8:0;;;;;;:4;:8;;;;;;;;8588:9;8573:24;8565:33;;;;;;8625:1;8613:9;:13;8653:8;;8641:9;:20;8459:214;-1:-1:-1;;;;;8689:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;8717:22:0;;;;;;:18;:22;;;;;;;;8689:50;8685:124;;;8768:1;8756:9;:13;;;8784:9;:13;8685:124;8821:28;8852:24;8870:4;8852:9;:24::i;:::-;8892:6;;8821:55;;-1:-1:-1;;;;8892:6:0;;;;8891:7;:32;;;;-1:-1:-1;8910:13:0;;-1:-1:-1;;;;;8902:21:0;;;8910:13;;8902:21;;8891:32;:47;;;;-1:-1:-1;8927:11:0;;-1:-1:-1;;;8927:11:0;;;;8891:47;8887:381;;;8982:10;;8959:20;:33;8955:112;;;9013:38;9030:20;9013:16;:38::i;:::-;9124:21;9163:22;;9160:97;;9206:35;9219:21;9206:12;:35::i;:::-;8887:381;;9286:30;9301:4;9306:2;9309:6;9286:14;:30::i;:::-;7798:1526;;;;:::o;1315:190::-;1401:7;1437:12;1429:6;;;;1421:29;;;;-1:-1:-1;;;1421:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1461:9:0;1473:5;1477:1;1473;:5;:::i;:::-;1461:17;1315:190;-1:-1:-1;;;;;1315:190:0:o;11211:151::-;11268:3;;-1:-1:-1;;;;;11268:3:0;:36;11281:22;11301:1;11281:15;11282:6;11294:1;11281:12;:15::i;:::-;:19;;:22::i;:::-;11268:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11315:4:0;;-1:-1:-1;;;;;11315:4:0;:37;11329:22;11349:1;11329:15;11330:6;11342:1;11329:12;:15::i;:22::-;11315:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7193:254;7260:7;7299;;7288;:18;;7280:73;;;;-1:-1:-1;;;7280:73:0;;7254:2:1;7280:73:0;;;7236:21:1;7293:2;7273:18;;;7266:30;7332:34;7312:18;;;7305:62;-1:-1:-1;;;7383:18:1;;;7376:40;7433:19;;7280:73:0;7226:232:1;7280:73:0;7364:19;7387:10;:8;:10::i;:::-;7364:33;-1:-1:-1;7415:24:0;:7;7364:33;7415:11;:24::i;:::-;7408:31;7193:254;-1:-1:-1;;;7193:254:0:o;2888:191::-;2962:16;2981:6;;-1:-1:-1;;;;;2998:17:0;;;-1:-1:-1;;;;;;2998:17:0;;;;;;3031:40;;2981:6;;;;;;;3031:40;;2962:16;3031:40;2888:191;;:::o;10162:483::-;5279:6;:13;;-1:-1:-1;;;;5279:13:0;-1:-1:-1;;;5279:13:0;;;10264:16:::1;::::0;;10278:1:::1;10264:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10264:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10264:16:0::1;10240:40;;10309:4;10291;10296:1;10291:7;;;;;;-1:-1:-1::0;;;10291:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;10291:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10335:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10335:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10291:7;;10335:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10325:4;10330:1;10325:7;;;;;;-1:-1:-1::0;;;10325:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;10325:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10400:15:::1;::::0;10368:62:::1;::::0;10385:4:::1;::::0;10400:15:::1;10418:11:::0;10368:8:::1;:62::i;:::-;10441:15;::::0;:196:::1;::::0;-1:-1:-1;;;10441:196:0;;-1:-1:-1;;;;;10441:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10522:11;;10441:15:::1;::::0;10564:4;;10591::::1;::::0;10611:15:::1;::::0;10441:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5315:6:0;:14;;-1:-1:-1;;;;5315:14:0;;;-1:-1:-1;;;;10162:483:0:o;11849:146::-;11943:44;11961:6;11969:9;11980:6;11943:17;:44::i;1767:132::-;1825:7;1852:39;1856:1;1859;1852:39;;;;;;;;;;;;;;;;;:3;:39::i;1513:246::-;1571:7;1595:6;1591:47;;-1:-1:-1;1625:1:0;1618:8;;1591:47;1648:9;1660:5;1664:1;1660;:5;:::i;:::-;1648:17;-1:-1:-1;1693:1:0;1684:5;1688:1;1648:17;1684:5;:::i;:::-;:10;1676:56;;;;-1:-1:-1;;;1676:56:0;;9611:2:1;1676:56:0;;;9593:21:1;9650:2;9630:18;;;9623:30;9689:34;9669:18;;;9662:62;-1:-1:-1;;;9740:18:1;;;9733:31;9781:19;;1676:56:0;9583:223:1;14556:163:0;14597:7;14618:15;14635;14654:19;:17;:19::i;:::-;14617:56;;-1:-1:-1;14617:56:0;-1:-1:-1;14691:20:0;14617:56;;14691:11;:20::i;:::-;14684:27;;;;14556:163;:::o;12003:488::-;12102:15;12119:23;12144:12;12158:23;12183:12;12197:13;12214:19;12225:7;12214:10;:19::i;:::-;-1:-1:-1;;;;;12262:15:0;;;;;;:7;:15;;;;;;12101:132;;-1:-1:-1;12101:132:0;;-1:-1:-1;12101:132:0;;-1:-1:-1;12101:132:0;-1:-1:-1;12101:132:0;-1:-1:-1;12101:132:0;-1:-1:-1;12262:28:0;;12101:132;12262:19;:28::i;:::-;-1:-1:-1;;;;;12244:15:0;;;;;;;:7;:15;;;;;;:46;;;;12322:18;;;;;;;:39;;12345:15;12322:22;:39::i;:::-;-1:-1:-1;;;;;12301:18:0;;;;;;:7;:18;;;;;:60;12373:16;12383:5;12373:9;:16::i;:::-;12400:23;12412:4;12418;12400:11;:23::i;:::-;12456:9;-1:-1:-1;;;;;12439:44:0;12448:6;-1:-1:-1;;;;;12439:44:0;;12467:15;12439:44;;;;12192:25:1;;12180:2;12165:18;;12147:76;12439:44:0;;;;;;;;12003:488;;;;;;;;;:::o;1907:189::-;1993:7;2028:12;2021:5;2013:28;;;;-1:-1:-1;;;2013:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2052:9:0;2064:5;2068:1;2064;:5;:::i;14727:262::-;14824:7;;14777;;;;4300:14;14898:20;14824:7;4300:14;14898:11;:20::i;:::-;14888:7;:30;14884:61;;;-1:-1:-1;;14928:7:0;;;4300:14;;-1:-1:-1;14727:262:0;-1:-1:-1;14727:262:0:o;14884:61::-;14964:7;;14973;;-1:-1:-1;14727:262:0;-1:-1:-1;14727:262:0:o;13304:471::-;13363:7;13372;13381;13390;13399;13408;13429:23;13454:12;13468:13;13485:42;13497:7;13506:9;;13517;;13485:11;:42::i;:::-;13428:99;;;;;;13538:19;13561:10;:8;:10::i;:::-;13538:33;;13583:15;13600:23;13625:12;13641:46;13653:7;13662:4;13668:5;13675:11;13641;:46::i;:::-;13582:105;;-1:-1:-1;13582:105:0;-1:-1:-1;13582:105:0;-1:-1:-1;13738:15:0;;-1:-1:-1;13755:4:0;;-1:-1:-1;13761:5:0;;-1:-1:-1;;;;;13304:471:0;;;;;;;:::o;1171:136::-;1229:7;1256:43;1260:1;1263;1256:43;;;;;;;;;;;;;;;;;:3;:43::i;984:179::-;1042:7;;1074:5;1078:1;1074;:5;:::i;:::-;1062:17;;1103:1;1098;:6;;1090:46;;;;-1:-1:-1;;;1090:46:0;;8475:2:1;1090:46:0;;;8457:21:1;8514:2;8494:18;;;8487:30;8553:29;8533:18;;;8526:57;8600:18;;1090:46:0;8447:177:1;12499:212:0;12552:19;12575:10;:8;:10::i;:::-;12552:33;-1:-1:-1;12596:13:0;12612:22;:5;12552:33;12612:9;:22::i;:::-;12686:4;12670:22;;;;:7;:22;;;;;;12596:38;;-1:-1:-1;12670:33:0;;12596:38;12670:26;:33::i;:::-;12661:4;12645:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;12499:212:0:o;12719:147::-;12797:7;;:17;;12809:4;12797:11;:17::i;:::-;12787:7;:27;12838:10;;:20;;12853:4;12838:14;:20::i;:::-;12825:10;:33;-1:-1:-1;;12719:147:0:o;13783:351::-;13876:7;;;;13929:28;13953:3;13929:19;:7;13941:6;13929:11;:19::i;:::-;:23;;:28::i;:::-;13914:43;-1:-1:-1;13968:13:0;13984:29;14009:3;13984:20;:7;13996;13984:11;:20::i;:29::-;13968:45;-1:-1:-1;14024:23:0;14050:28;13968:45;14050:17;:7;14062:4;14050:11;:17::i;:::-;:21;;:28::i;:::-;14024:54;14114:4;;-1:-1:-1;14120:5:0;;-1:-1:-1;13783:351:0;;-1:-1:-1;;;;;13783:351:0:o;14142:409::-;14252:7;;;;14308:24;:7;14320:11;14308;:24::i;:::-;14290:42;-1:-1:-1;14343:12:0;14358:21;:4;14367:11;14358:8;:21::i;:::-;14343:36;-1:-1:-1;14390:13:0;14406:22;:5;14416:11;14406:9;:22::i;:::-;14390:38;-1:-1:-1;14439:23:0;14465:28;14390:38;14465:17;:7;14477:4;14465:11;:17::i;:28::-;14512:7;;;;-1:-1:-1;14538:4:0;;-1:-1:-1;14142:409:0;;-1:-1:-1;;;;;;;14142:409:0:o;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;63:85;;;:::o;153:257::-;212:6;265:2;253:9;244:7;240:23;236:32;233:2;;;286:6;278;271:22;233:2;330:9;317:23;349:31;374:5;349:31;:::i;415:261::-;485:6;538:2;526:9;517:7;513:23;509:32;506:2;;;559:6;551;544:22;506:2;596:9;590:16;615:31;640:5;615:31;:::i;951:398::-;1019:6;1027;1080:2;1068:9;1059:7;1055:23;1051:32;1048:2;;;1101:6;1093;1086:22;1048:2;1145:9;1132:23;1164:31;1189:5;1164:31;:::i;:::-;1214:5;-1:-1:-1;1271:2:1;1256:18;;1243:32;1284:33;1243:32;1284:33;:::i;:::-;1336:7;1326:17;;;1038:311;;;;;:::o;1354:466::-;1431:6;1439;1447;1500:2;1488:9;1479:7;1475:23;1471:32;1468:2;;;1521:6;1513;1506:22;1468:2;1565:9;1552:23;1584:31;1609:5;1584:31;:::i;:::-;1634:5;-1:-1:-1;1691:2:1;1676:18;;1663:32;1704:33;1663:32;1704:33;:::i;:::-;1458:362;;1756:7;;-1:-1:-1;;;1810:2:1;1795:18;;;;1782:32;;1458:362::o;1825:325::-;1893:6;1901;1954:2;1942:9;1933:7;1929:23;1925:32;1922:2;;;1975:6;1967;1960:22;1922:2;2019:9;2006:23;2038:31;2063:5;2038:31;:::i;:::-;2088:5;2140:2;2125:18;;;;2112:32;;-1:-1:-1;;;1912:238:1:o;2155:1177::-;2239:6;2270:2;2313;2301:9;2292:7;2288:23;2284:32;2281:2;;;2334:6;2326;2319:22;2281:2;2379:9;2366:23;2408:18;2449:2;2441:6;2438:14;2435:2;;;2470:6;2462;2455:22;2435:2;2513:6;2502:9;2498:22;2488:32;;2558:7;2551:4;2547:2;2543:13;2539:27;2529:2;;2585:6;2577;2570:22;2529:2;2626;2613:16;2648:2;2644;2641:10;2638:2;;;2654:18;;:::i;:::-;2700:2;2697:1;2693:10;2732:2;2726:9;2795:2;2791:7;2786:2;2782;2778:11;2774:25;2766:6;2762:38;2850:6;2838:10;2835:22;2830:2;2818:10;2815:18;2812:46;2809:2;;;2861:18;;:::i;:::-;2897:2;2890:22;2947:18;;;2981:15;;;;-1:-1:-1;3016:11:1;;;3046;;;3042:20;;3039:33;-1:-1:-1;3036:2:1;;;3090:6;3082;3075:22;3036:2;3117:6;3108:15;;3132:169;3146:2;3143:1;3140:9;3132:169;;;3203:23;3222:3;3203:23;:::i;:::-;3191:36;;3164:1;3157:9;;;;;3247:12;;;;3279;;3132:169;;;-1:-1:-1;3320:6:1;2250:1082;-1:-1:-1;;;;;;;;2250:1082:1:o;3337:297::-;3404:6;3457:2;3445:9;3436:7;3432:23;3428:32;3425:2;;;3478:6;3470;3463:22;3425:2;3515:9;3509:16;3568:5;3561:13;3554:21;3547:5;3544:32;3534:2;;3595:6;3587;3580:22;3639:190;3698:6;3751:2;3739:9;3730:7;3726:23;3722:32;3719:2;;;3772:6;3764;3757:22;3719:2;-1:-1:-1;3800:23:1;;3709:120;-1:-1:-1;3709:120:1:o;3834:326::-;3911:6;3919;3927;3980:2;3968:9;3959:7;3955:23;3951:32;3948:2;;;4001:6;3993;3986:22;3948:2;-1:-1:-1;;4029:23:1;;;4099:2;4084:18;;4071:32;;-1:-1:-1;4150:2:1;4135:18;;;4122:32;;3938:222;-1:-1:-1;3938:222:1:o;4165:316::-;4253:6;4261;4269;4322:2;4310:9;4301:7;4297:23;4293:32;4290:2;;;4343:6;4335;4328:22;4290:2;4377:9;4371:16;4361:26;;4427:2;4416:9;4412:18;4406:25;4396:35;;4471:2;4460:9;4456:18;4450:25;4440:35;;4280:201;;;;;:::o;6086:603::-;6198:4;6227:2;6256;6245:9;6238:21;6288:6;6282:13;6331:6;6326:2;6315:9;6311:18;6304:34;6356:4;6369:140;6383:6;6380:1;6377:13;6369:140;;;6478:14;;;6474:23;;6468:30;6444:17;;;6463:2;6440:26;6433:66;6398:10;;6369:140;;;6527:6;6524:1;6521:13;6518:2;;;6597:4;6592:2;6583:6;6572:9;6568:22;6564:31;6557:45;6518:2;-1:-1:-1;6673:2:1;6652:15;-1:-1:-1;;6648:29:1;6633:45;;;;6680:2;6629:54;;6207:482;-1:-1:-1;;;6207:482:1:o;9811:356::-;10013:2;9995:21;;;10032:18;;;10025:30;10091:34;10086:2;10071:18;;10064:62;10158:2;10143:18;;9985:182::o;12228:983::-;12490:4;12538:3;12527:9;12523:19;12569:6;12558:9;12551:25;12595:2;12633:6;12628:2;12617:9;12613:18;12606:34;12676:3;12671:2;12660:9;12656:18;12649:31;12700:6;12735;12729:13;12766:6;12758;12751:22;12804:3;12793:9;12789:19;12782:26;;12843:2;12835:6;12831:15;12817:29;;12864:4;12877:195;12891:6;12888:1;12885:13;12877:195;;;12956:13;;-1:-1:-1;;;;;12952:39:1;12940:52;;13047:15;;;;13012:12;;;;12988:1;12906:9;12877:195;;;-1:-1:-1;;;;;;;13128:32:1;;;;13123:2;13108:18;;13101:60;-1:-1:-1;;;13192:3:1;13177:19;13170:35;13089:3;12499:712;-1:-1:-1;;;12499:712:1:o;13405:128::-;13445:3;13476:1;13472:6;13469:1;13466:13;13463:2;;;13482:18;;:::i;:::-;-1:-1:-1;13518:9:1;;13453:80::o;13538:217::-;13578:1;13604;13594:2;;-1:-1:-1;;;13629:31:1;;13683:4;13680:1;13673:15;13711:4;13636:1;13701:15;13594:2;-1:-1:-1;13740:9:1;;13584:171::o;13760:168::-;13800:7;13866:1;13862;13858:6;13854:14;13851:1;13848:21;13843:1;13836:9;13829:17;13825:45;13822:2;;;13873:18;;:::i;:::-;-1:-1:-1;13913:9:1;;13812:116::o;13933:125::-;13973:4;14001:1;13998;13995:8;13992:2;;;14006:18;;:::i;:::-;-1:-1:-1;14043:9:1;;13982:76::o;14063:135::-;14102:3;-1:-1:-1;;14123:17:1;;14120:2;;;14143:18;;:::i;:::-;-1:-1:-1;14190:1:1;14179:13;;14110:88::o;14203:127::-;14264:10;14259:3;14255:20;14252:1;14245:31;14295:4;14292:1;14285:15;14319:4;14316:1;14309:15;14335:127;14396:10;14391:3;14387:20;14384:1;14377:31;14427:4;14424:1;14417:15;14451:4;14448:1;14441:15;14467:131;-1:-1:-1;;;;;14542:31:1;;14532:42;;14522:2;;14588:1;14585;14578:12

Swarm Source

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