ETH Price: $3,266.71 (-2.20%)

Token

AISphere Network (AIS)
 

Overview

Max Total Supply

100,000,000 AIS

Holders

95

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
350,000 AIS

Value
$0.00
0xb54Db4BE30086c58b6C38d45A19b515cc644ff1B
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:
AISphere

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-28
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.20;

//                   :::     ::::::::::: ::::::::  :::::::::  :::    ::: :::::::::: :::::::::  :::::::::: 
//                :+: :+:       :+:    :+:    :+: :+:    :+: :+:    :+: :+:        :+:    :+: :+:         
//              +:+   +:+      +:+    +:+        +:+    +:+ +:+    +:+ +:+        +:+    +:+ +:+          
//            +#++:++#++:     +#+    +#++:++#++ +#++:++#+  +#++:++#++ +#++:++#   +#++:++#:  +#++:++#      
//           +#+     +#+     +#+           +#+ +#+        +#+    +#+ +#+        +#+    +#+ +#+            
//          #+#     #+#     #+#    #+#    #+# #+#        #+#    #+# #+#        #+#    #+# #+#             
//         ###     ### ########### ########  ###        ###    ### ########## ###    ### ##########       
//                                                           
//         Trade securely on Web3 without requiring smart contracts
//   
//         Web: https://aisphere.ch
//         TG: https://t.me/AISphereETH
//         X: https://x.com/AISphereETH

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

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

interface IERC20 {
    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 transfer(address recipient, uint256 amount)
        external
        returns (bool);

    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 div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

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

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

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

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

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

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

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

contract AISphere is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping(address => uint256) private _rOwned;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;

    uint8 private constant _decimals = 9;
    string private constant _name = "AISphere Network";
    string private constant _symbol = "AIS";

    uint256 private _rTotal = (MAX - (MAX % _totalSupply));
    uint256 private constant MAX = ~uint256(0);

    uint256 private _buyFee = 5;
    uint256 private _sellFee = 5;

    uint256 private _tempFeeStorage = _fee;
    uint256 private _fee = _sellFee;

    address payable private _treasuryAddress =
        payable(0xCd9E9A894C7beC3C34E40Ec166D91b71A244AC01);

    bool private _maxTxn = false;
    bool private _maxWallet = false;

    uint256 private constant _totalSupply = 100_000_000 * 10**9;

    // Trade contstraints
    uint256 public _maxTradeValue = 500_000 * 10**9;
    uint256 public _maxTotalTradeValue = 500_000 * 10**9;

    uint256 public _minValueToSwap = 1000 * 10**9;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private instantFeeSwapEnabled = true;
    bool private swapping = false;
    bool private tradingAllowed;

    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    constructor() {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_treasuryAddress] = true;

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

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

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

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

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

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

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

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

    function _getCurrentSupply() private view returns (uint256, uint256) {
        return (_rTotal, _totalSupply);
    }

    function toggleinstantFeeSwapEnabled(bool _instantFeeSwapEnabled)
        public
        onlyOwner
    {
        instantFeeSwapEnabled = _instantFeeSwapEnabled;
    }

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount has to be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function setTradingAllowed(bool _tradingAllowed) public onlyOwner {
        tradingAllowed = _tradingAllowed;
    }

    function reduceFee() private {
        if (_fee == 0) return;

        _tempFeeStorage = _fee;

        _fee = 0;
    }

    function restoreFee() private {
        _fee = _tempFeeStorage;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "Can't approve from zero address");
        require(spender != address(0), "Can't approve to zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "Cant transfer from address zero");
        require(to != address(0), "Cant transfer to address zero");
        require(amount > 0, "Amount should be above zero");

        if (from != owner() && to != owner()) {
            //Trade start check
            if (!tradingAllowed) {
                require(
                    from == owner(),
                    "Only owner can trade before trading activation"
                );
            }

            require(amount <= _maxTradeValue, "Exceeded max transaction limit");

            if (to != uniswapV2Pair) {
                require(
                    balanceOf(to) + amount < _maxTotalTradeValue,
                    "Exceeds max hold balance"
                );
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool swapAllowed = contractTokenBalance >= _minValueToSwap;

            if (contractTokenBalance >= _maxTradeValue) {
                contractTokenBalance = _maxTradeValue;
            }

            if (
                swapAllowed &&
                !swapping &&
                from != uniswapV2Pair &&
                instantFeeSwapEnabled &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                swapForEther(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    transferEthToDev(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to]) ||
            (from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        } else {
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _fee = _buyFee;
            }

            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _fee = _sellFee;
            }
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

    function transferEthToDev(uint256 amount) private {
        _treasuryAddress.transfer(amount);
    }

    function forceSwap() external {
        require(_msgSender() == _treasuryAddress);
        uint256 contractETHBalance = address(this).balance;
        transferEthToDev(contractETHBalance);
    }

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

    function _transferWrapper(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 tTransferAmount,
            uint256 tTeam
        ) = _getFeeValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _sendFeesToTeam(tTeam);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

    function _getFeeValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tTeam) = _getTValues(tAmount, _fee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount) = _getRValues(
            tAmount,
            tTeam,
            currentRate
        );
        return (rAmount, rTransferAmount, tTransferAmount, tTeam);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) reduceFee();
        _transferWrapper(sender, recipient, amount);
        if (!takeFee) restoreFee();
    }

    function manualSwap() external {
        require(_msgSender() == _treasuryAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapForEther(contractBalance);
    }

    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,
                "the transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function setMinValueToSwap(uint256 minSwappableAmount) public onlyOwner {
        _minValueToSwap = minSwappableAmount;
    }

    function setFee(uint256 feeOnBuy, uint256 feeOnSell) public onlyOwner {
        require(
            feeOnBuy >= 0 && feeOnBuy <= 30,
            "Buy tax must be between 0% and 30%"
        );
        require(
            feeOnSell >= 0 && feeOnSell <= 30,
            "Sell tax must be between 0% and 30%"
        );

        _buyFee = feeOnBuy;
        _sellFee = feeOnSell;
    }

    // Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTradeValue = maxTxAmount;
    }

    // Set maximum holdings
    function setMaxTotalTradeValue(uint256 maxHoldSize) public onlyOwner {
        _maxTotalTradeValue = maxHoldSize;
    }

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

    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":"_maxTotalTradeValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTradeValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minValueToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeOnBuy","type":"uint256"},{"internalType":"uint256","name":"feeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxHoldSize","type":"uint256"}],"name":"setMaxTotalTradeValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minSwappableAmount","type":"uint256"}],"name":"setMinValueToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingAllowed","type":"bool"}],"name":"setTradingAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_instantFeeSwapEnabled","type":"bool"}],"name":"toggleinstantFeeSwapEnabled","outputs":[],"stateMutability":"nonpayable","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001967016345785d8a00005f196200035a565b62000026905f196200037a565b6005908155600681905560078190556009805460085555600a80546001600160b01b03191673cd9e9a894c7bec3c34e40ec166d91b71a244ac011790556601c6bf52634000600b819055600c5564e8d4a51000600d55600f805461ffff60a01b1916600160a01b1790553480156200009c575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600554335f9081526002602090815260409182902092909255600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa15801562000156573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200017c9190620003a0565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ee9190620003a0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000239573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025f9190620003a0565b600f80546001600160a01b0319166001600160a01b0392909216919091179055305f9081526004602081905260408220805460ff1916600190811790915591620002b05f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600a5490911681526004909252902080549091166001179055620002fe3390565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200034b91815260200190565b60405180910390a350620003cf565b5f826200037557634e487b7160e01b5f52601260045260245ffd5b500690565b818103818111156200039a57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215620003b1575f80fd5b81516001600160a01b0381168114620003c8575f80fd5b9392505050565b61190c80620003dd5f395ff3fe60806040526004361061017e575f3560e01c806370a08231116100cd57806397fc1cc711610087578063d02fc4c711610062578063d02fc4c71461045e578063dd62ed3e1461047d578063df778d26146104c1578063f2fde38b146104d5575f80fd5b806397fc1cc71461040b578063a9059cbb14610420578063c492f0461461043f575f80fd5b806370a082311461035d578063715018a61461037c57806374010ece1461039057806381ceadd8146103af5780638da5cb5b146103c457806395d89b41146103e0575f80fd5b80632676903f1161013857806349bd5a5e1161011357806349bd5a5e146102ec57806351bc3c851461030b57806352f7c9881461031f57806366cd0c7b1461033e575f80fd5b80632676903f14610291578063313ce567146102b257806343f976ce146102cd575f80fd5b806301ac2aa31461018957806306fdde03146101b1578063095ea7b3146101f25780631694505e1461022157806318160ddd1461025857806323b872dd14610272575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b5061019e600b5481565b6040519081526020015b60405180910390f35b3480156101bc575f80fd5b5060408051808201909152601081526f4149537068657265204e6574776f726b60801b60208201525b6040516101a89190611571565b3480156101fd575f80fd5b5061021161020c3660046115d1565b6104f4565b60405190151581526020016101a8565b34801561022c575f80fd5b50600e54610240906001600160a01b031681565b6040516001600160a01b0390911681526020016101a8565b348015610263575f80fd5b5067016345785d8a000061019e565b34801561027d575f80fd5b5061021161028c3660046115fb565b61050a565b34801561029c575f80fd5b506102b06102ab36600461164d565b610571565b005b3480156102bd575f80fd5b50604051600981526020016101a8565b3480156102d8575f80fd5b506102b06102e736600461164d565b6105c1565b3480156102f7575f80fd5b50600f54610240906001600160a01b031681565b348015610316575f80fd5b506102b0610608565b34801561032a575f80fd5b506102b0610339366004611666565b61063f565b348015610349575f80fd5b506102b0610358366004611686565b61072c565b348015610368575f80fd5b5061019e61037736600461169d565b61075a565b348015610387575f80fd5b506102b061077b565b34801561039b575f80fd5b506102b06103aa366004611686565b6107ec565b3480156103ba575f80fd5b5061019e600c5481565b3480156103cf575f80fd5b505f546001600160a01b0316610240565b3480156103eb575f80fd5b5060408051808201909152600381526241495360e81b60208201526101e5565b348015610416575f80fd5b5061019e600d5481565b34801561042b575f80fd5b5061021161043a3660046115d1565b61081a565b34801561044a575f80fd5b506102b06104593660046116b8565b610826565b348015610469575f80fd5b506102b0610478366004611686565b6108b9565b348015610488575f80fd5b5061019e610497366004611735565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156104cc575f80fd5b506102b06108e7565b3480156104e0575f80fd5b506102b06104ef36600461169d565b610910565b5f6105003384846109f7565b5060015b92915050565b5f610516848484610b03565b6105678433610562856040518060600160405280602581526020016118b2602591396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610f48565b6109f7565b5060019392505050565b5f546001600160a01b031633146105a35760405162461bcd60e51b815260040161059a9061176c565b60405180910390fd5b600f8054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b031633146105ea5760405162461bcd60e51b815260040161059a9061176c565b600f8054911515600160b01b0260ff60b01b19909216919091179055565b600a546001600160a01b0316336001600160a01b031614610627575f80fd5b5f6106313061075a565b905061063c81610f80565b50565b5f546001600160a01b031633146106685760405162461bcd60e51b815260040161059a9061176c565b601e8211156106c45760405162461bcd60e51b815260206004820152602260248201527f42757920746178206d757374206265206265747765656e20302520616e642033604482015261302560f01b606482015260840161059a565b601e8111156107215760405162461bcd60e51b815260206004820152602360248201527f53656c6c20746178206d757374206265206265747765656e20302520616e642060448201526233302560e81b606482015260840161059a565b600691909155600755565b5f546001600160a01b031633146107555760405162461bcd60e51b815260040161059a9061176c565b600c55565b6001600160a01b0381165f90815260026020526040812054610504906110f0565b5f546001600160a01b031633146107a45760405162461bcd60e51b815260040161059a9061176c565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108155760405162461bcd60e51b815260040161059a9061176c565b600b55565b5f610500338484610b03565b5f546001600160a01b0316331461084f5760405162461bcd60e51b815260040161059a9061176c565b5f5b828110156108b3578160045f86868581811061086f5761086f6117a1565b9050602002016020810190610884919061169d565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610851565b50505050565b5f546001600160a01b031633146108e25760405162461bcd60e51b815260040161059a9061176c565b600d55565b600a546001600160a01b0316336001600160a01b031614610906575f80fd5b4761063c81611174565b5f546001600160a01b031633146109395760405162461bcd60e51b815260040161059a9061176c565b6001600160a01b03811661099e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161059a565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610a4d5760405162461bcd60e51b815260206004820152601f60248201527f43616e277420617070726f76652066726f6d207a65726f206164647265737300604482015260640161059a565b6001600160a01b038216610aa35760405162461bcd60e51b815260206004820152601d60248201527f43616e277420617070726f766520746f207a65726f2061646472657373000000604482015260640161059a565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b595760405162461bcd60e51b815260206004820152601f60248201527f43616e74207472616e736665722066726f6d2061646472657373207a65726f00604482015260640161059a565b6001600160a01b038216610baf5760405162461bcd60e51b815260206004820152601d60248201527f43616e74207472616e7366657220746f2061646472657373207a65726f000000604482015260640161059a565b5f8111610bfe5760405162461bcd60e51b815260206004820152601b60248201527f416d6f756e742073686f756c642062652061626f7665207a65726f0000000000604482015260640161059a565b5f546001600160a01b03848116911614801590610c2857505f546001600160a01b03838116911614155b15610e5057600f54600160b01b900460ff16610cb1575f546001600160a01b03848116911614610cb15760405162461bcd60e51b815260206004820152602e60248201527f4f6e6c79206f776e65722063616e207472616465206265666f7265207472616460448201526d34b7339030b1ba34bb30ba34b7b760911b606482015260840161059a565b600b54811115610d035760405162461bcd60e51b815260206004820152601e60248201527f4578636565646564206d6178207472616e73616374696f6e206c696d69740000604482015260640161059a565b600f546001600160a01b03838116911614610d7c57600c5481610d258461075a565b610d2f91906117c9565b10610d7c5760405162461bcd60e51b815260206004820152601860248201527f45786365656473206d617820686f6c642062616c616e63650000000000000000604482015260640161059a565b5f610d863061075a565b600d54600b54919250821015908210610d9f57600b5491505b808015610db65750600f54600160a81b900460ff16155b8015610dd05750600f546001600160a01b03868116911614155b8015610de55750600f54600160a01b900460ff165b8015610e0957506001600160a01b0385165f9081526004602052604090205460ff16155b8015610e2d57506001600160a01b0384165f9081526004602052604090205460ff16155b15610e4d57610e3b82610f80565b478015610e4b57610e4b47611174565b505b50505b6001600160a01b0383165f9081526004602052604090205460019060ff1680610e9057506001600160a01b0383165f9081526004602052604090205460ff165b80610ec25750600f546001600160a01b03858116911614801590610ec25750600f546001600160a01b03848116911614155b15610ece57505f610f3c565b600f546001600160a01b038581169116148015610ef95750600e546001600160a01b03848116911614155b15610f05576006546009555b600f546001600160a01b038481169116148015610f305750600e546001600160a01b03858116911614155b15610f3c576007546009555b6108b3848484846111af565b5f8184841115610f6b5760405162461bcd60e51b815260040161059a9190611571565b505f610f7784866117dc565b95945050505050565b600f805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610fc657610fc66117a1565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561101d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104191906117ef565b81600181518110611054576110546117a1565b6001600160a01b039283166020918202929092010152600e5461107a91309116846109f7565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906110b29085905f9086903090429060040161180a565b5f604051808303815f87803b1580156110c9575f80fd5b505af11580156110db573d5f803e3d5ffd5b5050600f805460ff60a81b1916905550505050565b5f6005548211156111585760405162461bcd60e51b815260206004820152602c60248201527f416d6f756e742068617320746f206265206c657373207468616e20746f74616c60448201526b207265666c656374696f6e7360a01b606482015260840161059a565b5f6111616111d7565b905061116d8382611203565b9392505050565b600a546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111ab573d5f803e3d5ffd5b5050565b806111bc576111bc611244565b6111c784848461125b565b806108b3576108b3600854600955565b5f805f6111ed6005549067016345785d8a000090565b90925090506111fc8282611203565b9250505090565b5f61116d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611339565b6009545f0361124f57565b600980546008555f9055565b5f805f8061126885611365565b6001600160a01b038b165f908152600260205260409020549397509195509350915061129490856113a7565b6001600160a01b038089165f9081526002602052604080822093909355908816815220546112c290846113e8565b6001600160a01b0387165f908152600260205260409020556112e381611446565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161132891815260200190565b60405180910390a350505050505050565b5f81836113595760405162461bcd60e51b815260040161059a9190611571565b505f610f77848661187b565b5f805f805f806113778760095461148c565b915091505f6113846111d7565b90505f806113938a85856114bd565b909b909a5094985092965092945050505050565b5f61116d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f48565b5f806113f483856117c9565b90508381101561116d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161059a565b5f61144f6111d7565b90505f61145c83836114f3565b305f9081526002602052604090205490915061147890826113e8565b305f90815260026020526040902055505050565b5f80806114a4606461149e87876114f3565b90611203565b90505f6114b186836113a7565b96919550909350505050565b5f80806114ca86856114f3565b90505f6114d786866114f3565b90505f6114e483836113a7565b92989297509195505050505050565b5f825f0361150257505f610504565b5f61150d838561189a565b90508261151a858361187b565b1461116d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161059a565b5f602080835283518060208501525f5b8181101561159d57858101830151858201604001528201611581565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461063c575f80fd5b5f80604083850312156115e2575f80fd5b82356115ed816115bd565b946020939093013593505050565b5f805f6060848603121561160d575f80fd5b8335611618816115bd565b92506020840135611628816115bd565b929592945050506040919091013590565b80358015158114611648575f80fd5b919050565b5f6020828403121561165d575f80fd5b61116d82611639565b5f8060408385031215611677575f80fd5b50508035926020909101359150565b5f60208284031215611696575f80fd5b5035919050565b5f602082840312156116ad575f80fd5b813561116d816115bd565b5f805f604084860312156116ca575f80fd5b833567ffffffffffffffff808211156116e1575f80fd5b818601915086601f8301126116f4575f80fd5b813581811115611702575f80fd5b8760208260051b8501011115611716575f80fd5b60209283019550935061172c9186019050611639565b90509250925092565b5f8060408385031215611746575f80fd5b8235611751816115bd565b91506020830135611761816115bd565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610504576105046117b5565b81810381811115610504576105046117b5565b5f602082840312156117ff575f80fd5b815161116d816115bd565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561185a5784516001600160a01b031683529383019391830191600101611835565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261189557634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610504576105046117b556fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200e20d7d48a963047c07c45f59c22bb8a60ce157b9bae50d89e707dac2609a4c964736f6c63430008170033

Deployed Bytecode

0x60806040526004361061017e575f3560e01c806370a08231116100cd57806397fc1cc711610087578063d02fc4c711610062578063d02fc4c71461045e578063dd62ed3e1461047d578063df778d26146104c1578063f2fde38b146104d5575f80fd5b806397fc1cc71461040b578063a9059cbb14610420578063c492f0461461043f575f80fd5b806370a082311461035d578063715018a61461037c57806374010ece1461039057806381ceadd8146103af5780638da5cb5b146103c457806395d89b41146103e0575f80fd5b80632676903f1161013857806349bd5a5e1161011357806349bd5a5e146102ec57806351bc3c851461030b57806352f7c9881461031f57806366cd0c7b1461033e575f80fd5b80632676903f14610291578063313ce567146102b257806343f976ce146102cd575f80fd5b806301ac2aa31461018957806306fdde03146101b1578063095ea7b3146101f25780631694505e1461022157806318160ddd1461025857806323b872dd14610272575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b5061019e600b5481565b6040519081526020015b60405180910390f35b3480156101bc575f80fd5b5060408051808201909152601081526f4149537068657265204e6574776f726b60801b60208201525b6040516101a89190611571565b3480156101fd575f80fd5b5061021161020c3660046115d1565b6104f4565b60405190151581526020016101a8565b34801561022c575f80fd5b50600e54610240906001600160a01b031681565b6040516001600160a01b0390911681526020016101a8565b348015610263575f80fd5b5067016345785d8a000061019e565b34801561027d575f80fd5b5061021161028c3660046115fb565b61050a565b34801561029c575f80fd5b506102b06102ab36600461164d565b610571565b005b3480156102bd575f80fd5b50604051600981526020016101a8565b3480156102d8575f80fd5b506102b06102e736600461164d565b6105c1565b3480156102f7575f80fd5b50600f54610240906001600160a01b031681565b348015610316575f80fd5b506102b0610608565b34801561032a575f80fd5b506102b0610339366004611666565b61063f565b348015610349575f80fd5b506102b0610358366004611686565b61072c565b348015610368575f80fd5b5061019e61037736600461169d565b61075a565b348015610387575f80fd5b506102b061077b565b34801561039b575f80fd5b506102b06103aa366004611686565b6107ec565b3480156103ba575f80fd5b5061019e600c5481565b3480156103cf575f80fd5b505f546001600160a01b0316610240565b3480156103eb575f80fd5b5060408051808201909152600381526241495360e81b60208201526101e5565b348015610416575f80fd5b5061019e600d5481565b34801561042b575f80fd5b5061021161043a3660046115d1565b61081a565b34801561044a575f80fd5b506102b06104593660046116b8565b610826565b348015610469575f80fd5b506102b0610478366004611686565b6108b9565b348015610488575f80fd5b5061019e610497366004611735565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156104cc575f80fd5b506102b06108e7565b3480156104e0575f80fd5b506102b06104ef36600461169d565b610910565b5f6105003384846109f7565b5060015b92915050565b5f610516848484610b03565b6105678433610562856040518060600160405280602581526020016118b2602591396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610f48565b6109f7565b5060019392505050565b5f546001600160a01b031633146105a35760405162461bcd60e51b815260040161059a9061176c565b60405180910390fd5b600f8054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b031633146105ea5760405162461bcd60e51b815260040161059a9061176c565b600f8054911515600160b01b0260ff60b01b19909216919091179055565b600a546001600160a01b0316336001600160a01b031614610627575f80fd5b5f6106313061075a565b905061063c81610f80565b50565b5f546001600160a01b031633146106685760405162461bcd60e51b815260040161059a9061176c565b601e8211156106c45760405162461bcd60e51b815260206004820152602260248201527f42757920746178206d757374206265206265747765656e20302520616e642033604482015261302560f01b606482015260840161059a565b601e8111156107215760405162461bcd60e51b815260206004820152602360248201527f53656c6c20746178206d757374206265206265747765656e20302520616e642060448201526233302560e81b606482015260840161059a565b600691909155600755565b5f546001600160a01b031633146107555760405162461bcd60e51b815260040161059a9061176c565b600c55565b6001600160a01b0381165f90815260026020526040812054610504906110f0565b5f546001600160a01b031633146107a45760405162461bcd60e51b815260040161059a9061176c565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108155760405162461bcd60e51b815260040161059a9061176c565b600b55565b5f610500338484610b03565b5f546001600160a01b0316331461084f5760405162461bcd60e51b815260040161059a9061176c565b5f5b828110156108b3578160045f86868581811061086f5761086f6117a1565b9050602002016020810190610884919061169d565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610851565b50505050565b5f546001600160a01b031633146108e25760405162461bcd60e51b815260040161059a9061176c565b600d55565b600a546001600160a01b0316336001600160a01b031614610906575f80fd5b4761063c81611174565b5f546001600160a01b031633146109395760405162461bcd60e51b815260040161059a9061176c565b6001600160a01b03811661099e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161059a565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610a4d5760405162461bcd60e51b815260206004820152601f60248201527f43616e277420617070726f76652066726f6d207a65726f206164647265737300604482015260640161059a565b6001600160a01b038216610aa35760405162461bcd60e51b815260206004820152601d60248201527f43616e277420617070726f766520746f207a65726f2061646472657373000000604482015260640161059a565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b595760405162461bcd60e51b815260206004820152601f60248201527f43616e74207472616e736665722066726f6d2061646472657373207a65726f00604482015260640161059a565b6001600160a01b038216610baf5760405162461bcd60e51b815260206004820152601d60248201527f43616e74207472616e7366657220746f2061646472657373207a65726f000000604482015260640161059a565b5f8111610bfe5760405162461bcd60e51b815260206004820152601b60248201527f416d6f756e742073686f756c642062652061626f7665207a65726f0000000000604482015260640161059a565b5f546001600160a01b03848116911614801590610c2857505f546001600160a01b03838116911614155b15610e5057600f54600160b01b900460ff16610cb1575f546001600160a01b03848116911614610cb15760405162461bcd60e51b815260206004820152602e60248201527f4f6e6c79206f776e65722063616e207472616465206265666f7265207472616460448201526d34b7339030b1ba34bb30ba34b7b760911b606482015260840161059a565b600b54811115610d035760405162461bcd60e51b815260206004820152601e60248201527f4578636565646564206d6178207472616e73616374696f6e206c696d69740000604482015260640161059a565b600f546001600160a01b03838116911614610d7c57600c5481610d258461075a565b610d2f91906117c9565b10610d7c5760405162461bcd60e51b815260206004820152601860248201527f45786365656473206d617820686f6c642062616c616e63650000000000000000604482015260640161059a565b5f610d863061075a565b600d54600b54919250821015908210610d9f57600b5491505b808015610db65750600f54600160a81b900460ff16155b8015610dd05750600f546001600160a01b03868116911614155b8015610de55750600f54600160a01b900460ff165b8015610e0957506001600160a01b0385165f9081526004602052604090205460ff16155b8015610e2d57506001600160a01b0384165f9081526004602052604090205460ff16155b15610e4d57610e3b82610f80565b478015610e4b57610e4b47611174565b505b50505b6001600160a01b0383165f9081526004602052604090205460019060ff1680610e9057506001600160a01b0383165f9081526004602052604090205460ff165b80610ec25750600f546001600160a01b03858116911614801590610ec25750600f546001600160a01b03848116911614155b15610ece57505f610f3c565b600f546001600160a01b038581169116148015610ef95750600e546001600160a01b03848116911614155b15610f05576006546009555b600f546001600160a01b038481169116148015610f305750600e546001600160a01b03858116911614155b15610f3c576007546009555b6108b3848484846111af565b5f8184841115610f6b5760405162461bcd60e51b815260040161059a9190611571565b505f610f7784866117dc565b95945050505050565b600f805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610fc657610fc66117a1565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561101d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104191906117ef565b81600181518110611054576110546117a1565b6001600160a01b039283166020918202929092010152600e5461107a91309116846109f7565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906110b29085905f9086903090429060040161180a565b5f604051808303815f87803b1580156110c9575f80fd5b505af11580156110db573d5f803e3d5ffd5b5050600f805460ff60a81b1916905550505050565b5f6005548211156111585760405162461bcd60e51b815260206004820152602c60248201527f416d6f756e742068617320746f206265206c657373207468616e20746f74616c60448201526b207265666c656374696f6e7360a01b606482015260840161059a565b5f6111616111d7565b905061116d8382611203565b9392505050565b600a546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111ab573d5f803e3d5ffd5b5050565b806111bc576111bc611244565b6111c784848461125b565b806108b3576108b3600854600955565b5f805f6111ed6005549067016345785d8a000090565b90925090506111fc8282611203565b9250505090565b5f61116d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611339565b6009545f0361124f57565b600980546008555f9055565b5f805f8061126885611365565b6001600160a01b038b165f908152600260205260409020549397509195509350915061129490856113a7565b6001600160a01b038089165f9081526002602052604080822093909355908816815220546112c290846113e8565b6001600160a01b0387165f908152600260205260409020556112e381611446565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161132891815260200190565b60405180910390a350505050505050565b5f81836113595760405162461bcd60e51b815260040161059a9190611571565b505f610f77848661187b565b5f805f805f806113778760095461148c565b915091505f6113846111d7565b90505f806113938a85856114bd565b909b909a5094985092965092945050505050565b5f61116d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f48565b5f806113f483856117c9565b90508381101561116d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161059a565b5f61144f6111d7565b90505f61145c83836114f3565b305f9081526002602052604090205490915061147890826113e8565b305f90815260026020526040902055505050565b5f80806114a4606461149e87876114f3565b90611203565b90505f6114b186836113a7565b96919550909350505050565b5f80806114ca86856114f3565b90505f6114d786866114f3565b90505f6114e483836113a7565b92989297509195505050505050565b5f825f0361150257505f610504565b5f61150d838561189a565b90508261151a858361187b565b1461116d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161059a565b5f602080835283518060208501525f5b8181101561159d57858101830151858201604001528201611581565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461063c575f80fd5b5f80604083850312156115e2575f80fd5b82356115ed816115bd565b946020939093013593505050565b5f805f6060848603121561160d575f80fd5b8335611618816115bd565b92506020840135611628816115bd565b929592945050506040919091013590565b80358015158114611648575f80fd5b919050565b5f6020828403121561165d575f80fd5b61116d82611639565b5f8060408385031215611677575f80fd5b50508035926020909101359150565b5f60208284031215611696575f80fd5b5035919050565b5f602082840312156116ad575f80fd5b813561116d816115bd565b5f805f604084860312156116ca575f80fd5b833567ffffffffffffffff808211156116e1575f80fd5b818601915086601f8301126116f4575f80fd5b813581811115611702575f80fd5b8760208260051b8501011115611716575f80fd5b60209283019550935061172c9186019050611639565b90509250925092565b5f8060408385031215611746575f80fd5b8235611751816115bd565b91506020830135611761816115bd565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610504576105046117b5565b81810381811115610504576105046117b5565b5f602082840312156117ff575f80fd5b815161116d816115bd565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561185a5784516001600160a01b031683529383019391830191600101611835565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261189557634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610504576105046117b556fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200e20d7d48a963047c07c45f59c22bb8a60ce157b9bae50d89e707dac2609a4c964736f6c63430008170033

Deployed Bytecode Sourcemap

5167:11843:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6139:47;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6139:47:0;;;;;;;;7841:83;;;;;;;;;;-1:-1:-1;7911:5:0;;;;;;;;;;;;-1:-1:-1;;;7911:5:0;;;;7841:83;;;;;;;:::i;8812:193::-;;;;;;;;;;-1:-1:-1;8812:193:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;8812:193:0;1205:187:1;6308:41:0;;;;;;;;;;-1:-1:-1;6308:41:0;;;;-1:-1:-1;;;;;6308:41:0;;;;;;-1:-1:-1;;;;;1586:32:1;;;1568:51;;1556:2;1541:18;6308:41:0;1397:228:1;7228:100:0;;;;;;;;;;-1:-1:-1;6084:19:0;7228:100;;15316:443;;;;;;;;;;-1:-1:-1;15316:443:0;;;;;:::i;:::-;;:::i;8441:171::-;;;;;;;;;;-1:-1:-1;8441:171:0;;;;;:::i;:::-;;:::i;:::-;;7750:83;;;;;;;;;;-1:-1:-1;7750:83:0;;5476:1;2583:36:1;;2571:2;2556:18;7750:83:0;2441:184:1;9346:117:0;;;;;;;;;;-1:-1:-1;9346:117:0;;;;;:::i;:::-;;:::i;6356:28::-;;;;;;;;;;-1:-1:-1;6356:28:0;;;;-1:-1:-1;;;;;6356:28:0;;;14909:192;;;;;;;;;;;;;:::i;15902:395::-;;;;;;;;;;-1:-1:-1;15902:395:0;;;;;:::i;:::-;;:::i;16484:121::-;;;;;;;;;;-1:-1:-1;16484:121:0;;;;;:::i;:::-;;:::i;7336:138::-;;;;;;;;;;-1:-1:-1;7336:138:0;;;;;:::i;:::-;;:::i;4723:148::-;;;;;;;;;;;;;:::i;16337:110::-;;;;;;;;;;-1:-1:-1;16337:110:0;;;;;:::i;:::-;;:::i;6193:52::-;;;;;;;;;;;;;;;;4636:79;;;;;;;;;;-1:-1:-1;4674:7:0;4701:6;-1:-1:-1;;;;;4701:6:0;4636:79;;7932:87;;;;;;;;;;-1:-1:-1;8004:7:0;;;;;;;;;;;;-1:-1:-1;;;8004:7:0;;;;7932:87;;6254:45;;;;;;;;;;;;;;;;15109:199;;;;;;;;;;-1:-1:-1;15109:199:0;;;;;:::i;:::-;;:::i;7482:260::-;;;;;;;;;;-1:-1:-1;7482:260:0;;;;;:::i;:::-;;:::i;15767:127::-;;;;;;;;;;-1:-1:-1;15767:127:0;;;;;:::i;:::-;;:::i;8620:184::-;;;;;;;;;;-1:-1:-1;8620:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8769:18:0;;;8737:7;8769:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8620:184;12939:198;;;;;;;;;;;;;:::i;4879:281::-;;;;;;;;;;-1:-1:-1;4879:281:0;;;;;:::i;:::-;;:::i;8812:193::-;8914:4;8936:39;1948:10;8959:7;8968:6;8936:8;:39::i;:::-;-1:-1:-1;8993:4:0;8812:193;;;;;:::o;15316:443::-;15448:4;15465:36;15475:6;15483:9;15494:6;15465:9;:36::i;:::-;15512:217;15535:6;1948:10;15583:135;15639:6;15583:135;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15583:19:0;;;;;;:11;:19;;;;;;;;1948:10;15583:33;;;;;;;;;;:37;:135::i;:::-;15512:8;:217::i;:::-;-1:-1:-1;15747:4:0;15316:443;;;;;:::o;8441:171::-;4549:6;;-1:-1:-1;;;;;4549:6:0;1948:10;4549:22;4541:67;;;;-1:-1:-1;;;4541:67:0;;;;;;;:::i;:::-;;;;;;;;;8558:21:::1;:46:::0;;;::::1;;-1:-1:-1::0;;;8558:46:0::1;-1:-1:-1::0;;;;8558:46:0;;::::1;::::0;;;::::1;::::0;;8441:171::o;9346:117::-;4549:6;;-1:-1:-1;;;;;4549:6:0;1948:10;4549:22;4541:67;;;;-1:-1:-1;;;4541:67:0;;;;;;;:::i;:::-;9423:14:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;9423:32:0::1;-1:-1:-1::0;;;;9423:32:0;;::::1;::::0;;;::::1;::::0;;9346:117::o;14909:192::-;14975:16;;-1:-1:-1;;;;;14975:16:0;1948:10;-1:-1:-1;;;;;14959:32:0;;14951:41;;;;;;15003:23;15029:24;15047:4;15029:9;:24::i;:::-;15003:50;;15064:29;15077:15;15064:12;:29::i;:::-;14940:161;14909:192::o;15902:395::-;4549:6;;-1:-1:-1;;;;;4549:6:0;1948:10;4549:22;4541:67;;;;-1:-1:-1;;;4541:67:0;;;;;;;:::i;:::-;16034:2:::1;16022:8;:14;;15983:115;;;::::0;-1:-1:-1;;;15983:115:0;;5178:2:1;15983:115:0::1;::::0;::::1;5160:21:1::0;5217:2;5197:18;;;5190:30;5256:34;5236:18;;;5229:62;-1:-1:-1;;;5307:18:1;;;5300:32;5349:19;;15983:115:0::1;4976:398:1::0;15983:115:0::1;16162:2;16149:9;:15;;16109:118;;;::::0;-1:-1:-1;;;16109:118:0;;5581:2:1;16109:118:0::1;::::0;::::1;5563:21:1::0;5620:2;5600:18;;;5593:30;5659:34;5639:18;;;5632:62;-1:-1:-1;;;5710:18:1;;;5703:33;5753:19;;16109:118:0::1;5379:399:1::0;16109:118:0::1;16240:7;:18:::0;;;;16269:8:::1;:20:::0;15902:395::o;16484:121::-;4549:6;;-1:-1:-1;;;;;4549:6:0;1948:10;4549:22;4541:67;;;;-1:-1:-1;;;4541:67:0;;;;;;;:::i;:::-;16564:19:::1;:33:::0;16484:121::o;7336:138::-;-1:-1:-1;;;;;7449:16:0;;7402:7;7449:16;;;:7;:16;;;;;;7429:37;;:19;:37::i;4723:148::-;4549:6;;-1:-1:-1;;;;;4549:6:0;1948:10;4549:22;4541:67;;;;-1:-1:-1;;;4541:67:0;;;;;;;:::i;:::-;4830:1:::1;4814:6:::0;;4793:40:::1;::::0;-1:-1:-1;;;;;4814:6:0;;::::1;::::0;4793:40:::1;::::0;4830:1;;4793:40:::1;4861:1;4844:19:::0;;-1:-1:-1;;;;;;4844:19:0::1;::::0;;4723:148::o;16337:110::-;4549:6;;-1:-1:-1;;;;;4549:6:0;1948:10;4549:22;4541:67;;;;-1:-1:-1;;;4541:67:0;;;;;;;:::i;:::-;16411:14:::1;:28:::0;16337:110::o;15109:199::-;15214:4;15236:42;1948:10;15260:9;15271:6;15236:9;:42::i;7482:260::-;4549:6;;-1:-1:-1;;;;;4549:6:0;1948:10;4549:22;4541:67;;;;-1:-1:-1;;;4541:67:0;;;;;;;:::i;:::-;7625:9:::1;7620:115;7640:19:::0;;::::1;7620:115;;;7715:8;7681:18;:31;7700:8;;7709:1;7700:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7681:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;7681:31:0;:42;;-1:-1:-1;;7681:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;7661:3:0::1;7620:115;;;;7482:260:::0;;;:::o;15767:127::-;4549:6;;-1:-1:-1;;;;;4549:6:0;1948:10;4549:22;4541:67;;;;-1:-1:-1;;;4541:67:0;;;;;;;:::i;:::-;15850:15:::1;:36:::0;15767:127::o;12939:198::-;13004:16;;-1:-1:-1;;;;;13004:16:0;1948:10;-1:-1:-1;;;;;12988:32:0;;12980:41;;;;;;13061:21;13093:36;13061:21;13093:16;:36::i;4879:281::-;4549:6;;-1:-1:-1;;;;;4549:6:0;1948:10;4549:22;4541:67;;;;-1:-1:-1;;;4541:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4982:22:0;::::1;4960:110;;;::::0;-1:-1:-1;;;4960:110:0;;6117:2:1;4960:110:0::1;::::0;::::1;6099:21:1::0;6156:2;6136:18;;;6129:30;6195:34;6175:18;;;6168:62;-1:-1:-1;;;6246:18:1;;;6239:36;6292:19;;4960:110:0::1;5915:402:1::0;4960:110:0::1;5107:6;::::0;;5086:38:::1;::::0;-1:-1:-1;;;;;5086:38:0;;::::1;::::0;5107:6;::::1;::::0;5086:38:::1;::::0;::::1;5135:6;:17:::0;;-1:-1:-1;;;;;;5135:17:0::1;-1:-1:-1::0;;;;;5135:17:0;;;::::1;::::0;;;::::1;::::0;;4879:281::o;9683:361::-;-1:-1:-1;;;;;9810:19:0;;9802:63;;;;-1:-1:-1;;;9802:63:0;;6524:2:1;9802:63:0;;;6506:21:1;6563:2;6543:18;;;6536:30;6602:33;6582:18;;;6575:61;6653:18;;9802:63:0;6322:355:1;9802:63:0;-1:-1:-1;;;;;9884:21:0;;9876:63;;;;-1:-1:-1;;;9876:63:0;;6884:2:1;9876:63:0;;;6866:21:1;6923:2;6903:18;;;6896:30;6962:31;6942:18;;;6935:59;7011:18;;9876:63:0;6682:353:1;9876:63:0;-1:-1:-1;;;;;9952:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10004:32;;160:25:1;;;10004:32:0;;133:18:1;10004:32:0;;;;;;;9683:361;;;:::o;10052:2282::-;-1:-1:-1;;;;;10174:18:0;;10166:62;;;;-1:-1:-1;;;10166:62:0;;7242:2:1;10166:62:0;;;7224:21:1;7281:2;7261:18;;;7254:30;7320:33;7300:18;;;7293:61;7371:18;;10166:62:0;7040:355:1;10166:62:0;-1:-1:-1;;;;;10247:16:0;;10239:58;;;;-1:-1:-1;;;10239:58:0;;7602:2:1;10239:58:0;;;7584:21:1;7641:2;7621:18;;;7614:30;7680:31;7660:18;;;7653:59;7729:18;;10239:58:0;7400:353:1;10239:58:0;10325:1;10316:6;:10;10308:50;;;;-1:-1:-1;;;10308:50:0;;7960:2:1;10308:50:0;;;7942:21:1;7999:2;7979:18;;;7972:30;8038:29;8018:18;;;8011:57;8085:18;;10308:50:0;7758:351:1;10308:50:0;4674:7;4701:6;-1:-1:-1;;;;;10375:15:0;;;4701:6;;10375:15;;;;:32;;-1:-1:-1;4674:7:0;4701:6;-1:-1:-1;;;;;10394:13:0;;;4701:6;;10394:13;;10375:32;10371:1402;;;10462:14;;-1:-1:-1;;;10462:14:0;;;;10457:191;;4674:7;4701:6;-1:-1:-1;;;;;10527:15:0;;;4701:6;;10527:15;10497:135;;;;-1:-1:-1;;;10497:135:0;;8316:2:1;10497:135:0;;;8298:21:1;8355:2;8335:18;;;8328:30;8394:34;8374:18;;;8367:62;-1:-1:-1;;;8445:18:1;;;8438:44;8499:19;;10497:135:0;8114:410:1;10497:135:0;10682:14;;10672:6;:24;;10664:67;;;;-1:-1:-1;;;10664:67:0;;8731:2:1;10664:67:0;;;8713:21:1;8770:2;8750:18;;;8743:30;8809:32;8789:18;;;8782:60;8859:18;;10664:67:0;8529:354:1;10664:67:0;10758:13;;-1:-1:-1;;;;;10752:19:0;;;10758:13;;10752:19;10748:202;;10847:19;;10838:6;10822:13;10832:2;10822:9;:13::i;:::-;:22;;;;:::i;:::-;:44;10792:142;;;;-1:-1:-1;;;10792:142:0;;9352:2:1;10792:142:0;;;9334:21:1;9391:2;9371:18;;;9364:30;9430:26;9410:18;;;9403:54;9474:18;;10792:142:0;9150:348:1;10792:142:0;10966:28;10997:24;11015:4;10997:9;:24::i;:::-;11079:15;;11139:14;;10966:55;;-1:-1:-1;11055:39:0;;;;11115:38;;11111:116;;11197:14;;11174:37;;11111:116;11265:11;:41;;;;-1:-1:-1;11298:8:0;;-1:-1:-1;;;11298:8:0;;;;11297:9;11265:41;:83;;;;-1:-1:-1;11335:13:0;;-1:-1:-1;;;;;11327:21:0;;;11335:13;;11327:21;;11265:83;:125;;;;-1:-1:-1;11369:21:0;;-1:-1:-1;;;11369:21:0;;;;11265:125;:171;;;;-1:-1:-1;;;;;;11412:24:0;;;;;;:18;:24;;;;;;;;11411:25;11265:171;:215;;;;-1:-1:-1;;;;;;11458:22:0;;;;;;:18;:22;;;;;;;;11457:23;11265:215;11243:519;;;11515:34;11528:20;11515:12;:34::i;:::-;11597:21;11641:22;;11637:110;;11688:39;11705:21;11688:16;:39::i;:::-;11496:266;11243:519;10409:1364;;10371:1402;-1:-1:-1;;;;;11836:24:0;;11785:12;11836:24;;;:18;:24;;;;;;11800:4;;11836:24;;;:50;;-1:-1:-1;;;;;;11864:22:0;;;;;;:18;:22;;;;;;;;11836:50;11835:115;;;-1:-1:-1;11913:13:0;;-1:-1:-1;;;;;11905:21:0;;;11913:13;;11905:21;;;;:44;;-1:-1:-1;11936:13:0;;-1:-1:-1;;;;;11930:19:0;;;11936:13;;11930:19;;11905:44;11817:456;;;-1:-1:-1;11987:5:0;11817:456;;;12037:13;;-1:-1:-1;;;;;12029:21:0;;;12037:13;;12029:21;:55;;;;-1:-1:-1;12068:15:0;;-1:-1:-1;;;;;12054:30:0;;;12068:15;;12054:30;;12029:55;12025:110;;;12112:7;;12105:4;:14;12025:110;12161:13;;-1:-1:-1;;;;;12155:19:0;;;12161:13;;12155:19;:55;;;;-1:-1:-1;12194:15:0;;-1:-1:-1;;;;;12178:32:0;;;12194:15;;12178:32;;12155:55;12151:111;;;12238:8;;12231:4;:15;12151:111;12285:41;12300:4;12306:2;12310:6;12318:7;12285:14;:41::i;3361:224::-;3481:7;3517:12;3509:6;;;;3501:29;;;;-1:-1:-1;;;3501:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3541:9:0;3553:5;3557:1;3553;:5;:::i;:::-;3541:17;3361:224;-1:-1:-1;;;;;3361:224:0:o;12342:479::-;6547:8;:15;;-1:-1:-1;;;;6547:15:0;-1:-1:-1;;;6547:15:0;;;12440:16:::1;::::0;;12454:1:::1;12440:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12440:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12440:16:0::1;12416:40;;12485:4;12467;12472:1;12467:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12467:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12511:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12511:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12467:7;;12511:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12501:4;12506:1;12501:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12501:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12576:15:::1;::::0;12544:62:::1;::::0;12561:4:::1;::::0;12576:15:::1;12594:11:::0;12544:8:::1;:62::i;:::-;12617:15;::::0;:196:::1;::::0;-1:-1:-1;;;12617:196:0;;-1:-1:-1;;;;;12617:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12698:11;;12617:15:::1;::::0;12740:4;;12767::::1;::::0;12787:15:::1;::::0;12617:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6585:8:0;:16;;-1:-1:-1;;;;6585:16:0;;;-1:-1:-1;;;;12342:479:0:o;9013:325::-;9108:7;9166;;9155;:18;;9133:112;;;;-1:-1:-1;;;9133:112:0;;11211:2:1;9133:112:0;;;11193:21:1;11250:2;11230:18;;;11223:30;11289:34;11269:18;;;11262:62;-1:-1:-1;;;11340:18:1;;;11333:42;11392:19;;9133:112:0;11009:408:1;9133:112:0;9256:19;9278:10;:8;:10::i;:::-;9256:32;-1:-1:-1;9306:24:0;:7;9256:32;9306:11;:24::i;:::-;9299:31;9013:325;-1:-1:-1;;;9013:325:0:o;12829:102::-;12890:16;;:33;;-1:-1:-1;;;;;12890:16:0;;;;:33;;;;;12916:6;;12890:16;:33;:16;:33;12916:6;12890:16;:33;;;;;;;;;;;;;;;;;;;;;12829:102;:::o;14626:275::-;14782:7;14777:25;;14791:11;:9;:11::i;:::-;14813:43;14830:6;14838:9;14849:6;14813:16;:43::i;:::-;14872:7;14867:26;;14881:12;9652:15;;9645:4;:22;9604:71;13145:164;13187:7;13208:15;13225;13244:19;8403:7;;;6084:19;;8315:118;13244:19;13207:56;;-1:-1:-1;13207:56:0;-1:-1:-1;13281:20:0;13207:56;;13281:11;:20::i;:::-;13274:27;;;;13145:164;:::o;3593:132::-;3651:7;3678:39;3682:1;3685;3678:39;;;;;;;;;;;;;;;;;:3;:39::i;9471:125::-;9515:4;;9523:1;9515:9;9511:22;;9471:125::o;9511:22::-;9563:4;;;9545:15;:22;-1:-1:-1;9580:8:0;;9471:125::o;13317:530::-;13463:15;13493:23;13531;13569:13;13596:22;13610:7;13596:13;:22::i;:::-;-1:-1:-1;;;;;13647:15:0;;;;;;:7;:15;;;;;;13448:170;;-1:-1:-1;13448:170:0;;-1:-1:-1;13448:170:0;-1:-1:-1;13448:170:0;-1:-1:-1;13647:28:0;;13448:170;13647:19;:28::i;:::-;-1:-1:-1;;;;;13629:15:0;;;;;;;:7;:15;;;;;;:46;;;;13707:18;;;;;;;:39;;13730:15;13707:22;:39::i;:::-;-1:-1:-1;;;;;13686:18:0;;;;;;:7;:18;;;;;:60;13757:22;13773:5;13757:15;:22::i;:::-;13812:9;-1:-1:-1;;;;;13795:44:0;13804:6;-1:-1:-1;;;;;13795:44:0;;13823:15;13795:44;;;;160:25:1;;148:2;133:18;;14:177;13795:44:0;;;;;;;;13437:410;;;;13317:530;;;:::o;3130:223::-;3250:7;3285:12;3278:5;3270:28;;;;-1:-1:-1;;;3270:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3309:9:0;3321:5;3325:1;3321;:5;:::i;14080:538::-;14183:7;14205;14227;14249;14285:23;14310:13;14327:26;14339:7;14348:4;;14327:11;:26::i;:::-;14284:69;;;;14364:19;14386:10;:8;:10::i;:::-;14364:32;;14408:15;14425:23;14452:90;14478:7;14500:5;14520:11;14452;:90::i;:::-;14407:135;;;;-1:-1:-1;14587:15:0;;-1:-1:-1;14604:5:0;;-1:-1:-1;14080:538:0;;-1:-1:-1;;;;;14080:538:0:o;2986:136::-;3044:7;3071:43;3075:1;3078;3071:43;;;;;;;;;;;;;;;;;:3;:43::i;2799:179::-;2857:7;;2889:5;2893:1;2889;:5;:::i;:::-;2877:17;;2918:1;2913;:6;;2905:46;;;;-1:-1:-1;;;2905:46:0;;11846:2:1;2905:46:0;;;11828:21:1;11885:2;11865:18;;;11858:30;11924:29;11904:18;;;11897:57;11971:18;;2905:46:0;11644:351:1;13855:217:0;13914:19;13936:10;:8;:10::i;:::-;13914:32;-1:-1:-1;13957:13:0;13973:22;:5;13914:32;13973:9;:22::i;:::-;14047:4;14031:22;;;;:7;:22;;;;;;13957:38;;-1:-1:-1;14031:33:0;;13957:38;14031:26;:33::i;:::-;14022:4;14006:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13855:217:0:o;8027:280::-;8127:7;;;8177:25;8198:3;8177:16;:7;8189:3;8177:11;:16::i;:::-;:20;;:25::i;:::-;8161:41;-1:-1:-1;8213:23:0;8239:18;:7;8161:41;8239:11;:18::i;:::-;8213:44;8293:5;;-1:-1:-1;8027:280:0;;-1:-1:-1;;;;8027:280:0:o;16613:357::-;16743:7;;;16790:24;:7;16802:11;16790;:24::i;:::-;16772:42;-1:-1:-1;16825:13:0;16841:22;:5;16851:11;16841:9;:22::i;:::-;16825:38;-1:-1:-1;16874:23:0;16900:18;:7;16825:38;16900:11;:18::i;:::-;16937:7;;;;-1:-1:-1;16613:357:0;;-1:-1:-1;;;;;;16613:357:0:o;3733:246::-;3791:7;3815:1;3820;3815:6;3811:47;;-1:-1:-1;3845:1:0;3838:8;;3811:47;3868:9;3880:5;3884:1;3880;:5;:::i;:::-;3868:17;-1:-1:-1;3913:1:0;3904:5;3908:1;3868:17;3904:5;:::i;:::-;:10;3896:56;;;;-1:-1:-1;;;3896:56:0;;12375:2:1;3896:56:0;;;12357:21:1;12414:2;12394:18;;;12387:30;12453:34;12433:18;;;12426:62;-1:-1:-1;;;12504:18:1;;;12497:31;12545:19;;3896:56:0;12173:397:1;196:548;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1630:456::-;1707:6;1715;1723;1776:2;1764:9;1755:7;1751:23;1747:32;1744:52;;;1792:1;1789;1782:12;1744:52;1831:9;1818:23;1850:31;1875:5;1850:31;:::i;:::-;1900:5;-1:-1:-1;1957:2:1;1942:18;;1929:32;1970:33;1929:32;1970:33;:::i;:::-;1630:456;;2022:7;;-1:-1:-1;;;2076:2:1;2061:18;;;;2048:32;;1630:456::o;2091:160::-;2156:20;;2212:13;;2205:21;2195:32;;2185:60;;2241:1;2238;2231:12;2185:60;2091:160;;;:::o;2256:180::-;2312:6;2365:2;2353:9;2344:7;2340:23;2336:32;2333:52;;;2381:1;2378;2371:12;2333:52;2404:26;2420:9;2404:26;:::i;2838:248::-;2906:6;2914;2967:2;2955:9;2946:7;2942:23;2938:32;2935:52;;;2983:1;2980;2973:12;2935:52;-1:-1:-1;;3006:23:1;;;3076:2;3061:18;;;3048:32;;-1:-1:-1;2838:248:1:o;3091:180::-;3150:6;3203:2;3191:9;3182:7;3178:23;3174:32;3171:52;;;3219:1;3216;3209:12;3171:52;-1:-1:-1;3242:23:1;;3091:180;-1:-1:-1;3091:180:1:o;3276:247::-;3335:6;3388:2;3376:9;3367:7;3363:23;3359:32;3356:52;;;3404:1;3401;3394:12;3356:52;3443:9;3430:23;3462:31;3487:5;3462:31;:::i;3528:689::-;3620:6;3628;3636;3689:2;3677:9;3668:7;3664:23;3660:32;3657:52;;;3705:1;3702;3695:12;3657:52;3745:9;3732:23;3774:18;3815:2;3807:6;3804:14;3801:34;;;3831:1;3828;3821:12;3801:34;3869:6;3858:9;3854:22;3844:32;;3914:7;3907:4;3903:2;3899:13;3895:27;3885:55;;3936:1;3933;3926:12;3885:55;3976:2;3963:16;4002:2;3994:6;3991:14;3988:34;;;4018:1;4015;4008:12;3988:34;4073:7;4066:4;4056:6;4053:1;4049:14;4045:2;4041:23;4037:34;4034:47;4031:67;;;4094:1;4091;4084:12;4031:67;4125:4;4117:13;;;;-1:-1:-1;4149:6:1;-1:-1:-1;4174:37:1;;4190:20;;;-1:-1:-1;4174:37:1;:::i;:::-;4164:47;;3528:689;;;;;:::o;4222:388::-;4290:6;4298;4351:2;4339:9;4330:7;4326:23;4322:32;4319:52;;;4367:1;4364;4357:12;4319:52;4406:9;4393:23;4425:31;4450:5;4425:31;:::i;:::-;4475:5;-1:-1:-1;4532:2:1;4517:18;;4504:32;4545:33;4504:32;4545:33;:::i;:::-;4597:7;4587:17;;;4222:388;;;;;:::o;4615:356::-;4817:2;4799:21;;;4836:18;;;4829:30;4895:34;4890:2;4875:18;;4868:62;4962:2;4947:18;;4615:356::o;5783:127::-;5844:10;5839:3;5835:20;5832:1;5825:31;5875:4;5872:1;5865:15;5899:4;5896:1;5889:15;8888:127;8949:10;8944:3;8940:20;8937:1;8930:31;8980:4;8977:1;8970:15;9004:4;9001:1;8994:15;9020:125;9085:9;;;9106:10;;;9103:36;;;9119:18;;:::i;9503:128::-;9570:9;;;9591:11;;;9588:37;;;9605:18;;:::i;9768:251::-;9838:6;9891:2;9879:9;9870:7;9866:23;9862:32;9859:52;;;9907:1;9904;9897:12;9859:52;9939:9;9933:16;9958:31;9983:5;9958:31;:::i;10024:980::-;10286:4;10334:3;10323:9;10319:19;10365:6;10354:9;10347:25;10391:2;10429:6;10424:2;10413:9;10409:18;10402:34;10472:3;10467:2;10456:9;10452:18;10445:31;10496:6;10531;10525:13;10562:6;10554;10547:22;10600:3;10589:9;10585:19;10578:26;;10639:2;10631:6;10627:15;10613:29;;10660:1;10670:195;10684:6;10681:1;10678:13;10670:195;;;10749:13;;-1:-1:-1;;;;;10745:39:1;10733:52;;10840:15;;;;10805:12;;;;10781:1;10699:9;10670:195;;;-1:-1:-1;;;;;;;10921:32:1;;;;10916:2;10901:18;;10894:60;-1:-1:-1;;;10985:3:1;10970:19;10963:35;10882:3;10024:980;-1:-1:-1;;;10024:980:1:o;11422:217::-;11462:1;11488;11478:132;;11532:10;11527:3;11523:20;11520:1;11513:31;11567:4;11564:1;11557:15;11595:4;11592:1;11585:15;11478:132;-1:-1:-1;11624:9:1;;11422:217::o;12000:168::-;12073:9;;;12104;;12121:15;;;12115:22;;12101:37;12091:71;;12142:18;;:::i

Swarm Source

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