ETH Price: $3,281.33 (+0.51%)

Token

DeBot (DEBOT)
 

Overview

Max Total Supply

1,000,000,000 DEBOT

Holders

66

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
My Final Form: Deployer
Balance
2,125,863.010838393 DEBOT

Value
$0.00
0xbbc65012ffdbd902c9a80d652b8c1478f1880a0d
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:
DeBot

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-03
*/

// SPDX-License-Identifier: MIT

/**
https://www.decodefybot.xyz

https://twitter.com/debotethcoin

https://t.me/debotethcoin
*/

pragma solidity ^0.8.20;

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

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

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

interface IERC20 {
    function approve(address spender, uint256 amount) external returns (bool);
    function totalSupply() external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    function transfer(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
    );
}

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    function owner() public view returns (address) {
        return _owner;
    }
}

contract DeBot is Context, IERC20, Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    address public uniPair_address;
    using SafeMath for uint256;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) private _tOwned;
    mapping(address => uint256) private _rOwned;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 private constant _tTotal = 1_000_000_000 * 10**9;
    
    string private constant _name = "DeBot";
    string private constant _symbol = "DEBOT";
    uint8 private constant _decimals = 9;

    address payable public dev_wallet = payable(0x9425bDe1591376ae36d47DE99fBAb520980B8218);
    address payable public marketing_wallet = payable(0x6116A076E123147738E78369620278434534C4AD);

    //Original Fee
    uint256 private _tTaxTotal;
    uint256 private _marketBuyFeeAmount = 0;
    uint256 private _devBuyFeeAmount = 0;
    uint256 private _sellMarketFeeAmount = 0;
    uint256 private _sellDevFeeAmount = 0;
    uint256 private _marketingTax = _sellMarketFeeAmount;
    uint256 private _devTax = _sellDevFeeAmount;
    uint256 private _previousMarketingFee = _marketingTax;
    uint256 private _previousDevFee = _devTax;
    
    modifier lockInSwap {
        _swappingOk = true;
        _;
        _swappingOk = false;
    }
    mapping(address => bool) private _isExcludedFromFee;

    uint256 public _maxTxSizeAmount = _tTotal * 40 / 1000;
    uint256 public _maxWalletLimitSize = _tTotal * 40 / 1000;
    uint256 public _swapAmountAt = _tTotal / 10000;

    bool private _swappingOk = false;
    bool private _swapActive = true;
    bool private trading_start = false;
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _isExcludedFromFee[marketing_wallet] = true;
        _isExcludedFromFee[dev_wallet] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        // mint
        _rOwned[_msgSender()] = _rTotal;
        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 balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

    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 transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(to != address(0), "ERC20: transfer to the zero address"); 
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (
            from != owner() 
            && to != owner()
        ) {
            //Trade start check
            if (!trading_start) {
                require(
                    from == owner(), 
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }
            require(amount <= _maxTxSizeAmount, "TOKEN: Max Transaction Limit");
            if(to != uniPair_address) {
                require(balanceOf(to) + amount < _maxWalletLimitSize,
                 "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractBalanceForTokens = balanceOf(address(this));
            bool canSwap = contractBalanceForTokens >= _swapAmountAt;
            if(contractBalanceForTokens >= _maxTxSizeAmount) {contractBalanceForTokens = _maxTxSizeAmount;}

            if (_swapActive && 
                canSwap && 
                !_swappingOk &&
                from != uniPair_address &&
                !_isExcludedFromFee[from] && 
                !_isExcludedFromFee[to]
            ) {
                swapBack(contractBalanceForTokens);
                uint256 balanceOfEth = address(this).balance;
                if (balanceOfEth > 0) {
                    sendEthToFeeWalt(address(this).balance);
                }
            }
        }

        bool takingFee = true;
        //Transfer Tokens
        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniPair_address && to != uniPair_address)
        ) {
            takingFee = false;
        } else {
            //Set Fee for Buys
            if(from == uniPair_address &&
                to != address(uniswapV2Router)) {
                _marketingTax = _marketBuyFeeAmount;
                _devTax = _devBuyFeeAmount;
            }
            //Set Fee for Sells
            if (to == uniPair_address && from != address(uniswapV2Router)) {
                _marketingTax = _sellMarketFeeAmount;
                _devTax = _sellDevFeeAmount;
            }
        }
        _transferTokensWithTax(from, to, amount, takingFee);
    }
    
    function swapBack(uint256 tokenAmount) private lockInSwap {
        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 _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 returnTaxes() private {
        _marketingTax = _previousMarketingFee;
        _devTax = _previousDevFee;
    }

    function _getTValues(
        uint256 tAmount,
        uint256 teamFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(teamFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).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);
    }

    //set maximum transaction
    function removeLimits() public onlyOwner {
        _maxTxSizeAmount = _tTotal; 
        _maxWalletLimitSize = _tTotal;
    }

    function start_trading(address _uniPairV2) public onlyOwner {
        trading_start = true;
        uniPair_address = _uniPairV2; _approve(uniPair_address, dev_wallet, _tTotal);
    }
    
    function _takeAllFee(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
    
    function _transferTokensWithTax(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) {           
            removeTaxes(); 
        }
         _transferTokensOnly(sender, recipient, amount);
        if (!takeFee) {
            returnTaxes();
        }
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function sendEthToFeeWalt(uint256 amount) private {
        uint256 distriRatio = 3;
        uint256 devETHAmount = amount / distriRatio;
        dev_wallet.transfer(devETHAmount); devETHAmount -= amount / distriRatio;
        uint256 marketingETH = amount - devETHAmount;
        marketing_wallet.transfer(marketingETH);
    }

    //set minimum tokens required to swap.
    function setSwapTokenAmount(uint256 swapTokensAtAmount) public onlyOwner {
        _swapAmountAt = swapTokensAtAmount;
    }

    function _transferTokensOnly(
        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);
        _takeAllFee(tTeam); sendAllTaxes(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    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 _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _marketingTax, _devTax);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function removeTaxes() private {
        if (_marketingTax == 0 && _devTax == 0) return;
        _previousMarketingFee = _marketingTax;        _previousDevFee = _devTax; 
        _marketingTax = 0;        _devTax = 0;
    }


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

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

    receive() external payable {

    }
}

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":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":"_maxTxSizeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletLimitSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapAmountAt","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":"dev_wallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketing_wallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniPairV2","type":"address"}],"name":"start_trading","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":[],"name":"uniPair_address","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"}]

608060405262000019670de0b6b3a76400005f19620002b4565b62000026905f19620002de565b600755600880546001600160a01b0319908116739425bde1591376ae36d47de99fbab520980b82181790915560098054909116736116a076e123147738e78369620278434534c4ad1790555f600b819055600c819055600d819055600e819055600f819055601081905560118190556012556103e8620000b0670de0b6b3a76400006028620002fa565b620000bc919062000314565b6014556103e8620000d7670de0b6b3a76400006028620002fa565b620000e3919062000314565b601555620000fc612710670de0b6b3a764000062000314565b6016556017805462ffffff19166101001790553480156200011b575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556009546001600160a01b039081165f908152601360208190526040808320805460ff19908116600190811790925560085490951684529083208054909416811790935590620001db5f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff19958616179055308152601390925281208054909216600117909155600754906006906200022a3390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200029191815260200190565b60405180910390a3506200032a565b634e487b7160e01b5f52601260045260245ffd5b5f82620002c557620002c5620002a0565b500690565b634e487b7160e01b5f52601160045260245ffd5b81810381811115620002f457620002f4620002ca565b92915050565b8082028115828204841417620002f457620002f4620002ca565b5f82620003255762000325620002a0565b500490565b61185680620003385f395ff3fe60806040526004361061013f575f3560e01c806356bc7c92116100b357806395d89b411161006d57806395d89b4114610377578063a9059cbb146103a4578063c492f046146103c3578063dd62ed3e146103e2578063e4cf13f414610426578063f2fde38b1461043b575f80fd5b806356bc7c92146102d657806364cdaec0146102f557806370a0823114610314578063715018a614610333578063751039fc146103475780638da5cb5b1461035b575f80fd5b806327b7744f1161010457806327b7744f14610232578063313ce5671461024757806333c308fb1461026257806333c6c4cd146102815780633e979e31146102a257806340e19609146102b7575f80fd5b806306fdde031461014a578063095ea7b3146101895780631694505e146101b857806318160ddd146101ef57806323b872dd14610213575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b506040805180820190915260058152641119509bdd60da1b60208201525b60405161018091906114ea565b60405180910390f35b348015610194575f80fd5b506101a86101a3366004611549565b61045a565b6040519015158152602001610180565b3480156101c3575f80fd5b506002546101d7906001600160a01b031681565b6040516001600160a01b039091168152602001610180565b3480156101fa575f80fd5b50670de0b6b3a76400005b604051908152602001610180565b34801561021e575f80fd5b506101a861022d366004611573565b610470565b34801561023d575f80fd5b5061020560155481565b348015610252575f80fd5b5060405160098152602001610180565b34801561026d575f80fd5b506008546101d7906001600160a01b031681565b34801561028c575f80fd5b506102a061029b3660046115b1565b6104d7565b005b3480156102ad575f80fd5b5061020560145481565b3480156102c2575f80fd5b506009546101d7906001600160a01b031681565b3480156102e1575f80fd5b506102a06102f03660046115c8565b61050e565b348015610300575f80fd5b506003546101d7906001600160a01b031681565b34801561031f575f80fd5b5061020561032e3660046115c8565b610581565b34801561033e575f80fd5b506102a06105a2565b348015610352575f80fd5b506102a0610613565b348015610366575f80fd5b505f546001600160a01b03166101d7565b348015610382575f80fd5b5060408051808201909152600581526411115093d560da1b6020820152610173565b3480156103af575f80fd5b506101a86103be366004611549565b61064f565b3480156103ce575f80fd5b506102a06103dd3660046115e3565b61065b565b3480156103ed575f80fd5b506102056103fc366004611666565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610431575f80fd5b5061020560165481565b348015610446575f80fd5b506102a06104553660046115c8565b6106f8565b5f6104663384846107df565b5060015b92915050565b5f61047c848484610902565b6104cd84336104c8856040518060600160405280602881526020016117f9602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190610d90565b6107df565b5060019392505050565b5f546001600160a01b031633146105095760405162461bcd60e51b81526004016105009061169d565b60405180910390fd5b601655565b5f546001600160a01b031633146105375760405162461bcd60e51b81526004016105009061169d565b6017805462ff0000191662010000179055600380546001600160a01b038084166001600160a01b0319909216821790925560085461057e9216670de0b6b3a76400006107df565b50565b6001600160a01b0381165f9081526006602052604081205461046a90610dc8565b5f546001600160a01b031633146105cb5760405162461bcd60e51b81526004016105009061169d565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461063c5760405162461bcd60e51b81526004016105009061169d565b670de0b6b3a76400006014819055601555565b5f610466338484610902565b5f546001600160a01b031633146106845760405162461bcd60e51b81526004016105009061169d565b5f5b828110156106f2578160135f8686858181106106a4576106a46116d2565b90506020020160208101906106b991906115c8565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806106ea816116fa565b915050610686565b50505050565b5f546001600160a01b031633146107215760405162461bcd60e51b81526004016105009061169d565b6001600160a01b0381166107865760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610500565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166108415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610500565b6001600160a01b0382166108a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610500565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166109645760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610500565b6001600160a01b0383166109c85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610500565b5f8111610a295760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610500565b5f546001600160a01b03848116911614801590610a5357505f546001600160a01b03838116911614155b15610c8c5760175462010000900460ff16610aea575f546001600160a01b03848116911614610aea5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610500565b601454811115610b3c5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610500565b6003546001600160a01b03838116911614610bc15760155481610b5e84610581565b610b689190611712565b10610bc15760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610500565b5f610bcb30610581565b601654601454919250821015908210610be45760145491505b601754610100900460ff168015610bf85750805b8015610c07575060175460ff16155b8015610c2157506003546001600160a01b03868116911614155b8015610c4557506001600160a01b0385165f9081526013602052604090205460ff16155b8015610c6957506001600160a01b0384165f9081526013602052604090205460ff16155b15610c8957610c7782610e4a565b478015610c8757610c8747610fb1565b505b50505b6001600160a01b0383165f9081526013602052604090205460019060ff1680610ccc57506001600160a01b0383165f9081526013602052604090205460ff165b80610cfe57506003546001600160a01b03858116911614801590610cfe57506003546001600160a01b03848116911614155b15610d0a57505f610d84565b6003546001600160a01b038581169116148015610d3557506002546001600160a01b03848116911614155b15610d4757600b54600f55600c546010555b6003546001600160a01b038481169116148015610d7257506002546001600160a01b03858116911614155b15610d8457600d54600f55600e546010555b6106f284848484611057565b5f8184841115610db35760405162461bcd60e51b815260040161050091906114ea565b505f610dbf8486611725565b95945050505050565b5f600754821115610e2e5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610500565b5f610e37611085565b9050610e4383826110a6565b9392505050565b6017805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610e8a57610e8a6116d2565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ee1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f059190611738565b81600181518110610f1857610f186116d2565b6001600160a01b039283166020918202929092010152600254610f3e91309116846107df565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f769085905f90869030904290600401611753565b5f604051808303815f87803b158015610f8d575f80fd5b505af1158015610f9f573d5f803e3d5ffd5b50506017805460ff1916905550505050565b60035f610fbe82846117c2565b6008546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015610ff6573d5f803e3d5ffd5b5061100182846117c2565b61100b9082611725565b90505f6110188285611725565b6009546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015611050573d5f803e3d5ffd5b5050505050565b80611064576110646110e7565b61106f848484611114565b806106f2576106f2601154600f55601254601055565b5f805f611090611205565b909250905061109f82826110a6565b9250505090565b5f610e4383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611244565b600f541580156110f75750601054155b156110fe57565b600f8054601155601080546012555f9182905555565b5f805f805f8061112387611270565b6001600160a01b038f165f90815260066020526040902054959b5093995091975095509350915061115490876112c5565b6001600160a01b03808b165f9081526006602052604080822093909355908a16815220546111829086611306565b6001600160a01b0389165f908152600660205260409020556111a381611364565b6111ad84836113aa565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516111f291815260200190565b60405180910390a3505050505050505050565b6007545f908190670de0b6b3a764000061121f82826110a6565b82101561123b57505060075492670de0b6b3a764000092509050565b90939092509050565b5f81836112645760405162461bcd60e51b815260040161050091906114ea565b505f610dbf84866117c2565b5f805f805f805f805f6112888a600f546010546113ce565b9250925092505f611297611085565b90505f805f6112a88e878787611420565b919e509c509a509598509396509194505050505091939550919395565b5f610e4383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d90565b5f806113128385611712565b905083811015610e435760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610500565b5f61136d611085565b90505f61137a838361146c565b305f908152600660205260409020549091506113969082611306565b305f90815260066020526040902055505050565b6007546113b790836112c5565b600755600a546113c79082611306565b600a555050565b5f8080806113e760646113e1898961146c565b906110a6565b90505f6113f960646113e18a8961146c565b90505f6114108261140a8b866112c5565b906112c5565b9992985090965090945050505050565b5f80808061142e888661146c565b90505f61143b888761146c565b90505f611448888861146c565b90505f6114598261140a86866112c5565b939b939a50919850919650505050505050565b5f825f0361147b57505f61046a565b5f61148683856117e1565b90508261149385836117c2565b14610e435760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610500565b5f6020808352835180828501525f5b81811015611515578581018301518582016040015282016114f9565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461057e575f80fd5b5f806040838503121561155a575f80fd5b823561156581611535565b946020939093013593505050565b5f805f60608486031215611585575f80fd5b833561159081611535565b925060208401356115a081611535565b929592945050506040919091013590565b5f602082840312156115c1575f80fd5b5035919050565b5f602082840312156115d8575f80fd5b8135610e4381611535565b5f805f604084860312156115f5575f80fd5b833567ffffffffffffffff8082111561160c575f80fd5b818601915086601f83011261161f575f80fd5b81358181111561162d575f80fd5b8760208260051b8501011115611641575f80fd5b60209283019550935050840135801515811461165b575f80fd5b809150509250925092565b5f8060408385031215611677575f80fd5b823561168281611535565b9150602083013561169281611535565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161170b5761170b6116e6565b5060010190565b8082018082111561046a5761046a6116e6565b8181038181111561046a5761046a6116e6565b5f60208284031215611748575f80fd5b8151610e4381611535565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117a15784516001600160a01b03168352938301939183019160010161177c565b50506001600160a01b03969096166060850152505050608001529392505050565b5f826117dc57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761046a5761046a6116e656fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c0d20abbaee4213205b3e68fdb74e79e9351bc9a7d17859cc145da3ff1ac12cd64736f6c63430008150033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c806356bc7c92116100b357806395d89b411161006d57806395d89b4114610377578063a9059cbb146103a4578063c492f046146103c3578063dd62ed3e146103e2578063e4cf13f414610426578063f2fde38b1461043b575f80fd5b806356bc7c92146102d657806364cdaec0146102f557806370a0823114610314578063715018a614610333578063751039fc146103475780638da5cb5b1461035b575f80fd5b806327b7744f1161010457806327b7744f14610232578063313ce5671461024757806333c308fb1461026257806333c6c4cd146102815780633e979e31146102a257806340e19609146102b7575f80fd5b806306fdde031461014a578063095ea7b3146101895780631694505e146101b857806318160ddd146101ef57806323b872dd14610213575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b506040805180820190915260058152641119509bdd60da1b60208201525b60405161018091906114ea565b60405180910390f35b348015610194575f80fd5b506101a86101a3366004611549565b61045a565b6040519015158152602001610180565b3480156101c3575f80fd5b506002546101d7906001600160a01b031681565b6040516001600160a01b039091168152602001610180565b3480156101fa575f80fd5b50670de0b6b3a76400005b604051908152602001610180565b34801561021e575f80fd5b506101a861022d366004611573565b610470565b34801561023d575f80fd5b5061020560155481565b348015610252575f80fd5b5060405160098152602001610180565b34801561026d575f80fd5b506008546101d7906001600160a01b031681565b34801561028c575f80fd5b506102a061029b3660046115b1565b6104d7565b005b3480156102ad575f80fd5b5061020560145481565b3480156102c2575f80fd5b506009546101d7906001600160a01b031681565b3480156102e1575f80fd5b506102a06102f03660046115c8565b61050e565b348015610300575f80fd5b506003546101d7906001600160a01b031681565b34801561031f575f80fd5b5061020561032e3660046115c8565b610581565b34801561033e575f80fd5b506102a06105a2565b348015610352575f80fd5b506102a0610613565b348015610366575f80fd5b505f546001600160a01b03166101d7565b348015610382575f80fd5b5060408051808201909152600581526411115093d560da1b6020820152610173565b3480156103af575f80fd5b506101a86103be366004611549565b61064f565b3480156103ce575f80fd5b506102a06103dd3660046115e3565b61065b565b3480156103ed575f80fd5b506102056103fc366004611666565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610431575f80fd5b5061020560165481565b348015610446575f80fd5b506102a06104553660046115c8565b6106f8565b5f6104663384846107df565b5060015b92915050565b5f61047c848484610902565b6104cd84336104c8856040518060600160405280602881526020016117f9602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190610d90565b6107df565b5060019392505050565b5f546001600160a01b031633146105095760405162461bcd60e51b81526004016105009061169d565b60405180910390fd5b601655565b5f546001600160a01b031633146105375760405162461bcd60e51b81526004016105009061169d565b6017805462ff0000191662010000179055600380546001600160a01b038084166001600160a01b0319909216821790925560085461057e9216670de0b6b3a76400006107df565b50565b6001600160a01b0381165f9081526006602052604081205461046a90610dc8565b5f546001600160a01b031633146105cb5760405162461bcd60e51b81526004016105009061169d565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461063c5760405162461bcd60e51b81526004016105009061169d565b670de0b6b3a76400006014819055601555565b5f610466338484610902565b5f546001600160a01b031633146106845760405162461bcd60e51b81526004016105009061169d565b5f5b828110156106f2578160135f8686858181106106a4576106a46116d2565b90506020020160208101906106b991906115c8565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806106ea816116fa565b915050610686565b50505050565b5f546001600160a01b031633146107215760405162461bcd60e51b81526004016105009061169d565b6001600160a01b0381166107865760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610500565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166108415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610500565b6001600160a01b0382166108a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610500565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166109645760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610500565b6001600160a01b0383166109c85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610500565b5f8111610a295760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610500565b5f546001600160a01b03848116911614801590610a5357505f546001600160a01b03838116911614155b15610c8c5760175462010000900460ff16610aea575f546001600160a01b03848116911614610aea5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610500565b601454811115610b3c5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610500565b6003546001600160a01b03838116911614610bc15760155481610b5e84610581565b610b689190611712565b10610bc15760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610500565b5f610bcb30610581565b601654601454919250821015908210610be45760145491505b601754610100900460ff168015610bf85750805b8015610c07575060175460ff16155b8015610c2157506003546001600160a01b03868116911614155b8015610c4557506001600160a01b0385165f9081526013602052604090205460ff16155b8015610c6957506001600160a01b0384165f9081526013602052604090205460ff16155b15610c8957610c7782610e4a565b478015610c8757610c8747610fb1565b505b50505b6001600160a01b0383165f9081526013602052604090205460019060ff1680610ccc57506001600160a01b0383165f9081526013602052604090205460ff165b80610cfe57506003546001600160a01b03858116911614801590610cfe57506003546001600160a01b03848116911614155b15610d0a57505f610d84565b6003546001600160a01b038581169116148015610d3557506002546001600160a01b03848116911614155b15610d4757600b54600f55600c546010555b6003546001600160a01b038481169116148015610d7257506002546001600160a01b03858116911614155b15610d8457600d54600f55600e546010555b6106f284848484611057565b5f8184841115610db35760405162461bcd60e51b815260040161050091906114ea565b505f610dbf8486611725565b95945050505050565b5f600754821115610e2e5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610500565b5f610e37611085565b9050610e4383826110a6565b9392505050565b6017805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610e8a57610e8a6116d2565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ee1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f059190611738565b81600181518110610f1857610f186116d2565b6001600160a01b039283166020918202929092010152600254610f3e91309116846107df565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f769085905f90869030904290600401611753565b5f604051808303815f87803b158015610f8d575f80fd5b505af1158015610f9f573d5f803e3d5ffd5b50506017805460ff1916905550505050565b60035f610fbe82846117c2565b6008546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015610ff6573d5f803e3d5ffd5b5061100182846117c2565b61100b9082611725565b90505f6110188285611725565b6009546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015611050573d5f803e3d5ffd5b5050505050565b80611064576110646110e7565b61106f848484611114565b806106f2576106f2601154600f55601254601055565b5f805f611090611205565b909250905061109f82826110a6565b9250505090565b5f610e4383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611244565b600f541580156110f75750601054155b156110fe57565b600f8054601155601080546012555f9182905555565b5f805f805f8061112387611270565b6001600160a01b038f165f90815260066020526040902054959b5093995091975095509350915061115490876112c5565b6001600160a01b03808b165f9081526006602052604080822093909355908a16815220546111829086611306565b6001600160a01b0389165f908152600660205260409020556111a381611364565b6111ad84836113aa565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516111f291815260200190565b60405180910390a3505050505050505050565b6007545f908190670de0b6b3a764000061121f82826110a6565b82101561123b57505060075492670de0b6b3a764000092509050565b90939092509050565b5f81836112645760405162461bcd60e51b815260040161050091906114ea565b505f610dbf84866117c2565b5f805f805f805f805f6112888a600f546010546113ce565b9250925092505f611297611085565b90505f805f6112a88e878787611420565b919e509c509a509598509396509194505050505091939550919395565b5f610e4383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d90565b5f806113128385611712565b905083811015610e435760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610500565b5f61136d611085565b90505f61137a838361146c565b305f908152600660205260409020549091506113969082611306565b305f90815260066020526040902055505050565b6007546113b790836112c5565b600755600a546113c79082611306565b600a555050565b5f8080806113e760646113e1898961146c565b906110a6565b90505f6113f960646113e18a8961146c565b90505f6114108261140a8b866112c5565b906112c5565b9992985090965090945050505050565b5f80808061142e888661146c565b90505f61143b888761146c565b90505f611448888861146c565b90505f6114598261140a86866112c5565b939b939a50919850919650505050505050565b5f825f0361147b57505f61046a565b5f61148683856117e1565b90508261149385836117c2565b14610e435760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610500565b5f6020808352835180828501525f5b81811015611515578581018301518582016040015282016114f9565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461057e575f80fd5b5f806040838503121561155a575f80fd5b823561156581611535565b946020939093013593505050565b5f805f60608486031215611585575f80fd5b833561159081611535565b925060208401356115a081611535565b929592945050506040919091013590565b5f602082840312156115c1575f80fd5b5035919050565b5f602082840312156115d8575f80fd5b8135610e4381611535565b5f805f604084860312156115f5575f80fd5b833567ffffffffffffffff8082111561160c575f80fd5b818601915086601f83011261161f575f80fd5b81358181111561162d575f80fd5b8760208260051b8501011115611641575f80fd5b60209283019550935050840135801515811461165b575f80fd5b809150509250925092565b5f8060408385031215611677575f80fd5b823561168281611535565b9150602083013561169281611535565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161170b5761170b6116e6565b5060010190565b8082018082111561046a5761046a6116e6565b8181038181111561046a5761046a6116e6565b5f60208284031215611748575f80fd5b8151610e4381611535565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117a15784516001600160a01b03168352938301939183019160010161177c565b50506001600160a01b03969096166060850152505050608001529392505050565b5f826117dc57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761046a5761046a6116e656fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c0d20abbaee4213205b3e68fdb74e79e9351bc9a7d17859cc145da3ff1ac12cd64736f6c63430008150033

Deployed Bytecode Sourcemap

4125:12539:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6399:83;;;;;;;;;;-1:-1:-1;6469:5:0;;;;;;;;;;;;-1:-1:-1;;;6469:5:0;;;;6399:83;;;;;;;:::i;:::-;;;;;;;;7778:193;;;;;;;;;;-1:-1:-1;7778:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7778:193:0;1023:187:1;4175:41:0;;;;;;;;;;-1:-1:-1;4175:41:0;;;;-1:-1:-1;;;;;4175:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;4175:41:0;1215:229:1;6822:95:0;;;;;;;;;;-1:-1:-1;4609:21:0;6822:95;;;1595:25:1;;;1583:2;1568:18;6822:95:0;1449:177:1;7117:446:0;;;;;;;;;;-1:-1:-1;7117:446:0;;;;;:::i;:::-;;:::i;5659:56::-;;;;;;;;;;;;;;;;6585:83;;;;;;;;;;-1:-1:-1;6585:83:0;;4772:1;2234:36:1;;2222:2;2207:18;6585:83:0;2092:184:1;4782:87:0;;;;;;;;;;-1:-1:-1;4782:87:0;;;;-1:-1:-1;;;;;4782:87:0;;;14148:126;;;;;;;;;;-1:-1:-1;14148:126:0;;;;;:::i;:::-;;:::i;:::-;;5599:53;;;;;;;;;;;;;;;;4876:93;;;;;;;;;;-1:-1:-1;4876:93:0;;;;-1:-1:-1;;;;;4876:93:0;;;12736:186;;;;;;;;;;-1:-1:-1;12736:186:0;;;;;:::i;:::-;;:::i;4223:30::-;;;;;;;;;;-1:-1:-1;4223:30:0;;;;-1:-1:-1;;;;;4223:30:0;;;6676:138;;;;;;;;;;-1:-1:-1;6676:138:0;;;;;:::i;:::-;;:::i;3520:148::-;;;;;;;;;;;;;:::i;12601:127::-;;;;;;;;;;;;;:::i;4039:79::-;;;;;;;;;;-1:-1:-1;4077:7:0;4104:6;-1:-1:-1;;;;;4104:6:0;4039:79;;6490:87;;;;;;;;;;-1:-1:-1;6562:7:0;;;;;;;;;;;;-1:-1:-1;;;6562:7:0;;;;6490:87;;7571:199;;;;;;;;;;-1:-1:-1;7571:199:0;;;;;:::i;:::-;;:::i;13521:234::-;;;;;;;;;;-1:-1:-1;13521:234:0;;;;;:::i;:::-;;:::i;6925:184::-;;;;;;;;;;-1:-1:-1;6925:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7074:18:0;;;7042:7;7074:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6925:184;5722:46;;;;;;;;;;;;;;;;3789:244;;;;;;;;;;-1:-1:-1;3789:244:0;;;;;:::i;:::-;;:::i;7778:193::-;7880:4;7902:39;1629:10;7925:7;7934:6;7902:8;:39::i;:::-;-1:-1:-1;7959:4:0;7778:193;;;;;:::o;7117:446::-;7249:4;7266:36;7276:6;7284:9;7295:6;7266:9;:36::i;:::-;7313:220;7336:6;1629:10;7384:138;7440:6;7384:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7384:19:0;;;;;;:11;:19;;;;;;;;1629:10;7384:33;;;;;;;;;;:37;:138::i;:::-;7313:8;:220::i;:::-;-1:-1:-1;7551:4:0;7117:446;;;;;:::o;14148:126::-;3276:6;;-1:-1:-1;;;;;3276:6:0;1629:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;;;;;;;;;14232:13:::1;:34:::0;14148:126::o;12736:186::-;3276:6;;-1:-1:-1;;;;;3276:6:0;1629:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;12807:13:::1;:20:::0;;-1:-1:-1;;12807:20:0::1;::::0;::::1;::::0;;12838:15:::1;:28:::0;;-1:-1:-1;;;;;12838:28:0;;::::1;-1:-1:-1::0;;;;;;12838:28:0;;::::1;::::0;::::1;::::0;;;12894:10:::1;::::0;12868:46:::1;::::0;12894:10:::1;4609:21;12868:8;:46::i;:::-;12736:186:::0;:::o;6676:138::-;-1:-1:-1;;;;;6789:16:0;;6742:7;6789:16;;;:7;:16;;;;;;6769:37;;:19;:37::i;3520:148::-;3276:6;;-1:-1:-1;;;;;3276:6:0;1629:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;3627:1:::1;3611:6:::0;;3590:40:::1;::::0;-1:-1:-1;;;;;3611:6:0;;::::1;::::0;3590:40:::1;::::0;3627:1;;3590:40:::1;3658:1;3641:19:::0;;-1:-1:-1;;;;;;3641:19:0::1;::::0;;3520:148::o;12601:127::-;3276:6;;-1:-1:-1;;;;;3276:6:0;1629:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;4609:21:::1;12653:16;:26:::0;;;12691:19:::1;:29:::0;12601:127::o;7571:199::-;7676:4;7698:42;1629:10;7722:9;7733:6;7698:9;:42::i;13521:234::-;3276:6;;-1:-1:-1;;;;;3276:6:0;1629:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;13638:9:::1;13634:114;13653:19:::0;;::::1;13634:114;;;13728:8;13694:18;:31;13713:8;;13722:1;13713:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13694:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13694:31:0;:42;;-1:-1:-1;;13694:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13674:3;::::1;::::0;::::1;:::i;:::-;;;;13634:114;;;;13521:234:::0;;;:::o;3789:244::-;3276:6;;-1:-1:-1;;;;;3276:6:0;1629:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3878:22:0;::::1;3870:73;;;::::0;-1:-1:-1;;;3870:73:0;;5297:2:1;3870:73:0::1;::::0;::::1;5279:21:1::0;5336:2;5316:18;;;5309:30;5375:34;5355:18;;;5348:62;-1:-1:-1;;;5426:18:1;;;5419:36;5472:19;;3870:73:0::1;5095:402:1::0;3870:73:0::1;3980:6;::::0;;3959:38:::1;::::0;-1:-1:-1;;;;;3959:38:0;;::::1;::::0;3980:6;::::1;::::0;3959:38:::1;::::0;::::1;4008:6;:17:::0;;-1:-1:-1;;;;;;4008:17:0::1;-1:-1:-1::0;;;;;4008:17:0;;;::::1;::::0;;;::::1;::::0;;3789:244::o;14896:369::-;-1:-1:-1;;;;;15023:19:0;;15015:68;;;;-1:-1:-1;;;15015:68:0;;5704:2:1;15015:68:0;;;5686:21:1;5743:2;5723:18;;;5716:30;5782:34;5762:18;;;5755:62;-1:-1:-1;;;5833:18:1;;;5826:34;5877:19;;15015:68:0;5502:400:1;15015:68:0;-1:-1:-1;;;;;15102:21:0;;15094:68;;;;-1:-1:-1;;;15094:68:0;;6109:2:1;15094:68:0;;;6091:21:1;6148:2;6128:18;;;6121:30;6187:34;6167:18;;;6160:62;-1:-1:-1;;;6238:18:1;;;6231:32;6280:19;;15094:68:0;5907:398:1;15094:68:0;-1:-1:-1;;;;;15173:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15225:32;;1595:25:1;;;15225:32:0;;1568:18:1;15225:32:0;;;;;;;14896:369;;;:::o;7979:2514::-;-1:-1:-1;;;;;8101:16:0;;8093:64;;;;-1:-1:-1;;;8093:64:0;;6512:2:1;8093:64:0;;;6494:21:1;6551:2;6531:18;;;6524:30;6590:34;6570:18;;;6563:62;-1:-1:-1;;;6641:18:1;;;6634:33;6684:19;;8093:64:0;6310:399:1;8093:64:0;-1:-1:-1;;;;;8177:18:0;;8169:68;;;;-1:-1:-1;;;8169:68:0;;6916:2:1;8169:68:0;;;6898:21:1;6955:2;6935:18;;;6928:30;6994:34;6974:18;;;6967:62;-1:-1:-1;;;7045:18:1;;;7038:35;7090:19;;8169:68:0;6714:401:1;8169:68:0;8265:1;8256:6;:10;8248:64;;;;-1:-1:-1;;;8248:64:0;;7322:2:1;8248:64:0;;;7304:21:1;7361:2;7341:18;;;7334:30;7400:34;7380:18;;;7373:62;-1:-1:-1;;;7451:18:1;;;7444:39;7500:19;;8248:64:0;7120:405:1;8248:64:0;4077:7;4104:6;-1:-1:-1;;;;;8341:15:0;;;4104:6;;8341:15;;;;:46;;-1:-1:-1;4077:7:0;4104:6;-1:-1:-1;;;;;8374:13:0;;;4104:6;;8374:13;;8341:46;8323:1365;;;8452:13;;;;;;;8447:208;;4077:7;4104:6;-1:-1:-1;;;;;8516:15:0;;;4104:6;;8516:15;8486:153;;;;-1:-1:-1;;;8486:153:0;;7732:2:1;8486:153:0;;;7714:21:1;7771:2;7751:18;;;7744:30;7810:34;7790:18;;;7783:62;7881:33;7861:18;;;7854:61;7932:19;;8486:153:0;7530:427:1;8486:153:0;8687:16;;8677:6;:26;;8669:67;;;;-1:-1:-1;;;8669:67:0;;8164:2:1;8669:67:0;;;8146:21:1;8203:2;8183:18;;;8176:30;8242;8222:18;;;8215:58;8290:18;;8669:67:0;7962:352:1;8669:67:0;8760:15;;-1:-1:-1;;;;;8754:21:0;;;8760:15;;8754:21;8751:171;;8829:19;;8820:6;8804:13;8814:2;8804:9;:13::i;:::-;:22;;;;:::i;:::-;:44;8796:110;;;;-1:-1:-1;;;8796:110:0;;8651:2:1;8796:110:0;;;8633:21:1;8690:2;8670:18;;;8663:30;8729:34;8709:18;;;8702:62;-1:-1:-1;;;8780:18:1;;;8773:33;8823:19;;8796:110:0;8449:399:1;8796:110:0;8938:32;8973:24;8991:4;8973:9;:24::i;:::-;9055:13;;9114:16;;8938:59;;-1:-1:-1;9027:41:0;;;;9086:44;;9083:95;;9160:16;;9133:43;;9083:95;9198:11;;;;;;;:40;;;;;9231:7;9198:40;:74;;;;-1:-1:-1;9261:11:0;;;;9260:12;9198:74;:118;;;;-1:-1:-1;9301:15:0;;-1:-1:-1;;;;;9293:23:0;;;9301:15;;9293:23;;9198:118;:164;;;;-1:-1:-1;;;;;;9338:24:0;;;;;;:18;:24;;;;;;;;9337:25;9198:164;:209;;;;-1:-1:-1;;;;;;9385:22:0;;;;;;:18;:22;;;;;;;;9384:23;9198:209;9194:483;;;9442:34;9451:24;9442:8;:34::i;:::-;9518:21;9562:16;;9558:104;;9603:39;9620:21;9603:16;:39::i;:::-;9423:254;9194:483;8399:1289;;8323:1365;-1:-1:-1;;;;;9778:24:0;;9700:14;9778:24;;;:18;:24;;;;;;9717:4;;9778:24;;;:50;;-1:-1:-1;;;;;;9806:22:0;;;;;;:18;:22;;;;;;;;9778:50;9777:106;;;-1:-1:-1;9842:15:0;;-1:-1:-1;;;;;9834:23:0;;;9842:15;;9834:23;;;;:48;;-1:-1:-1;9867:15:0;;-1:-1:-1;;;;;9861:21:0;;;9867:15;;9861:21;;9834:48;9759:665;;;-1:-1:-1;9922:5:0;9759:665;;;10003:15;;-1:-1:-1;;;;;9995:23:0;;;10003:15;;9995:23;:74;;;;-1:-1:-1;10053:15:0;;-1:-1:-1;;;;;10039:30:0;;;10053:15;;10039:30;;9995:74;9992:194;;;10106:19;;10090:13;:35;10154:16;;10144:7;:26;9992:194;10243:15;;-1:-1:-1;;;;;10237:21:0;;;10243:15;;10237:21;:57;;;;-1:-1:-1;10278:15:0;;-1:-1:-1;;;;;10262:32:0;;;10278:15;;10262:32;;10237:57;10233:180;;;10331:20;;10315:13;:36;10380:17;;10370:7;:27;10233:180;10434:51;10457:4;10463:2;10467:6;10475:9;10434:22;:51::i;663:224::-;783:7;819:12;811:6;;;;803:29;;;;-1:-1:-1;;;803:29:0;;;;;;;;:::i;:::-;-1:-1:-1;843:9:0;855:5;859:1;855;:5;:::i;:::-;843:17;663:224;-1:-1:-1;;;;;663:224:0:o;16293:323::-;16388:7;16446;;16435;:18;;16413:110;;;;-1:-1:-1;;;16413:110:0;;9188:2:1;16413:110:0;;;9170:21:1;9227:2;9207:18;;;9200:30;9266:34;9246:18;;;9239:62;-1:-1:-1;;;9317:18:1;;;9310:40;9367:19;;16413:110:0;8986:406:1;16413:110:0;16534:19;16556:10;:8;:10::i;:::-;16534:32;-1:-1:-1;16584:24:0;:7;16534:32;16584:11;:24::i;:::-;16577:31;16293:323;-1:-1:-1;;;16293:323:0:o;10505:474::-;5465:11;:18;;-1:-1:-1;;5465:18:0;5479:4;5465:18;;;10598:16:::1;::::0;;10612:1:::1;10598:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10598:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10598:16:0::1;10574:40;;10643:4;10625;10630:1;10625:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10625:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10669:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10669:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10625:7;;10669:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10659:4;10664:1;10659:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10659:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10734:15:::1;::::0;10702:62:::1;::::0;10719:4:::1;::::0;10734:15:::1;10752:11:::0;10702:8:::1;:62::i;:::-;10775:15;::::0;:196:::1;::::0;-1:-1:-1;;;10775:196:0;;-1:-1:-1;;;;;10775:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10856:11;;10775:15:::1;::::0;10898:4;;10925::::1;::::0;10945:15:::1;::::0;10775:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5506:11:0;:19;;-1:-1:-1;;5506:19:0;;;-1:-1:-1;;;;10505:474:0:o;13763:333::-;13846:1;13824:19;13881:20;13846:1;13881:6;:20;:::i;:::-;13912:10;;:33;;13858:43;;-1:-1:-1;;;;;;13912:10:0;;:33;;;;;13858:43;;13912:10;:33;:10;:33;13858:43;13912:10;:33;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13963:20:0;13972:11;13963:6;:20;:::i;:::-;13947:36;;;;:::i;:::-;;-1:-1:-1;13994:20:0;14017:21;13947:36;14017:6;:21;:::i;:::-;14049:16;;:39;;13994:44;;-1:-1:-1;;;;;;14049:16:0;;:39;;;;;13994:44;;14049:16;:39;:16;:39;13994:44;14049:16;:39;;;;;;;;;;;;;;;;;;;;;13813:283;;;13763:333;:::o;13159:354::-;13323:7;13318:66;;13358:13;:11;:13::i;:::-;13395:46;13415:6;13423:9;13434:6;13395:19;:46::i;:::-;13457:7;13452:54;;13481:13;11480:21;;11464:13;:37;11522:15;;11512:7;:25;11422:123;10985:164;11027:7;11048:15;11065;11084:19;:17;:19::i;:::-;11047:56;;-1:-1:-1;11047:56:0;-1:-1:-1;11121:20:0;11047:56;;11121:11;:20::i;:::-;11114:27;;;;10985:164;:::o;893:132::-;951:7;978:39;982:1;985;978:39;;;;;;;;;;;;;;;;;:3;:39::i;15900:227::-;15946:13;;:18;:34;;;;-1:-1:-1;15968:7:0;;:12;15946:34;15942:47;;;15900:227::o;15942:47::-;16023:13;;;15999:21;:37;16063:7;;;16045:15;:25;-1:-1:-1;16082:17:0;;;;16108:11;15900:227::o;14282:606::-;14431:15;14461:23;14499:12;14526:23;14564:12;14591:13;14618:19;14629:7;14618:10;:19::i;:::-;-1:-1:-1;;;;;14666:15:0;;;;;;:7;:15;;;;;;14416:221;;-1:-1:-1;14416:221:0;;-1:-1:-1;14416:221:0;;-1:-1:-1;14416:221:0;-1:-1:-1;14416:221:0;-1:-1:-1;14416:221:0;-1:-1:-1;14666:28:0;;14416:221;14666:19;:28::i;:::-;-1:-1:-1;;;;;14648:15:0;;;;;;;:7;:15;;;;;;:46;;;;14726:18;;;;;;;:39;;14749:15;14726:22;:39::i;:::-;-1:-1:-1;;;;;14705:18:0;;;;;;:7;:18;;;;;:60;14776:18;14788:5;14776:11;:18::i;:::-;14796:24;14809:4;14815;14796:12;:24::i;:::-;14853:9;-1:-1:-1;;;;;14836:44:0;14845:6;-1:-1:-1;;;;;14836:44:0;;14864:15;14836:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;14836:44:0;;;;;;;;14405:483;;;;;;14282:606;;;:::o;11157:257::-;11255:7;;11208;;;;4609:21;11323:20;11255:7;4609:21;11323:11;:20::i;:::-;11313:7;:30;11309:61;;;-1:-1:-1;;11353:7:0;;;4609:21;;-1:-1:-1;11157:257:0;-1:-1:-1;11157:257:0:o;11309:61::-;11389:7;;11398;;-1:-1:-1;11157:257:0;-1:-1:-1;11157:257:0:o;1031:223::-;1151:7;1186:12;1179:5;1171:28;;;;-1:-1:-1;;;1171:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1210:9:0;1222:5;1226:1;1222;:5;:::i;15273:619::-;15373:7;15395;15417;15439;15461;15483;15519:23;15544:12;15558:13;15588:44;15600:7;15609:13;;15624:7;;15588:11;:44::i;:::-;15518:114;;;;;;15643:19;15665:10;:8;:10::i;:::-;15643:32;;15687:15;15704:23;15729:12;15758:46;15770:7;15779:4;15785:5;15792:11;15758;:46::i;:::-;15686:118;;-1:-1:-1;15686:118:0;-1:-1:-1;15686:118:0;-1:-1:-1;15855:15:0;;-1:-1:-1;15872:4:0;;-1:-1:-1;15878:5:0;;-1:-1:-1;;;;;15273:619:0;;;;;;;:::o;521:136::-;579:7;606:43;610:1;613;606:43;;;;;;;;;;;;;;;;;:3;:43::i;336:179::-;394:7;;426:5;430:1;426;:5;:::i;:::-;414:17;;455:1;450;:6;;442:46;;;;-1:-1:-1;;;442:46:0;;11194:2:1;442:46:0;;;11176:21:1;11233:2;11213:18;;;11206:30;11272:29;11252:18;;;11245:57;11319:18;;442:46:0;10992:351:1;12934:213:0;12989:19;13011:10;:8;:10::i;:::-;12989:32;-1:-1:-1;13032:13:0;13048:22;:5;12989:32;13048:9;:22::i;:::-;13122:4;13106:22;;;;:7;:22;;;;;;13032:38;;-1:-1:-1;13106:33:0;;13032:38;13106:26;:33::i;:::-;13097:4;13081:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;12934:213:0:o;16137:148::-;16216:7;;:17;;16228:4;16216:11;:17::i;:::-;16206:7;:27;16257:10;;:20;;16272:4;16257:14;:20::i;:::-;16244:10;:33;-1:-1:-1;;16137:148:0:o;11553:467::-;11721:7;;;;11815:29;11840:3;11815:20;:7;11827;11815:11;:20::i;:::-;:24;;:29::i;:::-;11800:44;-1:-1:-1;11855:13:0;11871:28;11895:3;11871:19;:7;11883:6;11871:11;:19::i;:28::-;11855:44;-1:-1:-1;11910:23:0;11936:28;11855:44;11936:17;:7;11948:4;11936:11;:17::i;:::-;:21;;:28::i;:::-;11910:54;12000:4;;-1:-1:-1;12006:5:0;;-1:-1:-1;11553:467:0;;-1:-1:-1;;;;;11553:467:0:o;12028:534::-;12222:7;;;;12319:24;:7;12331:11;12319;:24::i;:::-;12301:42;-1:-1:-1;12354:12:0;12369:21;:4;12378:11;12369:8;:21::i;:::-;12354:36;-1:-1:-1;12401:13:0;12417:22;:5;12427:11;12417:9;:22::i;:::-;12401:38;-1:-1:-1;12450:23:0;12476:28;12401:38;12476:17;:7;12488:4;12476:11;:17::i;:28::-;12523:7;;;;-1:-1:-1;12549:4:0;;-1:-1:-1;12028:534:0;;-1:-1:-1;;;;;;;12028:534:0:o;1260:246::-;1318:7;1342:1;1347;1342:6;1338:47;;-1:-1:-1;1372:1:0;1365:8;;1338:47;1395:9;1407:5;1411:1;1407;:5;:::i;:::-;1395:17;-1:-1:-1;1440:1:0;1431:5;1435:1;1395:17;1431:5;:::i;:::-;:10;1423:56;;;;-1:-1:-1;;;1423:56:0;;11723:2:1;1423:56:0;;;11705:21:1;11762:2;11742:18;;;11735:30;11801:34;11781:18;;;11774:62;-1:-1:-1;;;11852:18:1;;;11845:31;11893:19;;1423:56:0;11521:397:1;14:548;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;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;2505:180::-;2564:6;2617:2;2605:9;2596:7;2592:23;2588:32;2585:52;;;2633:1;2630;2623:12;2585:52;-1:-1:-1;2656:23:1;;2505:180;-1:-1:-1;2505:180:1:o;2690:247::-;2749:6;2802:2;2790:9;2781:7;2777:23;2773:32;2770:52;;;2818:1;2815;2808:12;2770:52;2857:9;2844:23;2876:31;2901:5;2876:31;:::i;3150:782::-;3242:6;3250;3258;3311:2;3299:9;3290:7;3286:23;3282:32;3279:52;;;3327:1;3324;3317:12;3279:52;3367:9;3354:23;3396:18;3437:2;3429:6;3426:14;3423:34;;;3453:1;3450;3443:12;3423:34;3491:6;3480:9;3476:22;3466:32;;3536:7;3529:4;3525:2;3521:13;3517:27;3507:55;;3558:1;3555;3548:12;3507:55;3598:2;3585:16;3624:2;3616:6;3613:14;3610:34;;;3640:1;3637;3630:12;3610:34;3695:7;3688:4;3678:6;3675:1;3671:14;3667:2;3663:23;3659:34;3656:47;3653:67;;;3716:1;3713;3706:12;3653:67;3747:4;3739:13;;;;-1:-1:-1;3771:6:1;-1:-1:-1;;3812:20:1;;3799:34;3869:13;;3862:21;3852:32;;3842:60;;3898:1;3895;3888:12;3842:60;3921:5;3911:15;;;3150:782;;;;;:::o;3937:388::-;4005:6;4013;4066:2;4054:9;4045:7;4041:23;4037:32;4034:52;;;4082:1;4079;4072:12;4034:52;4121:9;4108:23;4140:31;4165:5;4140:31;:::i;:::-;4190:5;-1:-1:-1;4247:2:1;4232:18;;4219:32;4260:33;4219:32;4260:33;:::i;:::-;4312:7;4302:17;;;3937:388;;;;;:::o;4330:356::-;4532:2;4514:21;;;4551:18;;;4544:30;4610:34;4605:2;4590:18;;4583:62;4677:2;4662:18;;4330:356::o;4691:127::-;4752:10;4747:3;4743:20;4740:1;4733:31;4783:4;4780:1;4773:15;4807:4;4804:1;4797:15;4823:127;4884:10;4879:3;4875:20;4872:1;4865:31;4915:4;4912:1;4905:15;4939:4;4936:1;4929:15;4955:135;4994:3;5015:17;;;5012:43;;5035:18;;:::i;:::-;-1:-1:-1;5082:1:1;5071:13;;4955:135::o;8319:125::-;8384:9;;;8405:10;;;8402:36;;;8418:18;;:::i;8853:128::-;8920:9;;;8941:11;;;8938:37;;;8955:18;;:::i;9529:251::-;9599:6;9652:2;9640:9;9631:7;9627:23;9623:32;9620:52;;;9668:1;9665;9658:12;9620:52;9700:9;9694:16;9719:31;9744:5;9719:31;:::i;9785:980::-;10047:4;10095:3;10084:9;10080:19;10126:6;10115:9;10108:25;10152:2;10190:6;10185:2;10174:9;10170:18;10163:34;10233:3;10228:2;10217:9;10213:18;10206:31;10257:6;10292;10286:13;10323:6;10315;10308:22;10361:3;10350:9;10346:19;10339:26;;10400:2;10392:6;10388:15;10374:29;;10421:1;10431:195;10445:6;10442:1;10439:13;10431:195;;;10510:13;;-1:-1:-1;;;;;10506:39:1;10494:52;;10601:15;;;;10566:12;;;;10542:1;10460:9;10431:195;;;-1:-1:-1;;;;;;;10682:32:1;;;;10677:2;10662:18;;10655:60;-1:-1:-1;;;10746:3:1;10731:19;10724:35;10643:3;9785:980;-1:-1:-1;;;9785:980:1:o;10770:217::-;10810:1;10836;10826:132;;10880:10;10875:3;10871:20;10868:1;10861:31;10915:4;10912:1;10905:15;10943:4;10940:1;10933:15;10826:132;-1:-1:-1;10972:9:1;;10770:217::o;11348:168::-;11421:9;;;11452;;11469:15;;;11463:22;;11449:37;11439:71;;11490:18;;:::i

Swarm Source

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