Sepolia Testnet

Token

OCCoin (OCC)
ERC-20 Source Code

Overview

Max Total Supply

180,000,000,000,056 OCC

Holders

10

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7 OCC
0x0c06b6d4ec451987e8c0b772ffcf7f080c46447a
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:
OCCoin

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-01
*/

// SPDX-License-Identifier: MIT
// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.9/contracts/utils/Context.sol


// OpenZeppelin Contracts (last updated v4.9.4) (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;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.9/contracts/token/ERC20/IERC20.sol


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

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.9/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;


/**
 * @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: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.9/contracts/token/ERC20/ERC20.sol


// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;




/**
 * @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].
 *
 * 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}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * 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 value {ERC20} uses, unless this function is
     * 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: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.9/contracts/token/ERC20/extensions/ERC20Burnable.sol


// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)

pragma solidity ^0.8.0;



/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.9/contracts/token/ERC20/extensions/ERC20Capped.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/ERC20Capped.sol)

pragma solidity ^0.8.0;


/**
 * @dev Extension of {ERC20} that adds a cap to the supply of tokens.
 */
abstract contract ERC20Capped is ERC20 {
    uint256 private immutable _cap;

    /**
     * @dev Sets the value of the `cap`. This value is immutable, it can only be
     * set once during construction.
     */
    constructor(uint256 cap_) {
        require(cap_ > 0, "ERC20Capped: cap is 0");
        _cap = cap_;
    }

    /**
     * @dev Returns the cap on the token's total supply.
     */
    function cap() public view virtual returns (uint256) {
        return _cap;
    }

    /**
     * @dev See {ERC20-_mint}.
     */
    function _mint(address account, uint256 amount) internal virtual override {
        require(ERC20.totalSupply() + amount <= cap(), "ERC20Capped: cap exceeded");
        super._mint(account, amount);
    }
}

// File: OCCoin.sol



pragma solidity ^0.8.17;




contract OCCoin is ERC20Capped, ERC20Burnable {
    address payable public owner;
    uint256 public blockReward;

    constructor(uint256 cap, uint256 reward) ERC20("OCCoin", "OCC") ERC20Capped(cap * (10 ** decimals())) {
        owner = payable(msg.sender);
        _mint(owner, 180000000000000 * (10 ** decimals()));
        blockReward = reward * (10 ** decimals());
    }

    function _mint(address account, uint256 amount) internal virtual override(ERC20Capped, ERC20) {
        require(ERC20.totalSupply() + amount <= cap(), "ERC20Capped: cap exceeded");
        super._mint(account, amount);
    }

    function _mintMinerReward() internal {
        _mint(block.coinbase, blockReward);
    }

    function _beforeTokenTransfer(address from, address to, uint256 value) internal virtual override {
        if(from != address(0) && to != block.coinbase && block.coinbase != address(0)){
            _mintMinerReward();
        }
        super._beforeTokenTransfer(from, to, value);
    }

    function setReward(uint256 reward) public onlyOwner {
        blockReward = reward * (10 ** decimals());
    }

    function destroy() public onlyOwner {
        selfdestruct(owner);
    }

    modifier onlyOwner {
        require (msg.sender == owner, "only the owner can call this function!");
        _;
    }
}

Contract ABI

API
[{"inputs":[{"internalType":"uint256","name":"cap","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"}],"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":"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":"blockReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cap","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":"destroy","outputs":[],"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":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"setReward","outputs":[],"stateMutability":"nonpayable","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"}]

60a06040523480156200001157600080fd5b5060405162002c9638038062002c96833981810160405281019062000037919062000605565b620000476200022160201b60201c565b600a620000559190620007dc565b826200006291906200082d565b6040518060400160405280600681526020017f4f43436f696e00000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4f434300000000000000000000000000000000000000000000000000000000008152508160039081620000df919062000ae8565b508060049081620000f1919062000ae8565b505050600081116200013a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001319062000c30565b60405180910390fd5b80608081815250505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001e8600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620001bb6200022160201b60201c565b600a620001c99190620007dc565b65a3b5840f4000620001dc91906200082d565b6200022a60201b60201c565b620001f86200022160201b60201c565b600a620002069190620007dc565b816200021391906200082d565b600681905550505062000d9f565b60006012905090565b6200023a620002bb60201b60201c565b8162000250620002c560201b620004561760201c565b6200025c919062000c52565b1115620002a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002979062000cdd565b60405180910390fd5b620002b78282620002cf60201b620008cf1760201c565b5050565b6000608051905090565b6000600254905090565b620002df620002bb60201b60201c565b81620002f5620002c560201b620004561760201c565b62000301919062000c52565b111562000345576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200033c9062000cdd565b60405180910390fd5b6200035c82826200036060201b620009391760201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620003d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003c99062000d4f565b60405180910390fd5b620003e660008383620004cd60201b60201c565b8060026000828254620003fa919062000c52565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004ad919062000d82565b60405180910390a3620004c960008383620005a560201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156200053757504173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015620005715750600073ffffffffffffffffffffffffffffffffffffffff164173ffffffffffffffffffffffffffffffffffffffff1614155b15620005885762000587620005aa60201b60201c565b5b620005a0838383620005c060201b62000a8f1760201c565b505050565b505050565b620005be416006546200022a60201b60201c565b565b505050565b600080fd5b6000819050919050565b620005df81620005ca565b8114620005eb57600080fd5b50565b600081519050620005ff81620005d4565b92915050565b600080604083850312156200061f576200061e620005c5565b5b60006200062f85828601620005ee565b92505060206200064285828601620005ee565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006da57808604811115620006b257620006b16200064c565b5b6001851615620006c25780820291505b8081029050620006d2856200067b565b945062000692565b94509492505050565b600082620006f55760019050620007c8565b81620007055760009050620007c8565b81600181146200071e576002811462000729576200075f565b6001915050620007c8565b60ff8411156200073e576200073d6200064c565b5b8360020a9150848211156200075857620007576200064c565b5b50620007c8565b5060208310610133831016604e8410600b8410161715620007995782820a9050838111156200079357620007926200064c565b5b620007c8565b620007a8848484600162000688565b92509050818404811115620007c257620007c16200064c565b5b81810290505b9392505050565b600060ff82169050919050565b6000620007e982620005ca565b9150620007f683620007cf565b9250620008257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006e3565b905092915050565b60006200083a82620005ca565b91506200084783620005ca565b92508282026200085781620005ca565b915082820484148315176200087157620008706200064c565b5b5092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008fa57607f821691505b60208210810362000910576200090f620008b2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200097a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200093b565b6200098686836200093b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620009c9620009c3620009bd84620005ca565b6200099e565b620005ca565b9050919050565b6000819050919050565b620009e583620009a8565b620009fd620009f482620009d0565b84845462000948565b825550505050565b600090565b62000a1462000a05565b62000a21818484620009da565b505050565b5b8181101562000a495762000a3d60008262000a0a565b60018101905062000a27565b5050565b601f82111562000a985762000a628162000916565b62000a6d846200092b565b8101602085101562000a7d578190505b62000a9562000a8c856200092b565b83018262000a26565b50505b505050565b600082821c905092915050565b600062000abd6000198460080262000a9d565b1980831691505092915050565b600062000ad8838362000aaa565b9150826002028217905092915050565b62000af38262000878565b67ffffffffffffffff81111562000b0f5762000b0e62000883565b5b62000b1b8254620008e1565b62000b2882828562000a4d565b600060209050601f83116001811462000b60576000841562000b4b578287015190505b62000b57858262000aca565b86555062000bc7565b601f19841662000b708662000916565b60005b8281101562000b9a5784890151825560018201915060208501945060208101905062000b73565b8683101562000bba578489015162000bb6601f89168262000aaa565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332304361707065643a2063617020697320300000000000000000000000600082015250565b600062000c1860158362000bcf565b915062000c258262000be0565b602082019050919050565b6000602082019050818103600083015262000c4b8162000c09565b9050919050565b600062000c5f82620005ca565b915062000c6c83620005ca565b925082820190508082111562000c875762000c866200064c565b5b92915050565b7f45524332304361707065643a2063617020657863656564656400000000000000600082015250565b600062000cc560198362000bcf565b915062000cd28262000c8d565b602082019050919050565b6000602082019050818103600083015262000cf88162000cb6565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d37601f8362000bcf565b915062000d448262000cff565b602082019050919050565b6000602082019050818103600083015262000d6a8162000d28565b9050919050565b62000d7c81620005ca565b82525050565b600060208201905062000d99600083018462000d71565b92915050565b608051611edb62000dbb60003960006105540152611edb6000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806342966c68116100a25780638da5cb5b116100715780638da5cb5b146102cf57806395d89b41146102ed578063a457c2d71461030b578063a9059cbb1461033b578063dd62ed3e1461036b57610116565b806342966c681461025d57806370a082311461027957806379cc6790146102a957806383197ef0146102c557610116565b806323b872dd116100e957806323b872dd146101a5578063293be456146101d5578063313ce567146101f1578063355274ea1461020f578063395093511461022d57610116565b806306fdde031461011b578063095ea7b3146101395780630ac168a11461016957806318160ddd14610187575b600080fd5b61012361039b565b6040516101309190611301565b60405180910390f35b610153600480360381019061014e91906113bc565b61042d565b6040516101609190611417565b60405180910390f35b610171610450565b60405161017e9190611441565b60405180910390f35b61018f610456565b60405161019c9190611441565b60405180910390f35b6101bf60048036038101906101ba919061145c565b610460565b6040516101cc9190611417565b60405180910390f35b6101ef60048036038101906101ea91906114af565b61048f565b005b6101f9610547565b60405161020691906114f8565b60405180910390f35b610217610550565b6040516102249190611441565b60405180910390f35b610247600480360381019061024291906113bc565b610578565b6040516102549190611417565b60405180910390f35b610277600480360381019061027291906114af565b6105af565b005b610293600480360381019061028e9190611513565b6105c3565b6040516102a09190611441565b60405180910390f35b6102c360048036038101906102be91906113bc565b61060b565b005b6102cd61062b565b005b6102d76106f6565b6040516102e49190611561565b60405180910390f35b6102f561071c565b6040516103029190611301565b60405180910390f35b610325600480360381019061032091906113bc565b6107ae565b6040516103329190611417565b60405180910390f35b610355600480360381019061035091906113bc565b610825565b6040516103629190611417565b60405180910390f35b6103856004803603810190610380919061157c565b610848565b6040516103929190611441565b60405180910390f35b6060600380546103aa906115eb565b80601f01602080910402602001604051908101604052809291908181526020018280546103d6906115eb565b80156104235780601f106103f857610100808354040283529160200191610423565b820191906000526020600020905b81548152906001019060200180831161040657829003601f168201915b5050505050905090565b600080610438610a94565b9050610445818585610a9c565b600191505092915050565b60065481565b6000600254905090565b60008061046b610a94565b9050610478858285610c65565b610483858585610cf1565b60019150509392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461051f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105169061168e565b60405180910390fd5b610527610547565b600a6105339190611810565b8161053e919061185b565b60068190555050565b60006012905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b600080610583610a94565b90506105a48185856105958589610848565b61059f919061189d565b610a9c565b600191505092915050565b6105c06105ba610a94565b82610f67565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61061d82610617610a94565b83610c65565b6106278282610f67565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b29061168e565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461072b906115eb565b80601f0160208091040260200160405190810160405280929190818152602001828054610757906115eb565b80156107a45780601f10610779576101008083540402835291602001916107a4565b820191906000526020600020905b81548152906001019060200180831161078757829003601f168201915b5050505050905090565b6000806107b9610a94565b905060006107c78286610848565b90508381101561080c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080390611943565b60405180910390fd5b6108198286868403610a9c565b60019250505092915050565b600080610830610a94565b905061083d818585610cf1565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6108d7610550565b816108e0610456565b6108ea919061189d565b111561092b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610922906119af565b60405180910390fd5b6109358282610939565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099f90611a1b565b60405180910390fd5b6109b460008383611134565b80600260008282546109c6919061189d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a779190611441565b60405180910390a3610a8b600083836111f4565b5050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0290611aad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7190611b3f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c589190611441565b60405180910390a3505050565b6000610c718484610848565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490611bab565b60405180910390fd5b610cea8484848403610a9c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5790611c3d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc690611ccf565b60405180910390fd5b610dda838383611134565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5790611d61565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4e9190611441565b60405180910390a3610f618484846111f4565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd90611df3565b60405180910390fd5b610fe282600083611134565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90611e85565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161111b9190611441565b60405180910390a361112f836000846111f4565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561119d57504173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156111d65750600073ffffffffffffffffffffffffffffffffffffffff164173ffffffffffffffffffffffffffffffffffffffff1614155b156111e4576111e36111f9565b5b6111ef838383610a8f565b505050565b505050565b61120541600654611207565b565b61120f610550565b81611218610456565b611222919061189d565b1115611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a906119af565b60405180910390fd5b61126d82826108cf565b5050565b600081519050919050565b600082825260208201905092915050565b60005b838110156112ab578082015181840152602081019050611290565b60008484015250505050565b6000601f19601f8301169050919050565b60006112d382611271565b6112dd818561127c565b93506112ed81856020860161128d565b6112f6816112b7565b840191505092915050565b6000602082019050818103600083015261131b81846112c8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061135382611328565b9050919050565b61136381611348565b811461136e57600080fd5b50565b6000813590506113808161135a565b92915050565b6000819050919050565b61139981611386565b81146113a457600080fd5b50565b6000813590506113b681611390565b92915050565b600080604083850312156113d3576113d2611323565b5b60006113e185828601611371565b92505060206113f2858286016113a7565b9150509250929050565b60008115159050919050565b611411816113fc565b82525050565b600060208201905061142c6000830184611408565b92915050565b61143b81611386565b82525050565b60006020820190506114566000830184611432565b92915050565b60008060006060848603121561147557611474611323565b5b600061148386828701611371565b935050602061149486828701611371565b92505060406114a5868287016113a7565b9150509250925092565b6000602082840312156114c5576114c4611323565b5b60006114d3848285016113a7565b91505092915050565b600060ff82169050919050565b6114f2816114dc565b82525050565b600060208201905061150d60008301846114e9565b92915050565b60006020828403121561152957611528611323565b5b600061153784828501611371565b91505092915050565b600061154b82611328565b9050919050565b61155b81611540565b82525050565b60006020820190506115766000830184611552565b92915050565b6000806040838503121561159357611592611323565b5b60006115a185828601611371565b92505060206115b285828601611371565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061160357607f821691505b602082108103611616576116156115bc565b5b50919050565b7f6f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60008201527f6374696f6e210000000000000000000000000000000000000000000000000000602082015250565b600061167860268361127c565b91506116838261161c565b604082019050919050565b600060208201905081810360008301526116a78161166b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115611734578086048111156117105761170f6116ae565b5b600185161561171f5780820291505b808102905061172d856116dd565b94506116f4565b94509492505050565b60008261174d5760019050611809565b8161175b5760009050611809565b8160018114611771576002811461177b576117aa565b6001915050611809565b60ff84111561178d5761178c6116ae565b5b8360020a9150848211156117a4576117a36116ae565b5b50611809565b5060208310610133831016604e8410600b84101617156117df5782820a9050838111156117da576117d96116ae565b5b611809565b6117ec84848460016116ea565b92509050818404811115611803576118026116ae565b5b81810290505b9392505050565b600061181b82611386565b9150611826836114dc565b92506118537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461173d565b905092915050565b600061186682611386565b915061187183611386565b925082820261187f81611386565b91508282048414831517611896576118956116ae565b5b5092915050565b60006118a882611386565b91506118b383611386565b92508282019050808211156118cb576118ca6116ae565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061192d60258361127c565b9150611938826118d1565b604082019050919050565b6000602082019050818103600083015261195c81611920565b9050919050565b7f45524332304361707065643a2063617020657863656564656400000000000000600082015250565b600061199960198361127c565b91506119a482611963565b602082019050919050565b600060208201905081810360008301526119c88161198c565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611a05601f8361127c565b9150611a10826119cf565b602082019050919050565b60006020820190508181036000830152611a34816119f8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611a9760248361127c565b9150611aa282611a3b565b604082019050919050565b60006020820190508181036000830152611ac681611a8a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611b2960228361127c565b9150611b3482611acd565b604082019050919050565b60006020820190508181036000830152611b5881611b1c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611b95601d8361127c565b9150611ba082611b5f565b602082019050919050565b60006020820190508181036000830152611bc481611b88565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611c2760258361127c565b9150611c3282611bcb565b604082019050919050565b60006020820190508181036000830152611c5681611c1a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611cb960238361127c565b9150611cc482611c5d565b604082019050919050565b60006020820190508181036000830152611ce881611cac565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611d4b60268361127c565b9150611d5682611cef565b604082019050919050565b60006020820190508181036000830152611d7a81611d3e565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ddd60218361127c565b9150611de882611d81565b604082019050919050565b60006020820190508181036000830152611e0c81611dd0565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e6f60228361127c565b9150611e7a82611e13565b604082019050919050565b60006020820190508181036000830152611e9e81611e62565b905091905056fea26469706673582212201f741a8419c28a98cedf0c5a8c3b246ab9fb41508141dde3592774d01a2edbcd64736f6c634300081100330000000000000000000000000000000000000000000000000000befe6f6720000000000000000000000000000000000000000000000000000000000000000007

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c806342966c68116100a25780638da5cb5b116100715780638da5cb5b146102cf57806395d89b41146102ed578063a457c2d71461030b578063a9059cbb1461033b578063dd62ed3e1461036b57610116565b806342966c681461025d57806370a082311461027957806379cc6790146102a957806383197ef0146102c557610116565b806323b872dd116100e957806323b872dd146101a5578063293be456146101d5578063313ce567146101f1578063355274ea1461020f578063395093511461022d57610116565b806306fdde031461011b578063095ea7b3146101395780630ac168a11461016957806318160ddd14610187575b600080fd5b61012361039b565b6040516101309190611301565b60405180910390f35b610153600480360381019061014e91906113bc565b61042d565b6040516101609190611417565b60405180910390f35b610171610450565b60405161017e9190611441565b60405180910390f35b61018f610456565b60405161019c9190611441565b60405180910390f35b6101bf60048036038101906101ba919061145c565b610460565b6040516101cc9190611417565b60405180910390f35b6101ef60048036038101906101ea91906114af565b61048f565b005b6101f9610547565b60405161020691906114f8565b60405180910390f35b610217610550565b6040516102249190611441565b60405180910390f35b610247600480360381019061024291906113bc565b610578565b6040516102549190611417565b60405180910390f35b610277600480360381019061027291906114af565b6105af565b005b610293600480360381019061028e9190611513565b6105c3565b6040516102a09190611441565b60405180910390f35b6102c360048036038101906102be91906113bc565b61060b565b005b6102cd61062b565b005b6102d76106f6565b6040516102e49190611561565b60405180910390f35b6102f561071c565b6040516103029190611301565b60405180910390f35b610325600480360381019061032091906113bc565b6107ae565b6040516103329190611417565b60405180910390f35b610355600480360381019061035091906113bc565b610825565b6040516103629190611417565b60405180910390f35b6103856004803603810190610380919061157c565b610848565b6040516103929190611441565b60405180910390f35b6060600380546103aa906115eb565b80601f01602080910402602001604051908101604052809291908181526020018280546103d6906115eb565b80156104235780601f106103f857610100808354040283529160200191610423565b820191906000526020600020905b81548152906001019060200180831161040657829003601f168201915b5050505050905090565b600080610438610a94565b9050610445818585610a9c565b600191505092915050565b60065481565b6000600254905090565b60008061046b610a94565b9050610478858285610c65565b610483858585610cf1565b60019150509392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461051f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105169061168e565b60405180910390fd5b610527610547565b600a6105339190611810565b8161053e919061185b565b60068190555050565b60006012905090565b60007f0000000000000000000000000000000000000a5a9298a2d9cbeb2a2880000000905090565b600080610583610a94565b90506105a48185856105958589610848565b61059f919061189d565b610a9c565b600191505092915050565b6105c06105ba610a94565b82610f67565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61061d82610617610a94565b83610c65565b6106278282610f67565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b29061168e565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461072b906115eb565b80601f0160208091040260200160405190810160405280929190818152602001828054610757906115eb565b80156107a45780601f10610779576101008083540402835291602001916107a4565b820191906000526020600020905b81548152906001019060200180831161078757829003601f168201915b5050505050905090565b6000806107b9610a94565b905060006107c78286610848565b90508381101561080c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080390611943565b60405180910390fd5b6108198286868403610a9c565b60019250505092915050565b600080610830610a94565b905061083d818585610cf1565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6108d7610550565b816108e0610456565b6108ea919061189d565b111561092b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610922906119af565b60405180910390fd5b6109358282610939565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099f90611a1b565b60405180910390fd5b6109b460008383611134565b80600260008282546109c6919061189d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a779190611441565b60405180910390a3610a8b600083836111f4565b5050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0290611aad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7190611b3f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c589190611441565b60405180910390a3505050565b6000610c718484610848565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490611bab565b60405180910390fd5b610cea8484848403610a9c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5790611c3d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc690611ccf565b60405180910390fd5b610dda838383611134565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5790611d61565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4e9190611441565b60405180910390a3610f618484846111f4565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd90611df3565b60405180910390fd5b610fe282600083611134565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90611e85565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161111b9190611441565b60405180910390a361112f836000846111f4565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561119d57504173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156111d65750600073ffffffffffffffffffffffffffffffffffffffff164173ffffffffffffffffffffffffffffffffffffffff1614155b156111e4576111e36111f9565b5b6111ef838383610a8f565b505050565b505050565b61120541600654611207565b565b61120f610550565b81611218610456565b611222919061189d565b1115611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a906119af565b60405180910390fd5b61126d82826108cf565b5050565b600081519050919050565b600082825260208201905092915050565b60005b838110156112ab578082015181840152602081019050611290565b60008484015250505050565b6000601f19601f8301169050919050565b60006112d382611271565b6112dd818561127c565b93506112ed81856020860161128d565b6112f6816112b7565b840191505092915050565b6000602082019050818103600083015261131b81846112c8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061135382611328565b9050919050565b61136381611348565b811461136e57600080fd5b50565b6000813590506113808161135a565b92915050565b6000819050919050565b61139981611386565b81146113a457600080fd5b50565b6000813590506113b681611390565b92915050565b600080604083850312156113d3576113d2611323565b5b60006113e185828601611371565b92505060206113f2858286016113a7565b9150509250929050565b60008115159050919050565b611411816113fc565b82525050565b600060208201905061142c6000830184611408565b92915050565b61143b81611386565b82525050565b60006020820190506114566000830184611432565b92915050565b60008060006060848603121561147557611474611323565b5b600061148386828701611371565b935050602061149486828701611371565b92505060406114a5868287016113a7565b9150509250925092565b6000602082840312156114c5576114c4611323565b5b60006114d3848285016113a7565b91505092915050565b600060ff82169050919050565b6114f2816114dc565b82525050565b600060208201905061150d60008301846114e9565b92915050565b60006020828403121561152957611528611323565b5b600061153784828501611371565b91505092915050565b600061154b82611328565b9050919050565b61155b81611540565b82525050565b60006020820190506115766000830184611552565b92915050565b6000806040838503121561159357611592611323565b5b60006115a185828601611371565b92505060206115b285828601611371565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061160357607f821691505b602082108103611616576116156115bc565b5b50919050565b7f6f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60008201527f6374696f6e210000000000000000000000000000000000000000000000000000602082015250565b600061167860268361127c565b91506116838261161c565b604082019050919050565b600060208201905081810360008301526116a78161166b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115611734578086048111156117105761170f6116ae565b5b600185161561171f5780820291505b808102905061172d856116dd565b94506116f4565b94509492505050565b60008261174d5760019050611809565b8161175b5760009050611809565b8160018114611771576002811461177b576117aa565b6001915050611809565b60ff84111561178d5761178c6116ae565b5b8360020a9150848211156117a4576117a36116ae565b5b50611809565b5060208310610133831016604e8410600b84101617156117df5782820a9050838111156117da576117d96116ae565b5b611809565b6117ec84848460016116ea565b92509050818404811115611803576118026116ae565b5b81810290505b9392505050565b600061181b82611386565b9150611826836114dc565b92506118537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461173d565b905092915050565b600061186682611386565b915061187183611386565b925082820261187f81611386565b91508282048414831517611896576118956116ae565b5b5092915050565b60006118a882611386565b91506118b383611386565b92508282019050808211156118cb576118ca6116ae565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061192d60258361127c565b9150611938826118d1565b604082019050919050565b6000602082019050818103600083015261195c81611920565b9050919050565b7f45524332304361707065643a2063617020657863656564656400000000000000600082015250565b600061199960198361127c565b91506119a482611963565b602082019050919050565b600060208201905081810360008301526119c88161198c565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611a05601f8361127c565b9150611a10826119cf565b602082019050919050565b60006020820190508181036000830152611a34816119f8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611a9760248361127c565b9150611aa282611a3b565b604082019050919050565b60006020820190508181036000830152611ac681611a8a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611b2960228361127c565b9150611b3482611acd565b604082019050919050565b60006020820190508181036000830152611b5881611b1c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611b95601d8361127c565b9150611ba082611b5f565b602082019050919050565b60006020820190508181036000830152611bc481611b88565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611c2760258361127c565b9150611c3282611bcb565b604082019050919050565b60006020820190508181036000830152611c5681611c1a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611cb960238361127c565b9150611cc482611c5d565b604082019050919050565b60006020820190508181036000830152611ce881611cac565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611d4b60268361127c565b9150611d5682611cef565b604082019050919050565b60006020820190508181036000830152611d7a81611d3e565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ddd60218361127c565b9150611de882611d81565b604082019050919050565b60006020820190508181036000830152611e0c81611dd0565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e6f60228361127c565b9150611e7a82611e13565b604082019050919050565b60006020820190508181036000830152611e9e81611e62565b905091905056fea26469706673582212201f741a8419c28a98cedf0c5a8c3b246ab9fb41508141dde3592774d01a2edbcd64736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000000000000000000000000befe6f6720000000000000000000000000000000000000000000000000000000000000000007

-----Decoded View---------------
Arg [0] : cap (uint256): 210000000000000
Arg [1] : reward (uint256): 7

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000befe6f672000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000007


Deployed Bytecode Sourcemap

20574:1351:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7008:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9359:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20662:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8128:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10140:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21599:112;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7970:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20158:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10844:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18838:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8299:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19248:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21719:74;;;:::i;:::-;;20627:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7227:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11585:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8632:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8888:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7008:100;7062:13;7095:5;7088:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7008:100;:::o;9359:201::-;9442:4;9459:13;9475:12;:10;:12::i;:::-;9459:28;;9498:32;9507:5;9514:7;9523:6;9498:8;:32::i;:::-;9548:4;9541:11;;;9359:201;;;;:::o;20662:26::-;;;;:::o;8128:108::-;8189:7;8216:12;;8209:19;;8128:108;:::o;10140:295::-;10271:4;10288:15;10306:12;:10;:12::i;:::-;10288:30;;10329:38;10345:4;10351:7;10360:6;10329:15;:38::i;:::-;10378:27;10388:4;10394:2;10398:6;10378:9;:27::i;:::-;10423:4;10416:11;;;10140:295;;;;;:::o;21599:112::-;21854:5;;;;;;;;;;;21840:19;;:10;:19;;;21831:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21692:10:::1;:8;:10::i;:::-;21686:2;:16;;;;:::i;:::-;21676:6;:27;;;;:::i;:::-;21662:11;:41;;;;21599:112:::0;:::o;7970:93::-;8028:5;8053:2;8046:9;;7970:93;:::o;20158:83::-;20202:7;20229:4;20222:11;;20158:83;:::o;10844:238::-;10932:4;10949:13;10965:12;:10;:12::i;:::-;10949:28;;10988:64;10997:5;11004:7;11041:10;11013:25;11023:5;11030:7;11013:9;:25::i;:::-;:38;;;;:::i;:::-;10988:8;:64::i;:::-;11070:4;11063:11;;;10844:238;;;;:::o;18838:91::-;18894:27;18900:12;:10;:12::i;:::-;18914:6;18894:5;:27::i;:::-;18838:91;:::o;8299:127::-;8373:7;8400:9;:18;8410:7;8400:18;;;;;;;;;;;;;;;;8393:25;;8299:127;;;:::o;19248:164::-;19325:46;19341:7;19350:12;:10;:12::i;:::-;19364:6;19325:15;:46::i;:::-;19382:22;19388:7;19397:6;19382:5;:22::i;:::-;19248:164;;:::o;21719:74::-;21854:5;;;;;;;;;;;21840:19;;:10;:19;;;21831:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21779:5:::1;;;;;;;;;;;21766:19;;;20627:28:::0;;;;;;;;;;;;;:::o;7227:104::-;7283:13;7316:7;7309:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7227:104;:::o;11585:436::-;11678:4;11695:13;11711:12;:10;:12::i;:::-;11695:28;;11734:24;11761:25;11771:5;11778:7;11761:9;:25::i;:::-;11734:52;;11825:15;11805:16;:35;;11797:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11918:60;11927:5;11934:7;11962:15;11943:16;:34;11918:8;:60::i;:::-;12009:4;12002:11;;;;11585:436;;;;:::o;8632:193::-;8711:4;8728:13;8744:12;:10;:12::i;:::-;8728:28;;8767;8777:5;8784:2;8788:6;8767:9;:28::i;:::-;8813:4;8806:11;;;8632:193;;;;:::o;8888:151::-;8977:7;9004:11;:18;9016:5;9004:18;;;;;;;;;;;;;;;:27;9023:7;9004:27;;;;;;;;;;;;;;;;8997:34;;8888:151;;;;:::o;20299:207::-;20424:5;:3;:5::i;:::-;20414:6;20392:19;:17;:19::i;:::-;:28;;;;:::i;:::-;:37;;20384:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;20470:28;20482:7;20491:6;20470:11;:28::i;:::-;20299:207;;:::o;13618:548::-;13721:1;13702:21;;:7;:21;;;13694:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13772:49;13801:1;13805:7;13814:6;13772:20;:49::i;:::-;13850:6;13834:12;;:22;;;;;;;:::i;:::-;;;;;;;;14027:6;14005:9;:18;14015:7;14005:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;14081:7;14060:37;;14077:1;14060:37;;;14090:6;14060:37;;;;;;:::i;:::-;;;;;;;;14110:48;14138:1;14142:7;14151:6;14110:19;:48::i;:::-;13618:548;;:::o;17336:125::-;;;;:::o;786:98::-;839:7;866:10;859:17;;786:98;:::o;15612:380::-;15765:1;15748:19;;:5;:19;;;15740:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15846:1;15827:21;;:7;:21;;;15819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15930:6;15900:11;:18;15912:5;15900:18;;;;;;;;;;;;;;;:27;15919:7;15900:27;;;;;;;;;;;;;;;:36;;;;15968:7;15952:32;;15961:5;15952:32;;;15977:6;15952:32;;;;;;:::i;:::-;;;;;;;;15612:380;;;:::o;16283:453::-;16418:24;16445:25;16455:5;16462:7;16445:9;:25::i;:::-;16418:52;;16505:17;16485:16;:37;16481:248;;16567:6;16547:16;:26;;16539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16651:51;16660:5;16667:7;16695:6;16676:16;:25;16651:8;:51::i;:::-;16481:248;16407:329;16283:453;;;:::o;12491:840::-;12638:1;12622:18;;:4;:18;;;12614:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12715:1;12701:16;;:2;:16;;;12693:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12770:38;12791:4;12797:2;12801:6;12770:20;:38::i;:::-;12821:19;12843:9;:15;12853:4;12843:15;;;;;;;;;;;;;;;;12821:37;;12892:6;12877:11;:21;;12869:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13009:6;12995:11;:20;12977:9;:15;12987:4;12977:15;;;;;;;;;;;;;;;:38;;;;13212:6;13195:9;:13;13205:2;13195:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;13262:2;13247:26;;13256:4;13247:26;;;13266:6;13247:26;;;;;;:::i;:::-;;;;;;;;13286:37;13306:4;13312:2;13316:6;13286:19;:37::i;:::-;12603:728;12491:840;;;:::o;14499:675::-;14602:1;14583:21;;:7;:21;;;14575:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14655:49;14676:7;14693:1;14697:6;14655:20;:49::i;:::-;14717:22;14742:9;:18;14752:7;14742:18;;;;;;;;;;;;;;;;14717:43;;14797:6;14779:14;:24;;14771:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14916:6;14899:14;:23;14878:9;:18;14888:7;14878:18;;;;;;;;;;;;;;;:44;;;;15033:6;15017:12;;:22;;;;;;;;;;;15094:1;15068:37;;15077:7;15068:37;;;15098:6;15068:37;;;;;;:::i;:::-;;;;;;;;15118:48;15138:7;15155:1;15159:6;15118:19;:48::i;:::-;14564:610;14499:675;;:::o;21299:292::-;21426:1;21410:18;;:4;:18;;;;:42;;;;;21438:14;21432:20;;:2;:20;;;;21410:42;:74;;;;;21482:1;21456:28;;:14;:28;;;;21410:74;21407:123;;;21500:18;:16;:18::i;:::-;21407:123;21540:43;21567:4;21573:2;21577:5;21540:26;:43::i;:::-;21299:292;;;:::o;18065:124::-;;;;:::o;21201:90::-;21249:34;21255:14;21271:11;;21249:5;:34::i;:::-;21201:90::o;20966:227::-;21111:5;:3;:5::i;:::-;21101:6;21079:19;:17;:19::i;:::-;:28;;;;:::i;:::-;:37;;21071:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21157:28;21169:7;21178:6;21157:11;:28::i;:::-;20966:227;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:329::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:104::-;5568:7;5597:24;5615:5;5597:24;:::i;:::-;5586:35;;5523:104;;;:::o;5633:142::-;5736:32;5762:5;5736:32;:::i;:::-;5731:3;5724:45;5633:142;;:::o;5781:254::-;5890:4;5928:2;5917:9;5913:18;5905:26;;5941:87;6025:1;6014:9;6010:17;6001:6;5941:87;:::i;:::-;5781:254;;;;:::o;6041:474::-;6109:6;6117;6166:2;6154:9;6145:7;6141:23;6137:32;6134:119;;;6172:79;;:::i;:::-;6134:119;6292:1;6317:53;6362:7;6353:6;6342:9;6338:22;6317:53;:::i;:::-;6307:63;;6263:117;6419:2;6445:53;6490:7;6481:6;6470:9;6466:22;6445:53;:::i;:::-;6435:63;;6390:118;6041:474;;;;;:::o;6521:180::-;6569:77;6566:1;6559:88;6666:4;6663:1;6656:15;6690:4;6687:1;6680:15;6707:320;6751:6;6788:1;6782:4;6778:12;6768:22;;6835:1;6829:4;6825:12;6856:18;6846:81;;6912:4;6904:6;6900:17;6890:27;;6846:81;6974:2;6966:6;6963:14;6943:18;6940:38;6937:84;;6993:18;;:::i;:::-;6937:84;6758:269;6707:320;;;:::o;7033:225::-;7173:34;7169:1;7161:6;7157:14;7150:58;7242:8;7237:2;7229:6;7225:15;7218:33;7033:225;:::o;7264:366::-;7406:3;7427:67;7491:2;7486:3;7427:67;:::i;:::-;7420:74;;7503:93;7592:3;7503:93;:::i;:::-;7621:2;7616:3;7612:12;7605:19;;7264:366;;;:::o;7636:419::-;7802:4;7840:2;7829:9;7825:18;7817:26;;7889:9;7883:4;7879:20;7875:1;7864:9;7860:17;7853:47;7917:131;8043:4;7917:131;:::i;:::-;7909:139;;7636:419;;;:::o;8061:180::-;8109:77;8106:1;8099:88;8206:4;8203:1;8196:15;8230:4;8227:1;8220:15;8247:102;8289:8;8336:5;8333:1;8329:13;8308:34;;8247:102;;;:::o;8355:848::-;8416:5;8423:4;8447:6;8438:15;;8471:5;8462:14;;8485:712;8506:1;8496:8;8493:15;8485:712;;;8601:4;8596:3;8592:14;8586:4;8583:24;8580:50;;;8610:18;;:::i;:::-;8580:50;8660:1;8650:8;8646:16;8643:451;;;9075:4;9068:5;9064:16;9055:25;;8643:451;9125:4;9119;9115:15;9107:23;;9155:32;9178:8;9155:32;:::i;:::-;9143:44;;8485:712;;;8355:848;;;;;;;:::o;9209:1073::-;9263:5;9454:8;9444:40;;9475:1;9466:10;;9477:5;;9444:40;9503:4;9493:36;;9520:1;9511:10;;9522:5;;9493:36;9589:4;9637:1;9632:27;;;;9673:1;9668:191;;;;9582:277;;9632:27;9650:1;9641:10;;9652:5;;;9668:191;9713:3;9703:8;9700:17;9697:43;;;9720:18;;:::i;:::-;9697:43;9769:8;9766:1;9762:16;9753:25;;9804:3;9797:5;9794:14;9791:40;;;9811:18;;:::i;:::-;9791:40;9844:5;;;9582:277;;9968:2;9958:8;9955:16;9949:3;9943:4;9940:13;9936:36;9918:2;9908:8;9905:16;9900:2;9894:4;9891:12;9887:35;9871:111;9868:246;;;10024:8;10018:4;10014:19;10005:28;;10059:3;10052:5;10049:14;10046:40;;;10066:18;;:::i;:::-;10046:40;10099:5;;9868:246;10139:42;10177:3;10167:8;10161:4;10158:1;10139:42;:::i;:::-;10124:57;;;;10213:4;10208:3;10204:14;10197:5;10194:25;10191:51;;;10222:18;;:::i;:::-;10191:51;10271:4;10264:5;10260:16;10251:25;;9209:1073;;;;;;:::o;10288:281::-;10346:5;10370:23;10388:4;10370:23;:::i;:::-;10362:31;;10414:25;10430:8;10414:25;:::i;:::-;10402:37;;10458:104;10495:66;10485:8;10479:4;10458:104;:::i;:::-;10449:113;;10288:281;;;;:::o;10575:410::-;10615:7;10638:20;10656:1;10638:20;:::i;:::-;10633:25;;10672:20;10690:1;10672:20;:::i;:::-;10667:25;;10727:1;10724;10720:9;10749:30;10767:11;10749:30;:::i;:::-;10738:41;;10928:1;10919:7;10915:15;10912:1;10909:22;10889:1;10882:9;10862:83;10839:139;;10958:18;;:::i;:::-;10839:139;10623:362;10575:410;;;;:::o;10991:191::-;11031:3;11050:20;11068:1;11050:20;:::i;:::-;11045:25;;11084:20;11102:1;11084:20;:::i;:::-;11079:25;;11127:1;11124;11120:9;11113:16;;11148:3;11145:1;11142:10;11139:36;;;11155:18;;:::i;:::-;11139:36;10991:191;;;;:::o;11188:224::-;11328:34;11324:1;11316:6;11312:14;11305:58;11397:7;11392:2;11384:6;11380:15;11373:32;11188:224;:::o;11418:366::-;11560:3;11581:67;11645:2;11640:3;11581:67;:::i;:::-;11574:74;;11657:93;11746:3;11657:93;:::i;:::-;11775:2;11770:3;11766:12;11759:19;;11418:366;;;:::o;11790:419::-;11956:4;11994:2;11983:9;11979:18;11971:26;;12043:9;12037:4;12033:20;12029:1;12018:9;12014:17;12007:47;12071:131;12197:4;12071:131;:::i;:::-;12063:139;;11790:419;;;:::o;12215:175::-;12355:27;12351:1;12343:6;12339:14;12332:51;12215:175;:::o;12396:366::-;12538:3;12559:67;12623:2;12618:3;12559:67;:::i;:::-;12552:74;;12635:93;12724:3;12635:93;:::i;:::-;12753:2;12748:3;12744:12;12737:19;;12396:366;;;:::o;12768:419::-;12934:4;12972:2;12961:9;12957:18;12949:26;;13021:9;13015:4;13011:20;13007:1;12996:9;12992:17;12985:47;13049:131;13175:4;13049:131;:::i;:::-;13041:139;;12768:419;;;:::o;13193:181::-;13333:33;13329:1;13321:6;13317:14;13310:57;13193:181;:::o;13380:366::-;13522:3;13543:67;13607:2;13602:3;13543:67;:::i;:::-;13536:74;;13619:93;13708:3;13619:93;:::i;:::-;13737:2;13732:3;13728:12;13721:19;;13380:366;;;:::o;13752:419::-;13918:4;13956:2;13945:9;13941:18;13933:26;;14005:9;13999:4;13995:20;13991:1;13980:9;13976:17;13969:47;14033:131;14159:4;14033:131;:::i;:::-;14025:139;;13752:419;;;:::o;14177:223::-;14317:34;14313:1;14305:6;14301:14;14294:58;14386:6;14381:2;14373:6;14369:15;14362:31;14177:223;:::o;14406:366::-;14548:3;14569:67;14633:2;14628:3;14569:67;:::i;:::-;14562:74;;14645:93;14734:3;14645:93;:::i;:::-;14763:2;14758:3;14754:12;14747:19;;14406:366;;;:::o;14778:419::-;14944:4;14982:2;14971:9;14967:18;14959:26;;15031:9;15025:4;15021:20;15017:1;15006:9;15002:17;14995:47;15059:131;15185:4;15059:131;:::i;:::-;15051:139;;14778:419;;;:::o;15203:221::-;15343:34;15339:1;15331:6;15327:14;15320:58;15412:4;15407:2;15399:6;15395:15;15388:29;15203:221;:::o;15430:366::-;15572:3;15593:67;15657:2;15652:3;15593:67;:::i;:::-;15586:74;;15669:93;15758:3;15669:93;:::i;:::-;15787:2;15782:3;15778:12;15771:19;;15430:366;;;:::o;15802:419::-;15968:4;16006:2;15995:9;15991:18;15983:26;;16055:9;16049:4;16045:20;16041:1;16030:9;16026:17;16019:47;16083:131;16209:4;16083:131;:::i;:::-;16075:139;;15802:419;;;:::o;16227:179::-;16367:31;16363:1;16355:6;16351:14;16344:55;16227:179;:::o;16412:366::-;16554:3;16575:67;16639:2;16634:3;16575:67;:::i;:::-;16568:74;;16651:93;16740:3;16651:93;:::i;:::-;16769:2;16764:3;16760:12;16753:19;;16412:366;;;:::o;16784:419::-;16950:4;16988:2;16977:9;16973:18;16965:26;;17037:9;17031:4;17027:20;17023:1;17012:9;17008:17;17001:47;17065:131;17191:4;17065:131;:::i;:::-;17057:139;;16784:419;;;:::o;17209:224::-;17349:34;17345:1;17337:6;17333:14;17326:58;17418:7;17413:2;17405:6;17401:15;17394:32;17209:224;:::o;17439:366::-;17581:3;17602:67;17666:2;17661:3;17602:67;:::i;:::-;17595:74;;17678:93;17767:3;17678:93;:::i;:::-;17796:2;17791:3;17787:12;17780:19;;17439:366;;;:::o;17811:419::-;17977:4;18015:2;18004:9;18000:18;17992:26;;18064:9;18058:4;18054:20;18050:1;18039:9;18035:17;18028:47;18092:131;18218:4;18092:131;:::i;:::-;18084:139;;17811:419;;;:::o;18236:222::-;18376:34;18372:1;18364:6;18360:14;18353:58;18445:5;18440:2;18432:6;18428:15;18421:30;18236:222;:::o;18464:366::-;18606:3;18627:67;18691:2;18686:3;18627:67;:::i;:::-;18620:74;;18703:93;18792:3;18703:93;:::i;:::-;18821:2;18816:3;18812:12;18805:19;;18464:366;;;:::o;18836:419::-;19002:4;19040:2;19029:9;19025:18;19017:26;;19089:9;19083:4;19079:20;19075:1;19064:9;19060:17;19053:47;19117:131;19243:4;19117:131;:::i;:::-;19109:139;;18836:419;;;:::o;19261:225::-;19401:34;19397:1;19389:6;19385:14;19378:58;19470:8;19465:2;19457:6;19453:15;19446:33;19261:225;:::o;19492:366::-;19634:3;19655:67;19719:2;19714:3;19655:67;:::i;:::-;19648:74;;19731:93;19820:3;19731:93;:::i;:::-;19849:2;19844:3;19840:12;19833:19;;19492:366;;;:::o;19864:419::-;20030:4;20068:2;20057:9;20053:18;20045:26;;20117:9;20111:4;20107:20;20103:1;20092:9;20088:17;20081:47;20145:131;20271:4;20145:131;:::i;:::-;20137:139;;19864:419;;;:::o;20289:220::-;20429:34;20425:1;20417:6;20413:14;20406:58;20498:3;20493:2;20485:6;20481:15;20474:28;20289:220;:::o;20515:366::-;20657:3;20678:67;20742:2;20737:3;20678:67;:::i;:::-;20671:74;;20754:93;20843:3;20754:93;:::i;:::-;20872:2;20867:3;20863:12;20856:19;;20515:366;;;:::o;20887:419::-;21053:4;21091:2;21080:9;21076:18;21068:26;;21140:9;21134:4;21130:20;21126:1;21115:9;21111:17;21104:47;21168:131;21294:4;21168:131;:::i;:::-;21160:139;;20887:419;;;:::o;21312:221::-;21452:34;21448:1;21440:6;21436:14;21429:58;21521:4;21516:2;21508:6;21504:15;21497:29;21312:221;:::o;21539:366::-;21681:3;21702:67;21766:2;21761:3;21702:67;:::i;:::-;21695:74;;21778:93;21867:3;21778:93;:::i;:::-;21896:2;21891:3;21887:12;21880:19;;21539:366;;;:::o;21911:419::-;22077:4;22115:2;22104:9;22100:18;22092:26;;22164:9;22158:4;22154:20;22150:1;22139:9;22135:17;22128:47;22192:131;22318:4;22192:131;:::i;:::-;22184:139;;21911:419;;;:::o

Swarm Source

ipfs://1f741a8419c28a98cedf0c5a8c3b246ab9fb41508141dde3592774d01a2edbcd
[ 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.