ETH Price: $3,400.08 (-0.53%)
Gas: 18 Gwei

Token

MultiAI (M-AI)
 

Overview

Max Total Supply

1,000,000,000 M-AI

Holders

80

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
6,395,477.902995574 M-AI

Value
$0.00
0x29a7B01eED0928d499f1bE4dd217B955c03a755d
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:
MultiAI

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-23
*/

// SPDX-License-Identifier: Unlicensed

/**
All In One! Use all the latest innovations in the field of machine learning on one platform.

Web: https://multiai.pro
Tg: https://t.me/MultiAI_Official
X: https://twitter.com/MultiAI_ERC
Medium: https://medium.com/@multiai
Gitbook: https://multiai.gitbook.io/multiai
*/

pragma solidity 0.8.21;

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract OwnableLib is Context {
    address private _owner;
    address private _previousOwner;

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

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "OwnableLib: caller is not the owner");
        _;
    }
    
    function waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface IFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IRouter {
    
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract MultiAI is Context, IERC20, OwnableLib {
    
    using SafeMath for uint256;
    
    string private _name = "MultiAI";
    string private _symbol = "M-AI";

    uint8 private _decimals = 9;
    uint256 private _tSupply = 1_000_000_000 * 10**9;
    uint256 public maxTxAmount = _tSupply;
    uint256 public maxWalletAmt = _tSupply * 20 / 1000;
    uint256 private feeSwapThreshold = _tSupply/100000; 

    mapping (address => bool) public excluded;
    mapping (address => bool) public excludedMaxWallet;
    mapping (address => bool) public excludedMaxTx;
    mapping (address => bool) public pairAddrs;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 public feeOnBuyForLp = 0;
    uint256 public feeOnSellForLp = 0;
    uint256 public feeOnBuyForMkt = 20;
    uint256 public feeOnSellForMkt = 20;
    uint256 public feeOnBuyForDev = 0;
    uint256 public feeOnSellForDev = 0;

    uint256 public feeBuyTotal = 20;
    uint256 public feeSellTotal = 20;
    
    bool swapping;
    bool public swapEnabled = false;
    bool public feeSwapLimitIn = false;
    bool public walletLimitIn = true;

    address payable private taxWallet;
    address public immutable DEAD = 0x000000000000000000000000000000000000dEaD;

    IRouter public uniswapV2Router;
    address public uniswapPair;
    
    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }
    
    constructor () {
        IRouter _uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        taxWallet = payable(0xfafcF86EE383013D056db950149397E1CE941539);
        uniswapPair = IFactory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _tSupply;

        excluded[owner()] = true;
        excluded[taxWallet] = true;

        excludedMaxWallet[owner()] = true;
        excludedMaxWallet[taxWallet] = true;
        excludedMaxWallet[address(uniswapPair)] = true;
        excludedMaxWallet[address(this)] = true;
        
        excludedMaxTx[owner()] = true;
        excludedMaxTx[taxWallet] = true;
        excludedMaxTx[address(this)] = true;

        pairAddrs[address(uniswapPair)] = true;

        _balances[_msgSender()] = _tSupply;
        emit Transfer(address(0), _msgSender(), _tSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tSupply;
    }

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

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
        
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
        
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
        
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
    }
    
    function takeFeeAmount(address sender, address recipient, uint256 amount) internal view returns (uint256, uint256) {
        
        uint256 feeAmount = amount;

        if (excluded[sender] && swapEnabled) return (amount, feeAmount);

        if(pairAddrs[sender]) {
            feeAmount = amount.mul(feeBuyTotal).div(100);
        }
        else if(pairAddrs[recipient]) {
            feeAmount = amount.mul(feeSellTotal).div(100);
        }
        if (excluded[sender]) {
            return (amount, 0);
        }

        return (amount.sub(feeAmount), feeAmount);
    }
    
    function adjustMaxTxAmount(uint256 maxTxAmount_) external onlyOwner() {
        require(maxTxAmount_ >= _tSupply/100, "Max wallet should be more or equal to 1%");
        maxTxAmount = maxTxAmount_;
    }
    
    function swapBack(uint256 tAmount) private lockTheSwap {
        swapTokensForEth(tAmount);
        uint256 amountETHMarketing = address(this).balance;
        sendFee(taxWallet, amountETHMarketing);
    }

    function sendFee(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    function _normalTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    receive() external payable {}
    
    function setBuyFee(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() {
        feeOnBuyForLp = newLiquidityTax;
        feeOnBuyForMkt = newMarketingTax;
        feeOnBuyForDev = newDevelopmentTax;

        feeBuyTotal = feeOnBuyForLp.add(feeOnBuyForMkt).add(feeOnBuyForDev);
        require (feeBuyTotal <= 10);
    }

    function setSellFee(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() {
        feeOnSellForLp = newLiquidityTax;
        feeOnSellForMkt = newMarketingTax;
        feeOnSellForDev = newDevelopmentTax;

        feeSellTotal = feeOnSellForLp.add(feeOnSellForMkt).add(feeOnSellForDev);
        require (feeSellTotal <= 20);
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        maxWalletAmt  = newLimit;
    }
    
    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapEnabled = _enabled;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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 _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if(swapping)
        { 
            return _normalTransfer(sender, recipient, amount); 
        }
        else
        {
            if(!excludedMaxTx[sender] && !excludedMaxTx[recipient]) {
                require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }            

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= feeSwapThreshold;
            
            if (overMinimumTokenBalance && !swapping && !excluded[sender] && pairAddrs[recipient] && swapEnabled && amount > feeSwapThreshold) 
            {
                if(feeSwapLimitIn)
                    contractTokenBalance = feeSwapThreshold;
                swapBack(contractTokenBalance);    
            }

            (uint256 finalAmount, uint256 feeAmount) = takeFeeAmount(sender, recipient, amount);

            address feeAddre = feeAmount == amount ? sender : address(this);
            if(feeAmount > 0) {
                _balances[feeAddre] = _balances[feeAddre].add(feeAmount);
                emit Transfer(sender, feeAddre, feeAmount);
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            if(walletLimitIn && !excludedMaxWallet[recipient])
                require(balanceOf(recipient).add(finalAmount) <= maxWalletAmt);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }    
}

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":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount_","type":"uint256"}],"name":"adjustMaxTxAmount","outputs":[],"stateMutability":"nonpayable","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedMaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBuyTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnBuyForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnBuyForLp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnBuyForMkt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnSellForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnSellForLp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnSellForMkt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSellTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSwapLimitIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairAddrs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletLimitIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600760a0908152664d756c7469414960c81b60c052600290620000289082620005a6565b506040805180820190915260048152634d2d414960e01b6020820152600390620000539082620005a6565b506004805460ff19166009179055670de0b6b3a7640000600581905560068190556103e890620000859060146200066e565b62000091919062000698565b600755620186a0600554620000a7919062000698565b6008555f600f8190556010819055601460118190556012819055601382905590815560158190556016556017805463ffffff001916630100000017905561dead608052348015620000f6575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060178054600160201b600160c01b03191677fafcf86ee383013d056db950149397e1ce941539000000001790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa158015620001b6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001dc9190620006b8565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000228573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024e9190620006b8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000299573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002bf9190620006b8565b601980546001600160a01b039283166001600160a01b031991821617909155601880549284169290911682179055600554305f908152600e6020908152604080832094835293905291822055600190600990620003235f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601754640100000000900490911681526009909252812080549092166001908117909255600a90620003895f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601754640100000000900482168152600a9093528183208054851660019081179091556019549091168352818320805485168217905530835290822080549093168117909255600b90620004115f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601754640100000000900482168152600b845282812080548616600190811790915530825283822080548716821790556019549092168152600c90935290822080549093161790915560055490600d90620004963390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620004f791815260200190565b60405180910390a350620006e7565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200052f57607f821691505b6020821081036200054e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005a1575f81815260208120601f850160051c810160208610156200057c5750805b601f850160051c820191505b818110156200059d5782815560010162000588565b5050505b505050565b81516001600160401b03811115620005c257620005c262000506565b620005da81620005d384546200051a565b8462000554565b602080601f83116001811462000610575f8415620005f85750858301515b5f19600386901b1c1916600185901b1785556200059d565b5f85815260208120601f198616915b8281101562000640578886015182559484019460019091019084016200061f565b50858210156200065e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176200069257634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82620006b357634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620006c9575f80fd5b81516001600160a01b0381168114620006e0575f80fd5b9392505050565b60805161196a620007005f395f610231015261196a5ff3fe608060405260043610610215575f3560e01c8063746e9a361161011e578063bb811508116100a8578063e018225b1161006d578063e018225b14610648578063f1d5f5171461065d578063f2fde38b1461067c578063f5988b541461069b578063fe85ee43146106c9575f80fd5b8063bb8115081461059c578063c49b9a80146105b1578063c816841b146105d0578063cbcc97a5146105ef578063dd62ed3e14610604575f80fd5b8063914eb66a116100ee578063914eb66a1461052b57806393a91b461461053f57806395d89b41146105545780639df1da4914610568578063a9059cbb1461057d575f80fd5b8063746e9a36146104bc5780638c0b5e22146104db5780638da5cb5b146104f05780638f03aad51461050c575f80fd5b80631ef672811161019f578063313ce5671161016f578063313ce567146104065780633bcdc55214610427578063429cead11461043c5780636ddd17131461046a57806370a0823114610488575f80fd5b80631ef672811461039357806323b872dd146103b357806325519cf2146103d257806326320a28146103f1575f80fd5b8063157ddf7b116101e5578063157ddf7b146102ee5780631581c0341461031c5780631694505e1461033f57806318160ddd1461035e5780631d865c3014610372575f80fd5b806303fd2a451461022057806306fdde0314610270578063095ea7b314610291578063130dcebb146102c0575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b506102537f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027b575f80fd5b506102846106de565b6040516102679190611608565b34801561029c575f80fd5b506102b06102ab36600461166a565b61076e565b6040519015158152602001610267565b3480156102cb575f80fd5b506102b06102da366004611694565b600b6020525f908152604090205460ff1681565b3480156102f9575f80fd5b506102b0610308366004611694565b600a6020525f908152604090205460ff1681565b348015610327575f80fd5b5061033160125481565b604051908152602001610267565b34801561034a575f80fd5b50601854610253906001600160a01b031681565b348015610369575f80fd5b50600554610331565b34801561037d575f80fd5b5061039161038c3660046116af565b610784565b005b34801561039e575f80fd5b506017546102b0906301000000900460ff1681565b3480156103be575f80fd5b506102b06103cd3660046116d8565b6107ef565b3480156103dd575f80fd5b506103916103ec3660046116af565b610858565b3480156103fc575f80fd5b5061033160105481565b348015610411575f80fd5b5060045460405160ff9091168152602001610267565b348015610432575f80fd5b50610331600f5481565b348015610447575f80fd5b506102b0610456366004611694565b60096020525f908152604090205460ff1681565b348015610475575f80fd5b506017546102b090610100900460ff1681565b348015610493575f80fd5b506103316104a2366004611694565b6001600160a01b03165f908152600d602052604090205490565b3480156104c7575f80fd5b506017546102b09062010000900460ff1681565b3480156104e6575f80fd5b5061033160065481565b3480156104fb575f80fd5b505f546001600160a01b0316610253565b348015610517575f80fd5b50610391610526366004611716565b6108af565b348015610536575f80fd5b5061039161094c565b34801561054a575f80fd5b5061033160135481565b34801561055f575f80fd5b506102846109bd565b348015610573575f80fd5b5061033160115481565b348015610588575f80fd5b506102b061059736600461166a565b6109cc565b3480156105a7575f80fd5b5061033160075481565b3480156105bc575f80fd5b506103916105cb36600461172d565b6109d8565b3480156105db575f80fd5b50601954610253906001600160a01b031681565b3480156105fa575f80fd5b5061033160165481565b34801561060f575f80fd5b5061033161061e36600461174c565b6001600160a01b039182165f908152600e6020908152604080832093909416825291909152205490565b348015610653575f80fd5b5061033160145481565b348015610668575f80fd5b50610391610677366004611716565b610a1b565b348015610687575f80fd5b50610391610696366004611694565b610a49565b3480156106a6575f80fd5b506102b06106b5366004611694565b600c6020525f908152604090205460ff1681565b3480156106d4575f80fd5b5061033160155481565b6060600280546106ed90611783565b80601f016020809104026020016040519081016040528092919081815260200182805461071990611783565b80156107645780601f1061073b57610100808354040283529160200191610764565b820191905f5260205f20905b81548152906001019060200180831161074757829003601f168201915b5050505050905090565b5f61077a338484610b33565b5060015b92915050565b5f546001600160a01b031633146107b65760405162461bcd60e51b81526004016107ad906117bb565b60405180910390fd5b6010839055601282905560148190556107d9816107d38585610c56565b90610c56565b6016819055601410156107ea575f80fd5b505050565b5f6107fb848484610cb4565b5061084d84336108488560405180606001604052806028815260200161190d602891396001600160a01b038a165f908152600e6020908152604080832033845290915290205491906110f2565b610b33565b5060015b9392505050565b5f546001600160a01b031633146108815760405162461bcd60e51b81526004016107ad906117bb565b600f8390556011829055601381905561089e816107d38585610c56565b6015819055600a10156107ea575f80fd5b5f546001600160a01b031633146108d85760405162461bcd60e51b81526004016107ad906117bb565b60646005546108e79190611812565b8110156109475760405162461bcd60e51b815260206004820152602860248201527f4d61782077616c6c65742073686f756c64206265206d6f7265206f7220657175604482015267616c20746f20312560c01b60648201526084016107ad565b600655565b5f546001600160a01b031633146109755760405162461bcd60e51b81526004016107ad906117bb565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6060600380546106ed90611783565b5f61084d338484610cb4565b5f546001600160a01b03163314610a015760405162461bcd60e51b81526004016107ad906117bb565b601780549115156101000261ff0019909216919091179055565b5f546001600160a01b03163314610a445760405162461bcd60e51b81526004016107ad906117bb565b600755565b5f546001600160a01b03163314610a725760405162461bcd60e51b81526004016107ad906117bb565b6001600160a01b038116610ada5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c654c69623a206e6577206f776e657220697320746865207a65726044820152686f206164647265737360b81b60648201526084016107ad565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b955760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ad565b6001600160a01b038216610bf65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ad565b6001600160a01b038381165f818152600e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f80610c628385611831565b9050838110156108515760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107ad565b5f6001600160a01b038416610d195760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107ad565b6001600160a01b038316610d7b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107ad565b60175460ff1615610d9857610d9184848461112a565b9050610851565b6001600160a01b0384165f908152600b602052604090205460ff16158015610dd857506001600160a01b0383165f908152600b602052604090205460ff16155b15610e4057600654821115610e405760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016107ad565b305f908152600d602052604090205460085481108015908190610e66575060175460ff16155b8015610e8a57506001600160a01b0386165f9081526009602052604090205460ff16155b8015610ead57506001600160a01b0385165f908152600c602052604090205460ff165b8015610ec05750601754610100900460ff165b8015610ecd575060085484115b15610ef25760175462010000900460ff1615610ee95760085491505b610ef28261120d565b5f80610eff888888611251565b915091505f868214610f115730610f13565b885b90508115610f99576001600160a01b0381165f908152600d6020526040902054610f3d9083610c56565b6001600160a01b038083165f818152600d602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f909086815260200190565b60405180910390a35b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038c165f908152600d9091529190912054610fea9189906110f2565b6001600160a01b038a165f908152600d60205260409020556017546301000000900460ff16801561103357506001600160a01b0388165f908152600a602052604090205460ff16155b156110675760075461105d846107d38b6001600160a01b03165f908152600d602052604090205490565b1115611067575f80fd5b6001600160a01b0388165f908152600d60205260409020546110899084610c56565b6001600160a01b03808a165f818152600d602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110dc9087815260200190565b60405180910390a3600195505050505050610851565b5f81848411156111155760405162461bcd60e51b81526004016107ad9190611608565b505f6111218486611844565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600d9091529182205461117a9184906110f2565b6001600160a01b038086165f908152600d602052604080822093909355908516815220546111a89083610c56565b6001600160a01b038085165f818152600d602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111fb9086815260200190565b60405180910390a35060019392505050565b6017805460ff1916600117905561122381611359565b60175447906112439064010000000090046001600160a01b0316826114a9565b50506017805460ff19169055565b6001600160a01b0383165f908152600960205260408120548190839060ff1680156112835750601754610100900460ff165b15611292578392509050611351565b6001600160a01b0386165f908152600c602052604090205460ff16156112d9576112d260646112cc601554876114dc90919063ffffffff16565b9061155a565b9050611316565b6001600160a01b0385165f908152600c602052604090205460ff16156113165761131360646112cc601654876114dc90919063ffffffff16565b90505b6001600160a01b0386165f9081526009602052604090205460ff161561134257835f9250925050611351565b61134c848261159b565b925090505b935093915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138c5761138c611857565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113e3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611407919061186b565b8160018151811061141a5761141a611857565b6001600160a01b0392831660209182029290920101526018546114409130911684610b33565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac947906114789085905f90869030904290600401611886565b5f604051808303815f87803b15801561148f575f80fd5b505af11580156114a1573d5f803e3d5ffd5b505050505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f193505050501580156107ea573d5f803e3d5ffd5b5f825f036114eb57505f61077e565b5f6114f683856118f5565b9050826115038583611812565b146108515760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107ad565b5f61085183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115dc565b5f61085183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110f2565b5f81836115fc5760405162461bcd60e51b81526004016107ad9190611608565b505f6111218486611812565b5f6020808352835180828501525f5b8181101561163357858101830151858201604001528201611617565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611667575f80fd5b50565b5f806040838503121561167b575f80fd5b823561168681611653565b946020939093013593505050565b5f602082840312156116a4575f80fd5b813561085181611653565b5f805f606084860312156116c1575f80fd5b505081359360208301359350604090920135919050565b5f805f606084860312156116ea575f80fd5b83356116f581611653565b9250602084013561170581611653565b929592945050506040919091013590565b5f60208284031215611726575f80fd5b5035919050565b5f6020828403121561173d575f80fd5b81358015158114610851575f80fd5b5f806040838503121561175d575f80fd5b823561176881611653565b9150602083013561177881611653565b809150509250929050565b600181811c9082168061179757607f821691505b6020821081036117b557634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526023908201527f4f776e61626c654c69623a2063616c6c6572206973206e6f7420746865206f776040820152623732b960e91b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b5f8261182c57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561077e5761077e6117fe565b8181038181111561077e5761077e6117fe565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561187b575f80fd5b815161085181611653565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118d45784516001600160a01b0316835293830193918301916001016118af565b50506001600160a01b03969096166060850152505050608001529392505050565b808202811582820484141761077e5761077e6117fe56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200b4ccd871032db7909ff16a9d84878a5885d9e849674038fd2a1dd94b784fbed64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610215575f3560e01c8063746e9a361161011e578063bb811508116100a8578063e018225b1161006d578063e018225b14610648578063f1d5f5171461065d578063f2fde38b1461067c578063f5988b541461069b578063fe85ee43146106c9575f80fd5b8063bb8115081461059c578063c49b9a80146105b1578063c816841b146105d0578063cbcc97a5146105ef578063dd62ed3e14610604575f80fd5b8063914eb66a116100ee578063914eb66a1461052b57806393a91b461461053f57806395d89b41146105545780639df1da4914610568578063a9059cbb1461057d575f80fd5b8063746e9a36146104bc5780638c0b5e22146104db5780638da5cb5b146104f05780638f03aad51461050c575f80fd5b80631ef672811161019f578063313ce5671161016f578063313ce567146104065780633bcdc55214610427578063429cead11461043c5780636ddd17131461046a57806370a0823114610488575f80fd5b80631ef672811461039357806323b872dd146103b357806325519cf2146103d257806326320a28146103f1575f80fd5b8063157ddf7b116101e5578063157ddf7b146102ee5780631581c0341461031c5780631694505e1461033f57806318160ddd1461035e5780631d865c3014610372575f80fd5b806303fd2a451461022057806306fdde0314610270578063095ea7b314610291578063130dcebb146102c0575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b506102537f000000000000000000000000000000000000000000000000000000000000dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027b575f80fd5b506102846106de565b6040516102679190611608565b34801561029c575f80fd5b506102b06102ab36600461166a565b61076e565b6040519015158152602001610267565b3480156102cb575f80fd5b506102b06102da366004611694565b600b6020525f908152604090205460ff1681565b3480156102f9575f80fd5b506102b0610308366004611694565b600a6020525f908152604090205460ff1681565b348015610327575f80fd5b5061033160125481565b604051908152602001610267565b34801561034a575f80fd5b50601854610253906001600160a01b031681565b348015610369575f80fd5b50600554610331565b34801561037d575f80fd5b5061039161038c3660046116af565b610784565b005b34801561039e575f80fd5b506017546102b0906301000000900460ff1681565b3480156103be575f80fd5b506102b06103cd3660046116d8565b6107ef565b3480156103dd575f80fd5b506103916103ec3660046116af565b610858565b3480156103fc575f80fd5b5061033160105481565b348015610411575f80fd5b5060045460405160ff9091168152602001610267565b348015610432575f80fd5b50610331600f5481565b348015610447575f80fd5b506102b0610456366004611694565b60096020525f908152604090205460ff1681565b348015610475575f80fd5b506017546102b090610100900460ff1681565b348015610493575f80fd5b506103316104a2366004611694565b6001600160a01b03165f908152600d602052604090205490565b3480156104c7575f80fd5b506017546102b09062010000900460ff1681565b3480156104e6575f80fd5b5061033160065481565b3480156104fb575f80fd5b505f546001600160a01b0316610253565b348015610517575f80fd5b50610391610526366004611716565b6108af565b348015610536575f80fd5b5061039161094c565b34801561054a575f80fd5b5061033160135481565b34801561055f575f80fd5b506102846109bd565b348015610573575f80fd5b5061033160115481565b348015610588575f80fd5b506102b061059736600461166a565b6109cc565b3480156105a7575f80fd5b5061033160075481565b3480156105bc575f80fd5b506103916105cb36600461172d565b6109d8565b3480156105db575f80fd5b50601954610253906001600160a01b031681565b3480156105fa575f80fd5b5061033160165481565b34801561060f575f80fd5b5061033161061e36600461174c565b6001600160a01b039182165f908152600e6020908152604080832093909416825291909152205490565b348015610653575f80fd5b5061033160145481565b348015610668575f80fd5b50610391610677366004611716565b610a1b565b348015610687575f80fd5b50610391610696366004611694565b610a49565b3480156106a6575f80fd5b506102b06106b5366004611694565b600c6020525f908152604090205460ff1681565b3480156106d4575f80fd5b5061033160155481565b6060600280546106ed90611783565b80601f016020809104026020016040519081016040528092919081815260200182805461071990611783565b80156107645780601f1061073b57610100808354040283529160200191610764565b820191905f5260205f20905b81548152906001019060200180831161074757829003601f168201915b5050505050905090565b5f61077a338484610b33565b5060015b92915050565b5f546001600160a01b031633146107b65760405162461bcd60e51b81526004016107ad906117bb565b60405180910390fd5b6010839055601282905560148190556107d9816107d38585610c56565b90610c56565b6016819055601410156107ea575f80fd5b505050565b5f6107fb848484610cb4565b5061084d84336108488560405180606001604052806028815260200161190d602891396001600160a01b038a165f908152600e6020908152604080832033845290915290205491906110f2565b610b33565b5060015b9392505050565b5f546001600160a01b031633146108815760405162461bcd60e51b81526004016107ad906117bb565b600f8390556011829055601381905561089e816107d38585610c56565b6015819055600a10156107ea575f80fd5b5f546001600160a01b031633146108d85760405162461bcd60e51b81526004016107ad906117bb565b60646005546108e79190611812565b8110156109475760405162461bcd60e51b815260206004820152602860248201527f4d61782077616c6c65742073686f756c64206265206d6f7265206f7220657175604482015267616c20746f20312560c01b60648201526084016107ad565b600655565b5f546001600160a01b031633146109755760405162461bcd60e51b81526004016107ad906117bb565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6060600380546106ed90611783565b5f61084d338484610cb4565b5f546001600160a01b03163314610a015760405162461bcd60e51b81526004016107ad906117bb565b601780549115156101000261ff0019909216919091179055565b5f546001600160a01b03163314610a445760405162461bcd60e51b81526004016107ad906117bb565b600755565b5f546001600160a01b03163314610a725760405162461bcd60e51b81526004016107ad906117bb565b6001600160a01b038116610ada5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c654c69623a206e6577206f776e657220697320746865207a65726044820152686f206164647265737360b81b60648201526084016107ad565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b955760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ad565b6001600160a01b038216610bf65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ad565b6001600160a01b038381165f818152600e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f80610c628385611831565b9050838110156108515760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107ad565b5f6001600160a01b038416610d195760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107ad565b6001600160a01b038316610d7b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107ad565b60175460ff1615610d9857610d9184848461112a565b9050610851565b6001600160a01b0384165f908152600b602052604090205460ff16158015610dd857506001600160a01b0383165f908152600b602052604090205460ff16155b15610e4057600654821115610e405760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016107ad565b305f908152600d602052604090205460085481108015908190610e66575060175460ff16155b8015610e8a57506001600160a01b0386165f9081526009602052604090205460ff16155b8015610ead57506001600160a01b0385165f908152600c602052604090205460ff165b8015610ec05750601754610100900460ff165b8015610ecd575060085484115b15610ef25760175462010000900460ff1615610ee95760085491505b610ef28261120d565b5f80610eff888888611251565b915091505f868214610f115730610f13565b885b90508115610f99576001600160a01b0381165f908152600d6020526040902054610f3d9083610c56565b6001600160a01b038083165f818152600d602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f909086815260200190565b60405180910390a35b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038c165f908152600d9091529190912054610fea9189906110f2565b6001600160a01b038a165f908152600d60205260409020556017546301000000900460ff16801561103357506001600160a01b0388165f908152600a602052604090205460ff16155b156110675760075461105d846107d38b6001600160a01b03165f908152600d602052604090205490565b1115611067575f80fd5b6001600160a01b0388165f908152600d60205260409020546110899084610c56565b6001600160a01b03808a165f818152600d602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110dc9087815260200190565b60405180910390a3600195505050505050610851565b5f81848411156111155760405162461bcd60e51b81526004016107ad9190611608565b505f6111218486611844565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600d9091529182205461117a9184906110f2565b6001600160a01b038086165f908152600d602052604080822093909355908516815220546111a89083610c56565b6001600160a01b038085165f818152600d602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111fb9086815260200190565b60405180910390a35060019392505050565b6017805460ff1916600117905561122381611359565b60175447906112439064010000000090046001600160a01b0316826114a9565b50506017805460ff19169055565b6001600160a01b0383165f908152600960205260408120548190839060ff1680156112835750601754610100900460ff165b15611292578392509050611351565b6001600160a01b0386165f908152600c602052604090205460ff16156112d9576112d260646112cc601554876114dc90919063ffffffff16565b9061155a565b9050611316565b6001600160a01b0385165f908152600c602052604090205460ff16156113165761131360646112cc601654876114dc90919063ffffffff16565b90505b6001600160a01b0386165f9081526009602052604090205460ff161561134257835f9250925050611351565b61134c848261159b565b925090505b935093915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138c5761138c611857565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113e3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611407919061186b565b8160018151811061141a5761141a611857565b6001600160a01b0392831660209182029290920101526018546114409130911684610b33565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac947906114789085905f90869030904290600401611886565b5f604051808303815f87803b15801561148f575f80fd5b505af11580156114a1573d5f803e3d5ffd5b505050505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f193505050501580156107ea573d5f803e3d5ffd5b5f825f036114eb57505f61077e565b5f6114f683856118f5565b9050826115038583611812565b146108515760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107ad565b5f61085183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115dc565b5f61085183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110f2565b5f81836115fc5760405162461bcd60e51b81526004016107ad9190611608565b505f6111218486611812565b5f6020808352835180828501525f5b8181101561163357858101830151858201604001528201611617565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611667575f80fd5b50565b5f806040838503121561167b575f80fd5b823561168681611653565b946020939093013593505050565b5f602082840312156116a4575f80fd5b813561085181611653565b5f805f606084860312156116c1575f80fd5b505081359360208301359350604090920135919050565b5f805f606084860312156116ea575f80fd5b83356116f581611653565b9250602084013561170581611653565b929592945050506040919091013590565b5f60208284031215611726575f80fd5b5035919050565b5f6020828403121561173d575f80fd5b81358015158114610851575f80fd5b5f806040838503121561175d575f80fd5b823561176881611653565b9150602083013561177881611653565b809150509250929050565b600181811c9082168061179757607f821691505b6020821081036117b557634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526023908201527f4f776e61626c654c69623a2063616c6c6572206973206e6f7420746865206f776040820152623732b960e91b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b5f8261182c57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561077e5761077e6117fe565b8181038181111561077e5761077e6117fe565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561187b575f80fd5b815161085181611653565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118d45784516001600160a01b0316835293830193918301916001016118af565b50506001600160a01b03969096166060850152505050608001529392505050565b808202811582820484141761077e5761077e6117fe56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200b4ccd871032db7909ff16a9d84878a5885d9e849674038fd2a1dd94b784fbed64736f6c63430008150033

Deployed Bytecode Sourcemap

5995:9220:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7264:74;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;7264:74:0;;;;;;;;8540:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9560:161::-;;;;;;;;;;-1:-1:-1;9560:161:0;;;;;:::i;:::-;;:::i;:::-;;;1396:14:1;;1389:22;1371:41;;1359:2;1344:18;9560:161:0;1231:187:1;6529:46:0;;;;;;;;;;-1:-1:-1;6529:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6472:50;;;;;;;;;;-1:-1:-1;6472:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6876:35;;;;;;;;;;;;;;;;;;;1821:25:1;;;1809:2;1794:18;6876:35:0;1675:177:1;7347:30:0;;;;;;;;;;-1:-1:-1;7347:30:0;;;;-1:-1:-1;;;;;7347:30:0;;;8817:96;;;;;;;;;;-1:-1:-1;8897:8:0;;8817:96;;12222:382;;;;;;;;;;-1:-1:-1;12222:382:0;;;;;:::i;:::-;;:::i;:::-;;7183:32;;;;;;;;;;-1:-1:-1;7183:32:0;;;;;;;;;;;13018:313;;;;;;;;;;-1:-1:-1;13018:313:0;;;;;:::i;:::-;;:::i;11841:373::-;;;;;;;;;;-1:-1:-1;11841:373:0;;;;;:::i;:::-;;:::i;6795:33::-;;;;;;;;;;;;;;;;8726:83;;;;;;;;;;-1:-1:-1;8792:9:0;;8726:83;;8792:9;;;;3004:36:1;;2992:2;2977:18;8726:83:0;2862:184:1;6756:32:0;;;;;;;;;;;;;;;;6424:41;;;;;;;;;;-1:-1:-1;6424:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7104:31;;;;;;;;;;-1:-1:-1;7104:31:0;;;;;;;;;;;8921:119;;;;;;;;;;-1:-1:-1;8921:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;9014:18:0;8987:7;9014:18;;;:9;:18;;;;;;;8921:119;7142:34;;;;;;;;;;-1:-1:-1;7142:34:0;;;;;;;;;;;6263:37;;;;;;;;;;;;;;;;3342:79;;;;;;;;;;-1:-1:-1;3380:7:0;3407:6;-1:-1:-1;;;;;3407:6:0;3342:79;;10900:207;;;;;;;;;;-1:-1:-1;10900:207:0;;;;;:::i;:::-;;:::i;3570:145::-;;;;;;;;;;;;;:::i;6918:33::-;;;;;;;;;;;;;;;;8631:87;;;;;;;;;;;;;:::i;6835:34::-;;;;;;;;;;;;;;;;12843:167;;;;;;;;;;-1:-1:-1;12843:167:0;;;;;:::i;:::-;;:::i;6307:50::-;;;;;;;;;;;;;;;;12728:107;;;;;;;;;;-1:-1:-1;12728:107:0;;;;;:::i;:::-;;:::i;7384:26::-;;;;;;;;;;-1:-1:-1;7384:26:0;;;;-1:-1:-1;;;;;7384:26:0;;;7039:32;;;;;;;;;;;;;;;;9048:143;;;;;;;;;;-1:-1:-1;9048:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;9156:18:0;;;9129:7;9156:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9048:143;6958:34;;;;;;;;;;;;;;;;12612:104;;;;;;;;;;-1:-1:-1;12612:104:0;;;;;:::i;:::-;;:::i;3723:247::-;;;;;;;;;;-1:-1:-1;3723:247:0;;;;;:::i;:::-;;:::i;6582:42::-;;;;;;;;;;-1:-1:-1;6582:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7001:31;;;;;;;;;;;;;;;;8540:83;8577:13;8610:5;8603:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8540:83;:::o;9560:161::-;9635:4;9652:39;484:10;9675:7;9684:6;9652:8;:39::i;:::-;-1:-1:-1;9709:4:0;9560:161;;;;;:::o;12222:382::-;3476:6;;-1:-1:-1;;;;;3476:6:0;484:10;3476:22;3468:70;;;;-1:-1:-1;;;3468:70:0;;;;;;;:::i;:::-;;;;;;;;;12351:14:::1;:32:::0;;;12394:15:::1;:33:::0;;;12438:15:::1;:35:::0;;;12501:56:::1;12456:17:::0;12501:35:::1;12368:15:::0;12412;12501:18:::1;:35::i;:::-;:39:::0;::::1;:56::i;:::-;12486:12;:71:::0;;;12593:2:::1;-1:-1:-1::0;12577:18:0::1;12568:28;;;::::0;::::1;;12222:382:::0;;;:::o;13018:313::-;13116:4;13133:36;13143:6;13151:9;13162:6;13133:9;:36::i;:::-;-1:-1:-1;13180:121:0;13189:6;484:10;13211:89;13249:6;13211:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13211:19:0;;;;;;:11;:19;;;;;;;;484:10;13211:33;;;;;;;;;;:37;:89::i;:::-;13180:8;:121::i;:::-;-1:-1:-1;13319:4:0;13018:313;;;;;;:::o;11841:373::-;3476:6;;-1:-1:-1;;;;;3476:6:0;484:10;3476:22;3468:70;;;;-1:-1:-1;;;3468:70:0;;;;;;;:::i;:::-;11969:13:::1;:31:::0;;;12011:14:::1;:32:::0;;;12054:14:::1;:34:::0;;;12115:53:::1;12071:17:::0;12115:33:::1;11985:15:::0;12028;12115:17:::1;:33::i;:53::-;12101:11;:67:::0;;;12203:2:::1;-1:-1:-1::0;12188:17:0::1;12179:27;;;::::0;::::1;10900:207:::0;3476:6;;-1:-1:-1;;;;;3476:6:0;484:10;3476:22;3468:70;;;;-1:-1:-1;;;3468:70:0;;;;;;;:::i;:::-;11014:3:::1;11005:8;;:12;;;;:::i;:::-;10989;:28;;10981:81;;;::::0;-1:-1:-1;;;10981:81:0;;5252:2:1;10981:81:0::1;::::0;::::1;5234:21:1::0;5291:2;5271:18;;;5264:30;5330:34;5310:18;;;5303:62;-1:-1:-1;;;5381:18:1;;;5374:38;5429:19;;10981:81:0::1;5050:404:1::0;10981:81:0::1;11073:11;:26:::0;10900:207::o;3570:145::-;3476:6;;-1:-1:-1;;;;;3476:6:0;484:10;3476:22;3468:70;;;;-1:-1:-1;;;3468:70:0;;;;;;;:::i;:::-;3674:1:::1;3658:6:::0;;3637:40:::1;::::0;-1:-1:-1;;;;;3658:6:0;;::::1;::::0;3637:40:::1;::::0;3674:1;;3637:40:::1;3705:1;3688:19:::0;;-1:-1:-1;;;;;;3688:19:0::1;::::0;;3570:145::o;8631:87::-;8670:13;8703:7;8696:14;;;;;:::i;12843:167::-;12921:4;12938:42;484:10;12962:9;12973:6;12938:9;:42::i;12728:107::-;3476:6;;-1:-1:-1;;;;;3476:6:0;484:10;3476:22;3468:70;;;;-1:-1:-1;;;3468:70:0;;;;;;;:::i;:::-;12805:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;12805:22:0;;::::1;::::0;;;::::1;::::0;;12728:107::o;12612:104::-;3476:6;;-1:-1:-1;;;;;3476:6:0;484:10;3476:22;3468:70;;;;-1:-1:-1;;;3468:70:0;;;;;;;:::i;:::-;12684:12:::1;:24:::0;12612:104::o;3723:247::-;3476:6;;-1:-1:-1;;;;;3476:6:0;484:10;3476:22;3468:70;;;;-1:-1:-1;;;3468:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3812:22:0;::::1;3804:76;;;::::0;-1:-1:-1;;;3804:76:0;;5661:2:1;3804:76:0::1;::::0;::::1;5643:21:1::0;5700:2;5680:18;;;5673:30;5739:34;5719:18;;;5712:62;-1:-1:-1;;;5790:18:1;;;5783:39;5839:19;;3804:76:0::1;5459:405:1::0;3804:76:0::1;3917:6;::::0;;3896:38:::1;::::0;-1:-1:-1;;;;;3896:38:0;;::::1;::::0;3917:6;::::1;::::0;3896:38:::1;::::0;::::1;3945:6;:17:::0;;-1:-1:-1;;;;;;3945:17:0::1;-1:-1:-1::0;;;;;3945:17:0;;;::::1;::::0;;;::::1;::::0;;3723:247::o;9207:337::-;-1:-1:-1;;;;;9300:19:0;;9292:68;;;;-1:-1:-1;;;9292:68:0;;6071:2:1;9292:68:0;;;6053:21:1;6110:2;6090:18;;;6083:30;6149:34;6129:18;;;6122:62;-1:-1:-1;;;6200:18:1;;;6193:34;6244:19;;9292:68:0;5869:400:1;9292:68:0;-1:-1:-1;;;;;9379:21:0;;9371:68;;;;-1:-1:-1;;;9371:68:0;;6476:2:1;9371:68:0;;;6458:21:1;6515:2;6495:18;;;6488:30;6554:34;6534:18;;;6527:62;-1:-1:-1;;;6605:18:1;;;6598:32;6647:19;;9371:68:0;6274:398:1;9371:68:0;-1:-1:-1;;;;;9452:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9504:32;;1821:25:1;;;9504:32:0;;1794:18:1;9504:32:0;;;;;;;9207:337;;;:::o;1454:181::-;1512:7;;1544:5;1548:1;1544;:5;:::i;:::-;1532:17;;1573:1;1568;:6;;1560:46;;;;-1:-1:-1;;;1560:46:0;;7009:2:1;1560:46:0;;;6991:21:1;7048:2;7028:18;;;7021:30;7087:29;7067:18;;;7060:57;7134:18;;1560:46:0;6807:351:1;13339:1869:0;13426:4;-1:-1:-1;;;;;13453:20:0;;13445:70;;;;-1:-1:-1;;;13445:70:0;;7365:2:1;13445:70:0;;;7347:21:1;7404:2;7384:18;;;7377:30;7443:34;7423:18;;;7416:62;-1:-1:-1;;;7494:18:1;;;7487:35;7539:19;;13445:70:0;7163:401:1;13445:70:0;-1:-1:-1;;;;;13534:23:0;;13526:71;;;;-1:-1:-1;;;13526:71:0;;7771:2:1;13526:71:0;;;7753:21:1;7810:2;7790:18;;;7783:30;7849:34;7829:18;;;7822:62;-1:-1:-1;;;7900:18:1;;;7893:33;7943:19;;13526:71:0;7569:399:1;13526:71:0;13613:8;;;;13610:1591;;;13655:42;13671:6;13679:9;13690:6;13655:15;:42::i;:::-;13648:49;;;;13610:1591;-1:-1:-1;;;;;13753:21:0;;;;;;:13;:21;;;;;;;;13752:22;:51;;;;-1:-1:-1;;;;;;13779:24:0;;;;;;:13;:24;;;;;;;;13778:25;13752:51;13749:165;;;13842:11;;13832:6;:21;;13824:74;;;;-1:-1:-1;;;13824:74:0;;8175:2:1;13824:74:0;;;8157:21:1;8214:2;8194:18;;;8187:30;8253:34;8233:18;;;8226:62;-1:-1:-1;;;8304:18:1;;;8297:38;8352:19;;13824:74:0;7973:404:1;13824:74:0;13991:4;13942:28;9014:18;;;:9;:18;;;;;;14067:16;;14043:40;;;;;;;14116:36;;-1:-1:-1;14144:8:0;;;;14143:9;14116:36;:57;;;;-1:-1:-1;;;;;;14157:16:0;;;;;;:8;:16;;;;;;;;14156:17;14116:57;:81;;;;-1:-1:-1;;;;;;14177:20:0;;;;;;:9;:20;;;;;;;;14116:81;:96;;;;-1:-1:-1;14201:11:0;;;;;;;14116:96;:125;;;;;14225:16;;14216:6;:25;14116:125;14112:312;;;14279:14;;;;;;;14276:79;;;14339:16;;14316:39;;14276:79;14374:30;14383:20;14374:8;:30::i;:::-;14441:19;14462:17;14483:40;14497:6;14505:9;14516:6;14483:13;:40::i;:::-;14440:83;;;;14540:16;14572:6;14559:9;:19;:44;;14598:4;14559:44;;;14581:6;14559:44;14540:63;-1:-1:-1;14621:13:0;;14618:170;;-1:-1:-1;;;;;14677:19:0;;;;;;:9;:19;;;;;;:34;;14701:9;14677:23;:34::i;:::-;-1:-1:-1;;;;;14655:19:0;;;;;;;:9;:19;;;;;;;:56;;;;14735:37;;;;;;;;;;14762:9;1821:25:1;;1809:2;1794:18;;1675:177;14735:37:0;;;;;;;;14618:170;14824:53;;;;;;;;;;;-1:-1:-1;;;14824:53:0;;;;;;;;-1:-1:-1;;;;;14824:17:0;;-1:-1:-1;14824:17:0;;;:9;:17;;;;;;;;:53;;14846:6;;14824:21;:53::i;:::-;-1:-1:-1;;;;;14804:17:0;;;;;;:9;:17;;;;;:73;14897:13;;;;;;;:46;;;;-1:-1:-1;;;;;;14915:28:0;;;;;;:17;:28;;;;;;;;14914:29;14897:46;14894:130;;;15011:12;;14970:37;14995:11;14970:20;14980:9;-1:-1:-1;;;;;9014:18:0;8987:7;9014:18;;;:9;:18;;;;;;;8921:119;14970:37;:53;;14962:62;;;;;;-1:-1:-1;;;;;15064:20:0;;;;;;:9;:20;;;;;;:37;;15089:11;15064:24;:37::i;:::-;-1:-1:-1;;;;;15041:20:0;;;;;;;:9;:20;;;;;;;:60;;;;15123:40;;;;;;;;;;15151:11;1821:25:1;;1809:2;1794:18;;1675:177;15123:40:0;;;;;;;;15185:4;15178:11;;;;;;;;;1787:192;1873:7;1909:12;1901:6;;;;1893:29;;;;-1:-1:-1;;;1893:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1933:9:0;1945:5;1949:1;1945;:5;:::i;:::-;1933:17;1787:192;-1:-1:-1;;;;;1787:192:0:o;11457:331::-;11588:53;;;;;;;;;;;-1:-1:-1;;;11588:53:0;;;;;;;;-1:-1:-1;;;;;11588:17:0;;11551:4;11588:17;;;:9;:17;;;;;;;:53;;11610:6;;11588:21;:53::i;:::-;-1:-1:-1;;;;;11568:17:0;;;;;;;:9;:17;;;;;;:73;;;;11675:20;;;;;;;:32;;11700:6;11675:24;:32::i;:::-;-1:-1:-1;;;;;11652:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11723:35;;;;;;;;;;11751:6;1821:25:1;;1809:2;1794:18;;1675:177;11723:35:0;;;;;;;;-1:-1:-1;11776:4:0;11457:331;;;;;:::o;11119:209::-;7455:8;:15;;-1:-1:-1;;7455:15:0;7466:4;7455:15;;;11185:25:::1;11202:7:::0;11185:16:::1;:25::i;:::-;11290:9;::::0;11250:21:::1;::::0;11282:38:::1;::::0;11290:9;;::::1;-1:-1:-1::0;;;;;11290:9:0::1;11250:21:::0;11282:7:::1;:38::i;:::-;-1:-1:-1::0;;7493:8:0;:16;;-1:-1:-1;;7493:16:0;;;11119:209::o;10294:594::-;-1:-1:-1;;;;;10473:16:0;;10391:7;10473:16;;;:8;:16;;;;;;10391:7;;10450:6;;10473:16;;:31;;;;-1:-1:-1;10493:11:0;;;;;;;10473:31;10469:63;;;10514:6;;-1:-1:-1;10522:9:0;-1:-1:-1;10506:26:0;;10469:63;-1:-1:-1;;;;;10548:17:0;;;;;;:9;:17;;;;;;;;10545:205;;;10594:32;10622:3;10594:23;10605:11;;10594:6;:10;;:23;;;;:::i;:::-;:27;;:32::i;:::-;10582:44;;10545:205;;;-1:-1:-1;;;;;10656:20:0;;;;;;:9;:20;;;;;;;;10653:97;;;10705:33;10734:3;10705:24;10716:12;;10705:6;:10;;:24;;;;:::i;:33::-;10693:45;;10653:97;-1:-1:-1;;;;;10764:16:0;;;;;;:8;:16;;;;;;;;10760:67;;;10805:6;10813:1;10797:18;;;;;;;10760:67;10847:21;:6;10858:9;10847:10;:21::i;:::-;10839:41;-1:-1:-1;10870:9:0;-1:-1:-1;10294:594:0;;;;;;;:::o;9737:545::-;9827:16;;;9841:1;9827:16;;;;;;;;9803:21;;9827:16;;;;;;;;;;-1:-1:-1;9827:16:0;9803:40;;9872:4;9854;9859:1;9854:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9854:23:0;;;:7;;;;;;;;;;:23;;;;9898:15;;:22;;;-1:-1:-1;;;9898:22:0;;;;:15;;;;;:20;;:22;;;;;9854:7;;9898:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9888:4;9893:1;9888:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9888:32:0;;;:7;;;;;;;;;:32;9965:15;;9933:62;;9950:4;;9965:15;9983:11;9933:8;:62::i;:::-;10034:15;;:240;;-1:-1:-1;;;10034:240:0;;-1:-1:-1;;;;;10034:15:0;;;;:66;;:240;;10115:11;;10034:15;;10185:4;;10212;;10248:15;;10034:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9792:490;9737:545;:::o;11336:113::-;11415:26;;-1:-1:-1;;;;;11415:18:0;;;:26;;;;;11434:6;;11415:26;;;;11434:6;11415:18;:26;;;;;;;;;;;;;;;;;;;1987:250;2045:7;2069:1;2074;2069:6;2065:47;;-1:-1:-1;2099:1:0;2092:8;;2065:47;2124:9;2136:5;2140:1;2136;:5;:::i;:::-;2124:17;-1:-1:-1;2169:1:0;2160:5;2164:1;2124:17;2160:5;:::i;:::-;:10;2152:56;;;;-1:-1:-1;;;2152:56:0;;10395:2:1;2152:56:0;;;10377:21:1;10434:2;10414:18;;;10407:30;10473:34;10453:18;;;10446:62;-1:-1:-1;;;10524:18:1;;;10517:31;10565:19;;2152:56:0;10193:397:1;2245:132:0;2303:7;2330:39;2334:1;2337;2330:39;;;;;;;;;;;;;;;;;:3;:39::i;1643:136::-;1701:7;1728:43;1732:1;1735;1728:43;;;;;;;;;;;;;;;;;:3;:43::i;2385:278::-;2471:7;2506:12;2499:5;2491:28;;;;-1:-1:-1;;;2491:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2530:9:0;2542:5;2546:1;2542;:5;:::i;222:548:1:-;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;506:3;691:1;686:2;677:6;666:9;662:22;658:31;651:42;761:2;754;750:7;745:2;737:6;733:15;729:29;718:9;714:45;710:54;702:62;;;;222:548;;;;:::o;775:131::-;-1:-1:-1;;;;;850:31:1;;840:42;;830:70;;896:1;893;886:12;830:70;775:131;:::o;911:315::-;979:6;987;1040:2;1028:9;1019:7;1015:23;1011:32;1008:52;;;1056:1;1053;1046:12;1008:52;1095:9;1082:23;1114:31;1139:5;1114:31;:::i;:::-;1164:5;1216:2;1201:18;;;;1188:32;;-1:-1:-1;;;911:315:1:o;1423:247::-;1482:6;1535:2;1523:9;1514:7;1510:23;1506:32;1503:52;;;1551:1;1548;1541:12;1503:52;1590:9;1577:23;1609:31;1634:5;1609:31;:::i;2080:316::-;2157:6;2165;2173;2226:2;2214:9;2205:7;2201:23;2197:32;2194:52;;;2242:1;2239;2232:12;2194:52;-1:-1:-1;;2265:23:1;;;2335:2;2320:18;;2307:32;;-1:-1:-1;2386:2:1;2371:18;;;2358:32;;2080:316;-1:-1:-1;2080:316:1:o;2401:456::-;2478:6;2486;2494;2547:2;2535:9;2526:7;2522:23;2518:32;2515:52;;;2563:1;2560;2553:12;2515:52;2602:9;2589:23;2621:31;2646:5;2621:31;:::i;:::-;2671:5;-1:-1:-1;2728:2:1;2713:18;;2700:32;2741:33;2700:32;2741:33;:::i;:::-;2401:456;;2793:7;;-1:-1:-1;;;2847:2:1;2832:18;;;;2819:32;;2401:456::o;3051:180::-;3110:6;3163:2;3151:9;3142:7;3138:23;3134:32;3131:52;;;3179:1;3176;3169:12;3131:52;-1:-1:-1;3202:23:1;;3051:180;-1:-1:-1;3051:180:1:o;3236:273::-;3292:6;3345:2;3333:9;3324:7;3320:23;3316:32;3313:52;;;3361:1;3358;3351:12;3313:52;3400:9;3387:23;3453:5;3446:13;3439:21;3432:5;3429:32;3419:60;;3475:1;3472;3465:12;3514:388;3582:6;3590;3643:2;3631:9;3622:7;3618:23;3614:32;3611:52;;;3659:1;3656;3649:12;3611:52;3698:9;3685:23;3717:31;3742:5;3717:31;:::i;:::-;3767:5;-1:-1:-1;3824:2:1;3809:18;;3796:32;3837:33;3796:32;3837:33;:::i;:::-;3889:7;3879:17;;;3514:388;;;;;:::o;3907:380::-;3986:1;3982:12;;;;4029;;;4050:61;;4104:4;4096:6;4092:17;4082:27;;4050:61;4157:2;4149:6;4146:14;4126:18;4123:38;4120:161;;4203:10;4198:3;4194:20;4191:1;4184:31;4238:4;4235:1;4228:15;4266:4;4263:1;4256:15;4120:161;;3907:380;;;:::o;4292:399::-;4494:2;4476:21;;;4533:2;4513:18;;;4506:30;4572:34;4567:2;4552:18;;4545:62;-1:-1:-1;;;4638:2:1;4623:18;;4616:33;4681:3;4666:19;;4292:399::o;4696:127::-;4757:10;4752:3;4748:20;4745:1;4738:31;4788:4;4785:1;4778:15;4812:4;4809:1;4802:15;4828:217;4868:1;4894;4884:132;;4938:10;4933:3;4929:20;4926:1;4919:31;4973:4;4970:1;4963:15;5001:4;4998:1;4991:15;4884:132;-1:-1:-1;5030:9:1;;4828:217::o;6677:125::-;6742:9;;;6763:10;;;6760:36;;;6776:18;;:::i;8382:128::-;8449:9;;;8470:11;;;8467:37;;;8484:18;;:::i;8647:127::-;8708:10;8703:3;8699:20;8696:1;8689:31;8739:4;8736:1;8729:15;8763:4;8760:1;8753:15;8779:251;8849:6;8902:2;8890:9;8881:7;8877:23;8873:32;8870:52;;;8918:1;8915;8908:12;8870:52;8950:9;8944:16;8969:31;8994:5;8969:31;:::i;9035:980::-;9297:4;9345:3;9334:9;9330:19;9376:6;9365:9;9358:25;9402:2;9440:6;9435:2;9424:9;9420:18;9413:34;9483:3;9478:2;9467:9;9463:18;9456:31;9507:6;9542;9536:13;9573:6;9565;9558:22;9611:3;9600:9;9596:19;9589:26;;9650:2;9642:6;9638:15;9624:29;;9671:1;9681:195;9695:6;9692:1;9689:13;9681:195;;;9760:13;;-1:-1:-1;;;;;9756:39:1;9744:52;;9851:15;;;;9816:12;;;;9792:1;9710:9;9681:195;;;-1:-1:-1;;;;;;;9932:32:1;;;;9927:2;9912:18;;9905:60;-1:-1:-1;;;9996:3:1;9981:19;9974:35;9893:3;9035:980;-1:-1:-1;;;9035:980:1:o;10020:168::-;10093:9;;;10124;;10141:15;;;10135:22;;10121:37;10111:71;;10162:18;;:::i

Swarm Source

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