ETH Price: $3,287.41 (-0.74%)

Token

Deity molecule (DEM)
 

Overview

Max Total Supply

131,313,131,313 DEM

Holders

50

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
538,578,729.819399440502012976 DEM

Value
$0.00
0x29a21fb85d83fa8d0e84fd85e6cf9f0eb2388cf0
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:
TokenMintERC20Token

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;
pragma abicoder v2;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see `ERC20Detailed`.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a `Transfer` event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through `transferFrom`. This is
     * zero by default.
     *
     * This value changes when `approve` or `transferFrom` are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * > Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an `Approval` event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a `Transfer` event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to `approve`. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


interface INonfungiblePositionManager {
    struct CollectParams {
        uint256 tokenId;
        address recipient;
        uint128 amount0Max;
        uint128 amount1Max;
    }

    /// @notice Collects up to a maximum amount of fees owed to a specific position to the recipient
    /// @param params tokenId The ID of the NFT for which tokens are being collected,
    /// recipient The account that should receive the tokens,
    /// amount0Max The maximum amount of token0 to collect,
    /// amount1Max The maximum amount of token1 to collect
    /// @return amount0 The amount of fees collected in token0
    /// @return amount1 The amount of fees collected in token1
    function collect(CollectParams calldata params) external payable returns (uint256 amount0, uint256 amount1);

    function positions(uint256 tokenId)
        external
        view
        returns (
            uint96 nonce,
            address operator,
            address token0,
            address token1,
            uint24 fee,
            int24 tickLower,
            int24 tickUpper,
            uint128 liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        );
}


/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

library TransferHelper {
    /// @notice Transfers tokens from msg.sender to a recipient
    /// @dev Errors with ST if transfer fails
    /// @param token The contract address of the token which will be transferred
    /// @param to The recipient of the transfer
    /// @param value The value of the transfer
    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'ST');
    }
}

/**
 * @dev Implementation of the `IERC20` interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using `_mint`.
 * For a generic mechanism see `ERC20Mintable`.
 *
 * *For a detailed writeup see our guide [How to implement supply
 * mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).*
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an `Approval` event is emitted on calls to `transferFrom`.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard `decreaseAllowance` and `increaseAllowance`
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See `IERC20.approve`.
 */
contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    /**
     * @dev See `IERC20.totalSupply`.
     */
    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See `IERC20.balanceOf`.
     */
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See `IERC20.transfer`.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    /**
     * @dev See `IERC20.allowance`.
     */
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See `IERC20.approve`.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 value) public override returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev See `IERC20.transferFrom`.
     *
     * Emits an `Approval` event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of `ERC20`;
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `value`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IERC20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IERC20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to `transfer`, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a `Transfer` event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a `Transfer` event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

     /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a `Transfer` event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 value) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        _totalSupply = _totalSupply.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an `Approval` event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Destoys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     *
     * See `_burn` and `_approve`.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount));
    }
}




contract TokenMintERC20Token is ERC20 {

    string private _name = "Deity molecule";
    string private _symbol = "DEM";
    uint8 private _decimals = 18;
   

    
    constructor() {
      _mint(0x2930D610dcB37EaA6b419aeE2b39DEdc87890A0b, 131313131313 * 10 ** _decimals);
    }

    /**
     * @dev Burns a specific amount of tokens.
     * @param value The amount of lowest token units to be burned.
     */
    function burn(uint256 value) public {
      _burn(msg.sender, value);
    }

    // optional functions from ERC20 stardard

    /**
     * @return the name of the token.
     */
    function name() public view returns (string memory) {
      return _name;
    }

    /**
     * @return the symbol of the token.
     */
    function symbol() public view returns (string memory) {
      return _symbol;
    }

    /**
     * @return the number of decimals of the token.
     */
    function decimals() public view returns (uint8) {
      return _decimals;
    }

    /// @notice Collects the fees associated with provided liquidity
    /// @dev The contract must hold the erc721 token before it can collect fees
    /// @param tokenId The id of the erc721 token
    /// @return amount0 The amount of fees collected in token0
    /// @return amount1 The amount of fees collected in token1
    function collectAllFees(uint256 tokenId) external returns (uint256 amount0, uint256 amount1) {
        // Caller must own the ERC721 position
        // Call to safeTransfer will trigger `onERC721Received` which must return the selector else transfer will fail
       // nonfungiblePositionManager.safeTransferFrom(msg.sender, address(this), tokenId);

        // set amount0Max and amount1Max to uint256.max to collect all fees
        // alternatively can set recipient to msg.sender and avoid another transaction in `sendToOwner`
        INonfungiblePositionManager.CollectParams memory params =
            INonfungiblePositionManager.CollectParams({
                tokenId: tokenId,
                recipient: address(this),
                amount0Max: type(uint128).max,
                amount1Max: type(uint128).max
            });

        (amount0, amount1) = INonfungiblePositionManager(0xC36442b4a4522E871399CD717aBDD847Ab11FE88).collect(params);

        // send collected feed back to owner
        _sendToOwner(tokenId, amount0, amount1);
    }

    /// @notice Transfers funds to owner of NFT
    /// @param tokenId The id of the erc721
    /// @param amount0 The amount of token0
    /// @param amount1 The amount of token1
    function _sendToOwner(
        uint256 tokenId,
        uint256 amount0,
        uint256 amount1
    ) internal {
        
       (, , address token0, address token1, , , , , , , , ) = INonfungiblePositionManager(0xC36442b4a4522E871399CD717aBDD847Ab11FE88).positions(tokenId);
        // send collected fees to owner
        TransferHelper.safeTransfer(token0, 0xf2073d432189eD99A852E39a26e91fE9b7cb4E3e, amount0);
        TransferHelper.safeTransfer(token1, 0xf2073d432189eD99A852E39a26e91fE9b7cb4E3e, amount1);
    }

    function onERC721Received(
        address operator,
        address from,
        uint256 id,
        bytes calldata data
    ) external pure returns (bytes4) {
        operator;
        from;
        id;
        data;
        return bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"));
    }
}

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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"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":"value","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":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"collectAllFees","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","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"}]

60c0604052600e60808190526d4465697479206d6f6c6563756c6560901b60a0908152620000319160039190620001de565b506040805180820190915260038082526244454d60e81b60209092019182526200005e91600491620001de565b506005805460ff191660121790553480156200007957600080fd5b50600554620000bf90732930d610dcb37eaa6b419aee2b39dedc87890a0b90620000a89060ff16600a62000363565b620000b990641e92df5f316200044e565b620000c5565b620004c3565b6001600160a01b038216620000f75760405162461bcd60e51b8152600401620000ee90620002bb565b60405180910390fd5b6200011381600254620001a360201b620005001790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200014691839062000500620001a3821b17901c565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9062000197908590620002f2565b60405180910390a35050565b600080620001b28385620002fb565b905083811015620001d75760405162461bcd60e51b8152600401620000ee9062000284565b9392505050565b828054620001ec9062000470565b90600052602060002090601f0160209004810192826200021057600085556200025b565b82601f106200022b57805160ff19168380011785556200025b565b828001600101855582156200025b579182015b828111156200025b5782518255916020019190600101906200023e565b50620002699291506200026d565b5090565b5b808211156200026957600081556001016200026e565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b60008219821115620003115762000311620004ad565b500190565b80825b60018086116200032a57506200035a565b8187048211156200033f576200033f620004ad565b808616156200034d57918102915b9490941c93800262000319565b94509492505050565b6000620001d760001960ff8516846000826200038257506001620001d7565b816200039157506000620001d7565b8160018114620003aa5760028114620003b557620003e9565b6001915050620001d7565b60ff841115620003c957620003c9620004ad565b6001841b915084821115620003e257620003e2620004ad565b50620001d7565b5060208310610133831016604e8410600b841016171562000421575081810a838111156200041b576200041b620004ad565b620001d7565b62000430848484600162000316565b808604821115620004455762000445620004ad565b02949350505050565b60008160001904831182151516156200046b576200046b620004ad565b500290565b6002810460018216806200048557607f821691505b60208210811415620004a757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b61103680620004d36000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101e6578063a457c2d7146101ee578063a9059cbb14610201578063dd62ed3e14610214576100ea565b806342966c681461019d57806346ce96dd146101b257806370a08231146101d3576100ea565b806318160ddd116100c857806318160ddd1461014d57806323b872dd14610162578063313ce56714610175578063395093511461018a576100ea565b806306fdde03146100ef578063095ea7b31461010d578063150b7a021461012d575b600080fd5b6100f7610227565b6040516101049190610cc7565b60405180910390f35b61012061011b366004610b0d565b6102b9565b6040516101049190610ca7565b61014061013b366004610a73565b6102cf565b6040516101049190610cb2565b6101556102f9565b6040516101049190610f16565b610120610170366004610a33565b6102ff565b61017d610350565b6040516101049190610f2d565b610120610198366004610b0d565b610359565b6101b06101ab366004610b58565b61038f565b005b6101c56101c0366004610b58565b61039c565b604051610104929190610f1f565b6101556101e13660046109df565b610464565b6100f7610483565b6101206101fc366004610b0d565b610492565b61012061020f366004610b0d565b6104c8565b6101556102223660046109fb565b6104d5565b60606003805461023690610f9a565b80601f016020809104026020016040519081016040528092919081815260200182805461026290610f9a565b80156102af5780601f10610284576101008083540402835291602001916102af565b820191906000526020600020905b81548152906001019060200180831161029257829003601f168201915b5050505050905090565b60006102c633848461053f565b50600192915050565b7f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f95945050505050565b60025490565b600061030c8484846105f3565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461034691869161034190866106e3565b61053f565b5060019392505050565b60055460ff1690565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102c69185906103419086610500565b6103993382610719565b50565b604080516080810182528281523060208201526001600160801b038183018190526060820152905163fc6f786560e01b8152600091829173c36442b4a4522e871399cd717abdd847ab11fe889063fc6f7865906103fd908490600401610ed3565b6040805180830381600087803b15801561041657600080fd5b505af115801561042a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044e9190610b70565b909350915061045e8484846107ca565b50915091565b6001600160a01b0381166000908152602081905260409020545b919050565b60606004805461023690610f9a565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102c691859061034190866106e3565b60006102c63384846105f3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60008061050d8385610f3b565b9050838110156105385760405162461bcd60e51b815260040161052f90610d7f565b60405180910390fd5b9392505050565b6001600160a01b0383166105655760405162461bcd60e51b815260040161052f90610e8f565b6001600160a01b03821661058b5760405162461bcd60e51b815260040161052f90610d3d565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105e6908590610f16565b60405180910390a3505050565b6001600160a01b0383166106195760405162461bcd60e51b815260040161052f90610e4a565b6001600160a01b03821661063f5760405162461bcd60e51b815260040161052f90610cfa565b6001600160a01b03831660009081526020819052604090205461066290826106e3565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546106919082610500565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105e6908590610f16565b6000828211156107055760405162461bcd60e51b815260040161052f90610db6565b60006107118385610f53565b949350505050565b6001600160a01b03821661073f5760405162461bcd60e51b815260040161052f90610e09565b60025461074c90826106e3565b6002556001600160a01b03821660009081526020819052604090205461077290826106e3565b6001600160a01b0383166000818152602081905260408082209390935591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107be908590610f16565b60405180910390a35050565b60405163133f757160e31b8152600090819073c36442b4a4522e871399cd717abdd847ab11fe88906399fbab8890610806908890600401610f16565b6101806040518083038186803b15801561081f57600080fd5b505afa158015610833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108579190610b93565b50505050505050509350935050506108848273f2073d432189ed99a852e39a26e91fe9b7cb4e3e866108aa565b6108a38173f2073d432189ed99a852e39a26e91fe9b7cb4e3e856108aa565b5050505050565b600080846001600160a01b031663a9059cbb60e01b85856040516024016108d2929190610c8e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516109109190610c72565b6000604051808303816000865af19150503d806000811461094d576040519150601f19603f3d011682016040523d82523d6000602084013e610952565b606091505b509150915081801561097c57508051158061097c57508080602001905181019061097c9190610b38565b6108a35760405162461bcd60e51b815260040161052f90610ded565b805161047e81610feb565b8051600281900b811461047e57600080fd5b80516001600160801b038116811461047e57600080fd5b805162ffffff8116811461047e57600080fd5b6000602082840312156109f0578081fd5b813561053881610feb565b60008060408385031215610a0d578081fd5b8235610a1881610feb565b91506020830135610a2881610feb565b809150509250929050565b600080600060608486031215610a47578081fd5b8335610a5281610feb565b92506020840135610a6281610feb565b929592945050506040919091013590565b600080600080600060808688031215610a8a578081fd5b8535610a9581610feb565b94506020860135610aa581610feb565b935060408601359250606086013567ffffffffffffffff80821115610ac8578283fd5b818801915088601f830112610adb578283fd5b813581811115610ae9578384fd5b896020828501011115610afa578384fd5b9699959850939650602001949392505050565b60008060408385031215610b1f578182fd5b8235610b2a81610feb565b946020939093013593505050565b600060208284031215610b49578081fd5b81518015158114610538578182fd5b600060208284031215610b69578081fd5b5035919050565b60008060408385031215610b82578182fd5b505080516020909101519092909150565b6000806000806000806000806000806000806101808d8f031215610bb5578687fd5b8c516bffffffffffffffffffffffff81168114610bd0578788fd5b9b50610bde60208e01610998565b9a50610bec60408e01610998565b9950610bfa60608e01610998565b9850610c0860808e016109cc565b9750610c1660a08e016109a3565b9650610c2460c08e016109a3565b9550610c3260e08e016109b5565b94506101008d015193506101208d01519250610c516101408e016109b5565b9150610c606101608e016109b5565b90509295989b509295989b509295989b565b60008251610c84818460208701610f6a565b9190910192915050565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6001600160e01b031991909116815260200190565b6000602082528251806020840152610ce6816040850160208701610f6a565b601f01601f19169190910160400192915050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526002908201526114d560f21b604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b90815260200190565b918252602082015260400190565b60ff91909116815260200190565b60008219821115610f4e57610f4e610fd5565b500190565b600082821015610f6557610f65610fd5565b500390565b60005b83811015610f85578181015183820152602001610f6d565b83811115610f94576000848401525b50505050565b600281046001821680610fae57607f821691505b60208210811415610fcf57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461039957600080fdfea26469706673582212205ebf8c27f7f4226586578426e9215fe630b8f82629ee817ea30081f022bc377264736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101e6578063a457c2d7146101ee578063a9059cbb14610201578063dd62ed3e14610214576100ea565b806342966c681461019d57806346ce96dd146101b257806370a08231146101d3576100ea565b806318160ddd116100c857806318160ddd1461014d57806323b872dd14610162578063313ce56714610175578063395093511461018a576100ea565b806306fdde03146100ef578063095ea7b31461010d578063150b7a021461012d575b600080fd5b6100f7610227565b6040516101049190610cc7565b60405180910390f35b61012061011b366004610b0d565b6102b9565b6040516101049190610ca7565b61014061013b366004610a73565b6102cf565b6040516101049190610cb2565b6101556102f9565b6040516101049190610f16565b610120610170366004610a33565b6102ff565b61017d610350565b6040516101049190610f2d565b610120610198366004610b0d565b610359565b6101b06101ab366004610b58565b61038f565b005b6101c56101c0366004610b58565b61039c565b604051610104929190610f1f565b6101556101e13660046109df565b610464565b6100f7610483565b6101206101fc366004610b0d565b610492565b61012061020f366004610b0d565b6104c8565b6101556102223660046109fb565b6104d5565b60606003805461023690610f9a565b80601f016020809104026020016040519081016040528092919081815260200182805461026290610f9a565b80156102af5780601f10610284576101008083540402835291602001916102af565b820191906000526020600020905b81548152906001019060200180831161029257829003601f168201915b5050505050905090565b60006102c633848461053f565b50600192915050565b7f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f95945050505050565b60025490565b600061030c8484846105f3565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461034691869161034190866106e3565b61053f565b5060019392505050565b60055460ff1690565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102c69185906103419086610500565b6103993382610719565b50565b604080516080810182528281523060208201526001600160801b038183018190526060820152905163fc6f786560e01b8152600091829173c36442b4a4522e871399cd717abdd847ab11fe889063fc6f7865906103fd908490600401610ed3565b6040805180830381600087803b15801561041657600080fd5b505af115801561042a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044e9190610b70565b909350915061045e8484846107ca565b50915091565b6001600160a01b0381166000908152602081905260409020545b919050565b60606004805461023690610f9a565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102c691859061034190866106e3565b60006102c63384846105f3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60008061050d8385610f3b565b9050838110156105385760405162461bcd60e51b815260040161052f90610d7f565b60405180910390fd5b9392505050565b6001600160a01b0383166105655760405162461bcd60e51b815260040161052f90610e8f565b6001600160a01b03821661058b5760405162461bcd60e51b815260040161052f90610d3d565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105e6908590610f16565b60405180910390a3505050565b6001600160a01b0383166106195760405162461bcd60e51b815260040161052f90610e4a565b6001600160a01b03821661063f5760405162461bcd60e51b815260040161052f90610cfa565b6001600160a01b03831660009081526020819052604090205461066290826106e3565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546106919082610500565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105e6908590610f16565b6000828211156107055760405162461bcd60e51b815260040161052f90610db6565b60006107118385610f53565b949350505050565b6001600160a01b03821661073f5760405162461bcd60e51b815260040161052f90610e09565b60025461074c90826106e3565b6002556001600160a01b03821660009081526020819052604090205461077290826106e3565b6001600160a01b0383166000818152602081905260408082209390935591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107be908590610f16565b60405180910390a35050565b60405163133f757160e31b8152600090819073c36442b4a4522e871399cd717abdd847ab11fe88906399fbab8890610806908890600401610f16565b6101806040518083038186803b15801561081f57600080fd5b505afa158015610833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108579190610b93565b50505050505050509350935050506108848273f2073d432189ed99a852e39a26e91fe9b7cb4e3e866108aa565b6108a38173f2073d432189ed99a852e39a26e91fe9b7cb4e3e856108aa565b5050505050565b600080846001600160a01b031663a9059cbb60e01b85856040516024016108d2929190610c8e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516109109190610c72565b6000604051808303816000865af19150503d806000811461094d576040519150601f19603f3d011682016040523d82523d6000602084013e610952565b606091505b509150915081801561097c57508051158061097c57508080602001905181019061097c9190610b38565b6108a35760405162461bcd60e51b815260040161052f90610ded565b805161047e81610feb565b8051600281900b811461047e57600080fd5b80516001600160801b038116811461047e57600080fd5b805162ffffff8116811461047e57600080fd5b6000602082840312156109f0578081fd5b813561053881610feb565b60008060408385031215610a0d578081fd5b8235610a1881610feb565b91506020830135610a2881610feb565b809150509250929050565b600080600060608486031215610a47578081fd5b8335610a5281610feb565b92506020840135610a6281610feb565b929592945050506040919091013590565b600080600080600060808688031215610a8a578081fd5b8535610a9581610feb565b94506020860135610aa581610feb565b935060408601359250606086013567ffffffffffffffff80821115610ac8578283fd5b818801915088601f830112610adb578283fd5b813581811115610ae9578384fd5b896020828501011115610afa578384fd5b9699959850939650602001949392505050565b60008060408385031215610b1f578182fd5b8235610b2a81610feb565b946020939093013593505050565b600060208284031215610b49578081fd5b81518015158114610538578182fd5b600060208284031215610b69578081fd5b5035919050565b60008060408385031215610b82578182fd5b505080516020909101519092909150565b6000806000806000806000806000806000806101808d8f031215610bb5578687fd5b8c516bffffffffffffffffffffffff81168114610bd0578788fd5b9b50610bde60208e01610998565b9a50610bec60408e01610998565b9950610bfa60608e01610998565b9850610c0860808e016109cc565b9750610c1660a08e016109a3565b9650610c2460c08e016109a3565b9550610c3260e08e016109b5565b94506101008d015193506101208d01519250610c516101408e016109b5565b9150610c606101608e016109b5565b90509295989b509295989b509295989b565b60008251610c84818460208701610f6a565b9190910192915050565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6001600160e01b031991909116815260200190565b6000602082528251806020840152610ce6816040850160208701610f6a565b601f01601f19169190910160400192915050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526002908201526114d560f21b604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b90815260200190565b918252602082015260400190565b60ff91909116815260200190565b60008219821115610f4e57610f4e610fd5565b500190565b600082821015610f6557610f65610fd5565b500390565b60005b83811015610f85578181015183820152602001610f6d565b83811115610f94576000848401525b50505050565b600281046001821680610fae57607f821691505b60208210811415610fcf57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461039957600080fdfea26469706673582212205ebf8c27f7f4226586578426e9215fe630b8f82629ee817ea30081f022bc377264736f6c63430008000033

Deployed Bytecode Sourcemap

16449:3484:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17072:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10914:157;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19609:321::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9901:100::-;;;:::i;:::-;;;;;;;:::i;11542:265::-;;;;;;:::i;:::-;;:::i;17384:81::-;;;:::i;:::-;;;;;;;:::i;12216:206::-;;;;;;:::i;:::-;;:::i;16881:77::-;;;;;;:::i;:::-;;:::i;:::-;;17803:1078;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;10064:119::-;;;;;;:::i;:::-;;:::i;17220:85::-;;;:::i;12925:216::-;;;;;;:::i;:::-;;:::i;10396:165::-;;;;;;:::i;:::-;;:::i;10624:143::-;;;;;;:::i;:::-;;:::i;17072:81::-;17109:13;17140:5;17133:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17072:81;:::o;10914:157::-;10988:4;11005:36;11014:10;11026:7;11035:5;11005:8;:36::i;:::-;-1:-1:-1;11059:4:0;10914:157;;;;:::o;19609:321::-;19861:60;19609:321;;;;;;;:::o;9901:100::-;9981:12;;9901:100;:::o;11542:265::-;11640:4;11657:36;11667:6;11675:9;11686:6;11657:9;:36::i;:::-;-1:-1:-1;;;;;11733:19:0;;;;;;:11;:19;;;;;;;;11721:10;11733:31;;;;;;;;;11704:73;;11713:6;;11733:43;;11769:6;11733:35;:43::i;:::-;11704:8;:73::i;:::-;-1:-1:-1;11795:4:0;11542:265;;;;;:::o;17384:81::-;17448:9;;;;17384:81;:::o;12216:206::-;12322:10;12296:4;12343:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;12343:32:0;;;;;;;;;;12296:4;;12313:79;;12334:7;;12343:48;;12380:10;12343:36;:48::i;16881:77::-;16926:24;16932:10;16944:5;16926;:24::i;:::-;16881:77;:::o;17803:1078::-;18422:232;;;;;;;;;;;18537:4;18422:232;;;;-1:-1:-1;;;;;18422:232:0;;;;;;;;;;18688:87;;-1:-1:-1;;;18688:87:0;;17862:15;;;;18716:42;;18688:79;;:87;;18422:232;;18688:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18667:108;;-1:-1:-1;18667:108:0;-1:-1:-1;18834:39:0;18847:7;18667:108;;18834:12;:39::i;:::-;17803:1078;;;;:::o;10064:119::-;-1:-1:-1;;;;;10157:18:0;;10130:7;10157:18;;;;;;;;;;;10064:119;;;;:::o;17220:85::-;17259:13;17290:7;17283:14;;;;;:::i;12925:216::-;13036:10;13010:4;13057:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;13057:32:0;;;;;;;;;;13010:4;;13027:84;;13048:7;;13057:53;;13094:15;13057:36;:53::i;10396:165::-;10474:4;10491:40;10501:10;10513:9;10524:6;10491:9;:40::i;10624:143::-;-1:-1:-1;;;;;10732:18:0;;;10705:7;10732:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10624:143::o;5013:181::-;5071:7;;5103:5;5107:1;5103;:5;:::i;:::-;5091:17;;5132:1;5127;:6;;5119:46;;;;-1:-1:-1;;;5119:46:0;;;;;;;:::i;:::-;;;;;;;;;5185:1;5013:181;-1:-1:-1;;;5013:181:0:o;15728:335::-;-1:-1:-1;;;;;15821:19:0;;15813:68;;;;-1:-1:-1;;;15813:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15900:21:0;;15892:68;;;;-1:-1:-1;;;15892:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15973:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:35;;;16024:31;;;;;16003:5;;16024:31;:::i;:::-;;;;;;;;15728:335;;;:::o;13631:429::-;-1:-1:-1;;;;;13729:20:0;;13721:70;;;;-1:-1:-1;;;13721:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13810:23:0;;13802:71;;;;-1:-1:-1;;;13802:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13906:17:0;;:9;:17;;;;;;;;;;;:29;;13928:6;13906:21;:29::i;:::-;-1:-1:-1;;;;;13886:17:0;;;:9;:17;;;;;;;;;;;:49;;;;13969:20;;;;;;;:32;;13994:6;13969:24;:32::i;:::-;-1:-1:-1;;;;;13946:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;14017:35;;;;;;;;;;14045:6;;14017:35;:::i;5469:184::-;5527:7;5560:1;5555;:6;;5547:49;;;;-1:-1:-1;;;5547:49:0;;;;;;;:::i;:::-;5607:9;5619:5;5623:1;5619;:5;:::i;:::-;5607:17;5469:184;-1:-1:-1;;;;5469:184:0:o;14982:306::-;-1:-1:-1;;;;;15057:21:0;;15049:67;;;;-1:-1:-1;;;15049:67:0;;;;;;;:::i;:::-;15144:12;;:23;;15161:5;15144:16;:23::i;:::-;15129:12;:38;-1:-1:-1;;;;;15199:18:0;;:9;:18;;;;;;;;;;;:29;;15222:5;15199:22;:29::i;:::-;-1:-1:-1;;;;;15178:18:0;;:9;:18;;;;;;;;;;;:50;;;;15244:36;;;;;;15274:5;;15244:36;:::i;:::-;;;;;;;;14982:306;;:::o;19073:528::-;19264:90;;-1:-1:-1;;;19264:90:0;;19214:14;;;;19292:42;;19264:81;;:90;;19346:7;;19264:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19209:145;;;;;;;;;;;;;;19406:88;19434:6;19442:42;19486:7;19406:27;:88::i;:::-;19505;19533:6;19541:42;19585:7;19505:27;:88::i;:::-;19073:528;;;;;:::o;8112:316::-;8231:12;8245:17;8266:5;-1:-1:-1;;;;;8266:10:0;8300:24;;;8326:2;8330:5;8277:59;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;8277:59:0;;;;;;;;;;;;;;-1:-1:-1;;;;;8277:59:0;-1:-1:-1;;;;;;8277:59:0;;;;;;;;;;8266:71;;;;8277:59;8266:71;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8230:107;;;;8356:7;:57;;;;-1:-1:-1;8368:11:0;;:16;;:44;;;8399:4;8388:24;;;;;;;;;;;;:::i;:::-;8348:72;;;;-1:-1:-1;;;8348:72:0;;;;;;;:::i;14:142:1:-;95:13;;117:33;95:13;117:33;:::i;161:166::-;240:13;;293:1;282:20;;;272:31;;262:2;;317:1;314;307:12;332:194;413:13;;-1:-1:-1;;;;;455:46:1;;445:57;;435:2;;516:1;513;506:12;531:167;611:13;;664:8;653:20;;643:31;;633:2;;688:1;685;678:12;703:259;;815:2;803:9;794:7;790:23;786:32;783:2;;;836:6;828;821:22;783:2;880:9;867:23;899:33;926:5;899:33;:::i;967:402::-;;;1096:2;1084:9;1075:7;1071:23;1067:32;1064:2;;;1117:6;1109;1102:22;1064:2;1161:9;1148:23;1180:33;1207:5;1180:33;:::i;:::-;1232:5;-1:-1:-1;1289:2:1;1274:18;;1261:32;1302:35;1261:32;1302:35;:::i;:::-;1356:7;1346:17;;;1054:315;;;;;:::o;1374:470::-;;;;1520:2;1508:9;1499:7;1495:23;1491:32;1488:2;;;1541:6;1533;1526:22;1488:2;1585:9;1572:23;1604:33;1631:5;1604:33;:::i;:::-;1656:5;-1:-1:-1;1713:2:1;1698:18;;1685:32;1726:35;1685:32;1726:35;:::i;:::-;1478:366;;1780:7;;-1:-1:-1;;;1834:2:1;1819:18;;;;1806:32;;1478:366::o;1849:990::-;;;;;;2031:3;2019:9;2010:7;2006:23;2002:33;1999:2;;;2053:6;2045;2038:22;1999:2;2097:9;2084:23;2116:33;2143:5;2116:33;:::i;:::-;2168:5;-1:-1:-1;2225:2:1;2210:18;;2197:32;2238:35;2197:32;2238:35;:::i;:::-;2292:7;-1:-1:-1;2346:2:1;2331:18;;2318:32;;-1:-1:-1;2401:2:1;2386:18;;2373:32;2424:18;2454:14;;;2451:2;;;2486:6;2478;2471:22;2451:2;2529:6;2518:9;2514:22;2504:32;;2574:7;2567:4;2563:2;2559:13;2555:27;2545:2;;2601:6;2593;2586:22;2545:2;2646;2633:16;2672:2;2664:6;2661:14;2658:2;;;2693:6;2685;2678:22;2658:2;2743:7;2738:2;2729:6;2725:2;2721:15;2717:24;2714:37;2711:2;;;2769:6;2761;2754:22;2711:2;1989:850;;;;-1:-1:-1;1989:850:1;;-1:-1:-1;2805:2:1;2797:11;;2827:6;1989:850;-1:-1:-1;;;1989:850:1:o;2844:327::-;;;2973:2;2961:9;2952:7;2948:23;2944:32;2941:2;;;2994:6;2986;2979:22;2941:2;3038:9;3025:23;3057:33;3084:5;3057:33;:::i;:::-;3109:5;3161:2;3146:18;;;;3133:32;;-1:-1:-1;;;2931:240:1:o;3176:297::-;;3296:2;3284:9;3275:7;3271:23;3267:32;3264:2;;;3317:6;3309;3302:22;3264:2;3354:9;3348:16;3407:5;3400:13;3393:21;3386:5;3383:32;3373:2;;3434:6;3426;3419:22;3478:190;;3590:2;3578:9;3569:7;3565:23;3561:32;3558:2;;;3611:6;3603;3596:22;3558:2;-1:-1:-1;3639:23:1;;3548:120;-1:-1:-1;3548:120:1:o;3673:255::-;;;3813:2;3801:9;3792:7;3788:23;3784:32;3781:2;;;3834:6;3826;3819:22;3781:2;-1:-1:-1;;3862:16:1;;3918:2;3903:18;;;3897:25;3862:16;;3897:25;;-1:-1:-1;3771:157:1:o;3933:1224::-;;;;;;;;;;;;;4239:3;4227:9;4218:7;4214:23;4210:33;4207:2;;;4261:6;4253;4246:22;4207:2;4298:9;4292:16;4348:26;4341:5;4337:38;4330:5;4327:49;4317:2;;4395:6;4387;4380:22;4317:2;4423:5;-1:-1:-1;4447:51:1;4494:2;4479:18;;4447:51;:::i;:::-;4437:61;;4517:51;4564:2;4553:9;4549:18;4517:51;:::i;:::-;4507:61;;4587:51;4634:2;4623:9;4619:18;4587:51;:::i;:::-;4577:61;;4657:51;4703:3;4692:9;4688:19;4657:51;:::i;:::-;4647:61;;4727:50;4772:3;4761:9;4757:19;4727:50;:::i;:::-;4717:60;;4796:50;4841:3;4830:9;4826:19;4796:50;:::i;:::-;4786:60;;4865:52;4912:3;4901:9;4897:19;4865:52;:::i;:::-;4855:62;;4957:3;4946:9;4942:19;4936:26;4926:36;;5002:3;4991:9;4987:19;4981:26;4971:36;;5027:52;5074:3;5063:9;5059:19;5027:52;:::i;:::-;5016:63;;5099:52;5146:3;5135:9;5131:19;5099:52;:::i;:::-;5088:63;;4197:960;;;;;;;;;;;;;;:::o;5162:274::-;;5329:6;5323:13;5345:53;5391:6;5386:3;5379:4;5371:6;5367:17;5345:53;:::i;:::-;5414:16;;;;;5299:137;-1:-1:-1;;5299:137:1:o;5441:274::-;-1:-1:-1;;;;;5633:32:1;;;;5615:51;;5697:2;5682:18;;5675:34;5603:2;5588:18;;5570:145::o;5720:187::-;5885:14;;5878:22;5860:41;;5848:2;5833:18;;5815:92::o;5912:202::-;-1:-1:-1;;;;;;6074:33:1;;;;6056:52;;6044:2;6029:18;;6011:103::o;6119:383::-;;6268:2;6257:9;6250:21;6300:6;6294:13;6343:6;6338:2;6327:9;6323:18;6316:34;6359:66;6418:6;6413:2;6402:9;6398:18;6393:2;6385:6;6381:15;6359:66;:::i;:::-;6486:2;6465:15;-1:-1:-1;;6461:29:1;6446:45;;;;6493:2;6442:54;;6240:262;-1:-1:-1;;6240:262:1:o;6507:399::-;6709:2;6691:21;;;6748:2;6728:18;;;6721:30;6787:34;6782:2;6767:18;;6760:62;-1:-1:-1;;;6853:2:1;6838:18;;6831:33;6896:3;6881:19;;6681:225::o;6911:398::-;7113:2;7095:21;;;7152:2;7132:18;;;7125:30;7191:34;7186:2;7171:18;;7164:62;-1:-1:-1;;;7257:2:1;7242:18;;7235:32;7299:3;7284:19;;7085:224::o;7314:351::-;7516:2;7498:21;;;7555:2;7535:18;;;7528:30;7594:29;7589:2;7574:18;;7567:57;7656:2;7641:18;;7488:177::o;7670:354::-;7872:2;7854:21;;;7911:2;7891:18;;;7884:30;7950:32;7945:2;7930:18;;7923:60;8015:2;8000:18;;7844:180::o;8029:325::-;8231:2;8213:21;;;8270:1;8250:18;;;8243:29;-1:-1:-1;;;8303:2:1;8288:18;;8281:32;8345:2;8330:18;;8203:151::o;8359:397::-;8561:2;8543:21;;;8600:2;8580:18;;;8573:30;8639:34;8634:2;8619:18;;8612:62;-1:-1:-1;;;8705:2:1;8690:18;;8683:31;8746:3;8731:19;;8533:223::o;8761:401::-;8963:2;8945:21;;;9002:2;8982:18;;;8975:30;9041:34;9036:2;9021:18;;9014:62;-1:-1:-1;;;9107:2:1;9092:18;;9085:35;9152:3;9137:19;;8935:227::o;9167:400::-;9369:2;9351:21;;;9408:2;9388:18;;;9381:30;9447:34;9442:2;9427:18;;9420:62;-1:-1:-1;;;9513:2:1;9498:18;;9491:34;9557:3;9542:19;;9341:226::o;9572:570::-;9795:13;;9777:32;;9869:4;9857:17;;;9851:24;-1:-1:-1;;;;;9847:50:1;9825:20;;;9818:80;9945:4;9933:17;;;9927:24;-1:-1:-1;;;;;10042:21:1;;;10020:20;;;10013:51;;;;10124:4;10112:17;;;10106:24;10102:33;10080:20;;;10073:63;;;;9764:3;9749:19;;9731:411::o;10147:177::-;10293:25;;;10281:2;10266:18;;10248:76::o;10329:248::-;10503:25;;;10559:2;10544:18;;10537:34;10491:2;10476:18;;10458:119::o;10582:184::-;10754:4;10742:17;;;;10724:36;;10712:2;10697:18;;10679:87::o;10771:128::-;;10842:1;10838:6;10835:1;10832:13;10829:2;;;10848:18;;:::i;:::-;-1:-1:-1;10884:9:1;;10819:80::o;10904:125::-;;10972:1;10969;10966:8;10963:2;;;10977:18;;:::i;:::-;-1:-1:-1;11014:9:1;;10953:76::o;11034:258::-;11106:1;11116:113;11130:6;11127:1;11124:13;11116:113;;;11206:11;;;11200:18;11187:11;;;11180:39;11152:2;11145:10;11116:113;;;11247:6;11244:1;11241:13;11238:2;;;11282:1;11273:6;11268:3;11264:16;11257:27;11238:2;;11087:205;;;:::o;11297:380::-;11382:1;11372:12;;11429:1;11419:12;;;11440:2;;11494:4;11486:6;11482:17;11472:27;;11440:2;11547;11539:6;11536:14;11516:18;11513:38;11510:2;;;11593:10;11588:3;11584:20;11581:1;11574:31;11628:4;11625:1;11618:15;11656:4;11653:1;11646:15;11510:2;;11352:325;;;:::o;11682:127::-;11743:10;11738:3;11734:20;11731:1;11724:31;11774:4;11771:1;11764:15;11798:4;11795:1;11788:15;11814:133;-1:-1:-1;;;;;11891:31:1;;11881:42;;11871:2;;11937:1;11934;11927:12

Swarm Source

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