ETH Price: $3,075.22 (-5.43%)

Token

FUCOIN (FU)
 

Overview

Max Total Supply

202,555,000 FU

Holders

171

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,160,836.321024756436106918 FU

Value
$0.00
0xb896c016d01180216e97464761e0ad956d1cf000
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:
FUCOIN

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 5 : FUCOIN.sol
// SPDX-License-Identifier: MIT
// contracts/FUCOIN.sol

pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract FUCOIN is ERC20 {
    uint256 public immutable MAX_SUPPLY;

    mapping(address => address) public referrer;

    mapping(address => bool) public holders;

    struct Reward {
        uint256 mintAmount;
        uint256 firstAmount;
        uint256 secondAmount;
    }
    Reward[] public rewards;

    event Referrer(address from, address to);

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor() ERC20("FUCOIN", "FU") {
        MAX_SUPPLY = 99_0000_0000 * 10 ** decimals();

        _mint(_msgSender(), 2_0000_0000 * 10 ** decimals());

        rewards.push(Reward(5_0000_0000 * 10 ** decimals(), 5000 * 10 ** decimals(), 10000 * 10 ** decimals()));
        rewards.push(Reward(6_0000_0000 * 10 ** decimals(), 2000 * 10 ** decimals(), 3000 * 10 ** decimals()));
        rewards.push(Reward(9_0000_0000 * 10 ** decimals(), 1000 * 10 ** decimals(), 2000 * 10 ** decimals()));
        rewards.push(Reward(8_0000_0000 * 10 ** decimals(), 500 * 10 ** decimals(), 1000 * 10 ** decimals()));
        rewards.push(Reward(9_0000_0000 * 10 ** decimals(), 200 * 10 ** decimals(), 300 * 10 ** decimals()));
        rewards.push(Reward(8_0000_0000 * 10 ** decimals(), 100 * 10 ** decimals(), 200 * 10 ** decimals()));
        rewards.push(Reward(9_0000_0000 * 10 ** decimals(), 50 * 10 ** decimals(), 100 * 10 ** decimals()));
        rewards.push(Reward(9_0000_0000 * 10 ** decimals(), 20 * 10 ** decimals(), 30 * 10 ** decimals()));
        rewards.push(Reward(9_0000_0000 * 10 ** decimals(), 10 * 10 ** decimals(), 20 * 10 ** decimals()));
        rewards.push(Reward(9_0000_0000 * 10 ** decimals(), 5 * 10 ** decimals(), 10 * 10 ** decimals()));
        rewards.push(Reward(9_0000_0000 * 10 ** decimals(), 2 * 10 ** decimals(), 3 * 10 ** decimals()));
        rewards.push(Reward(9_0000_0000 * 10 ** decimals(), 1 * 10 ** decimals(), 2 * 10 ** decimals()));
    }

    function _afterTokenTransfer(address from, address to, uint256) internal override {
        if (from != address(0)) {
            _reward(from, to);
        }

        holders[to] = true;
    }

    function _reward(address from, address to) internal {
        if (holders[to]) {
            return;
        }

        (uint256 firstAmount, uint256 secondAmount) = getReward();
        if (firstAmount > 0) {
            _mint(from, firstAmount);
        }

        if (secondAmount > 0 && referrer[from] != address(0)) {
            _mint(referrer[from], secondAmount);
        }

        referrer[to] = from;
        emit Referrer(from, to);
    }

    function getReward() public view returns (uint256 firstAmount, uint256 secondAmount) {
        uint256 mintAmount = 0;
        for (uint i = 0; i < rewards.length; i++) {
            mintAmount += rewards[i].mintAmount;
            if (totalSupply() < mintAmount) {
                firstAmount = rewards[i].firstAmount;
                secondAmount = rewards[i].secondAmount;
                break;
            }
        }
    }

    function _mint(address account, uint256 amount) internal override {
        if (totalSupply() + amount > MAX_SUPPLY) {
            return;
        }

        super._mint(account, amount);
    }
}

File 2 of 5 : ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";

/**
 * @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 {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead 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 Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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 virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + 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 virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(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 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This 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 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

File 3 of 5 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 4 of 5 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

File 5 of 5 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

    /**
     * @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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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.
     *
     * IMPORTANT: 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

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":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"Referrer","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":"MAX_SUPPLY","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":"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":[],"name":"getReward","outputs":[{"internalType":"uint256","name":"firstAmount","type":"uint256"},{"internalType":"uint256","name":"secondAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holders","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"","type":"address"}],"name":"referrer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"firstAmount","type":"uint256"},{"internalType":"uint256","name":"secondAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b5060405180604001604052806006815260200165232aa1a7a4a760d11b81525060405180604001604052806002815260200161465560f01b81525081600390816200005d919062000c83565b5060046200006c828262000c83565b5062000079915050601290565b6200008690600a62000e64565b620000979064024e16030062000e7c565b608052620000c333620000ad6012600a62000e64565b620000bd90630bebc20062000e7c565b620008a9565b60076040518060600160405280620000e0620008a460201b60201c565b620000ed90600a62000e64565b620000fd90631dcd650062000e7c565b8152602001620001106012600a62000e64565b6200011e9061138862000e7c565b8152602001620001316012600a62000e64565b6200013f9061271062000e7c565b905281546001808201845560009384526020938490208351600390930201918255928201519281019290925560409081015160029092019190915580516060810190915260079080620001956012600a62000e64565b620001a5906323c3460062000e7c565b8152602001620001b86012600a62000e64565b620001c6906107d062000e7c565b8152602001620001d96012600a62000e64565b620001e790610bb862000e7c565b9052815460018082018455600093845260209384902083516003909302019182559282015192810192909255604090810151600290920191909155805160608101909152600790806200023d6012600a62000e64565b6200024d906335a4e90062000e7c565b8152602001620002606012600a62000e64565b6200026e906103e862000e7c565b8152602001620002816012600a62000e64565b6200028f906107d062000e7c565b905281546001808201845560009384526020938490208351600390930201918255928201519281019290925560409081015160029092019190915580516060810190915260079080620002e56012600a62000e64565b620002f590632faf080062000e7c565b8152602001620003086012600a62000e64565b62000316906101f462000e7c565b8152602001620003296012600a62000e64565b62000337906103e862000e7c565b9052815460018082018455600093845260209384902083516003909302019182559282015192810192909255604090810151600290920191909155805160608101909152600790806200038d6012600a62000e64565b6200039d906335a4e90062000e7c565b8152602001620003b06012600a62000e64565b620003bd9060c862000e7c565b8152602001620003d06012600a62000e64565b620003de9061012c62000e7c565b905281546001808201845560009384526020938490208351600390930201918255928201519281019290925560409081015160029092019190915580516060810190915260079080620004346012600a62000e64565b6200044490632faf080062000e7c565b8152602001620004576012600a62000e64565b6200046490606462000e7c565b8152602001620004776012600a62000e64565b620004849060c862000e7c565b905281546001808201845560009384526020938490208351600390930201918255928201519281019290925560409081015160029092019190915580516060810190915260079080620004da6012600a62000e64565b620004ea906335a4e90062000e7c565b8152602001620004fd6012600a62000e64565b6200050a90603262000e7c565b81526020016200051d6012600a62000e64565b6200052a90606462000e7c565b905281546001808201845560009384526020938490208351600390930201918255928201519281019290925560409081015160029092019190915580516060810190915260079080620005806012600a62000e64565b62000590906335a4e90062000e7c565b8152602001620005a36012600a62000e64565b620005b090601462000e7c565b8152602001620005c36012600a62000e64565b620005d090601e62000e7c565b905281546001808201845560009384526020938490208351600390930201918255928201519281019290925560409081015160029092019190915580516060810190915260079080620006266012600a62000e64565b62000636906335a4e90062000e7c565b8152602001620006496012600a62000e64565b6200065690600a62000e7c565b8152602001620006696012600a62000e64565b6200067690601462000e7c565b905281546001808201845560009384526020938490208351600390930201918255928201519281019290925560409081015160029092019190915580516060810190915260079080620006cc6012600a62000e64565b620006dc906335a4e90062000e7c565b8152602001620006ef6012600a62000e64565b620006fc90600562000e7c565b81526020016200070f6012600a62000e64565b6200071c90600a62000e7c565b905281546001808201845560009384526020938490208351600390930201918255928201519281019290925560409081015160029092019190915580516060810190915260079080620007726012600a62000e64565b62000782906335a4e90062000e7c565b8152602001620007956012600a62000e64565b620007a290600262000e7c565b8152602001620007b56012600a62000e64565b620007c290600362000e7c565b905281546001808201845560009384526020938490208351600390930201918255928201519281019290925560409081015160029092019190915580516060810190915260079080620008186012600a62000e64565b62000828906335a4e90062000e7c565b81526020016200083b6012600a62000e64565b6200084890600162000e7c565b81526020016200085b6012600a62000e64565b6200086890600262000e7c565b90528154600181810184556000938452602093849020835160039093020191825592820151928101929092556040015160029091015562000ede565b601290565b60805181620008b760025490565b620008c3919062000e96565b1115620008ce575050565b620008e58282620008e960201b620005781760201c565b5050565b6001600160a01b038216620009445760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000958919062000e96565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620008e560008383620009be565b505050565b6001600160a01b03831615620009da57620009da838362000a00565b506001600160a01b03166000908152600660205260409020805460ff1916600117905550565b6001600160a01b03811660009081526006602052604090205460ff161562000a26575050565b60008062000a3362000b0f565b9092509050811562000a4b5762000a4b8483620008a9565b60008111801562000a7557506001600160a01b038481166000908152600560205260409020541615155b1562000aa2576001600160a01b0380851660009081526005602052604090205462000aa2911682620008a9565b6001600160a01b0383811660008181526005602090815260409182902080546001600160a01b031916948916948517905581519384528301919091527f5ee972e1ae69c68f5fb1501cae5739617c2efc138ae5a8096c02350ea683832f910160405180910390a150505050565b6000806000805b60075481101562000bd9576007818154811062000b375762000b3762000eac565b9060005260206000209060030201600001548262000b56919062000e96565b91508162000b6360025490565b101562000bc4576007818154811062000b805762000b8062000eac565b90600052602060002090600302016001015493506007818154811062000baa5762000baa62000eac565b906000526020600020906003020160020154925062000bd9565b8062000bd08162000ec2565b91505062000b16565b50509091565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000c0a57607f821691505b60208210810362000c2b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620009b957600081815260208120601f850160051c8101602086101562000c5a5750805b601f850160051c820191505b8181101562000c7b5782815560010162000c66565b505050505050565b81516001600160401b0381111562000c9f5762000c9f62000bdf565b62000cb78162000cb0845462000bf5565b8462000c31565b602080601f83116001811462000cef576000841562000cd65750858301515b600019600386901b1c1916600185901b17855562000c7b565b600085815260208120601f198616915b8281101562000d205788860151825594840194600190910190840162000cff565b508582101562000d3f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000da657816000190482111562000d8a5762000d8a62000d4f565b8085161562000d9857918102915b93841c939080029062000d6a565b509250929050565b60008262000dbf5750600162000e5e565b8162000dce5750600062000e5e565b816001811462000de7576002811462000df25762000e12565b600191505062000e5e565b60ff84111562000e065762000e0662000d4f565b50506001821b62000e5e565b5060208310610133831016604e8410600b841016171562000e37575081810a62000e5e565b62000e43838362000d65565b806000190482111562000e5a5762000e5a62000d4f565b0290505b92915050565b600062000e7560ff84168362000dae565b9392505050565b808202811582820484141762000e5e5762000e5e62000d4f565b8082018082111562000e5e5762000e5e62000d4f565b634e487b7160e01b600052603260045260246000fd5b60006001820162000ed75762000ed762000d4f565b5060010190565b608051610d1a62000f01600039600081816101e30152610acd0152610d1a6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80633950935111610097578063a457c2d711610066578063a457c2d714610266578063a9059cbb14610279578063dd62ed3e1461028c578063f301af421461029f57600080fd5b806339509351146102055780633d18b9121461021857806370a082311461023557806395d89b411461025e57600080fd5b806323b872dd116100d357806323b872dd1461017b5780632cf003c21461018e578063313ce567146101cf57806332cb6b0c146101de57600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806318a5bbdc14610158575b600080fd5b61010d6102cd565b60405161011a9190610b14565b60405180910390f35b610136610131366004610b7e565b61035f565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610ba8565b60066020526000908152604090205460ff1681565b610136610189366004610bca565b610379565b6101b761019c366004610ba8565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161011a565b6040516012815260200161011a565b61014a7f000000000000000000000000000000000000000000000000000000000000000081565b610136610213366004610b7e565b61039d565b6102206103bf565b6040805192835260208301919091520161011a565b61014a610243366004610ba8565b6001600160a01b031660009081526020819052604090205490565b61010d61047d565b610136610274366004610b7e565b61048c565b610136610287366004610b7e565b61050c565b61014a61029a366004610c06565b61051a565b6102b26102ad366004610c39565b610545565b6040805193845260208401929092529082015260600161011a565b6060600380546102dc90610c52565b80601f016020809104026020016040519081016040528092919081815260200182805461030890610c52565b80156103555780601f1061032a57610100808354040283529160200191610355565b820191906000526020600020905b81548152906001019060200180831161033857829003601f168201915b5050505050905090565b60003361036d818585610643565b60019150505b92915050565b600033610387858285610767565b6103928585856107e1565b506001949350505050565b60003361036d8185856103b0838361051a565b6103ba9190610ca2565b610643565b6000806000805b60075481101561047757600781815481106103e3576103e3610cb5565b906000526020600020906003020160000154826104009190610ca2565b91508161040c60025490565b1015610465576007818154811061042557610425610cb5565b90600052602060002090600302016001015493506007818154811061044c5761044c610cb5565b9060005260206000209060030201600201549250610477565b8061046f81610ccb565b9150506103c6565b50509091565b6060600480546102dc90610c52565b6000338161049a828661051a565b9050838110156104ff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6103928286868403610643565b60003361036d8185856107e1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6007818154811061055557600080fd5b600091825260209091206003909102018054600182015460029092015490925083565b6001600160a01b0382166105ce5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104f6565b80600260008282546105e09190610ca2565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361063f60008383610987565b5050565b6001600160a01b0383166106a55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f6565b6001600160a01b0382166107065760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610773848461051a565b905060001981146107db57818110156107ce5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104f6565b6107db8484848403610643565b50505050565b6001600160a01b0383166108455760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f6565b6001600160a01b0382166108a75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f6565b6001600160a01b0383166000908152602081905260409020548181101561091f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104f6565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36107db8484845b6001600160a01b038316156109a0576109a083836109c6565b506001600160a01b03166000908152600660205260409020805460ff1916600117905550565b6001600160a01b03811660009081526006602052604090205460ff16156109eb575050565b6000806109f66103bf565b90925090508115610a0b57610a0b8483610acb565b600081118015610a3457506001600160a01b038481166000908152600560205260409020541615155b15610a5e576001600160a01b03808516600090815260056020526040902054610a5e911682610acb565b6001600160a01b0383811660008181526005602090815260409182902080546001600160a01b031916948916948517905581519384528301919091527f5ee972e1ae69c68f5fb1501cae5739617c2efc138ae5a8096c02350ea683832f910160405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000081610af660025490565b610b009190610ca2565b1115610b0a575050565b61063f8282610578565b600060208083528351808285015260005b81811015610b4157858101830151858201604001528201610b25565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610b7957600080fd5b919050565b60008060408385031215610b9157600080fd5b610b9a83610b62565b946020939093013593505050565b600060208284031215610bba57600080fd5b610bc382610b62565b9392505050565b600080600060608486031215610bdf57600080fd5b610be884610b62565b9250610bf660208501610b62565b9150604084013590509250925092565b60008060408385031215610c1957600080fd5b610c2283610b62565b9150610c3060208401610b62565b90509250929050565b600060208284031215610c4b57600080fd5b5035919050565b600181811c90821680610c6657607f821691505b602082108103610c8657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561037357610373610c8c565b634e487b7160e01b600052603260045260246000fd5b600060018201610cdd57610cdd610c8c565b506001019056fea2646970667358221220a3bbbada251200057822c551b1cb3134b06bcb2d14361e30b676b5f291df8a9c64736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c80633950935111610097578063a457c2d711610066578063a457c2d714610266578063a9059cbb14610279578063dd62ed3e1461028c578063f301af421461029f57600080fd5b806339509351146102055780633d18b9121461021857806370a082311461023557806395d89b411461025e57600080fd5b806323b872dd116100d357806323b872dd1461017b5780632cf003c21461018e578063313ce567146101cf57806332cb6b0c146101de57600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806318a5bbdc14610158575b600080fd5b61010d6102cd565b60405161011a9190610b14565b60405180910390f35b610136610131366004610b7e565b61035f565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610ba8565b60066020526000908152604090205460ff1681565b610136610189366004610bca565b610379565b6101b761019c366004610ba8565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161011a565b6040516012815260200161011a565b61014a7f00000000000000000000000000000000000000001ffd168b615cf58e2c00000081565b610136610213366004610b7e565b61039d565b6102206103bf565b6040805192835260208301919091520161011a565b61014a610243366004610ba8565b6001600160a01b031660009081526020819052604090205490565b61010d61047d565b610136610274366004610b7e565b61048c565b610136610287366004610b7e565b61050c565b61014a61029a366004610c06565b61051a565b6102b26102ad366004610c39565b610545565b6040805193845260208401929092529082015260600161011a565b6060600380546102dc90610c52565b80601f016020809104026020016040519081016040528092919081815260200182805461030890610c52565b80156103555780601f1061032a57610100808354040283529160200191610355565b820191906000526020600020905b81548152906001019060200180831161033857829003601f168201915b5050505050905090565b60003361036d818585610643565b60019150505b92915050565b600033610387858285610767565b6103928585856107e1565b506001949350505050565b60003361036d8185856103b0838361051a565b6103ba9190610ca2565b610643565b6000806000805b60075481101561047757600781815481106103e3576103e3610cb5565b906000526020600020906003020160000154826104009190610ca2565b91508161040c60025490565b1015610465576007818154811061042557610425610cb5565b90600052602060002090600302016001015493506007818154811061044c5761044c610cb5565b9060005260206000209060030201600201549250610477565b8061046f81610ccb565b9150506103c6565b50509091565b6060600480546102dc90610c52565b6000338161049a828661051a565b9050838110156104ff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6103928286868403610643565b60003361036d8185856107e1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6007818154811061055557600080fd5b600091825260209091206003909102018054600182015460029092015490925083565b6001600160a01b0382166105ce5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104f6565b80600260008282546105e09190610ca2565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361063f60008383610987565b5050565b6001600160a01b0383166106a55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f6565b6001600160a01b0382166107065760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610773848461051a565b905060001981146107db57818110156107ce5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104f6565b6107db8484848403610643565b50505050565b6001600160a01b0383166108455760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f6565b6001600160a01b0382166108a75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f6565b6001600160a01b0383166000908152602081905260409020548181101561091f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104f6565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36107db8484845b6001600160a01b038316156109a0576109a083836109c6565b506001600160a01b03166000908152600660205260409020805460ff1916600117905550565b6001600160a01b03811660009081526006602052604090205460ff16156109eb575050565b6000806109f66103bf565b90925090508115610a0b57610a0b8483610acb565b600081118015610a3457506001600160a01b038481166000908152600560205260409020541615155b15610a5e576001600160a01b03808516600090815260056020526040902054610a5e911682610acb565b6001600160a01b0383811660008181526005602090815260409182902080546001600160a01b031916948916948517905581519384528301919091527f5ee972e1ae69c68f5fb1501cae5739617c2efc138ae5a8096c02350ea683832f910160405180910390a150505050565b7f00000000000000000000000000000000000000001ffd168b615cf58e2c00000081610af660025490565b610b009190610ca2565b1115610b0a575050565b61063f8282610578565b600060208083528351808285015260005b81811015610b4157858101830151858201604001528201610b25565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610b7957600080fd5b919050565b60008060408385031215610b9157600080fd5b610b9a83610b62565b946020939093013593505050565b600060208284031215610bba57600080fd5b610bc382610b62565b9392505050565b600080600060608486031215610bdf57600080fd5b610be884610b62565b9250610bf660208501610b62565b9150604084013590509250925092565b60008060408385031215610c1957600080fd5b610c2283610b62565b9150610c3060208401610b62565b90509250929050565b600060208284031215610c4b57600080fd5b5035919050565b600181811c90821680610c6657607f821691505b602082108103610c8657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561037357610373610c8c565b634e487b7160e01b600052603260045260246000fd5b600060018201610cdd57610cdd610c8c565b506001019056fea2646970667358221220a3bbbada251200057822c551b1cb3134b06bcb2d14361e30b676b5f291df8a9c64736f6c63430008110033

Deployed Bytecode Sourcemap

146:3383:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:5;;1162:22;1144:41;;1132:2;1117:18;4444:197:0;1004:187:5;3255:106:0;3342:12;;3255:106;;;1342:25:5;;;1330:2;1315:18;3255:106:0;1196:177:5;274:39:4;;;;;;:::i;:::-;;;;;;;;;;;;;;;;5203:256:0;;;;;;:::i;:::-;;:::i;222:43:4:-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;222:43:4;;;;;;-1:-1:-1;;;;;2066:32:5;;;2048:51;;2036:2;2021:18;222:43:4;1902:203:5;3104:91:0;;;3186:2;2252:36:5;;2240:2;2225:18;3104:91:0;2110:184:5;178:35:4;;;;;5854:234:0;;;;;;:::i;:::-;;:::i;2881:438:4:-;;;:::i;:::-;;;;2473:25:5;;;2529:2;2514:18;;2507:34;;;;2446:18;2881:438:4;2299:248:5;3419:125:0;;;;;;:::i;:::-;-1:-1:-1;;;;;3519:18:0;3493:7;3519:18;;;;;;;;;;;;3419:125;2369:102;;;:::i;6575:427::-;;;;;;:::i;:::-;;:::i;3740:189::-;;;;;;:::i;:::-;;:::i;3987:149::-;;;;;;:::i;:::-;;:::i;440:23:4:-;;;;;;:::i;:::-;;:::i;:::-;;;;3204:25:5;;;3260:2;3245:18;;3238:34;;;;3288:18;;;3281:34;3192:2;3177:18;440:23:4;3002:319:5;2158:98:0;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;719:10:3;4581:32:0;719:10:3;4597:7:0;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;5203:256::-;5300:4;719:10:3;5356:38:0;5372:4;719:10:3;5387:6:0;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;-1:-1:-1;5448:4:0;;5203:256;-1:-1:-1;;;;5203:256:0:o;5854:234::-;5942:4;719:10:3;5996:64:0;719:10:3;6012:7:0;6049:10;6021:25;719:10:3;6012:7:0;6021:9;:25::i;:::-;:38;;;;:::i;:::-;5996:8;:64::i;2881:438:4:-;2923:19;2944:20;2977:18;3015:6;3010:302;3031:7;:14;3027:18;;3010:302;;;3081:7;3089:1;3081:10;;;;;;;;:::i;:::-;;;;;;;;;;;:21;;;3067:35;;;;;:::i;:::-;;;3137:10;3121:13;3342:12:0;;;3255:106;3121:13:4;:26;3117:184;;;3182:7;3190:1;3182:10;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;;3168:36;;3238:7;3246:1;3238:10;;;;;;;;:::i;:::-;;;;;;;;;;;:23;;;3223:38;;3280:5;;3117:184;3047:3;;;;:::i;:::-;;;;3010:302;;;;2966:353;2881:438;;:::o;2369:102:0:-;2425:13;2457:7;2450:14;;;;;:::i;6575:427::-;6668:4;719:10:3;6668:4:0;6749:25;719:10:3;6766:7:0;6749:9;:25::i;:::-;6722:52;;6812:15;6792:16;:35;;6784:85;;;;-1:-1:-1;;;6784:85:0;;4447:2:5;6784:85:0;;;4429:21:5;4486:2;4466:18;;;4459:30;4525:34;4505:18;;;4498:62;-1:-1:-1;;;4576:18:5;;;4569:35;4621:19;;6784:85:0;;;;;;;;;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;3740:189::-;3819:4;719:10:3;3873:28:0;719:10:3;3890:2:0;3894:6;3873:9;:28::i;3987:149::-;-1:-1:-1;;;;;4102:18:0;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149::o;440:23:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;440:23:4;:::o;8520:535:0:-;-1:-1:-1;;;;;8603:21:0;;8595:65;;;;-1:-1:-1;;;8595:65:0;;4853:2:5;8595:65:0;;;4835:21:5;4892:2;4872:18;;;4865:30;4931:33;4911:18;;;4904:61;4982:18;;8595:65:0;4651:355:5;8595:65:0;8747:6;8731:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8899:18:0;;:9;:18;;;;;;;;;;;:28;;;;;;8952:37;1342:25:5;;;8952:37:0;;1315:18:5;8952:37:0;;;;;;;9000:48;9028:1;9032:7;9041:6;9000:19;:48::i;:::-;8520:535;;:::o;10457:340::-;-1:-1:-1;;;;;10558:19:0;;10550:68;;;;-1:-1:-1;;;10550:68:0;;5213:2:5;10550:68:0;;;5195:21:5;5252:2;5232:18;;;5225:30;5291:34;5271:18;;;5264:62;-1:-1:-1;;;5342:18:5;;;5335:34;5386:19;;10550:68:0;5011:400:5;10550:68:0;-1:-1:-1;;;;;10636:21:0;;10628:68;;;;-1:-1:-1;;;10628:68:0;;5618:2:5;10628:68:0;;;5600:21:5;5657:2;5637:18;;;5630:30;5696:34;5676:18;;;5669:62;-1:-1:-1;;;5747:18:5;;;5740:32;5789:19;;10628:68:0;5416:398:5;10628:68:0;-1:-1:-1;;;;;10707:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1342:25:5;;;10758:32:0;;1315:18:5;10758:32:0;;;;;;;10457:340;;;:::o;11078:411::-;11178:24;11205:25;11215:5;11222:7;11205:9;:25::i;:::-;11178:52;;-1:-1:-1;;11244:16:0;:37;11240:243;;11325:6;11305:16;:26;;11297:68;;;;-1:-1:-1;;;11297:68:0;;6021:2:5;11297:68:0;;;6003:21:5;6060:2;6040:18;;;6033:30;6099:31;6079:18;;;6072:59;6148:18;;11297:68:0;5819:353:5;11297:68:0;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11168:321;11078:411;;;:::o;7456:788::-;-1:-1:-1;;;;;7552:18:0;;7544:68;;;;-1:-1:-1;;;7544:68:0;;6379:2:5;7544:68:0;;;6361:21:5;6418:2;6398:18;;;6391:30;6457:34;6437:18;;;6430:62;-1:-1:-1;;;6508:18:5;;;6501:35;6553:19;;7544:68:0;6177:401:5;7544:68:0;-1:-1:-1;;;;;7630:16:0;;7622:64;;;;-1:-1:-1;;;7622:64:0;;6785:2:5;7622:64:0;;;6767:21:5;6824:2;6804:18;;;6797:30;6863:34;6843:18;;;6836:62;-1:-1:-1;;;6914:18:5;;;6907:33;6957:19;;7622:64:0;6583:399:5;7622:64:0;-1:-1:-1;;;;;7768:15:0;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;-1:-1:-1;;;7793:72:0;;7189:2:5;7793:72:0;;;7171:21:5;7228:2;7208:18;;;7201:30;7267:34;7247:18;;;7240:62;-1:-1:-1;;;7318:18:5;;;7311:36;7364:19;;7793:72:0;6987:402:5;7793:72:0;-1:-1:-1;;;;;7899:15:0;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1342:25:5;;;8114:13:0;;8163:26;;1315:18:5;8163:26:0;;;;;;;8200:37;8220:4;8226:2;8230:6;2200:199:4;-1:-1:-1;;;;;2297:18:4;;;2293:68;;2332:17;2340:4;2346:2;2332:7;:17::i;:::-;-1:-1:-1;;;;;;2373:11:4;;;;;:7;:11;;;;;:18;;-1:-1:-1;;2373:18:4;2387:4;2373:18;;;-1:-1:-1;2200:199:4:o;2407:466::-;-1:-1:-1;;;;;2474:11:4;;;;;;:7;:11;;;;;;;;2470:50;;;2407:466;;:::o;2470:50::-;2533:19;2554:20;2578:11;:9;:11::i;:::-;2532:57;;-1:-1:-1;2532:57:4;-1:-1:-1;2604:15:4;;2600:72;;2636:24;2642:4;2648:11;2636:5;:24::i;:::-;2703:1;2688:12;:16;:48;;;;-1:-1:-1;;;;;;2708:14:4;;;2734:1;2708:14;;;:8;:14;;;;;;;:28;;2688:48;2684:116;;;-1:-1:-1;;;;;2759:14:4;;;;;;;:8;:14;;;;;;2753:35;;2759:14;2775:12;2753:5;:35::i;:::-;-1:-1:-1;;;;;2812:12:4;;;;;;;:8;:12;;;;;;;;;:19;;-1:-1:-1;;;;;;2812:19:4;;;;;;;;;2847:18;;7606:34:5;;;7656:18;;7649:43;;;;2847:18:4;;7541::5;2847::4;;;;;;;2459:414;;2407:466;;:::o;3327:199::-;3433:10;3424:6;3408:13;3342:12:0;;;3255:106;3408:13:4;:22;;;;:::i;:::-;:35;3404:74;;;3327:199;;:::o;3404:74::-;3490:28;3502:7;3511:6;3490:11;:28::i;14:548:5:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:5;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:5:o;1378:186::-;1437:6;1490:2;1478:9;1469:7;1465:23;1461:32;1458:52;;;1506:1;1503;1496:12;1458:52;1529:29;1548:9;1529:29;:::i;:::-;1519:39;1378:186;-1:-1:-1;;;1378:186:5:o;1569:328::-;1646:6;1654;1662;1715:2;1703:9;1694:7;1690:23;1686:32;1683:52;;;1731:1;1728;1721:12;1683:52;1754:29;1773:9;1754:29;:::i;:::-;1744:39;;1802:38;1836:2;1825:9;1821:18;1802:38;:::i;:::-;1792:48;;1887:2;1876:9;1872:18;1859:32;1849:42;;1569:328;;;;;:::o;2552:260::-;2620:6;2628;2681:2;2669:9;2660:7;2656:23;2652:32;2649:52;;;2697:1;2694;2687:12;2649:52;2720:29;2739:9;2720:29;:::i;:::-;2710:39;;2768:38;2802:2;2791:9;2787:18;2768:38;:::i;:::-;2758:48;;2552:260;;;;;:::o;2817:180::-;2876:6;2929:2;2917:9;2908:7;2904:23;2900:32;2897:52;;;2945:1;2942;2935:12;2897:52;-1:-1:-1;2968:23:5;;2817:180;-1:-1:-1;2817:180:5:o;3326:380::-;3405:1;3401:12;;;;3448;;;3469:61;;3523:4;3515:6;3511:17;3501:27;;3469:61;3576:2;3568:6;3565:14;3545:18;3542:38;3539:161;;3622:10;3617:3;3613:20;3610:1;3603:31;3657:4;3654:1;3647:15;3685:4;3682:1;3675:15;3539:161;;3326:380;;;:::o;3711:127::-;3772:10;3767:3;3763:20;3760:1;3753:31;3803:4;3800:1;3793:15;3827:4;3824:1;3817:15;3843:125;3908:9;;;3929:10;;;3926:36;;;3942:18;;:::i;3973:127::-;4034:10;4029:3;4025:20;4022:1;4015:31;4065:4;4062:1;4055:15;4089:4;4086:1;4079:15;4105:135;4144:3;4165:17;;;4162:43;;4185:18;;:::i;:::-;-1:-1:-1;4232:1:5;4221:13;;4105:135::o

Swarm Source

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