false
true
0

Contract Address Details

0x4c76406E1d2eFc93c4D2932aBdd257620Ef558ac

Token
Genesis Mandala (GMAN)
Creator
0xabef28–724b05 at 0xf5f37c–ad3f0f
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
36 Transactions
Transfers
0 Transfers
Gas Used
0
Last Balance Update
25900220
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify. View contract in Sourcify repository
Contract name:
PlaygroundToken




Optimization enabled
false
Compiler version
v0.8.20+commit.a1b79de6




EVM Version
shanghai




Verified at
2026-02-11T10:47:42.445764Z

Constructor Arguments

00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000abef2874c5ef165fc2194c180e06894871724b050000000000000000000000003a6c545c9e07e6d3041dc802033400f7fbf96c9a00000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000000000000000000000000000000000000000000f47656e65736973204d616e64616c6100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004474d414e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001be47656e65736973204d616e64616c6120697320746865207665727920666972737420506c617967726f756e64206368696c6420626f726e2066726f6d20746865204d616e64616c6120706172656e7420746f6b656e202d20746865206f726967696e20706f696e74206f66206372656174696f6e2e20497420726570726573656e74732074686520226269672062616e6722206f6620746865204d616e64616c6120706c617967726f756e643a206120736166652c206578706572696d656e74616c2073706163652077686572652074686520636f6d6d756e6974792063616e2074657374206e65772069646561732c206d696e74206372656174696f6e732c20616e6420706c6179207769746820746865206d696e742f636c61696d206d656368616e69637320776974686f757420666561722e20474d414e20697320776865726520746865204d616e64616c6120756e69766572736520626567696e7320746f20657870616e642c20696e766974696e672065766572796f6e6520746f206d696e74207468656972206669727374206372656174696f6e732c20616e642073686170652074686520706c617967726f756e6420746f6765746865722e0000

Arg [0] (string) : Genesis Mandala
Arg [1] (string) : GMAN
Arg [2] (address) : 0xabef2874c5ef165fc2194c180e06894871724b05
Arg [3] (address) : 0x3a6c545c9e07e6d3041dc802033400f7fbf96c9a
Arg [4] (string) : Genesis Mandala is the very first Playground child born from the Mandala parent token - the origin point of creation. It represents the "big bang" of the Mandala playground: a safe, experimental space where the community can test new ideas, mint creations, and play with the mint/claim mechanics without fear. GMAN is where the Mandala universe begins to expand, inviting everyone to mint their first creations, and shape the playground together.
Arg [5] (uint256) : 1000000000000000000000000000

              

contracts/PlaygroundToken.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

/**
 * @title PlaygroundToken
 * @dev ERC20 token with wrap/unwrap functionality using parent tokens
 * @notice Users can wrap parent tokens to receive PlaygroundTokens (burn function)
 *         and unwrap PlaygroundTokens to get back parent tokens (claim function)
 */
contract PlaygroundToken is ERC20, Ownable, ReentrancyGuard {
    using SafeERC20 for IERC20;

    /// @dev Parent token address used for wrapping/unwrapping
    address public parent;

    /// @dev Token description
    string public description;

    /// @dev Maximum supply cap (immutable)
    uint256 public immutable maxSupply;

    /// @dev Factory address that can mint tokens (immutable)
    address public immutable factory;

    /**
     * @dev Constructor
     * @param name ERC20 token name
     * @param symbol ERC20 token symbol
     * @param factoryAddress Factory contract address (for minting access control)
     * @param parentToken Parent token address for wrapping/unwrapping
     * @param tokenDescription Token description
     * @param maxTokenSupply Maximum supply cap (must be >= 1 billion tokens)
     */
    constructor(
        string memory name,
        string memory symbol,
        address factoryAddress,
        address parentToken,
        string memory tokenDescription,
        uint256 maxTokenSupply
    ) ERC20(name, symbol) Ownable(msg.sender) {
        require(parentToken != address(0), "PlaygroundToken: parent token cannot be zero address");
        require(
            maxTokenSupply >= 1_000_000_000 * 10**18,
            "PlaygroundToken: maxSupply must be at least 1 billion tokens"
        );

        parent = parentToken;
        description = tokenDescription;
        maxSupply = maxTokenSupply;
        factory = factoryAddress;
    }

    /**
     * @dev Wrap parent tokens into PlaygroundTokens
     * @notice Transfers parent tokens from user and mints PlaygroundTokens
     * @param amount Amount of parent tokens to wrap
     */
    function burn(uint256 amount) external {
        require(amount > 0, "PlaygroundToken: amount must be greater than zero");

        // Transfer parent tokens from user to this contract
        IERC20(parent).safeTransferFrom(msg.sender, address(this), amount);

        // Check max supply constraint
        require(
            totalSupply() + amount <= maxSupply,
            "PlaygroundToken: would exceed max supply"
        );

        // Mint PlaygroundTokens to user
        _mint(msg.sender, amount);
    }

    /**
     * @dev Unwrap PlaygroundTokens back to parent tokens
     * @notice Burns PlaygroundTokens and transfers parent tokens to user
     * @param amount Amount of PlaygroundTokens to unwrap
     */
    function claim(uint256 amount) external nonReentrant {
        require(amount > 0, "PlaygroundToken: amount must be greater than zero");

        // Burn PlaygroundTokens from user
        _burn(msg.sender, amount);

        // Transfer parent tokens from contract to user
        IERC20(parent).safeTransfer(msg.sender, amount);
    }

    /**
     * @dev Mint tokens (only callable by factory)
     * @notice Used by factory during token creation and for future minting logic
     * @param to Address to mint tokens to
     * @param amount Amount of tokens to mint
     */
    function mint(address to, uint256 amount) external {
        require(msg.sender == factory, "PlaygroundToken: only factory can mint");
        require(amount > 0, "PlaygroundToken: amount must be greater than zero");
        require(
            totalSupply() + amount <= maxSupply,
            "PlaygroundToken: would exceed max supply"
        );

        _mint(to, amount);
    }
}
        

/IERC20.sol

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)

pragma solidity >=0.4.16;

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}
          

/IERC165.sol

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.16;
interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
          

/

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.16;
import {IERC20} from "../token/ERC20/IERC20.sol";
          

/

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.16;
import {IERC165} from "../utils/introspection/IERC165.sol";
          

/

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4;

interface IERC20Errors {
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
    error ERC20InvalidSender(address sender);
    error ERC20InvalidReceiver(address receiver);
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
    error ERC20InvalidApprover(address approver);
    error ERC20InvalidSpender(address spender);
}
interface IERC721Errors {
    error ERC721InvalidOwner(address owner);
    error ERC721NonexistentToken(uint256 tokenId);
    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);
    error ERC721InvalidSender(address sender);
    error ERC721InvalidReceiver(address receiver);
    error ERC721InsufficientApproval(address operator, uint256 tokenId);
    error ERC721InvalidApprover(address approver);
    error ERC721InvalidOperator(address operator);
}
interface IERC1155Errors {
    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);
    error ERC1155InvalidSender(address sender);
    error ERC1155InvalidReceiver(address receiver);
    error ERC1155MissingApprovalForAll(address operator, address owner);
    error ERC1155InvalidApprover(address approver);
    error ERC1155InvalidOperator(address operator);
    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}
          

/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.2;
import {IERC20} from "./IERC20.sol";
import {IERC165} from "./IERC165.sol";
interface IERC1363 is IERC20, IERC165 {
    function transferAndCall(address to, uint256 value) external returns (bool);
    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);
    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);
    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);
    function approveAndCall(address spender, uint256 value) external returns (bool);
    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);
}
          

/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

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

/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import {Context} from "../utils/Context.sol";

abstract contract Ownable is Context {
    address private _owner;
    error OwnableUnauthorizedAccount(address account);
    error OwnableInvalidOwner(address owner);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor(address initialOwner) {
        if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); }
        _transferOwnership(initialOwner);
    }

    modifier onlyOwner() { _checkOwner(); _; }
    function owner() public view virtual returns (address) { return _owner; }
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); }
    }
    function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); }
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
          

/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

abstract contract ReentrancyGuard {
    uint256 private constant NOT_ENTERED = 1;
    uint256 private constant ENTERED = 2;
    uint256 private _status;

    error ReentrancyGuardReentrantCall();

    constructor() { _status = NOT_ENTERED; }

    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        if (_status == ENTERED) { revert ReentrancyGuardReentrantCall(); }
        _status = ENTERED;
    }

    function _nonReentrantAfter() private { _status = NOT_ENTERED; }

    function _reentrancyGuardEntered() internal view returns (bool) { return _status == ENTERED; }
}
          

/utils/SafeERC20.sol

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)

pragma solidity ^0.8.20;

import {IERC20} from "../IERC20.sol";
import {IERC1363} from "../../../interfaces/IERC1363.sol";

library SafeERC20 {
    error SafeERC20FailedOperation(address token);
    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));
    }

    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {
        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));
    }

    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {
        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));
    }

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 oldAllowance = token.allowance(address(this), spender);
        forceApprove(token, spender, oldAllowance + value);
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {
        unchecked {
            uint256 currentAllowance = token.allowance(address(this), spender);
            if (currentAllowance < requestedDecrease) {
                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);
            }
            forceApprove(token, spender, currentAllowance - requestedDecrease);
        }
    }

    function forceApprove(IERC20 token, address spender, uint256 value) internal {
        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));
        if (!_callOptionalReturnBool(token, approvalCall)) {
            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));
            _callOptionalReturn(token, approvalCall);
        }
    }

    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {
        if (to.code.length == 0) { safeTransfer(token, to, value); }
        else if (!token.transferAndCall(to, value, data)) { revert SafeERC20FailedOperation(address(token)); }
    }

    function transferFromAndCallRelaxed(IERC1363 token, address from, address to, uint256 value, bytes memory data) internal {
        if (to.code.length == 0) { safeTransferFrom(token, from, to, value); }
        else if (!token.transferFromAndCall(from, to, value, data)) { revert SafeERC20FailedOperation(address(token)); }
    }

    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {
        if (to.code.length == 0) { forceApprove(token, to, value); }
        else if (!token.approveAndCall(to, value, data)) { revert SafeERC20FailedOperation(address(token)); }
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        uint256 returnSize;
        uint256 returnValue;
        assembly ("memory-safe") {
            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)
            if iszero(success) {
                let ptr := mload(0x40)
                returndatacopy(ptr, 0, returndatasize())
                revert(ptr, returndatasize())
            }
            returnSize := returndatasize()
            returnValue := mload(0)
        }
        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {
            revert SafeERC20FailedOperation(address(token));
        }
    }

    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {
        bool success;
        uint256 returnSize;
        uint256 returnValue;
        assembly ("memory-safe") {
            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)
            returnSize := returndatasize()
            returnValue := mload(0)
        }
        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);
    }
}
          

/extensions/IERC20Metadata.sol

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.2;
import {IERC20} from "../IERC20.sol";
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}
          

/ERC20.sol

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.20;

import {IERC20} from "./IERC20.sol";
import {IERC20Metadata} from "./extensions/IERC20Metadata.sol";
import {Context} from "../../utils/Context.sol";
import {IERC20Errors} from "../../interfaces/draft-IERC6093.sol";

abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address account => uint256) private _balances;
    mapping(address account => mapping(address spender => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual returns (string memory) { return _name; }
    function symbol() public view virtual returns (string memory) { return _symbol; }
    function decimals() public view virtual returns (uint8) { return 18; }
    function totalSupply() public view virtual returns (uint256) { return _totalSupply; }
    function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; }

    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

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

    function approve(address spender, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) { revert ERC20InvalidSender(address(0)); }
        if (to == address(0)) { revert ERC20InvalidReceiver(address(0)); }
        _update(from, to, value);
    }

    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) { revert ERC20InsufficientBalance(from, fromBalance, value); }
            unchecked { _balances[from] = fromBalance - value; }
        }
        if (to == address(0)) {
            unchecked { _totalSupply -= value; }
        } else {
            unchecked { _balances[to] += value; }
        }
        emit Transfer(from, to, value);
    }

    function _mint(address account, uint256 value) internal {
        if (account == address(0)) { revert ERC20InvalidReceiver(address(0)); }
        _update(address(0), account, value);
    }

    function _burn(address account, uint256 value) internal {
        if (account == address(0)) { revert ERC20InvalidSender(address(0)); }
        _update(account, address(0), value);
    }

    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) { revert ERC20InvalidApprover(address(0)); }
        if (spender == address(0)) { revert ERC20InvalidSpender(address(0)); }
        _allowances[owner][spender] = value;
        if (emitEvent) { emit Approval(owner, spender, value); }
    }

    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance < type(uint256).max) {
            if (currentAllowance < value) { revert ERC20InsufficientAllowance(spender, currentAllowance, value); }
            unchecked { _approve(owner, spender, currentAllowance - value, false); }
        }
    }
}
          

Compiler Settings

{"remappings":[],"optimizer":{"runs":200,"enabled":false},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"shanghai","compilationTarget":{"contracts/PlaygroundToken.sol":"PlaygroundToken"}}
              

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"string","name":"name","internalType":"string"},{"type":"string","name":"symbol","internalType":"string"},{"type":"address","name":"factoryAddress","internalType":"address"},{"type":"address","name":"parentToken","internalType":"address"},{"type":"string","name":"tokenDescription","internalType":"string"},{"type":"uint256","name":"maxTokenSupply","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"allowance","internalType":"uint256"},{"type":"uint256","name":"needed","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"uint256","name":"balance","internalType":"uint256"},{"type":"uint256","name":"needed","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"type":"address","name":"approver","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"type":"address","name":"receiver","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"type":"address","name":"sender","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"type":"address","name":"spender","internalType":"address"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"type":"address","name":"owner","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"type":"address","name":"token","internalType":"address"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"burn","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"claim","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"description","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"factory","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"mint","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"parent","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]}]
              

Contract Creation Code

Verify & Publish
0x60c060405234801562000010575f80fd5b50604051620025933803806200259383398181016040528101906200003691906200052a565b33868681600390816200004a91906200084d565b5080600490816200005c91906200084d565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000d2575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000c9919062000942565b60405180910390fd5b620000e3816200024960201b60201c565b5060016006819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200015d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200015490620009e1565b60405180910390fd5b6b033b2e3c9fd0803ce8000000811015620001af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a69062000a75565b60405180910390fd5b8260075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600890816200020091906200084d565b5080608081815250508373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505050505050505062000a95565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6200036d8262000325565b810181811067ffffffffffffffff821117156200038f576200038e62000335565b5b80604052505050565b5f620003a36200030c565b9050620003b1828262000362565b919050565b5f67ffffffffffffffff821115620003d357620003d262000335565b5b620003de8262000325565b9050602081019050919050565b5f5b838110156200040a578082015181840152602081019050620003ed565b5f8484015250505050565b5f6200042b6200042584620003b6565b62000398565b9050828152602081018484840111156200044a576200044962000321565b5b62000457848285620003eb565b509392505050565b5f82601f8301126200047657620004756200031d565b5b81516200048884826020860162000415565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620004bc8262000491565b9050919050565b620004ce81620004b0565b8114620004d9575f80fd5b50565b5f81519050620004ec81620004c3565b92915050565b5f819050919050565b6200050681620004f2565b811462000511575f80fd5b50565b5f815190506200052481620004fb565b92915050565b5f805f805f8060c0878903121562000547576200054662000315565b5b5f87015167ffffffffffffffff81111562000567576200056662000319565b5b6200057589828a016200045f565b965050602087015167ffffffffffffffff81111562000599576200059862000319565b5b620005a789828a016200045f565b9550506040620005ba89828a01620004dc565b9450506060620005cd89828a01620004dc565b935050608087015167ffffffffffffffff811115620005f157620005f062000319565b5b620005ff89828a016200045f565b92505060a06200061289828a0162000514565b9150509295509295509295565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200066e57607f821691505b60208210810362000684576200068362000629565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006e87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006ab565b620006f48683620006ab565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620007356200072f6200072984620004f2565b6200070c565b620004f2565b9050919050565b5f819050919050565b620007508362000715565b620007686200075f826200073c565b848454620006b7565b825550505050565b5f90565b6200077e62000770565b6200078b81848462000745565b505050565b5b81811015620007b257620007a65f8262000774565b60018101905062000791565b5050565b601f8211156200080157620007cb816200068a565b620007d6846200069c565b81016020851015620007e6578190505b620007fe620007f5856200069c565b83018262000790565b50505b505050565b5f82821c905092915050565b5f620008235f198460080262000806565b1980831691505092915050565b5f6200083d838362000812565b9150826002028217905092915050565b62000858826200061f565b67ffffffffffffffff81111562000874576200087362000335565b5b62000880825462000656565b6200088d828285620007b6565b5f60209050601f831160018114620008c3575f8415620008ae578287015190505b620008ba858262000830565b86555062000929565b601f198416620008d3866200068a565b5f5b82811015620008fc57848901518255600182019150602085019450602081019050620008d5565b868310156200091c578489015162000918601f89168262000812565b8355505b6001600288020188555050505b505050505050565b6200093c81620004b0565b82525050565b5f602082019050620009575f83018462000931565b92915050565b5f82825260208201905092915050565b7f506c617967726f756e64546f6b656e3a20706172656e7420746f6b656e2063615f8201527f6e6e6f74206265207a65726f2061646472657373000000000000000000000000602082015250565b5f620009c96034836200095d565b9150620009d6826200096d565b604082019050919050565b5f6020820190508181035f830152620009fa81620009bb565b9050919050565b7f506c617967726f756e64546f6b656e3a206d6178537570706c79206d757374205f8201527f6265206174206c6561737420312062696c6c696f6e20746f6b656e7300000000602082015250565b5f62000a5d603c836200095d565b915062000a6a8262000a01565b604082019050919050565b5f6020820190508181035f83015262000a8e8162000a4f565b9050919050565b60805160a051611ac762000acc5f395f8181610539015261098101525f81816106090152818161071c01526109a50152611ac75ff3fe608060405234801561000f575f80fd5b506004361061011f575f3560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb146102e3578063c45a015514610313578063d5abeb0114610331578063dd62ed3e1461034f578063f2fde38b1461037f5761011f565b806370a082311461024f578063715018a61461027f5780637284e416146102895780638da5cb5b146102a757806395d89b41146102c55761011f565b8063313ce567116100f2578063313ce567146101bf578063379607f5146101dd57806340c10f19146101f957806342966c681461021557806360f96a8f146102315761011f565b806306fdde0314610123578063095ea7b31461014157806318160ddd1461017157806323b872dd1461018f575b5f80fd5b61012b61039b565b604051610138919061150f565b60405180910390f35b61015b600480360381019061015691906115c0565b61042b565b6040516101689190611618565b60405180910390f35b61017961044d565b6040516101869190611640565b60405180910390f35b6101a960048036038101906101a49190611659565b610456565b6040516101b69190611618565b60405180910390f35b6101c7610484565b6040516101d491906116c4565b60405180910390f35b6101f760048036038101906101f291906116dd565b61048c565b005b610213600480360381019061020e91906115c0565b610537565b005b61022f600480360381019061022a91906116dd565b61068a565b005b61023961079c565b6040516102469190611717565b60405180910390f35b61026960048036038101906102649190611730565b6107c1565b6040516102769190611640565b60405180910390f35b610287610806565b005b610291610819565b60405161029e919061150f565b60405180910390f35b6102af6108a5565b6040516102bc9190611717565b60405180910390f35b6102cd6108cd565b6040516102da919061150f565b60405180910390f35b6102fd60048036038101906102f891906115c0565b61095d565b60405161030a9190611618565b60405180910390f35b61031b61097f565b6040516103289190611717565b60405180910390f35b6103396109a3565b6040516103469190611640565b60405180910390f35b6103696004803603810190610364919061175b565b6109c7565b6040516103769190611640565b60405180910390f35b61039960048036038101906103949190611730565b610a49565b005b6060600380546103aa906117c6565b80601f01602080910402602001604051908101604052809291908181526020018280546103d6906117c6565b80156104215780601f106103f857610100808354040283529160200191610421565b820191905f5260205f20905b81548152906001019060200180831161040457829003601f168201915b5050505050905090565b5f80610435610acd565b9050610442818585610ad4565b600191505092915050565b5f600254905090565b5f80610460610acd565b905061046d858285610ae6565b610478858585610b79565b60019150509392505050565b5f6012905090565b610494610c69565b5f81116104d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104cd90611866565b60405180910390fd5b6104e03382610caf565b61052c338260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d2e9092919063ffffffff16565b610534610dad565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bc906118f4565b60405180910390fd5b5f8111610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fe90611866565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008161063161044d565b61063b919061193f565b111561067c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610673906119e2565b60405180910390fd5b6106868282610db7565b5050565b5f81116106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c390611866565b60405180910390fd5b61071a33308360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e36909392919063ffffffff16565b7f00000000000000000000000000000000000000000000000000000000000000008161074461044d565b61074e919061193f565b111561078f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906119e2565b60405180910390fd5b6107993382610db7565b50565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61080e610eb8565b6108175f610f3f565b565b60088054610826906117c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610852906117c6565b801561089d5780601f106108745761010080835404028352916020019161089d565b820191905f5260205f20905b81548152906001019060200180831161088057829003601f168201915b505050505081565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546108dc906117c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610908906117c6565b80156109535780601f1061092a57610100808354040283529160200191610953565b820191905f5260205f20905b81548152906001019060200180831161093657829003601f168201915b5050505050905090565b5f80610967610acd565b9050610974818585610b79565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610a51610eb8565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ac1575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610ab89190611717565b60405180910390fd5b610aca81610f3f565b50565b5f33905090565b610ae18383836001611002565b505050565b5f610af184846109c7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015610b735781811015610b64578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610b5b93929190611a00565b60405180910390fd5b610b7284848484035f611002565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610be9575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610be09190611717565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c59575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610c509190611717565b60405180910390fd5b610c648383836111d1565b505050565b600260065403610ca5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600681905550565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d1f575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610d169190611717565b60405180910390fd5b610d2a825f836111d1565b5050565b610da8838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401610d61929190611a35565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506113ea565b505050565b6001600681905550565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e27575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610e1e9190611717565b60405180910390fd5b610e325f83836111d1565b5050565b610eb2848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401610e6b93929190611a5c565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506113ea565b50505050565b610ec0610acd565b73ffffffffffffffffffffffffffffffffffffffff16610ede6108a5565b73ffffffffffffffffffffffffffffffffffffffff1614610f3d57610f01610acd565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610f349190611717565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611072575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016110699190611717565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110e2575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016110d99190611717565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156111cb578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516111c29190611640565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611221578060025f828254611215919061193f565b925050819055506112ef565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156112aa578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016112a193929190611a00565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611336578060025f8282540392505081905550611380565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113dd9190611640565b60405180910390a3505050565b5f8060205f8451602086015f885af180611409576040513d5f823e3d81fd5b3d92505f519150505f821461142257600181141561143d565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561147f57836040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016114769190611717565b60405180910390fd5b50505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156114bc5780820151818401526020810190506114a1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6114e182611485565b6114eb818561148f565b93506114fb81856020860161149f565b611504816114c7565b840191505092915050565b5f6020820190508181035f83015261152781846114d7565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61155c82611533565b9050919050565b61156c81611552565b8114611576575f80fd5b50565b5f8135905061158781611563565b92915050565b5f819050919050565b61159f8161158d565b81146115a9575f80fd5b50565b5f813590506115ba81611596565b92915050565b5f80604083850312156115d6576115d561152f565b5b5f6115e385828601611579565b92505060206115f4858286016115ac565b9150509250929050565b5f8115159050919050565b611612816115fe565b82525050565b5f60208201905061162b5f830184611609565b92915050565b61163a8161158d565b82525050565b5f6020820190506116535f830184611631565b92915050565b5f805f606084860312156116705761166f61152f565b5b5f61167d86828701611579565b935050602061168e86828701611579565b925050604061169f868287016115ac565b9150509250925092565b5f60ff82169050919050565b6116be816116a9565b82525050565b5f6020820190506116d75f8301846116b5565b92915050565b5f602082840312156116f2576116f161152f565b5b5f6116ff848285016115ac565b91505092915050565b61171181611552565b82525050565b5f60208201905061172a5f830184611708565b92915050565b5f602082840312156117455761174461152f565b5b5f61175284828501611579565b91505092915050565b5f80604083850312156117715761177061152f565b5b5f61177e85828601611579565b925050602061178f85828601611579565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806117dd57607f821691505b6020821081036117f0576117ef611799565b5b50919050565b7f506c617967726f756e64546f6b656e3a20616d6f756e74206d757374206265205f8201527f67726561746572207468616e207a65726f000000000000000000000000000000602082015250565b5f61185060318361148f565b915061185b826117f6565b604082019050919050565b5f6020820190508181035f83015261187d81611844565b9050919050565b7f506c617967726f756e64546f6b656e3a206f6e6c7920666163746f72792063615f8201527f6e206d696e740000000000000000000000000000000000000000000000000000602082015250565b5f6118de60268361148f565b91506118e982611884565b604082019050919050565b5f6020820190508181035f83015261190b816118d2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6119498261158d565b91506119548361158d565b925082820190508082111561196c5761196b611912565b5b92915050565b7f506c617967726f756e64546f6b656e3a20776f756c6420657863656564206d615f8201527f7820737570706c79000000000000000000000000000000000000000000000000602082015250565b5f6119cc60288361148f565b91506119d782611972565b604082019050919050565b5f6020820190508181035f8301526119f9816119c0565b9050919050565b5f606082019050611a135f830186611708565b611a206020830185611631565b611a2d6040830184611631565b949350505050565b5f604082019050611a485f830185611708565b611a556020830184611631565b9392505050565b5f606082019050611a6f5f830186611708565b611a7c6020830185611708565b611a896040830184611631565b94935050505056fea2646970667358221220cabde4994c795c643bbb955bd85117b962eeb3fad39476b0777e61bff048578764736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000abef2874c5ef165fc2194c180e06894871724b050000000000000000000000003a6c545c9e07e6d3041dc802033400f7fbf96c9a00000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000000000000000000000000000000000000000000f47656e65736973204d616e64616c6100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004474d414e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001be47656e65736973204d616e64616c6120697320746865207665727920666972737420506c617967726f756e64206368696c6420626f726e2066726f6d20746865204d616e64616c6120706172656e7420746f6b656e202d20746865206f726967696e20706f696e74206f66206372656174696f6e2e20497420726570726573656e74732074686520226269672062616e6722206f6620746865204d616e64616c6120706c617967726f756e643a206120736166652c206578706572696d656e74616c2073706163652077686572652074686520636f6d6d756e6974792063616e2074657374206e65772069646561732c206d696e74206372656174696f6e732c20616e6420706c6179207769746820746865206d696e742f636c61696d206d656368616e69637320776974686f757420666561722e20474d414e20697320776865726520746865204d616e64616c6120756e69766572736520626567696e7320746f20657870616e642c20696e766974696e672065766572796f6e6520746f206d696e74207468656972206669727374206372656174696f6e732c20616e642073686170652074686520706c617967726f756e6420746f6765746865722e0000

Deployed ByteCode

0x608060405234801561000f575f80fd5b506004361061011f575f3560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb146102e3578063c45a015514610313578063d5abeb0114610331578063dd62ed3e1461034f578063f2fde38b1461037f5761011f565b806370a082311461024f578063715018a61461027f5780637284e416146102895780638da5cb5b146102a757806395d89b41146102c55761011f565b8063313ce567116100f2578063313ce567146101bf578063379607f5146101dd57806340c10f19146101f957806342966c681461021557806360f96a8f146102315761011f565b806306fdde0314610123578063095ea7b31461014157806318160ddd1461017157806323b872dd1461018f575b5f80fd5b61012b61039b565b604051610138919061150f565b60405180910390f35b61015b600480360381019061015691906115c0565b61042b565b6040516101689190611618565b60405180910390f35b61017961044d565b6040516101869190611640565b60405180910390f35b6101a960048036038101906101a49190611659565b610456565b6040516101b69190611618565b60405180910390f35b6101c7610484565b6040516101d491906116c4565b60405180910390f35b6101f760048036038101906101f291906116dd565b61048c565b005b610213600480360381019061020e91906115c0565b610537565b005b61022f600480360381019061022a91906116dd565b61068a565b005b61023961079c565b6040516102469190611717565b60405180910390f35b61026960048036038101906102649190611730565b6107c1565b6040516102769190611640565b60405180910390f35b610287610806565b005b610291610819565b60405161029e919061150f565b60405180910390f35b6102af6108a5565b6040516102bc9190611717565b60405180910390f35b6102cd6108cd565b6040516102da919061150f565b60405180910390f35b6102fd60048036038101906102f891906115c0565b61095d565b60405161030a9190611618565b60405180910390f35b61031b61097f565b6040516103289190611717565b60405180910390f35b6103396109a3565b6040516103469190611640565b60405180910390f35b6103696004803603810190610364919061175b565b6109c7565b6040516103769190611640565b60405180910390f35b61039960048036038101906103949190611730565b610a49565b005b6060600380546103aa906117c6565b80601f01602080910402602001604051908101604052809291908181526020018280546103d6906117c6565b80156104215780601f106103f857610100808354040283529160200191610421565b820191905f5260205f20905b81548152906001019060200180831161040457829003601f168201915b5050505050905090565b5f80610435610acd565b9050610442818585610ad4565b600191505092915050565b5f600254905090565b5f80610460610acd565b905061046d858285610ae6565b610478858585610b79565b60019150509392505050565b5f6012905090565b610494610c69565b5f81116104d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104cd90611866565b60405180910390fd5b6104e03382610caf565b61052c338260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d2e9092919063ffffffff16565b610534610dad565b50565b7f000000000000000000000000abef2874c5ef165fc2194c180e06894871724b0573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bc906118f4565b60405180910390fd5b5f8111610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fe90611866565b60405180910390fd5b7f0000000000000000000000000000000000000000033b2e3c9fd0803ce80000008161063161044d565b61063b919061193f565b111561067c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610673906119e2565b60405180910390fd5b6106868282610db7565b5050565b5f81116106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c390611866565b60405180910390fd5b61071a33308360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e36909392919063ffffffff16565b7f0000000000000000000000000000000000000000033b2e3c9fd0803ce80000008161074461044d565b61074e919061193f565b111561078f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906119e2565b60405180910390fd5b6107993382610db7565b50565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61080e610eb8565b6108175f610f3f565b565b60088054610826906117c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610852906117c6565b801561089d5780601f106108745761010080835404028352916020019161089d565b820191905f5260205f20905b81548152906001019060200180831161088057829003601f168201915b505050505081565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546108dc906117c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610908906117c6565b80156109535780601f1061092a57610100808354040283529160200191610953565b820191905f5260205f20905b81548152906001019060200180831161093657829003601f168201915b5050505050905090565b5f80610967610acd565b9050610974818585610b79565b600191505092915050565b7f000000000000000000000000abef2874c5ef165fc2194c180e06894871724b0581565b7f0000000000000000000000000000000000000000033b2e3c9fd0803ce800000081565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610a51610eb8565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ac1575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610ab89190611717565b60405180910390fd5b610aca81610f3f565b50565b5f33905090565b610ae18383836001611002565b505050565b5f610af184846109c7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015610b735781811015610b64578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610b5b93929190611a00565b60405180910390fd5b610b7284848484035f611002565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610be9575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610be09190611717565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c59575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610c509190611717565b60405180910390fd5b610c648383836111d1565b505050565b600260065403610ca5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600681905550565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d1f575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610d169190611717565b60405180910390fd5b610d2a825f836111d1565b5050565b610da8838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401610d61929190611a35565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506113ea565b505050565b6001600681905550565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e27575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610e1e9190611717565b60405180910390fd5b610e325f83836111d1565b5050565b610eb2848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401610e6b93929190611a5c565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506113ea565b50505050565b610ec0610acd565b73ffffffffffffffffffffffffffffffffffffffff16610ede6108a5565b73ffffffffffffffffffffffffffffffffffffffff1614610f3d57610f01610acd565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610f349190611717565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611072575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016110699190611717565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110e2575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016110d99190611717565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156111cb578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516111c29190611640565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611221578060025f828254611215919061193f565b925050819055506112ef565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156112aa578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016112a193929190611a00565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611336578060025f8282540392505081905550611380565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113dd9190611640565b60405180910390a3505050565b5f8060205f8451602086015f885af180611409576040513d5f823e3d81fd5b3d92505f519150505f821461142257600181141561143d565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561147f57836040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016114769190611717565b60405180910390fd5b50505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156114bc5780820151818401526020810190506114a1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6114e182611485565b6114eb818561148f565b93506114fb81856020860161149f565b611504816114c7565b840191505092915050565b5f6020820190508181035f83015261152781846114d7565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61155c82611533565b9050919050565b61156c81611552565b8114611576575f80fd5b50565b5f8135905061158781611563565b92915050565b5f819050919050565b61159f8161158d565b81146115a9575f80fd5b50565b5f813590506115ba81611596565b92915050565b5f80604083850312156115d6576115d561152f565b5b5f6115e385828601611579565b92505060206115f4858286016115ac565b9150509250929050565b5f8115159050919050565b611612816115fe565b82525050565b5f60208201905061162b5f830184611609565b92915050565b61163a8161158d565b82525050565b5f6020820190506116535f830184611631565b92915050565b5f805f606084860312156116705761166f61152f565b5b5f61167d86828701611579565b935050602061168e86828701611579565b925050604061169f868287016115ac565b9150509250925092565b5f60ff82169050919050565b6116be816116a9565b82525050565b5f6020820190506116d75f8301846116b5565b92915050565b5f602082840312156116f2576116f161152f565b5b5f6116ff848285016115ac565b91505092915050565b61171181611552565b82525050565b5f60208201905061172a5f830184611708565b92915050565b5f602082840312156117455761174461152f565b5b5f61175284828501611579565b91505092915050565b5f80604083850312156117715761177061152f565b5b5f61177e85828601611579565b925050602061178f85828601611579565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806117dd57607f821691505b6020821081036117f0576117ef611799565b5b50919050565b7f506c617967726f756e64546f6b656e3a20616d6f756e74206d757374206265205f8201527f67726561746572207468616e207a65726f000000000000000000000000000000602082015250565b5f61185060318361148f565b915061185b826117f6565b604082019050919050565b5f6020820190508181035f83015261187d81611844565b9050919050565b7f506c617967726f756e64546f6b656e3a206f6e6c7920666163746f72792063615f8201527f6e206d696e740000000000000000000000000000000000000000000000000000602082015250565b5f6118de60268361148f565b91506118e982611884565b604082019050919050565b5f6020820190508181035f83015261190b816118d2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6119498261158d565b91506119548361158d565b925082820190508082111561196c5761196b611912565b5b92915050565b7f506c617967726f756e64546f6b656e3a20776f756c6420657863656564206d615f8201527f7820737570706c79000000000000000000000000000000000000000000000000602082015250565b5f6119cc60288361148f565b91506119d782611972565b604082019050919050565b5f6020820190508181035f8301526119f9816119c0565b9050919050565b5f606082019050611a135f830186611708565b611a206020830185611631565b611a2d6040830184611631565b949350505050565b5f604082019050611a485f830185611708565b611a556020830184611631565b9392505050565b5f606082019050611a6f5f830186611708565b611a7c6020830185611708565b611a896040830184611631565b94935050505056fea2646970667358221220cabde4994c795c643bbb955bd85117b962eeb3fad39476b0777e61bff048578764736f6c63430008140033