Goerli Testnet

Token

ERC-1155

Overview

Max Total Supply

0

Holders

1

Total Transfers

-

Market

Fully Diluted Market Cap

$0.00

Circulating Supply Market Cap

-
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x3eD7eB...f40f11b6
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
TroisPainsZeroJNF

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 2 of 2: TroisPainsZeroJNF.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

import "./ERC1155.sol";

contract TroisPainsZeroJNF is ERC1155 {
    /*//////////////////////////////////////////////////////////////
                          CONSTANTS/IMMUTABLES
    //////////////////////////////////////////////////////////////*/
    string constant BASE_URI =
        'data:application/json;base64,eyJuYW1lIjogIlRyb2lzIFBhaW5zIFplcm8iLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIkxvYnN0ZXJkb2cgcGFzdHJ5IGNoZWYuIiwKICAgICAgICAgICJpbWFnZSI6ICJodHRwczovL25mdC5xdWF0cmUtcXUuYXJ0L25mdC1saWJyYXJ5LnBocD9pZD0xMiIsCiAgICAgICAgICAiZXh0ZXJuYWxfdXJsIjogImh0dHBzOi8vbmZ0LnF1YXRyZS1xdS5hcnQvbmZ0LWxpYnJhcnkucGhwP2lkPTEyIn0K';
    bytes constant MINT_DATA = bytes("");
    uint256 public constant COLLECTION_ID = 1;
    address payable public immutable OWNER;

    /*//////////////////////////////////////////////////////////////
                            ERRORS
    //////////////////////////////////////////////////////////////*/
    error NotOwner();

    constructor(address payable _owner) {
        OWNER = _owner;
    }

    modifier onlyOwner() {
        if (msg.sender != OWNER) revert NotOwner();
        _;
    }

    /// @notice Get the URI of a token. The param is unused as we only have one collection.
    /** @dev The EIP-1155 suppose that the URI is the same for all tokens of a collection.
     ** As we only plan to use one collection for our challenge, I decided to override the param for gas efficiency. */
    function uri(uint256) public pure override returns (string memory) {
        return BASE_URI;
    }

    /** @notice Do a transfer of tokens from the owner reserve. Only the owner can do a transfer.
        The first and third parameter (from and ID) are enforced in the function
        as only the owner can transfer token AND we only plan to use one collection in our challenge */
    /// @param to address to transfer to
    /// @param amount amount of tokens to transfer. Must be 1 for our challenge
    /// @param data data to send to the receiver. Must be empty for our challenge
    function safeTransferFrom(
        address,
        address to,
        uint256,
        uint256 amount,
        bytes calldata data
    ) public override onlyOwner {
        super.safeTransferFrom(OWNER, to, COLLECTION_ID, amount, data);
    }

    /// @notice Do a batch transfer of token from the owner reserves. Only the owner can do a batch transfer.
    /// @param tos addresses to transfer to
    /// @param data data to send to the receiver. Must be empty for our challenge
    /// @dev Keep in mind this function uses a loop, which means it is susceptible to trigger an out-of-gas error.
    function batchSafeTransferFrom(
        address[] calldata tos,
        bytes calldata data
    ) external onlyOwner {
        uint256 length = tos.length;
        uint256 i;

        for (i; i < length; ) {
            super.safeTransferFrom(OWNER, tos[i], COLLECTION_ID, 1, data);

            unchecked {
                ++i;
            }
        }
    }

    /// @notice Disable the safeBatchTransferFrom function as we only have one collection for our challenge
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) public override onlyOwner {
        // useless as we will only use one collection for our challenge
    }

    /** @notice Mint new tokens to the owner. Only the owner can mint new tokens.
        As we only have one collection for our challenge, the id param is enforced. */
    function mint(uint256 amount) external onlyOwner {
        _mint(OWNER, COLLECTION_ID, amount, MINT_DATA);
    }

    /// @notice Destruct the smart-contract
    /// @dev The function uses the deprecated selfdestruct() opcode. Funds are send to the owner.
    function destruct() external onlyOwner {
        // destruct the smart-contract and send the potential
        // ethers holded by the smart-contract to the owner
        selfdestruct(OWNER);
    }
}

File 1 of 2: ERC1155.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Minimalist and gas efficient standard ERC1155 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event TransferSingle(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256 id,
        uint256 amount
    );

    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] amounts
    );

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    event URI(string value, uint256 indexed id);

    /*//////////////////////////////////////////////////////////////
                             ERC1155 STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(address => mapping(uint256 => uint256)) public balanceOf;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /*//////////////////////////////////////////////////////////////
                             METADATA LOGIC
    //////////////////////////////////////////////////////////////*/

    function uri(uint256 id) public view virtual returns (string memory);

    /*//////////////////////////////////////////////////////////////
                              ERC1155 LOGIC
    //////////////////////////////////////////////////////////////*/

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) public virtual {
        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        balanceOf[from][id] -= amount;
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, from, to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data) ==
                    ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) public virtual {
        require(ids.length == amounts.length, "LENGTH_MISMATCH");

        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        // Storing these outside the loop saves ~15 gas per iteration.
        uint256 id;
        uint256 amount;

        for (uint256 i = 0; i < ids.length; ) {
            id = ids[i];
            amount = amounts[i];

            balanceOf[from][id] -= amount;
            balanceOf[to][id] += amount;

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data) ==
                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids)
        public
        view
        virtual
        returns (uint256[] memory balances)
    {
        require(owners.length == ids.length, "LENGTH_MISMATCH");

        balances = new uint256[](owners.length);

        // Unchecked because the only math done is incrementing
        // the array index counter which cannot possibly overflow.
        unchecked {
            for (uint256 i = 0; i < owners.length; ++i) {
                balances[i] = balanceOf[owners[i]][ids[i]];
            }
        }
    }

    /*//////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155
            interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, address(0), to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data) ==
                    ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchMint(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[to][ids[i]] += amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, address(0), to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data) ==
                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchBurn(
        address from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[from][ids[i]] -= amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, address(0), ids, amounts);
    }

    function _burn(
        address from,
        uint256 id,
        uint256 amount
    ) internal virtual {
        balanceOf[from][id] -= amount;

        emit TransferSingle(msg.sender, from, address(0), id, amount);
    }
}

/// @notice A generic interface for a contract which properly accepts ERC1155 tokens.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155TokenReceiver {
    function onERC1155Received(
        address,
        address,
        uint256,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155Received.selector;
    }

    function onERC1155BatchReceived(
        address,
        address,
        uint256[] calldata,
        uint256[] calldata,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155BatchReceived.selector;
    }
}

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"COLLECTION_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OWNER","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tos","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"batchSafeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"destruct","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"}]

Contract Creation Code

60a060405234801561001057600080fd5b5060405161122d38038061122d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111636100ca60003960008181610156015281816102d00152818161031001528181610345015281816104d201528181610515015281816105c6015281816106150152818161068001526106c301526111636000f3fe608060405234801561001057600080fd5b50600436106100ce5760003560e01c80632eb2c2d61161008c578063a22cb46511610066578063a22cb465146101e8578063e95fa34b146101fb578063e985e9c51461020e578063f242432a1461023c57600080fd5b80632eb2c2d6146101a25780634e1273f4146101b5578063a0712d68146101d557600080fd5b8062fdd58e146100d357806301ffc9a71461010e5780630e89341c14610131578063117803e314610151578063201c338b146101905780632b68b9c614610198575b600080fd5b6100fb6100e1366004610a89565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61012161011c366004610ac9565b61024f565b6040519015158152602001610105565b61014461013f366004610aed565b6102a1565b6040516101059190610b4c565b6101787f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610105565b6100fb600181565b6101a06102c5565b005b6101a06101b0366004610bed565b61033a565b6101c86101c3366004610ca8565b61038d565b6040516101059190610d14565b6101a06101e3366004610aed565b6104c7565b6101a06101f6366004610d58565b61054f565b6101a0610209366004610d94565b6105bb565b61012161021c366004610df4565b600160209081526000928352604080842090915290825290205460ff1681565b6101a061024a366004610e27565b610675565b60006301ffc9a760e01b6001600160e01b0319831614806102805750636cdb3d1360e11b6001600160e01b03198316145b8061029b57506303a24d0760e21b6001600160e01b03198316145b92915050565b606060405180610180016040528061014d8152602001610fe161014d913992915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461030e576040516330cd747160e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316ff5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610383576040516330cd747160e01b815260040160405180910390fd5b5050505050505050565b60608382146103d55760405162461bcd60e51b815260206004820152600f60248201526e0988a9c8ea890be9a92a69a82a8869608b1b60448201526064015b60405180910390fd5b8367ffffffffffffffff8111156103ee576103ee610e9f565b604051908082528060200260200182016040528015610417578160200160208202803683370190505b50905060005b848110156104be5760008087878481811061043a5761043a610eb5565b905060200201602081019061044f9190610ecb565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085858481811061048357610483610eb5565b905060200201358152602001908152602001600020548282815181106104ab576104ab610eb5565b602090810291909101015260010161041d565b50949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610510576040516330cd747160e01b815260040160405180910390fd5b61054c7f0000000000000000000000000000000000000000000000000000000000000000600183604051806020016040528060008152506106ed565b50565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610604576040516330cd747160e01b815260040160405180910390fd5b8260005b8181101561066d576106657f000000000000000000000000000000000000000000000000000000000000000087878481811061064657610646610eb5565b905060200201602081019061065b9190610ecb565b6001808888610858565b600101610608565b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106be576040516330cd747160e01b815260040160405180910390fd5b61066d7f0000000000000000000000000000000000000000000000000000000000000000866001868686610858565b6001600160a01b0384166000908152602081815260408083208684529091528120805484929061071e908490610efc565b909155505060408051848152602081018490526001600160a01b0386169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b156108065760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e61906107b3903390600090899089908990600401610f0f565b6020604051808303816000875af11580156107d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f69190610f54565b6001600160e01b03191614610813565b6001600160a01b03841615155b6108525760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016103cc565b50505050565b336001600160a01b038716148061089257506001600160a01b038616600090815260016020908152604080832033845290915290205460ff165b6108cf5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064016103cc565b6001600160a01b03861660009081526020818152604080832087845290915281208054859290610900908490610f71565b90915550506001600160a01b03851660009081526020818152604080832087845290915281208054859290610936908490610efc565b909155505060408051858152602081018590526001600160a01b03808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0385163b15610a215760405163f23a6e6160e01b808252906001600160a01b0387169063f23a6e61906109ce9033908b908a908a908a908a90600401610f84565b6020604051808303816000875af11580156109ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a119190610f54565b6001600160e01b03191614610a2e565b6001600160a01b03851615155b61066d5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016103cc565b80356001600160a01b0381168114610a8457600080fd5b919050565b60008060408385031215610a9c57600080fd5b610aa583610a6d565b946020939093013593505050565b6001600160e01b03198116811461054c57600080fd5b600060208284031215610adb57600080fd5b8135610ae681610ab3565b9392505050565b600060208284031215610aff57600080fd5b5035919050565b6000815180845260005b81811015610b2c57602081850181015186830182015201610b10565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610ae66020830184610b06565b60008083601f840112610b7157600080fd5b50813567ffffffffffffffff811115610b8957600080fd5b6020830191508360208260051b8501011115610ba457600080fd5b9250929050565b60008083601f840112610bbd57600080fd5b50813567ffffffffffffffff811115610bd557600080fd5b602083019150836020828501011115610ba457600080fd5b60008060008060008060008060a0898b031215610c0957600080fd5b610c1289610a6d565b9750610c2060208a01610a6d565b9650604089013567ffffffffffffffff80821115610c3d57600080fd5b610c498c838d01610b5f565b909850965060608b0135915080821115610c6257600080fd5b610c6e8c838d01610b5f565b909650945060808b0135915080821115610c8757600080fd5b50610c948b828c01610bab565b999c989b5096995094979396929594505050565b60008060008060408587031215610cbe57600080fd5b843567ffffffffffffffff80821115610cd657600080fd5b610ce288838901610b5f565b90965094506020870135915080821115610cfb57600080fd5b50610d0887828801610b5f565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b81811015610d4c57835183529284019291840191600101610d30565b50909695505050505050565b60008060408385031215610d6b57600080fd5b610d7483610a6d565b915060208301358015158114610d8957600080fd5b809150509250929050565b60008060008060408587031215610daa57600080fd5b843567ffffffffffffffff80821115610dc257600080fd5b610dce88838901610b5f565b90965094506020870135915080821115610de757600080fd5b50610d0887828801610bab565b60008060408385031215610e0757600080fd5b610e1083610a6d565b9150610e1e60208401610a6d565b90509250929050565b60008060008060008060a08789031215610e4057600080fd5b610e4987610a6d565b9550610e5760208801610a6d565b94506040870135935060608701359250608087013567ffffffffffffffff811115610e8157600080fd5b610e8d89828a01610bab565b979a9699509497509295939492505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215610edd57600080fd5b610ae682610a6d565b634e487b7160e01b600052601160045260246000fd5b8082018082111561029b5761029b610ee6565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090610f4990830184610b06565b979650505050505050565b600060208284031215610f6657600080fd5b8151610ae681610ab3565b8181038181111561029b5761029b610ee6565b6001600160a01b03878116825286166020820152604081018590526060810184905260a06080820181905281018290526000828460c0840137600060c0848401015260c0601f19601f850116830101905097965050505050505056fe646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c65794a755957316c496a6f67496c527962326c7a494642686157357a4946706c636d38694c416f67494341674943416749434167496d526c63324e796158423061573975496a6f67496b7876596e4e305a584a6b623263676347467a64484a3549474e6f5a5759754969774b49434167494341674943416749434a706257466e5a53493649434a6f64485277637a6f764c32356d6443357864574630636d55746358557559584a304c32356d6443317361574a7959584a354c6e426f634439705a4430784d694973436941674943416749434167494341695a5868305a584a755957786664584a73496a6f67496d68306448427a4f693876626d5a304c6e4631595852795a53317864533568636e5176626d5a304c577870596e4a68636e6b756347687750326c6b50544579496e304ba2646970667358221220af7705702feef375aca8557bb363781890bb074f290935dbd832332499adff0564736f6c63430008110033000000000000000000000000b345f11fb5547e72e56d258febd35e1bc774feab

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100ce5760003560e01c80632eb2c2d61161008c578063a22cb46511610066578063a22cb465146101e8578063e95fa34b146101fb578063e985e9c51461020e578063f242432a1461023c57600080fd5b80632eb2c2d6146101a25780634e1273f4146101b5578063a0712d68146101d557600080fd5b8062fdd58e146100d357806301ffc9a71461010e5780630e89341c14610131578063117803e314610151578063201c338b146101905780632b68b9c614610198575b600080fd5b6100fb6100e1366004610a89565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61012161011c366004610ac9565b61024f565b6040519015158152602001610105565b61014461013f366004610aed565b6102a1565b6040516101059190610b4c565b6101787f000000000000000000000000b345f11fb5547e72e56d258febd35e1bc774feab81565b6040516001600160a01b039091168152602001610105565b6100fb600181565b6101a06102c5565b005b6101a06101b0366004610bed565b61033a565b6101c86101c3366004610ca8565b61038d565b6040516101059190610d14565b6101a06101e3366004610aed565b6104c7565b6101a06101f6366004610d58565b61054f565b6101a0610209366004610d94565b6105bb565b61012161021c366004610df4565b600160209081526000928352604080842090915290825290205460ff1681565b6101a061024a366004610e27565b610675565b60006301ffc9a760e01b6001600160e01b0319831614806102805750636cdb3d1360e11b6001600160e01b03198316145b8061029b57506303a24d0760e21b6001600160e01b03198316145b92915050565b606060405180610180016040528061014d8152602001610fe161014d913992915050565b336001600160a01b037f000000000000000000000000b345f11fb5547e72e56d258febd35e1bc774feab161461030e576040516330cd747160e01b815260040160405180910390fd5b7f000000000000000000000000b345f11fb5547e72e56d258febd35e1bc774feab6001600160a01b0316ff5b336001600160a01b037f000000000000000000000000b345f11fb5547e72e56d258febd35e1bc774feab1614610383576040516330cd747160e01b815260040160405180910390fd5b5050505050505050565b60608382146103d55760405162461bcd60e51b815260206004820152600f60248201526e0988a9c8ea890be9a92a69a82a8869608b1b60448201526064015b60405180910390fd5b8367ffffffffffffffff8111156103ee576103ee610e9f565b604051908082528060200260200182016040528015610417578160200160208202803683370190505b50905060005b848110156104be5760008087878481811061043a5761043a610eb5565b905060200201602081019061044f9190610ecb565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085858481811061048357610483610eb5565b905060200201358152602001908152602001600020548282815181106104ab576104ab610eb5565b602090810291909101015260010161041d565b50949350505050565b336001600160a01b037f000000000000000000000000b345f11fb5547e72e56d258febd35e1bc774feab1614610510576040516330cd747160e01b815260040160405180910390fd5b61054c7f000000000000000000000000b345f11fb5547e72e56d258febd35e1bc774feab600183604051806020016040528060008152506106ed565b50565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b336001600160a01b037f000000000000000000000000b345f11fb5547e72e56d258febd35e1bc774feab1614610604576040516330cd747160e01b815260040160405180910390fd5b8260005b8181101561066d576106657f000000000000000000000000b345f11fb5547e72e56d258febd35e1bc774feab87878481811061064657610646610eb5565b905060200201602081019061065b9190610ecb565b6001808888610858565b600101610608565b505050505050565b336001600160a01b037f000000000000000000000000b345f11fb5547e72e56d258febd35e1bc774feab16146106be576040516330cd747160e01b815260040160405180910390fd5b61066d7f000000000000000000000000b345f11fb5547e72e56d258febd35e1bc774feab866001868686610858565b6001600160a01b0384166000908152602081815260408083208684529091528120805484929061071e908490610efc565b909155505060408051848152602081018490526001600160a01b0386169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b156108065760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e61906107b3903390600090899089908990600401610f0f565b6020604051808303816000875af11580156107d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f69190610f54565b6001600160e01b03191614610813565b6001600160a01b03841615155b6108525760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016103cc565b50505050565b336001600160a01b038716148061089257506001600160a01b038616600090815260016020908152604080832033845290915290205460ff165b6108cf5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064016103cc565b6001600160a01b03861660009081526020818152604080832087845290915281208054859290610900908490610f71565b90915550506001600160a01b03851660009081526020818152604080832087845290915281208054859290610936908490610efc565b909155505060408051858152602081018590526001600160a01b03808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0385163b15610a215760405163f23a6e6160e01b808252906001600160a01b0387169063f23a6e61906109ce9033908b908a908a908a908a90600401610f84565b6020604051808303816000875af11580156109ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a119190610f54565b6001600160e01b03191614610a2e565b6001600160a01b03851615155b61066d5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016103cc565b80356001600160a01b0381168114610a8457600080fd5b919050565b60008060408385031215610a9c57600080fd5b610aa583610a6d565b946020939093013593505050565b6001600160e01b03198116811461054c57600080fd5b600060208284031215610adb57600080fd5b8135610ae681610ab3565b9392505050565b600060208284031215610aff57600080fd5b5035919050565b6000815180845260005b81811015610b2c57602081850181015186830182015201610b10565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610ae66020830184610b06565b60008083601f840112610b7157600080fd5b50813567ffffffffffffffff811115610b8957600080fd5b6020830191508360208260051b8501011115610ba457600080fd5b9250929050565b60008083601f840112610bbd57600080fd5b50813567ffffffffffffffff811115610bd557600080fd5b602083019150836020828501011115610ba457600080fd5b60008060008060008060008060a0898b031215610c0957600080fd5b610c1289610a6d565b9750610c2060208a01610a6d565b9650604089013567ffffffffffffffff80821115610c3d57600080fd5b610c498c838d01610b5f565b909850965060608b0135915080821115610c6257600080fd5b610c6e8c838d01610b5f565b909650945060808b0135915080821115610c8757600080fd5b50610c948b828c01610bab565b999c989b5096995094979396929594505050565b60008060008060408587031215610cbe57600080fd5b843567ffffffffffffffff80821115610cd657600080fd5b610ce288838901610b5f565b90965094506020870135915080821115610cfb57600080fd5b50610d0887828801610b5f565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b81811015610d4c57835183529284019291840191600101610d30565b50909695505050505050565b60008060408385031215610d6b57600080fd5b610d7483610a6d565b915060208301358015158114610d8957600080fd5b809150509250929050565b60008060008060408587031215610daa57600080fd5b843567ffffffffffffffff80821115610dc257600080fd5b610dce88838901610b5f565b90965094506020870135915080821115610de757600080fd5b50610d0887828801610bab565b60008060408385031215610e0757600080fd5b610e1083610a6d565b9150610e1e60208401610a6d565b90509250929050565b60008060008060008060a08789031215610e4057600080fd5b610e4987610a6d565b9550610e5760208801610a6d565b94506040870135935060608701359250608087013567ffffffffffffffff811115610e8157600080fd5b610e8d89828a01610bab565b979a9699509497509295939492505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215610edd57600080fd5b610ae682610a6d565b634e487b7160e01b600052601160045260246000fd5b8082018082111561029b5761029b610ee6565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090610f4990830184610b06565b979650505050505050565b600060208284031215610f6657600080fd5b8151610ae681610ab3565b8181038181111561029b5761029b610ee6565b6001600160a01b03878116825286166020820152604081018590526060810184905260a06080820181905281018290526000828460c0840137600060c0848401015260c0601f19601f850116830101905097965050505050505056fe646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c65794a755957316c496a6f67496c527962326c7a494642686157357a4946706c636d38694c416f67494341674943416749434167496d526c63324e796158423061573975496a6f67496b7876596e4e305a584a6b623263676347467a64484a3549474e6f5a5759754969774b49434167494341674943416749434a706257466e5a53493649434a6f64485277637a6f764c32356d6443357864574630636d55746358557559584a304c32356d6443317361574a7959584a354c6e426f634439705a4430784d694973436941674943416749434167494341695a5868305a584a755957786664584a73496a6f67496d68306448427a4f693876626d5a304c6e4631595852795a53317864533568636e5176626d5a304c577870596e4a68636e6b756347687750326c6b50544579496e304ba2646970667358221220af7705702feef375aca8557bb363781890bb074f290935dbd832332499adff0564736f6c63430008110033

Deployed Bytecode Sourcemap

83:3987:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1119:64:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;597:25:2;;;585:2;570:18;1119:64:0;;;;;;;;4606:340;;;;;;:::i;:::-;;:::i;:::-;;;1184:14:2;;1177:22;1159:41;;1147:2;1132:18;4606:340:0;1019:187:2;1491:99:1;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;777:38::-;;;;;;;;-1:-1:-1;;;;;2229:32:2;;;2211:51;;2199:2;2184:18;777:38:1;2049:219:2;730:41:1;;770:1;730:41;;3871:197;;;:::i;:::-;;3155:281;;;;;;:::i;:::-;;:::i;3835:583:0:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3611:112:1:-;;;;;;:::i;:::-;;:::i;1706:203:0:-;;;;;;:::i;:::-;;:::i;2683:358:1:-;;;;;;:::i;:::-;;:::i;1190:68:0:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;2082:244:1;;;;;;:::i;:::-;;:::i;4606:340:0:-;4682:4;-1:-1:-1;;;;;;;;;4717:25:0;;;;:100;;-1:-1:-1;;;;;;;;;;4792:25:0;;;4717:100;:176;;;-1:-1:-1;;;;;;;;;;4868:25:0;;;4717:176;4698:195;4606:340;-1:-1:-1;;4606:340:0:o;1491:99:1:-;1543:13;1575:8;;;;;;;;;;;;;;;;;1568:15;1491:99;-1:-1:-1;;1491:99:1:o;3871:197::-;1126:10;-1:-1:-1;;;;;1140:5:1;1126:19;;1122:42;;1154:10;;-1:-1:-1;;;1154:10:1;;;;;;;;;;;1122:42;4055:5:::1;-1:-1:-1::0;;;;;4042:19:1::1;;3155:281:::0;1126:10;-1:-1:-1;;;;;1140:5:1;1126:19;;1122:42;;1154:10;;-1:-1:-1;;;1154:10:1;;;;;;;;;;;1122:42;3155:281;;;;;;;;:::o;3835:583:0:-;3971:25;4020:27;;;4012:55;;;;-1:-1:-1;;;4012:55:0;;7896:2:2;4012:55:0;;;7878:21:2;7935:2;7915:18;;;7908:30;-1:-1:-1;;;7954:18:2;;;7947:45;8009:18;;4012:55:0;;;;;;;;;4103:6;4089:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4089:28:0;;4078:39;;4288:9;4283:119;4303:17;;;4283:119;;;4359:9;:20;4369:6;;4376:1;4369:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4359:20:0;-1:-1:-1;;;;;4359:20:0;;;;;;;;;;;;:28;4380:3;;4384:1;4380:6;;;;;;;:::i;:::-;;;;;;;4359:28;;;;;;;;;;;;4345:8;4354:1;4345:11;;;;;;;;:::i;:::-;;;;;;;;;;:42;4322:3;;4283:119;;;;3835:583;;;;;;:::o;3611:112:1:-;1126:10;-1:-1:-1;;;;;1140:5:1;1126:19;;1122:42;;1154:10;;-1:-1:-1;;;1154:10:1;;;;;;;;;;;1122:42;3670:46:::1;3676:5;770:1;3698:6;715:9;;;;;;;;;;;::::0;3670:5:::1;:46::i;:::-;3611:112:::0;:::o;1706:203:0:-;1808:10;1791:28;;;;:16;:28;;;;;;;;-1:-1:-1;;;;;1791:38:0;;;;;;;;;;;;:49;;-1:-1:-1;;1791:49:0;;;;;;;;;;1856:46;;1159:41:2;;;1791:38:0;;1808:10;1856:46;;1132:18:2;1856:46:0;;;;;;;1706:203;;:::o;2683:358:1:-;1126:10;-1:-1:-1;;;;;1140:5:1;1126:19;;1122:42;;1154:10;;-1:-1:-1;;;1154:10:1;;;;;;;;;;;1122:42;2827:3;2810:14:::1;2867:168;2879:6;2875:1;:10;2867:168;;;2903:61;2926:5;2933:3;;2937:1;2933:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;770:1;2956::::0;2959:4:::1;;2903:22;:61::i;:::-;3007:3;;2867:168;;;2800:241;;2683:358:::0;;;;:::o;2082:244::-;1126:10;-1:-1:-1;;;;;1140:5:1;1126:19;;1122:42;;1154:10;;-1:-1:-1;;;1154:10:1;;;;;;;;;;;1122:42;2257:62:::1;2280:5;2287:2;770:1;2306:6;2314:4;;2257:22;:62::i;5140:545:0:-:0;-1:-1:-1;;;;;5279:13:0;;:9;:13;;;;;;;;;;;:17;;;;;;;;:27;;5300:6;;5279:9;:27;;5300:6;;5279:27;:::i;:::-;;;;-1:-1:-1;;5322:54:0;;;8929:25:2;;;8985:2;8970:18;;8963:34;;;-1:-1:-1;;;;;5322:54:0;;;5357:1;;5337:10;;5322:54;;8902:18:2;5322:54:0;;;;;;;-1:-1:-1;;;;;5408:14:0;;;:19;:228;;5481:84;;-1:-1:-1;;;5481:84:0;;;5589:47;-1:-1:-1;;;;;5481:42:0;;;5589:47;;5481:84;;5524:10;;5544:1;;5548:2;;5552:6;;5560:4;;5481:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5481:155:0;;5408:228;;;-1:-1:-1;;;;;5446:16:0;;;;5408:228;5387:291;;;;-1:-1:-1;;;5387:291:0;;10030:2:2;5387:291:0;;;10012:21:2;10069:2;10049:18;;;10042:30;-1:-1:-1;;;10088:18:2;;;10081:46;10144:18;;5387:291:0;9828:340:2;5387:291:0;5140:545;;;;:::o;1915:699::-;2095:10;-1:-1:-1;;;;;2095:18:0;;;;:56;;-1:-1:-1;;;;;;2117:22:0;;;;;;:16;:22;;;;;;;;2140:10;2117:34;;;;;;;;;;2095:56;2087:83;;;;-1:-1:-1;;;2087:83:0;;10375:2:2;2087:83:0;;;10357:21:2;10414:2;10394:18;;;10387:30;-1:-1:-1;;;10433:18:2;;;10426:44;10487:18;;2087:83:0;10173:338:2;2087:83:0;-1:-1:-1;;;;;2181:15:0;;:9;:15;;;;;;;;;;;:19;;;;;;;;:29;;2204:6;;2181:9;:29;;2204:6;;2181:29;:::i;:::-;;;;-1:-1:-1;;;;;;;2220:13:0;;:9;:13;;;;;;;;;;;:17;;;;;;;;:27;;2241:6;;2220:9;:27;;2241:6;;2220:27;:::i;:::-;;;;-1:-1:-1;;2263:48:0;;;8929:25:2;;;8985:2;8970:18;;8963:34;;;-1:-1:-1;;;;;2263:48:0;;;;;;;;2278:10;;2263:48;;8902:18:2;2263:48:0;;;;;;;-1:-1:-1;;;;;2343:14:0;;;:19;:222;;2416:78;;-1:-1:-1;;;2416:78:0;;;2518:47;-1:-1:-1;;;;;2416:42:0;;;2518:47;;2416:78;;2459:10;;2471:4;;2477:2;;2481:6;;2489:4;;;;2416:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;2416:149:0;;2343:222;;;-1:-1:-1;;;;;2381:16:0;;;;2343:222;2322:285;;;;-1:-1:-1;;;2322:285:0;;10030:2:2;2322:285:0;;;10012:21:2;10069:2;10049:18;;;10042:30;-1:-1:-1;;;10088:18:2;;;10081:46;10144:18;;2322:285:0;9828:340:2;14:173;82:20;;-1:-1:-1;;;;;131:31:2;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:254::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;360:29;379:9;360:29;:::i;:::-;350:39;436:2;421:18;;;;408:32;;-1:-1:-1;;;192:254:2:o;633:131::-;-1:-1:-1;;;;;;707:32:2;;697:43;;687:71;;754:1;751;744:12;769:245;827:6;880:2;868:9;859:7;855:23;851:32;848:52;;;896:1;893;886:12;848:52;935:9;922:23;954:30;978:5;954:30;:::i;:::-;1003:5;769:245;-1:-1:-1;;;769:245:2:o;1211:180::-;1270:6;1323:2;1311:9;1302:7;1298:23;1294:32;1291:52;;;1339:1;1336;1329:12;1291:52;-1:-1:-1;1362:23:2;;1211:180;-1:-1:-1;1211:180:2:o;1396:423::-;1438:3;1476:5;1470:12;1503:6;1498:3;1491:19;1528:1;1538:162;1552:6;1549:1;1546:13;1538:162;;;1614:4;1670:13;;;1666:22;;1660:29;1642:11;;;1638:20;;1631:59;1567:12;1538:162;;;1542:3;1745:1;1738:4;1729:6;1724:3;1720:16;1716:27;1709:38;1808:4;1801:2;1797:7;1792:2;1784:6;1780:15;1776:29;1771:3;1767:39;1763:50;1756:57;;;1396:423;;;;:::o;1824:220::-;1973:2;1962:9;1955:21;1936:4;1993:45;2034:2;2023:9;2019:18;2011:6;1993:45;:::i;2273:367::-;2336:8;2346:6;2400:3;2393:4;2385:6;2381:17;2377:27;2367:55;;2418:1;2415;2408:12;2367:55;-1:-1:-1;2441:20:2;;2484:18;2473:30;;2470:50;;;2516:1;2513;2506:12;2470:50;2553:4;2545:6;2541:17;2529:29;;2613:3;2606:4;2596:6;2593:1;2589:14;2581:6;2577:27;2573:38;2570:47;2567:67;;;2630:1;2627;2620:12;2567:67;2273:367;;;;;:::o;2645:347::-;2696:8;2706:6;2760:3;2753:4;2745:6;2741:17;2737:27;2727:55;;2778:1;2775;2768:12;2727:55;-1:-1:-1;2801:20:2;;2844:18;2833:30;;2830:50;;;2876:1;2873;2866:12;2830:50;2913:4;2905:6;2901:17;2889:29;;2965:3;2958:4;2949:6;2941;2937:19;2933:30;2930:39;2927:59;;;2982:1;2979;2972:12;2997:1210;3157:6;3165;3173;3181;3189;3197;3205;3213;3266:3;3254:9;3245:7;3241:23;3237:33;3234:53;;;3283:1;3280;3273:12;3234:53;3306:29;3325:9;3306:29;:::i;:::-;3296:39;;3354:38;3388:2;3377:9;3373:18;3354:38;:::i;:::-;3344:48;;3443:2;3432:9;3428:18;3415:32;3466:18;3507:2;3499:6;3496:14;3493:34;;;3523:1;3520;3513:12;3493:34;3562:70;3624:7;3615:6;3604:9;3600:22;3562:70;:::i;:::-;3651:8;;-1:-1:-1;3536:96:2;-1:-1:-1;3739:2:2;3724:18;;3711:32;;-1:-1:-1;3755:16:2;;;3752:36;;;3784:1;3781;3774:12;3752:36;3823:72;3887:7;3876:8;3865:9;3861:24;3823:72;:::i;:::-;3914:8;;-1:-1:-1;3797:98:2;-1:-1:-1;4002:3:2;3987:19;;3974:33;;-1:-1:-1;4019:16:2;;;4016:36;;;4048:1;4045;4038:12;4016:36;;4087:60;4139:7;4128:8;4117:9;4113:24;4087:60;:::i;:::-;2997:1210;;;;-1:-1:-1;2997:1210:2;;-1:-1:-1;2997:1210:2;;;;;;4166:8;-1:-1:-1;;;2997:1210:2:o;4212:773::-;4334:6;4342;4350;4358;4411:2;4399:9;4390:7;4386:23;4382:32;4379:52;;;4427:1;4424;4417:12;4379:52;4467:9;4454:23;4496:18;4537:2;4529:6;4526:14;4523:34;;;4553:1;4550;4543:12;4523:34;4592:70;4654:7;4645:6;4634:9;4630:22;4592:70;:::i;:::-;4681:8;;-1:-1:-1;4566:96:2;-1:-1:-1;4769:2:2;4754:18;;4741:32;;-1:-1:-1;4785:16:2;;;4782:36;;;4814:1;4811;4804:12;4782:36;;4853:72;4917:7;4906:8;4895:9;4891:24;4853:72;:::i;:::-;4212:773;;;;-1:-1:-1;4944:8:2;-1:-1:-1;;;;4212:773:2:o;4990:632::-;5161:2;5213:21;;;5283:13;;5186:18;;;5305:22;;;5132:4;;5161:2;5384:15;;;;5358:2;5343:18;;;5132:4;5427:169;5441:6;5438:1;5435:13;5427:169;;;5502:13;;5490:26;;5571:15;;;;5536:12;;;;5463:1;5456:9;5427:169;;;-1:-1:-1;5613:3:2;;4990:632;-1:-1:-1;;;;;;4990:632:2:o;5627:347::-;5692:6;5700;5753:2;5741:9;5732:7;5728:23;5724:32;5721:52;;;5769:1;5766;5759:12;5721:52;5792:29;5811:9;5792:29;:::i;:::-;5782:39;;5871:2;5860:9;5856:18;5843:32;5918:5;5911:13;5904:21;5897:5;5894:32;5884:60;;5940:1;5937;5930:12;5884:60;5963:5;5953:15;;;5627:347;;;;;:::o;5979:745::-;6085:6;6093;6101;6109;6162:2;6150:9;6141:7;6137:23;6133:32;6130:52;;;6178:1;6175;6168:12;6130:52;6218:9;6205:23;6247:18;6288:2;6280:6;6277:14;6274:34;;;6304:1;6301;6294:12;6274:34;6343:70;6405:7;6396:6;6385:9;6381:22;6343:70;:::i;:::-;6432:8;;-1:-1:-1;6317:96:2;-1:-1:-1;6520:2:2;6505:18;;6492:32;;-1:-1:-1;6536:16:2;;;6533:36;;;6565:1;6562;6555:12;6533:36;;6604:60;6656:7;6645:8;6634:9;6630:24;6604:60;:::i;6729:260::-;6797:6;6805;6858:2;6846:9;6837:7;6833:23;6829:32;6826:52;;;6874:1;6871;6864:12;6826:52;6897:29;6916:9;6897:29;:::i;:::-;6887:39;;6945:38;6979:2;6968:9;6964:18;6945:38;:::i;:::-;6935:48;;6729:260;;;;;:::o;6994:695::-;7100:6;7108;7116;7124;7132;7140;7193:3;7181:9;7172:7;7168:23;7164:33;7161:53;;;7210:1;7207;7200:12;7161:53;7233:29;7252:9;7233:29;:::i;:::-;7223:39;;7281:38;7315:2;7304:9;7300:18;7281:38;:::i;:::-;7271:48;;7366:2;7355:9;7351:18;7338:32;7328:42;;7417:2;7406:9;7402:18;7389:32;7379:42;;7472:3;7461:9;7457:19;7444:33;7500:18;7492:6;7489:30;7486:50;;;7532:1;7529;7522:12;7486:50;7571:58;7621:7;7612:6;7601:9;7597:22;7571:58;:::i;:::-;6994:695;;;;-1:-1:-1;6994:695:2;;-1:-1:-1;6994:695:2;;7648:8;;6994:695;-1:-1:-1;;;6994:695:2:o;8038:127::-;8099:10;8094:3;8090:20;8087:1;8080:31;8130:4;8127:1;8120:15;8154:4;8151:1;8144:15;8170:127;8231:10;8226:3;8222:20;8219:1;8212:31;8262:4;8259:1;8252:15;8286:4;8283:1;8276:15;8302:186;8361:6;8414:2;8402:9;8393:7;8389:23;8385:32;8382:52;;;8430:1;8427;8420:12;8382:52;8453:29;8472:9;8453:29;:::i;8493:127::-;8554:10;8549:3;8545:20;8542:1;8535:31;8585:4;8582:1;8575:15;8609:4;8606:1;8599:15;8625:125;8690:9;;;8711:10;;;8708:36;;;8724:18;;:::i;9008:561::-;-1:-1:-1;;;;;9305:15:2;;;9287:34;;9357:15;;9352:2;9337:18;;9330:43;9404:2;9389:18;;9382:34;;;9447:2;9432:18;;9425:34;;;9267:3;9490;9475:19;;9468:32;;;9230:4;;9517:46;;9543:19;;9535:6;9517:46;:::i;:::-;9509:54;9008:561;-1:-1:-1;;;;;;;9008:561:2:o;9574:249::-;9643:6;9696:2;9684:9;9675:7;9671:23;9667:32;9664:52;;;9712:1;9709;9702:12;9664:52;9744:9;9738:16;9763:30;9787:5;9763:30;:::i;10516:128::-;10583:9;;;10604:11;;;10601:37;;;10618:18;;:::i;10649:734::-;-1:-1:-1;;;;;10956:15:2;;;10938:34;;11008:15;;11003:2;10988:18;;10981:43;11055:2;11040:18;;11033:34;;;11098:2;11083:18;;11076:34;;;10918:3;11141;11126:19;;11119:32;;;11167:19;;11160:35;;;10881:4;11188:6;11238;11232:3;11217:19;;11204:49;11303:1;11297:3;11288:6;11277:9;11273:22;11269:32;11262:43;11373:3;11366:2;11362:7;11357:2;11349:6;11345:15;11341:29;11330:9;11326:45;11322:55;11314:63;;10649:734;;;;;;;;;:::o

Swarm Source

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