Goerli Testnet

Token

WiproTokon (WiT)
ERC-20

Overview

Max Total Supply

500,200 WiT

Holders

17

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10 WiT
0x184ba627db853244c9f17f3cb4378cb8b39bf147
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:
Tokon

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 7 : ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.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].
 *
 * 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 2 of 7 : ERC20Burnable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)

pragma solidity ^0.8.0;

import "../ERC20.sol";
import "../../../utils/Context.sol";

/**
 * @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 3 of 7 : ERC20Capped.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/ERC20Capped.sol)

pragma solidity ^0.8.0;

import "../ERC20.sol";

/**
 * @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 4 of 7 : 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 7 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.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 6 of 7 : 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 7 of 7 : Tokon.sol
// contracts/WiproTokon.sol
// SPDX-License-Identifier: UNLICENSED

pragma solidity  ^0.8.17;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Capped.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";


contract Tokon is ERC20Capped, ERC20Burnable {

    address payable public owner; 
    uint256 public blockReward;

    mapping (address => bool) tradeStatus;
    enum tradeStatuType {SUBMITTED, SETTLED}
    uint uniqueKey = 0;

    mapping (address => uint256[]) tradeIdList;

    event AdditionInfo(address indexed _receiver, uint256 indexed _id);

    event TradeInfo(address indexed _to, address indexed _from, uint256 _id, uint256 _amount, tradeStatuType _status);
    
    struct trade {
        address to;
        address from;
        uint256 id;
        uint256 amount;
        tradeStatuType status;
        uint time;
    }

    mapping (address => mapping(uint => trade)) public repogistry;

    constructor(uint256 cap, uint256 _blockReward) ERC20("WiproTokon", "WiT") ERC20Capped(cap * (10 ** decimals())) {
        owner = payable(msg.sender);
        _mint(owner, 500000 * (10 ** decimals()));
        blockReward = _blockReward * (10 ** decimals());
    }

    function _mint(address _account, uint256 _amount) internal virtual override(ERC20Capped, ERC20) {
        require(ERC20.totalSupply() + _amount <= cap(), "Cap limit exceed!!!");
        super._mint(_account, _amount);
    }

    function _mintUserReward() 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)) {
            _mintUserReward();
        }
        super._beforeTokenTransfer(from , to, value);
    }

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

    function setBlockReward(uint256 _blockReward) public onlyOwner {
        blockReward = _blockReward * (10 ** decimals());

    }
    modifier onlyOwner {
        require(msg.sender == owner, "Only the owner reward tokon");
        _;
    }

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address ownerAddr = msg.sender;
        _transfer(ownerAddr, to, amount);
        registerTrade(to, amount);
        return true;
    }

    function registerTrade(address _receiver, uint256 _amount) public returns (bool) {

        uint256 _tradeId = random(1000, _receiver);
        addTradeId(_tradeId, msg.sender);
        repogistry[msg.sender][_tradeId].to = _receiver;
        repogistry[msg.sender][_tradeId].from = msg.sender;
        repogistry[msg.sender][_tradeId].id = _tradeId;
        repogistry[msg.sender][_tradeId].amount = _amount;
        repogistry[msg.sender][_tradeId].status = tradeStatuType.SUBMITTED;
        repogistry[msg.sender][_tradeId].time = block.timestamp;

        emit TradeInfo(_receiver, msg.sender, _tradeId, _amount, tradeStatuType.SUBMITTED);

        return true;
    }

    function random(uint256 number, address _receiver) public returns(uint256) {
        uniqueKey = uniqueKey + 45;
        return uint256(keccak256(abi.encodePacked(msg.sender, _receiver, uniqueKey))) % number;
    }


    function settledTrade(uint256 _tradeid, address _senderAddress) public returns (bool) {
        // settle trade
        // address receiver = repogistry[_senderAddress][_tradeid].to;
        // require(receiver == msg.sender, "Only the reciept can settle.");
        require(_senderAddress == msg.sender, "Only the sender can settle");
        repogistry[_senderAddress][_tradeid].status = tradeStatuType.SETTLED;

        emit TradeInfo(_senderAddress, msg.sender, _tradeid, repogistry[_senderAddress][_tradeid].amount, tradeStatuType.SETTLED);

        return true;
    }

    function getTradeStatus(uint256 _tradeid, address _senderAddress) public view returns (tradeStatuType) {
        return  repogistry[_senderAddress][_tradeid].status;
    }

    function getTradeRecord(uint256 _tradeid, address _senderAddress) public view returns(trade memory) {
        return repogistry[_senderAddress][_tradeid];
    }

    function addTradeId(uint256 _id, address _sender) public {
        tradeIdList[_sender].push(_id);
    }

    function totalTrades(address _sender) public view returns(uint) {
        return tradeIdList[_sender].length;
    }


    // return trade id list
    function getTradeIdList(address _sender) public view returns(uint256 [] memory) {
        return tradeIdList[_sender];
    }

}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"cap","type":"uint256"},{"internalType":"uint256","name":"_blockReward","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_receiver","type":"address"},{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"}],"name":"AdditionInfo","type":"event"},{"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":"_to","type":"address"},{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"enum Tokon.tradeStatuType","name":"_status","type":"uint8"}],"name":"TradeInfo","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":"uint256","name":"_id","type":"uint256"},{"internalType":"address","name":"_sender","type":"address"}],"name":"addTradeId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"_sender","type":"address"}],"name":"getTradeIdList","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tradeid","type":"uint256"},{"internalType":"address","name":"_senderAddress","type":"address"}],"name":"getTradeRecord","outputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Tokon.tradeStatuType","name":"status","type":"uint8"},{"internalType":"uint256","name":"time","type":"uint256"}],"internalType":"struct Tokon.trade","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tradeid","type":"uint256"},{"internalType":"address","name":"_senderAddress","type":"address"}],"name":"getTradeStatus","outputs":[{"internalType":"enum Tokon.tradeStatuType","name":"","type":"uint8"}],"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":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"number","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"random","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"registerTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"repogistry","outputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Tokon.tradeStatuType","name":"status","type":"uint8"},{"internalType":"uint256","name":"time","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockReward","type":"uint256"}],"name":"setBlockReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tradeid","type":"uint256"},{"internalType":"address","name":"_senderAddress","type":"address"}],"name":"settledTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"_sender","type":"address"}],"name":"totalTrades","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"}]

60a060405260006008553480156200001657600080fd5b5060405162003d7e38038062003d7e83398181016040528101906200003c919062000607565b6200004c6200022360201b60201c565b600a6200005a9190620007de565b826200006791906200082f565b6040518060400160405280600a81526020017f576970726f546f6b6f6e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f57695400000000000000000000000000000000000000000000000000000000008152508160039081620000e4919062000aea565b508060049081620000f6919062000aea565b505050600081116200013f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001369062000c32565b60405180910390fd5b80608081815250505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001ea600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620001c06200022360201b60201c565b600a620001ce9190620007de565b6207a120620001de91906200082f565b6200022c60201b60201c565b620001fa6200022360201b60201c565b600a620002089190620007de565b816200021591906200082f565b600681905550505062000e13565b60006012905090565b6200023c620002bd60201b60201c565b8162000252620002c760201b620006f51760201c565b6200025e919062000c54565b1115620002a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002999062000cdf565b60405180910390fd5b620002b98282620002d160201b6200140a1760201c565b5050565b6000608051905090565b6000600254905090565b620002e1620002bd60201b60201c565b81620002f7620002c760201b620006f51760201c565b62000303919062000c54565b111562000347576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200033e9062000d51565b60405180910390fd5b6200035e82826200036260201b620014741760201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620003d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003cb9062000dc3565b60405180910390fd5b620003e860008383620004cf60201b60201c565b8060026000828254620003fc919062000c54565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004af919062000df6565b60405180910390a3620004cb60008383620005a760201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156200053957504173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015620005735750600073ffffffffffffffffffffffffffffffffffffffff164173ffffffffffffffffffffffffffffffffffffffff1614155b156200058a5762000589620005ac60201b60201c565b5b620005a2838383620005c260201b620015ca1760201c565b505050565b505050565b620005c0416006546200022c60201b60201c565b565b505050565b600080fd5b6000819050919050565b620005e181620005cc565b8114620005ed57600080fd5b50565b6000815190506200060181620005d6565b92915050565b60008060408385031215620006215762000620620005c7565b5b60006200063185828601620005f0565b92505060206200064485828601620005f0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006dc57808604811115620006b457620006b36200064e565b5b6001851615620006c45780820291505b8081029050620006d4856200067d565b945062000694565b94509492505050565b600082620006f75760019050620007ca565b81620007075760009050620007ca565b81600181146200072057600281146200072b5762000761565b6001915050620007ca565b60ff84111562000740576200073f6200064e565b5b8360020a9150848211156200075a57620007596200064e565b5b50620007ca565b5060208310610133831016604e8410600b84101617156200079b5782820a9050838111156200079557620007946200064e565b5b620007ca565b620007aa84848460016200068a565b92509050818404811115620007c457620007c36200064e565b5b81810290505b9392505050565b600060ff82169050919050565b6000620007eb82620005cc565b9150620007f883620007d1565b9250620008277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006e5565b905092915050565b60006200083c82620005cc565b91506200084983620005cc565b92508282026200085981620005cc565b915082820484148315176200087357620008726200064e565b5b5092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008fc57607f821691505b602082108103620009125762000911620008b4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200097c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200093d565b6200098886836200093d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620009cb620009c5620009bf84620005cc565b620009a0565b620005cc565b9050919050565b6000819050919050565b620009e783620009aa565b620009ff620009f682620009d2565b8484546200094a565b825550505050565b600090565b62000a1662000a07565b62000a23818484620009dc565b505050565b5b8181101562000a4b5762000a3f60008262000a0c565b60018101905062000a29565b5050565b601f82111562000a9a5762000a648162000918565b62000a6f846200092d565b8101602085101562000a7f578190505b62000a9762000a8e856200092d565b83018262000a28565b50505b505050565b600082821c905092915050565b600062000abf6000198460080262000a9f565b1980831691505092915050565b600062000ada838362000aac565b9150826002028217905092915050565b62000af5826200087a565b67ffffffffffffffff81111562000b115762000b1062000885565b5b62000b1d8254620008e3565b62000b2a82828562000a4f565b600060209050601f83116001811462000b62576000841562000b4d578287015190505b62000b59858262000acc565b86555062000bc9565b601f19841662000b728662000918565b60005b8281101562000b9c5784890151825560018201915060208501945060208101905062000b75565b8683101562000bbc578489015162000bb8601f89168262000aac565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332304361707065643a2063617020697320300000000000000000000000600082015250565b600062000c1a60158362000bd1565b915062000c278262000be2565b602082019050919050565b6000602082019050818103600083015262000c4d8162000c0b565b9050919050565b600062000c6182620005cc565b915062000c6e83620005cc565b925082820190508082111562000c895762000c886200064e565b5b92915050565b7f436170206c696d69742065786365656421212100000000000000000000000000600082015250565b600062000cc760138362000bd1565b915062000cd48262000c8f565b602082019050919050565b6000602082019050818103600083015262000cfa8162000cb8565b9050919050565b7f45524332304361707065643a2063617020657863656564656400000000000000600082015250565b600062000d3960198362000bd1565b915062000d468262000d01565b602082019050919050565b6000602082019050818103600083015262000d6c8162000d2a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000dab601f8362000bd1565b915062000db88262000d73565b602082019050919050565b6000602082019050818103600083015262000dde8162000d9c565b9050919050565b62000df081620005cc565b82525050565b600060208201905062000e0d600083018462000de5565b92915050565b608051612f4f62000e2f60003960006107f30152612f4f6000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806361529043116100f9578063a457c2d711610097578063d217b62511610071578063d217b6251461051e578063dd62ed3e14610553578063ea8d16a814610583578063f1aa69d21461059f576101a9565b8063a457c2d71461048e578063a9059cbb146104be578063ceab3af7146104ee576101a9565b806383197ef0116100d357806383197ef0146104185780638b349f3e146104225780638da5cb5b1461045257806395d89b4114610470576101a9565b8063615290431461039c57806370a08231146103cc57806379cc6790146103fc576101a9565b806323b872dd11610166578063395093511161014057806339509351146102f057806342966c681461032057806349d9bf811461033c5780634f5403f01461036c576101a9565b806323b872dd14610284578063313ce567146102b4578063355274ea146102d2576101a9565b806306fdde03146101ae578063095ea7b3146101cc5780630ac168a1146101fc578063129700831461021a57806318160ddd1461024a5780631a18e70714610268575b600080fd5b6101b66105cf565b6040516101c39190611eb0565b60405180910390f35b6101e660048036038101906101e19190611f6b565b610661565b6040516101f39190611fc6565b60405180910390f35b610204610684565b6040516102119190611ff0565b60405180910390f35b610234600480360381019061022f919061200b565b61068a565b60405161024191906120c2565b60405180910390f35b6102526106f5565b60405161025f9190611ff0565b60405180910390f35b610282600480360381019061027d91906120dd565b6106ff565b005b61029e6004803603810190610299919061210a565b6107b7565b6040516102ab9190611fc6565b60405180910390f35b6102bc6107e6565b6040516102c99190612179565b60405180910390f35b6102da6107ef565b6040516102e79190611ff0565b60405180910390f35b61030a60048036038101906103059190611f6b565b610817565b6040516103179190611fc6565b60405180910390f35b61033a600480360381019061033591906120dd565b61084e565b005b61035660048036038101906103519190612194565b610862565b604051610363919061227f565b60405180910390f35b61038660048036038101906103819190611f6b565b6108f9565b6040516103939190611fc6565b60405180910390f35b6103b660048036038101906103b19190612194565b610c31565b6040516103c39190611ff0565b60405180910390f35b6103e660048036038101906103e19190612194565b610c7d565b6040516103f39190611ff0565b60405180910390f35b61041660048036038101906104119190611f6b565b610cc5565b005b610420610ce5565b005b61043c6004803603810190610437919061200b565b610db0565b6040516104499190611ff0565b60405180910390f35b61045a610e0a565b60405161046791906122c2565b60405180910390f35b610478610e30565b6040516104859190611eb0565b60405180910390f35b6104a860048036038101906104a39190611f6b565b610ec2565b6040516104b59190611fc6565b60405180910390f35b6104d860048036038101906104d39190611f6b565b610f39565b6040516104e59190611fc6565b60405180910390f35b6105086004803603810190610503919061200b565b610f60565b6040516105159190612376565b60405180910390f35b61053860048036038101906105339190611f6b565b6110d0565b60405161054a969594939291906123a0565b60405180910390f35b61056d60048036038101906105689190612401565b611166565b60405161057a9190611ff0565b60405180910390f35b61059d6004803603810190610598919061200b565b6111ed565b005b6105b960048036038101906105b4919061200b565b611257565b6040516105c69190611fc6565b60405180910390f35b6060600380546105de90612470565b80601f016020809104026020016040519081016040528092919081815260200182805461060a90612470565b80156106575780601f1061062c57610100808354040283529160200191610657565b820191906000526020600020905b81548152906001019060200180831161063a57829003601f168201915b5050505050905090565b60008061066c6115cf565b90506106798185856115d7565b600191505092915050565b60065481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060040160009054906101000a900460ff16905092915050565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461078f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906124ed565b60405180910390fd5b6107976107e6565b600a6107a3919061266f565b816107ae91906126ba565b60068190555050565b6000806107c26115cf565b90506107cf8582856117a0565b6107da85858561182c565b60019150509392505050565b60006012905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6000806108226115cf565b90506108438185856108348589611166565b61083e91906126fc565b6115d7565b600191505092915050565b61085f6108596115cf565b82611aa2565b50565b6060600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156108ed57602002820191906000526020600020905b8154815260200190600101908083116108d9575b50505050509050919050565b6000806109086103e885610db0565b905061091481336111ed565b83600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206002018190555082600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600301819055506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060040160006101000a81548160ff02191690836001811115610b5f57610b5e61204b565b5b021790555042600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600501819055503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f4b43dd3fcceb563e084ac080990347e11481b92ea20ce22d4d513a6efe678be483866000604051610c1e93929190612730565b60405180910390a3600191505092915050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cd782610cd16115cf565b836117a0565b610ce18282611aa2565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6c906124ed565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000602d600854610dc191906126fc565b600881905550823383600854604051602001610ddf939291906127d0565b6040516020818303038152906040528051906020012060001c610e02919061283c565b905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054610e3f90612470565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6b90612470565b8015610eb85780601f10610e8d57610100808354040283529160200191610eb8565b820191906000526020600020905b815481529060010190602001808311610e9b57829003601f168201915b5050505050905090565b600080610ecd6115cf565b90506000610edb8286611166565b905083811015610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f17906128df565b60405180910390fd5b610f2d82868684036115d7565b60019250505092915050565b600080339050610f4a81858561182c565b610f5484846108f9565b50600191505092915050565b610f68611dac565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206040518060c00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660018111156110a8576110a761204b565b5b60018111156110ba576110b961204b565b5b8152602001600582015481525050905092915050565b600a602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040160009054906101000a900460ff16908060050154905086565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208290806001815401808255809150506001900390600052602060002001600090919091909150555050565b60003373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be9061294b565b60405180910390fd5b6001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060040160006101000a81548160ff0219169083600181111561133e5761133d61204b565b5b02179055503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4b43dd3fcceb563e084ac080990347e11481b92ea20ce22d4d513a6efe678be485600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008881526020019081526020016000206003015460016040516113f893929190612730565b60405180910390a36001905092915050565b6114126107ef565b8161141b6106f5565b61142591906126fc565b1115611466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145d906129b7565b60405180910390fd5b6114708282611474565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da90612a23565b60405180910390fd5b6114ef60008383611c6f565b806002600082825461150191906126fc565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115b29190611ff0565b60405180910390a36115c660008383611d2f565b5050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163d90612ab5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ac90612b47565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117939190611ff0565b60405180910390a3505050565b60006117ac8484611166565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118265781811015611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f90612bb3565b60405180910390fd5b61182584848484036115d7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361189b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189290612c45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361190a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190190612cd7565b60405180910390fd5b611915838383611c6f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561199b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199290612d69565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a899190611ff0565b60405180910390a3611a9c848484611d2f565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0890612dfb565b60405180910390fd5b611b1d82600083611c6f565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90612e8d565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c569190611ff0565b60405180910390a3611c6a83600084611d2f565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611cd857504173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d115750600073ffffffffffffffffffffffffffffffffffffffff164173ffffffffffffffffffffffffffffffffffffffff1614155b15611d1f57611d1e611d34565b5b611d2a8383836115ca565b505050565b505050565b611d4041600654611d42565b565b611d4a6107ef565b81611d536106f5565b611d5d91906126fc565b1115611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9590612ef9565b60405180910390fd5b611da8828261140a565b5050565b6040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160006001811115611e1357611e1261204b565b5b8152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e5a578082015181840152602081019050611e3f565b60008484015250505050565b6000601f19601f8301169050919050565b6000611e8282611e20565b611e8c8185611e2b565b9350611e9c818560208601611e3c565b611ea581611e66565b840191505092915050565b60006020820190508181036000830152611eca8184611e77565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f0282611ed7565b9050919050565b611f1281611ef7565b8114611f1d57600080fd5b50565b600081359050611f2f81611f09565b92915050565b6000819050919050565b611f4881611f35565b8114611f5357600080fd5b50565b600081359050611f6581611f3f565b92915050565b60008060408385031215611f8257611f81611ed2565b5b6000611f9085828601611f20565b9250506020611fa185828601611f56565b9150509250929050565b60008115159050919050565b611fc081611fab565b82525050565b6000602082019050611fdb6000830184611fb7565b92915050565b611fea81611f35565b82525050565b60006020820190506120056000830184611fe1565b92915050565b6000806040838503121561202257612021611ed2565b5b600061203085828601611f56565b925050602061204185828601611f20565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061208b5761208a61204b565b5b50565b600081905061209c8261207a565b919050565b60006120ac8261208e565b9050919050565b6120bc816120a1565b82525050565b60006020820190506120d760008301846120b3565b92915050565b6000602082840312156120f3576120f2611ed2565b5b600061210184828501611f56565b91505092915050565b60008060006060848603121561212357612122611ed2565b5b600061213186828701611f20565b935050602061214286828701611f20565b925050604061215386828701611f56565b9150509250925092565b600060ff82169050919050565b6121738161215d565b82525050565b600060208201905061218e600083018461216a565b92915050565b6000602082840312156121aa576121a9611ed2565b5b60006121b884828501611f20565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6121f681611f35565b82525050565b600061220883836121ed565b60208301905092915050565b6000602082019050919050565b600061222c826121c1565b61223681856121cc565b9350612241836121dd565b8060005b8381101561227257815161225988826121fc565b975061226483612214565b925050600181019050612245565b5085935050505092915050565b600060208201905081810360008301526122998184612221565b905092915050565b60006122ac82611ed7565b9050919050565b6122bc816122a1565b82525050565b60006020820190506122d760008301846122b3565b92915050565b6122e681611ef7565b82525050565b6122f5816120a1565b82525050565b60c08201600082015161231160008501826122dd565b50602082015161232460208501826122dd565b50604082015161233760408501826121ed565b50606082015161234a60608501826121ed565b50608082015161235d60808501826122ec565b5060a082015161237060a08501826121ed565b50505050565b600060c08201905061238b60008301846122fb565b92915050565b61239a81611ef7565b82525050565b600060c0820190506123b56000830189612391565b6123c26020830188612391565b6123cf6040830187611fe1565b6123dc6060830186611fe1565b6123e960808301856120b3565b6123f660a0830184611fe1565b979650505050505050565b6000806040838503121561241857612417611ed2565b5b600061242685828601611f20565b925050602061243785828601611f20565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061248857607f821691505b60208210810361249b5761249a612441565b5b50919050565b7f4f6e6c7920746865206f776e65722072657761726420746f6b6f6e0000000000600082015250565b60006124d7601b83611e2b565b91506124e2826124a1565b602082019050919050565b60006020820190508181036000830152612506816124ca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156125935780860481111561256f5761256e61250d565b5b600185161561257e5780820291505b808102905061258c8561253c565b9450612553565b94509492505050565b6000826125ac5760019050612668565b816125ba5760009050612668565b81600181146125d057600281146125da57612609565b6001915050612668565b60ff8411156125ec576125eb61250d565b5b8360020a9150848211156126035761260261250d565b5b50612668565b5060208310610133831016604e8410600b841016171561263e5782820a9050838111156126395761263861250d565b5b612668565b61264b8484846001612549565b925090508184048111156126625761266161250d565b5b81810290505b9392505050565b600061267a82611f35565b91506126858361215d565b92506126b27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461259c565b905092915050565b60006126c582611f35565b91506126d083611f35565b92508282026126de81611f35565b915082820484148315176126f5576126f461250d565b5b5092915050565b600061270782611f35565b915061271283611f35565b925082820190508082111561272a5761272961250d565b5b92915050565b60006060820190506127456000830186611fe1565b6127526020830185611fe1565b61275f60408301846120b3565b949350505050565b60008160601b9050919050565b600061277f82612767565b9050919050565b600061279182612774565b9050919050565b6127a96127a482611ef7565b612786565b82525050565b6000819050919050565b6127ca6127c582611f35565b6127af565b82525050565b60006127dc8286612798565b6014820191506127ec8285612798565b6014820191506127fc82846127b9565b602082019150819050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061284782611f35565b915061285283611f35565b9250826128625761286161280d565b5b828206905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006128c9602583611e2b565b91506128d48261286d565b604082019050919050565b600060208201905081810360008301526128f8816128bc565b9050919050565b7f4f6e6c79207468652073656e6465722063616e20736574746c65000000000000600082015250565b6000612935601a83611e2b565b9150612940826128ff565b602082019050919050565b6000602082019050818103600083015261296481612928565b9050919050565b7f45524332304361707065643a2063617020657863656564656400000000000000600082015250565b60006129a1601983611e2b565b91506129ac8261296b565b602082019050919050565b600060208201905081810360008301526129d081612994565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612a0d601f83611e2b565b9150612a18826129d7565b602082019050919050565b60006020820190508181036000830152612a3c81612a00565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612a9f602483611e2b565b9150612aaa82612a43565b604082019050919050565b60006020820190508181036000830152612ace81612a92565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b31602283611e2b565b9150612b3c82612ad5565b604082019050919050565b60006020820190508181036000830152612b6081612b24565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612b9d601d83611e2b565b9150612ba882612b67565b602082019050919050565b60006020820190508181036000830152612bcc81612b90565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c2f602583611e2b565b9150612c3a82612bd3565b604082019050919050565b60006020820190508181036000830152612c5e81612c22565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cc1602383611e2b565b9150612ccc82612c65565b604082019050919050565b60006020820190508181036000830152612cf081612cb4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612d53602683611e2b565b9150612d5e82612cf7565b604082019050919050565b60006020820190508181036000830152612d8281612d46565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612de5602183611e2b565b9150612df082612d89565b604082019050919050565b60006020820190508181036000830152612e1481612dd8565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e77602283611e2b565b9150612e8282612e1b565b604082019050919050565b60006020820190508181036000830152612ea681612e6a565b9050919050565b7f436170206c696d69742065786365656421212100000000000000000000000000600082015250565b6000612ee3601383611e2b565b9150612eee82612ead565b602082019050919050565b60006020820190508181036000830152612f1281612ed6565b905091905056fea2646970667358221220caf8610031387d247750b0008c3b4ce30a6be7e04d86b465ed5d0d8bb12bdae164736f6c6343000811003300000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000000a

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806361529043116100f9578063a457c2d711610097578063d217b62511610071578063d217b6251461051e578063dd62ed3e14610553578063ea8d16a814610583578063f1aa69d21461059f576101a9565b8063a457c2d71461048e578063a9059cbb146104be578063ceab3af7146104ee576101a9565b806383197ef0116100d357806383197ef0146104185780638b349f3e146104225780638da5cb5b1461045257806395d89b4114610470576101a9565b8063615290431461039c57806370a08231146103cc57806379cc6790146103fc576101a9565b806323b872dd11610166578063395093511161014057806339509351146102f057806342966c681461032057806349d9bf811461033c5780634f5403f01461036c576101a9565b806323b872dd14610284578063313ce567146102b4578063355274ea146102d2576101a9565b806306fdde03146101ae578063095ea7b3146101cc5780630ac168a1146101fc578063129700831461021a57806318160ddd1461024a5780631a18e70714610268575b600080fd5b6101b66105cf565b6040516101c39190611eb0565b60405180910390f35b6101e660048036038101906101e19190611f6b565b610661565b6040516101f39190611fc6565b60405180910390f35b610204610684565b6040516102119190611ff0565b60405180910390f35b610234600480360381019061022f919061200b565b61068a565b60405161024191906120c2565b60405180910390f35b6102526106f5565b60405161025f9190611ff0565b60405180910390f35b610282600480360381019061027d91906120dd565b6106ff565b005b61029e6004803603810190610299919061210a565b6107b7565b6040516102ab9190611fc6565b60405180910390f35b6102bc6107e6565b6040516102c99190612179565b60405180910390f35b6102da6107ef565b6040516102e79190611ff0565b60405180910390f35b61030a60048036038101906103059190611f6b565b610817565b6040516103179190611fc6565b60405180910390f35b61033a600480360381019061033591906120dd565b61084e565b005b61035660048036038101906103519190612194565b610862565b604051610363919061227f565b60405180910390f35b61038660048036038101906103819190611f6b565b6108f9565b6040516103939190611fc6565b60405180910390f35b6103b660048036038101906103b19190612194565b610c31565b6040516103c39190611ff0565b60405180910390f35b6103e660048036038101906103e19190612194565b610c7d565b6040516103f39190611ff0565b60405180910390f35b61041660048036038101906104119190611f6b565b610cc5565b005b610420610ce5565b005b61043c6004803603810190610437919061200b565b610db0565b6040516104499190611ff0565b60405180910390f35b61045a610e0a565b60405161046791906122c2565b60405180910390f35b610478610e30565b6040516104859190611eb0565b60405180910390f35b6104a860048036038101906104a39190611f6b565b610ec2565b6040516104b59190611fc6565b60405180910390f35b6104d860048036038101906104d39190611f6b565b610f39565b6040516104e59190611fc6565b60405180910390f35b6105086004803603810190610503919061200b565b610f60565b6040516105159190612376565b60405180910390f35b61053860048036038101906105339190611f6b565b6110d0565b60405161054a969594939291906123a0565b60405180910390f35b61056d60048036038101906105689190612401565b611166565b60405161057a9190611ff0565b60405180910390f35b61059d6004803603810190610598919061200b565b6111ed565b005b6105b960048036038101906105b4919061200b565b611257565b6040516105c69190611fc6565b60405180910390f35b6060600380546105de90612470565b80601f016020809104026020016040519081016040528092919081815260200182805461060a90612470565b80156106575780601f1061062c57610100808354040283529160200191610657565b820191906000526020600020905b81548152906001019060200180831161063a57829003601f168201915b5050505050905090565b60008061066c6115cf565b90506106798185856115d7565b600191505092915050565b60065481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060040160009054906101000a900460ff16905092915050565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461078f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906124ed565b60405180910390fd5b6107976107e6565b600a6107a3919061266f565b816107ae91906126ba565b60068190555050565b6000806107c26115cf565b90506107cf8582856117a0565b6107da85858561182c565b60019150509392505050565b60006012905090565b60007f00000000000000000000000000000000000000000000d3c21bcecceda1000000905090565b6000806108226115cf565b90506108438185856108348589611166565b61083e91906126fc565b6115d7565b600191505092915050565b61085f6108596115cf565b82611aa2565b50565b6060600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156108ed57602002820191906000526020600020905b8154815260200190600101908083116108d9575b50505050509050919050565b6000806109086103e885610db0565b905061091481336111ed565b83600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206002018190555082600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600301819055506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060040160006101000a81548160ff02191690836001811115610b5f57610b5e61204b565b5b021790555042600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600501819055503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f4b43dd3fcceb563e084ac080990347e11481b92ea20ce22d4d513a6efe678be483866000604051610c1e93929190612730565b60405180910390a3600191505092915050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cd782610cd16115cf565b836117a0565b610ce18282611aa2565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6c906124ed565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000602d600854610dc191906126fc565b600881905550823383600854604051602001610ddf939291906127d0565b6040516020818303038152906040528051906020012060001c610e02919061283c565b905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054610e3f90612470565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6b90612470565b8015610eb85780601f10610e8d57610100808354040283529160200191610eb8565b820191906000526020600020905b815481529060010190602001808311610e9b57829003601f168201915b5050505050905090565b600080610ecd6115cf565b90506000610edb8286611166565b905083811015610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f17906128df565b60405180910390fd5b610f2d82868684036115d7565b60019250505092915050565b600080339050610f4a81858561182c565b610f5484846108f9565b50600191505092915050565b610f68611dac565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206040518060c00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660018111156110a8576110a761204b565b5b60018111156110ba576110b961204b565b5b8152602001600582015481525050905092915050565b600a602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040160009054906101000a900460ff16908060050154905086565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208290806001815401808255809150506001900390600052602060002001600090919091909150555050565b60003373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be9061294b565b60405180910390fd5b6001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060040160006101000a81548160ff0219169083600181111561133e5761133d61204b565b5b02179055503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4b43dd3fcceb563e084ac080990347e11481b92ea20ce22d4d513a6efe678be485600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008881526020019081526020016000206003015460016040516113f893929190612730565b60405180910390a36001905092915050565b6114126107ef565b8161141b6106f5565b61142591906126fc565b1115611466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145d906129b7565b60405180910390fd5b6114708282611474565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da90612a23565b60405180910390fd5b6114ef60008383611c6f565b806002600082825461150191906126fc565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115b29190611ff0565b60405180910390a36115c660008383611d2f565b5050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163d90612ab5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ac90612b47565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117939190611ff0565b60405180910390a3505050565b60006117ac8484611166565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118265781811015611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f90612bb3565b60405180910390fd5b61182584848484036115d7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361189b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189290612c45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361190a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190190612cd7565b60405180910390fd5b611915838383611c6f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561199b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199290612d69565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a899190611ff0565b60405180910390a3611a9c848484611d2f565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0890612dfb565b60405180910390fd5b611b1d82600083611c6f565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90612e8d565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c569190611ff0565b60405180910390a3611c6a83600084611d2f565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611cd857504173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d115750600073ffffffffffffffffffffffffffffffffffffffff164173ffffffffffffffffffffffffffffffffffffffff1614155b15611d1f57611d1e611d34565b5b611d2a8383836115ca565b505050565b505050565b611d4041600654611d42565b565b611d4a6107ef565b81611d536106f5565b611d5d91906126fc565b1115611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9590612ef9565b60405180910390fd5b611da8828261140a565b5050565b6040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160006001811115611e1357611e1261204b565b5b8152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e5a578082015181840152602081019050611e3f565b60008484015250505050565b6000601f19601f8301169050919050565b6000611e8282611e20565b611e8c8185611e2b565b9350611e9c818560208601611e3c565b611ea581611e66565b840191505092915050565b60006020820190508181036000830152611eca8184611e77565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f0282611ed7565b9050919050565b611f1281611ef7565b8114611f1d57600080fd5b50565b600081359050611f2f81611f09565b92915050565b6000819050919050565b611f4881611f35565b8114611f5357600080fd5b50565b600081359050611f6581611f3f565b92915050565b60008060408385031215611f8257611f81611ed2565b5b6000611f9085828601611f20565b9250506020611fa185828601611f56565b9150509250929050565b60008115159050919050565b611fc081611fab565b82525050565b6000602082019050611fdb6000830184611fb7565b92915050565b611fea81611f35565b82525050565b60006020820190506120056000830184611fe1565b92915050565b6000806040838503121561202257612021611ed2565b5b600061203085828601611f56565b925050602061204185828601611f20565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061208b5761208a61204b565b5b50565b600081905061209c8261207a565b919050565b60006120ac8261208e565b9050919050565b6120bc816120a1565b82525050565b60006020820190506120d760008301846120b3565b92915050565b6000602082840312156120f3576120f2611ed2565b5b600061210184828501611f56565b91505092915050565b60008060006060848603121561212357612122611ed2565b5b600061213186828701611f20565b935050602061214286828701611f20565b925050604061215386828701611f56565b9150509250925092565b600060ff82169050919050565b6121738161215d565b82525050565b600060208201905061218e600083018461216a565b92915050565b6000602082840312156121aa576121a9611ed2565b5b60006121b884828501611f20565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6121f681611f35565b82525050565b600061220883836121ed565b60208301905092915050565b6000602082019050919050565b600061222c826121c1565b61223681856121cc565b9350612241836121dd565b8060005b8381101561227257815161225988826121fc565b975061226483612214565b925050600181019050612245565b5085935050505092915050565b600060208201905081810360008301526122998184612221565b905092915050565b60006122ac82611ed7565b9050919050565b6122bc816122a1565b82525050565b60006020820190506122d760008301846122b3565b92915050565b6122e681611ef7565b82525050565b6122f5816120a1565b82525050565b60c08201600082015161231160008501826122dd565b50602082015161232460208501826122dd565b50604082015161233760408501826121ed565b50606082015161234a60608501826121ed565b50608082015161235d60808501826122ec565b5060a082015161237060a08501826121ed565b50505050565b600060c08201905061238b60008301846122fb565b92915050565b61239a81611ef7565b82525050565b600060c0820190506123b56000830189612391565b6123c26020830188612391565b6123cf6040830187611fe1565b6123dc6060830186611fe1565b6123e960808301856120b3565b6123f660a0830184611fe1565b979650505050505050565b6000806040838503121561241857612417611ed2565b5b600061242685828601611f20565b925050602061243785828601611f20565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061248857607f821691505b60208210810361249b5761249a612441565b5b50919050565b7f4f6e6c7920746865206f776e65722072657761726420746f6b6f6e0000000000600082015250565b60006124d7601b83611e2b565b91506124e2826124a1565b602082019050919050565b60006020820190508181036000830152612506816124ca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156125935780860481111561256f5761256e61250d565b5b600185161561257e5780820291505b808102905061258c8561253c565b9450612553565b94509492505050565b6000826125ac5760019050612668565b816125ba5760009050612668565b81600181146125d057600281146125da57612609565b6001915050612668565b60ff8411156125ec576125eb61250d565b5b8360020a9150848211156126035761260261250d565b5b50612668565b5060208310610133831016604e8410600b841016171561263e5782820a9050838111156126395761263861250d565b5b612668565b61264b8484846001612549565b925090508184048111156126625761266161250d565b5b81810290505b9392505050565b600061267a82611f35565b91506126858361215d565b92506126b27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461259c565b905092915050565b60006126c582611f35565b91506126d083611f35565b92508282026126de81611f35565b915082820484148315176126f5576126f461250d565b5b5092915050565b600061270782611f35565b915061271283611f35565b925082820190508082111561272a5761272961250d565b5b92915050565b60006060820190506127456000830186611fe1565b6127526020830185611fe1565b61275f60408301846120b3565b949350505050565b60008160601b9050919050565b600061277f82612767565b9050919050565b600061279182612774565b9050919050565b6127a96127a482611ef7565b612786565b82525050565b6000819050919050565b6127ca6127c582611f35565b6127af565b82525050565b60006127dc8286612798565b6014820191506127ec8285612798565b6014820191506127fc82846127b9565b602082019150819050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061284782611f35565b915061285283611f35565b9250826128625761286161280d565b5b828206905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006128c9602583611e2b565b91506128d48261286d565b604082019050919050565b600060208201905081810360008301526128f8816128bc565b9050919050565b7f4f6e6c79207468652073656e6465722063616e20736574746c65000000000000600082015250565b6000612935601a83611e2b565b9150612940826128ff565b602082019050919050565b6000602082019050818103600083015261296481612928565b9050919050565b7f45524332304361707065643a2063617020657863656564656400000000000000600082015250565b60006129a1601983611e2b565b91506129ac8261296b565b602082019050919050565b600060208201905081810360008301526129d081612994565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612a0d601f83611e2b565b9150612a18826129d7565b602082019050919050565b60006020820190508181036000830152612a3c81612a00565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612a9f602483611e2b565b9150612aaa82612a43565b604082019050919050565b60006020820190508181036000830152612ace81612a92565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b31602283611e2b565b9150612b3c82612ad5565b604082019050919050565b60006020820190508181036000830152612b6081612b24565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612b9d601d83611e2b565b9150612ba882612b67565b602082019050919050565b60006020820190508181036000830152612bcc81612b90565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c2f602583611e2b565b9150612c3a82612bd3565b604082019050919050565b60006020820190508181036000830152612c5e81612c22565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cc1602383611e2b565b9150612ccc82612c65565b604082019050919050565b60006020820190508181036000830152612cf081612cb4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612d53602683611e2b565b9150612d5e82612cf7565b604082019050919050565b60006020820190508181036000830152612d8281612d46565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612de5602183611e2b565b9150612df082612d89565b604082019050919050565b60006020820190508181036000830152612e1481612dd8565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e77602283611e2b565b9150612e8282612e1b565b604082019050919050565b60006020820190508181036000830152612ea681612e6a565b9050919050565b7f436170206c696d69742065786365656421212100000000000000000000000000600082015250565b6000612ee3601383611e2b565b9150612eee82612ead565b602082019050919050565b60006020820190508181036000830152612f1281612ed6565b905091905056fea2646970667358221220caf8610031387d247750b0008c3b4ce30a6be7e04d86b465ed5d0d8bb12bdae164736f6c63430008110033

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

00000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000000a

-----Decoded View---------------
Arg [0] : cap (uint256): 1000000
Arg [1] : _blockReward (uint256): 10

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000f4240
Arg [1] : 000000000000000000000000000000000000000000000000000000000000000a


[ 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.