ETH Price: $3,456.41 (-1.03%)
Gas: 9 Gwei

Token

MythVerse Genesis (MYTH)
 

Overview

Max Total Supply

1,260 MYTH

Holders

623

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
1 MYTH
0x043fc3abb5e47c3fc77ef02a09116a4fb9a58bbc
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Card

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, BSD-2-Clause license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-19
*/

pragma solidity =0.8.0;

// SPDX-License-Identifier: SimPL-2.0

interface IERC165 {
    /// @notice Query if a contract implements an interface
    /// @param interfaceID The interface identifier, as specified in ERC-165
    /// @dev Interface identification is specified in ERC-165. This function
    ///  uses less than 30,000 gas.
    /// @return `true` if the contract implements `interfaceID` and
    ///  `interfaceID` is not 0xffffffff, `false` otherwise
    function supportsInterface(bytes4 interfaceID) external view returns(bool);
}

/// @title ERC-721 Non-Fungible Token Standard
/// @dev See https://eips.ethereum.org/EIPS/eip-721
///  Note: the ERC-165 identifier for this interface is 0x80ac58cd.
interface IERC721 /* is ERC165 */ {
    /// @dev This emits when ownership of any NFT changes by any mechanism.
    ///  This event emits when NFTs are created (`from` == 0) and destroyed
    ///  (`to` == 0). Exception: during contract creation, any number of NFTs
    ///  may be created and assigned without emitting Transfer. At the time of
    ///  any transfer, the approved address for that NFT (if any) is reset to none.
    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);

    /// @dev This emits when the approved address for an NFT is changed or
    ///  reaffirmed. The zero address indicates there is no approved address.
    ///  When a Transfer event emits, this also indicates that the approved
    ///  address for that NFT (if any) is reset to none.
    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);

    /// @dev This emits when an operator is enabled or disabled for an owner.
    ///  The operator can manage all NFTs of the owner.
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

    /// @notice Count all NFTs assigned to an owner
    /// @dev NFTs assigned to the zero address are considered invalid, and this
    ///  function throws for queries about the zero address.
    /// @param _owner An address for whom to query the balance
    /// @return The number of NFTs owned by `_owner`, possibly zero
    function balanceOf(address _owner) external view returns(uint256);

    /// @notice Find the owner of an NFT
    /// @dev NFTs assigned to zero address are considered invalid, and queries
    ///  about them do throw.
    /// @param _tokenId The identifier for an NFT
    /// @return The address of the owner of the NFT
    function ownerOf(uint256 _tokenId) external view returns(address);

    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `_from` is
    ///  not the current owner. Throws if `_to` is the zero address. Throws if
    ///  `_tokenId` is not a valid NFT. When transfer is complete, this function
    ///  checks if `_to` is a smart contract (code size > 0). If so, it calls
    ///  `onERC721Received` on `_to` and throws if the return value is not
    ///  `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`.
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    /// @param data Additional data with no specified format, sent in call to `_to`
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable;

    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev This works identically to the other function with an extra data parameter,
    ///  except this function just sets data to "".
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;

    /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
    ///  TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE
    ///  THEY MAY BE PERMANENTLY LOST
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `_from` is
    ///  not the current owner. Throws if `_to` is the zero address. Throws if
    ///  `_tokenId` is not a valid NFT.
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    function transferFrom(address _from, address _to, uint256 _tokenId) external payable;

    /// @notice Change or reaffirm the approved address for an NFT
    /// @dev The zero address indicates there is no approved address.
    ///  Throws unless `msg.sender` is the current NFT owner, or an authorized
    ///  operator of the current owner.
    /// @param _approved The new approved NFT controller
    /// @param _tokenId The NFT to approve
    function approve(address _approved, uint256 _tokenId) external payable;

    /// @notice Enable or disable approval for a third party ("operator") to manage
    ///  all of `msg.sender`'s assets
    /// @dev Emits the ApprovalForAll event. The contract MUST allow
    ///  multiple operators per owner.
    /// @param _operator Address to add to the set of authorized operators
    /// @param _approved True if the operator is approved, false to revoke approval
    function setApprovalForAll(address _operator, bool _approved) external;

    /// @notice Get the approved address for a single NFT
    /// @dev Throws if `_tokenId` is not a valid NFT.
    /// @param _tokenId The NFT to find the approved address for
    /// @return The approved address for this NFT, or the zero address if there is none
    function getApproved(uint256 _tokenId) external view returns(address);

    /// @notice Query if an address is an authorized operator for another address
    /// @param _owner The address that owns the NFTs
    /// @param _operator The address that acts on behalf of the owner
    /// @return True if `_operator` is an approved operator for `_owner`, false otherwise
    function isApprovedForAll(address _owner, address _operator) external view returns(bool);
}

/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
/// @dev See https://eips.ethereum.org/EIPS/eip-721
///  Note: the ERC-165 identifier for this interface is 0x5b5e139f.
interface IERC721Metadata /* is ERC721 */ {
    /// @notice A descriptive name for a collection of NFTs in this contract
    function name() external view returns (string memory);
    
    /// @notice An abbreviated name for NFTs in this contract
    function symbol() external view returns (string memory);
    
    /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
    /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC
    ///  3986. The URI may point to a JSON file that conforms to the "ERC721
    ///  Metadata JSON Schema".
    /// {"name":"","description":"","image":""}
    function tokenURI(uint256 _tokenId) external view returns (string memory);
}

/// @dev Note: the ERC-165 identifier for this interface is 0x150b7a02.
interface IERC721TokenReceiver {
    /// @notice Handle the receipt of an NFT
    /// @dev The ERC721 smart contract calls this function on the recipient
    ///  after a `transfer`. This function MAY throw to revert and reject the
    ///  transfer. Return of other than the magic value MUST result in the
    ///  transaction being reverted.
    ///  Note: the contract address is always the message sender.
    /// @param _operator The address which called `safeTransferFrom` function
    /// @param _from The address which previously owned the token
    /// @param _tokenId The NFT identifier which is being transferred
    /// @param _data Additional data with no specified format
    /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
    ///  unless throwing
    function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes memory _data) external returns(bytes4);
}

interface IERC721TokenReceiverEx is IERC721TokenReceiver {
    // bytes4(keccak256("onERC721ExReceived(address,address,uint256[],bytes)")) = 0x0f7b88e3
    function onERC721ExReceived(address operator, address from,
        uint256[] memory tokenIds, bytes memory data)
        external returns(bytes4);
}

/**
 * Utility library of inline functions on addresses
 */
library Address {

    /**
     * Returns whether the target address is a contract
     * @dev This function will return false if invoked during the constructor of a contract,
     * as the code is not actually created until after the constructor finishes.
     * @param account address of the account to check
     * @return whether the target address is a contract
     */
    function isContract(address account) internal view returns(bool) {
        uint256 size;
        // XXX Currently there is no better way to check if there is a contract in an address
        // than to check the size of the code at that address.
        // See https://ethereum.stackexchange.com/a/14016/36603
        // for more details about how this works.
        // TODO Check this again before the Serenity release, because all addresses will be
        // contracts then.
        // solium-disable-next-line security/no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }
}


library Bytes {
    bytes internal constant BASE64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
    
    function base64Encode(bytes memory bs) internal pure returns(string memory) {
        uint256 remain = bs.length % 3;
        uint256 length = bs.length / 3 * 4;
        bytes memory result = new bytes(length + (remain != 0 ? 4 : 0) + (3 - remain) % 3);
        
        uint256 i = 0;
        uint256 j = 0;
        while (i < length) {
            result[i++] = BASE64_CHARS[uint8(bs[j] >> 2)];
            result[i++] = BASE64_CHARS[uint8((bs[j] & 0x03) << 4 | bs[j + 1] >> 4)];
            result[i++] = BASE64_CHARS[uint8((bs[j + 1] & 0x0f) << 2 | bs[j + 2] >> 6)];
            result[i++] = BASE64_CHARS[uint8(bs[j + 2] & 0x3f)];
            
            j += 3;
        }
        
        if (remain != 0) {
            result[i++] = BASE64_CHARS[uint8(bs[j] >> 2)];
            
            if (remain == 2) {
                result[i++] = BASE64_CHARS[uint8((bs[j] & 0x03) << 4 | bs[j + 1] >> 4)];
                result[i++] = BASE64_CHARS[uint8((bs[j + 1] & 0x0f) << 2)];
                result[i++] = BASE64_CHARS[0];
                result[i++] = 0x3d;
            } else {
                result[i++] = BASE64_CHARS[uint8((bs[j] & 0x03) << 4)];
                result[i++] = BASE64_CHARS[0];
                result[i++] = BASE64_CHARS[0];
                result[i++] = 0x3d;
                result[i++] = 0x3d;
            }
        }
        
        return string(result);
    }
    
    function concat(bytes memory a, bytes memory b)
        internal pure returns(bytes memory) {
        
        uint256 al = a.length;
        uint256 bl = b.length;
        
        bytes memory c = new bytes(al + bl);
        
        for (uint256 i = 0; i < al; ++i) {
            c[i] = a[i];
        }
        
        for (uint256 i = 0; i < bl; ++i) {
            c[al + i] = b[i];
        }
        
        return c;
    }
}

library String {
    function equals(string memory a, string memory b)
        internal pure returns(bool) {
        
        bytes memory ba = bytes(a);
        bytes memory bb = bytes(b);
        
        uint256 la = ba.length;
        uint256 lb = bb.length;
        
        for (uint256 i = 0; i < la && i < lb; ++i) {
            if (ba[i] != bb[i]) {
                return false;
            }
        }
        
        return la == lb;
    }
    
    function concat(string memory a, string memory b)
        internal pure returns(string memory) {
        
        bytes memory ba = bytes(a);
        bytes memory bb = bytes(b);
        bytes memory bc = new bytes(ba.length + bb.length);
        
        uint256 bal = ba.length;
        uint256 bbl = bb.length;
        uint256 k = 0;
        
        for (uint256 i = 0; i < bal; ++i) {
            bc[k++] = ba[i];
        }
        
        for (uint256 i = 0; i < bbl; ++i) {
            bc[k++] = bb[i];
        }
        
        return string(bc);
    }
}

library UInteger {
    function toString(uint256 a, uint256 radix)
        internal pure returns(string memory) {
        
        if (a == 0) {
            return "0";
        }
        
        uint256 length = 0;
        for (uint256 n = a; n != 0; n /= radix) {
            ++length;
        }
        
        bytes memory bs = new bytes(length);
        
        while (a != 0) {
            uint256 b = a % radix;
            a /= radix;
            
            if (b < 10) {
                bs[--length] = bytes1(uint8(b + 48));
            } else {
                bs[--length] = bytes1(uint8(b + 87));
            }
        }
        
        return string(bs);
    }
    
    function toString(uint256 a) internal pure returns(string memory) {
        return UInteger.toString(a, 10);
    }
    
    function max(uint256 a, uint256 b) internal pure returns(uint256) {
        return a > b ? a : b;
    }
    
    function min(uint256 a, uint256 b) internal pure returns(uint256) {
        return a < b ? a : b;
    }
    
    function shiftLeft(uint256 n, uint256 bits, uint256 shift)
        internal pure returns(uint256) {
        
        require(n < (1 << bits), "shiftLeft overflow");
        
        return n << shift;
    }
    
    function toDecBytes(uint256 n) internal pure returns(bytes memory) {
        if (n == 0) {
            return bytes("0");
        }
        
        uint256 length = 0;
        for (uint256 m = n; m > 0; m /= 10) {
            ++length;
        }
        
        bytes memory bs = new bytes(length);
        
        while (n > 0) {
            uint256 m = n % 10;
            n /= 10;
            
            bs[--length] = bytes1(uint8(m + 48));
        }
        
        return bs;
    }
}

library Util {
    bytes4 internal constant ERC721_RECEIVER_RETURN = 0x150b7a02;
    bytes4 internal constant ERC721_RECEIVER_EX_RETURN = 0x0f7b88e3;
}

abstract contract ContractOwner {
    address immutable public contractOwner = msg.sender;
    
    modifier onlyContractOwner {
        require(msg.sender == contractOwner, "only contract owner");
        _;
    }
}

abstract contract ERC721 is IERC165, IERC721, IERC721Metadata {
    using Address for address;
    
    /*
     * bytes4(keccak256("supportsInterface(bytes4)")) == 0x01ffc9a7
     */
    bytes4 private constant INTERFACE_ID_ERC165 = 0x01ffc9a7;
    
    /*
     *     bytes4(keccak256("balanceOf(address)")) == 0x70a08231
     *     bytes4(keccak256("ownerOf(uint256)")) == 0x6352211e
     *     bytes4(keccak256("approve(address,uint256)")) == 0x095ea7b3
     *     bytes4(keccak256("getApproved(uint256)")) == 0x081812fc
     *     bytes4(keccak256("setApprovalForAll(address,bool)")) == 0xa22cb465
     *     bytes4(keccak256("isApprovedForAll(address,address)")) == 0xe985e9c5
     *     bytes4(keccak256("transferFrom(address,address,uint256)")) == 0x23b872dd
     *     bytes4(keccak256("safeTransferFrom(address,address,uint256)")) == 0x42842e0e
     *     bytes4(keccak256("safeTransferFrom(address,address,uint256,bytes)")) == 0xb88d4fde
     *
     *     => 0x70a08231 ^ 0x6352211e ^ 0x095ea7b3 ^ 0x081812fc ^
     *        0xa22cb465 ^ 0xe985e9c ^ 0x23b872dd ^ 0x42842e0e ^ 0xb88d4fde == 0x80ac58cd
     */
    bytes4 private constant INTERFACE_ID_ERC721 = 0x80ac58cd;
    
    bytes4 private constant INTERFACE_ID_ERC721Metadata = 0x5b5e139f;
    
    string public override name;
    string public override symbol;
    
    mapping(address => uint256[]) internal ownerTokens;
    mapping(uint256 => uint256) internal tokenIndexs;
    mapping(uint256 => address) internal tokenOwners;
    
    mapping(uint256 => address) internal tokenApprovals;
    mapping(address => mapping(address => bool)) internal approvalForAlls;
    
    constructor(string memory _name, string memory _symbol) {
        name = _name;
        symbol = _symbol;
    }
    
    function balanceOf(address owner) external view override returns(uint256) {
        require(owner != address(0), "owner is zero address");
        return ownerTokens[owner].length;
    }
    
    // [startIndex, endIndex)
    function tokensOf(address owner, uint256 startIndex, uint256 endIndex)
        external view returns(uint256[] memory) {
        
        require(owner != address(0), "owner is zero address");
        
        uint256[] storage tokens = ownerTokens[owner];
        if (endIndex == 0) {
            endIndex = tokens.length;
        }
        
        uint256[] memory result = new uint256[](endIndex - startIndex);
        for (uint256 i = startIndex; i < endIndex; ++i) {
            result[i - startIndex] = tokens[i];
        }
        
        return result;
    }
    
    function ownerOf(uint256 tokenId)
        external view override returns(address) {
        
        address owner = tokenOwners[tokenId];
        require(owner != address(0), "nobody own the token");
        return owner;
    }
    
    function safeTransferFrom(address from, address to, uint256 tokenId)
            external payable override {
        
        safeTransferFrom(from, to, tokenId, "");
    }
    
    function safeTransferFrom(address from, address to, uint256 tokenId,
        bytes memory data) public payable override {
        
        _transferFrom(from, to, tokenId);
        
        if (to.isContract()) {
            require(IERC721TokenReceiver(to)
                .onERC721Received(msg.sender, from, tokenId, data)
                == Util.ERC721_RECEIVER_RETURN,
                "onERC721Received() return invalid");
        }
    }
    
    function transferFrom(address from, address to, uint256 tokenId)
        external payable override {
        
        _transferFrom(from, to, tokenId);
    }
    
    function _transferFrom(address from, address to, uint256 tokenId)
        internal {
        
        require(from != address(0), "from is zero address");
        require(to != address(0), "to is zero address");
        
        require(from == tokenOwners[tokenId], "from must be owner");
        
        require(msg.sender == from
            || msg.sender == tokenApprovals[tokenId]
            || approvalForAlls[from][msg.sender],
            "sender must be owner or approvaled");
        
        if (tokenApprovals[tokenId] != address(0)) {
            delete tokenApprovals[tokenId];
        }
        
        _removeTokenFrom(from, tokenId);
        _addTokenTo(to, tokenId);
        
        emit Transfer(from, to, tokenId);
    }
    
    // ensure everything is ok before call it
    function _removeTokenFrom(address from, uint256 tokenId) internal {
        uint256 index = tokenIndexs[tokenId];
        
        uint256[] storage tokens = ownerTokens[from];
        uint256 indexLast = tokens.length - 1;
        
        // save gas
        // if (index != indexLast) {
            uint256 tokenIdLast = tokens[indexLast];
            tokens[index] = tokenIdLast;
            tokenIndexs[tokenIdLast] = index;
        // }
        
        tokens.pop();
        
        // delete tokenIndexs[tokenId]; // save gas
        delete tokenOwners[tokenId];
    }
    
    // ensure everything is ok before call it
    function _addTokenTo(address to, uint256 tokenId) internal {
        uint256[] storage tokens = ownerTokens[to];
        tokenIndexs[tokenId] = tokens.length;
        tokens.push(tokenId);
        
        tokenOwners[tokenId] = to;
    }
    
    function approve(address to, uint256 tokenId)
        external payable override {
        
        address owner = tokenOwners[tokenId];
        
        require(msg.sender == owner
            || approvalForAlls[owner][msg.sender],
            "sender must be owner or approved for all"
        );
        
        tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }
    
    function setApprovalForAll(address to, bool approved) external override {
        approvalForAlls[msg.sender][to] = approved;
        emit ApprovalForAll(msg.sender, to, approved);
    }
    
    function getApproved(uint256 tokenId)
        external view override returns(address) {
        
        require(tokenOwners[tokenId] != address(0),
            "nobody own then token");
        
        return tokenApprovals[tokenId];
    }
    
    function isApprovedForAll(address owner, address operator)
        external view override returns(bool) {
        
        return approvalForAlls[owner][operator];
    }
    
    function supportsInterface(bytes4 interfaceID)
        external pure override returns(bool) {
        
        return interfaceID == INTERFACE_ID_ERC165
            || interfaceID == INTERFACE_ID_ERC721
            || interfaceID == INTERFACE_ID_ERC721Metadata;
    }
}

abstract contract ERC721Ex is ERC721 {
    using Address for address;
    using String for string;
    using UInteger for uint256;
    
    uint256 public totalSupply = 0;
    
    string public uriPrefix;
    
    function _mint(address to, uint256 tokenId) internal {
        _addTokenTo(to, tokenId);
        
        ++totalSupply;
        
        emit Transfer(address(0), to, tokenId);
    }
    
    function _burn(uint256 tokenId) internal {
        address owner = tokenOwners[tokenId];
        _removeTokenFrom(owner, tokenId);
        
        if (tokenApprovals[tokenId] != address(0)) {
            delete tokenApprovals[tokenId];
        }
        
        emit Transfer(owner, address(0), tokenId);
    }
    
    function safeBatchTransferFrom(address from, address to,
        uint256[] memory tokenIds) external {
        
        safeBatchTransferFrom(from, to, tokenIds, "");
    }
    
    function safeBatchTransferFrom(address from, address to,
        uint256[] memory tokenIds, bytes memory data) public {
        
        batchTransferFrom(from, to, tokenIds);
        
        if (to.isContract()) {
            require(IERC721TokenReceiverEx(to)
                .onERC721ExReceived(msg.sender, from, tokenIds, data)
                == Util.ERC721_RECEIVER_EX_RETURN,
                "onERC721ExReceived() return invalid");
        }
    }
    
    function batchTransferFrom(address from, address to,
        uint256[] memory tokenIds) public {
        
        require(from != address(0), "from is zero address");
        require(to != address(0), "to is zero address");
        
        address sender = msg.sender;
        bool approval = from == sender || approvalForAlls[from][sender];
        
        for (uint256 i = 0; i < tokenIds.length; ++i) {
            uint256 tokenId = tokenIds[i];
			
            require(from == tokenOwners[tokenId], "from must be owner");
            require(approval || sender == tokenApprovals[tokenId],
                "sender must be owner or approvaled");
            
            if (tokenApprovals[tokenId] != address(0)) {
                delete tokenApprovals[tokenId];
            }
            
            _removeTokenFrom(from, tokenId);
            _addTokenTo(to, tokenId);
            
            emit Transfer(from, to, tokenId);
        }
    }
    
    function tokenURI(uint256 cardId)
        external view override returns(string memory) {
        
        return uriPrefix.concat(cardId.toString());
    }
}

contract Card is ERC721Ex, ContractOwner {
    mapping(address => bool) public whiteList;
    
    constructor(string memory _name, string memory _symbol)
        ERC721(_name, _symbol) {
    }
    
    function setUriPrefix(string memory prefix) external onlyContractOwner {
        uriPrefix = prefix;
    }
    
    function setWhiteList(address account, bool enable) external onlyContractOwner {
        whiteList[account] = enable;
    }
    
    function mint(address to) external {
        require(whiteList[msg.sender], "not in whiteList");
        
        _mint(to, totalSupply + 1);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"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":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"batchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"prefix","type":"string"}],"name":"setUriPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cardId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"endIndex","type":"uint256"}],"name":"tokensOf","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"uriPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

60a060405260006007553360601b6080523480156200001d57600080fd5b506040516200232d3803806200232d8339810160408190526200004091620001cb565b815182908290620000599060009060208501906200007a565b5080516200006f9060019060208401906200007a565b505050505062000285565b828054620000889062000232565b90600052602060002090601f016020900481019282620000ac5760008555620000f7565b82601f10620000c757805160ff1916838001178555620000f7565b82800160010185558215620000f7579182015b82811115620000f7578251825591602001919060010190620000da565b506200010592915062000109565b5090565b5b808211156200010557600081556001016200010a565b600082601f83011262000131578081fd5b81516001600160401b03808211156200014e576200014e6200026f565b6040516020601f8401601f19168201810183811183821017156200017657620001766200026f565b60405283825285840181018710156200018d578485fd5b8492505b83831015620001b0578583018101518284018201529182019162000191565b83831115620001c157848185840101525b5095945050505050565b60008060408385031215620001de578182fd5b82516001600160401b0380821115620001f5578384fd5b620002038683870162000120565b9350602085015191508082111562000219578283fd5b50620002288582860162000120565b9150509250929050565b6002810460018216806200024757607f821691505b602082108114156200026957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160601c61207b620002b260003960008181610a0f01528181610a6e0152610ce3015261207b6000f3fe60806040526004361061018b5760003560e01c80636352211e116100d6578063a22cb4651161007f578063ce606ee011610059578063ce606ee01461041c578063e985e9c514610431578063f3993d11146104515761018b565b8063a22cb465146103c9578063b88d4fde146103e9578063c87b56dd146103fc5761018b565b80637ec4a659116100b05780637ec4a659146103745780638d14e1271461039457806395d89b41146103b45761018b565b80636352211e146103145780636a6278421461033457806370a08231146103545761018b565b806323185dc911610138578063372c12b111610112578063372c12b1146102cc57806342842e0e146102ec57806362b99ad4146102ff5761018b565b806323185dc91461026c57806323b872dd1461029957806328cfbd46146102ac5761018b565b8063081812fc11610169578063081812fc1461020a578063095ea7b31461023757806318160ddd1461024a5761018b565b806301ffc9a714610190578063034601ec146101c657806306fdde03146101e8575b600080fd5b34801561019c57600080fd5b506101b06101ab3660046119e5565b610471565b6040516101bd9190611bac565b60405180910390f35b3480156101d257600080fd5b506101e66101e13660046117dd565b610510565b005b3480156101f457600080fd5b506101fd610530565b6040516101bd9190611bb7565b34801561021657600080fd5b5061022a610225366004611a63565b6105be565b6040516101bd9190611b00565b6101e661024536600461198a565b610617565b34801561025657600080fd5b5061025f6106d8565b6040516101bd9190611ef6565b34801561027857600080fd5b5061028c6102873660046119b3565b6106de565b6040516101bd9190611b99565b6101e66102a73660046118bb565b61080b565b3480156102b857600080fd5b506101e66102c7366004611839565b610816565b3480156102d857600080fd5b506101b06102e7366004611791565b610904565b6101e66102fa3660046118bb565b610919565b34801561030b57600080fd5b506101fd610934565b34801561032057600080fd5b5061022a61032f366004611a63565b610941565b34801561034057600080fd5b506101e661034f366004611791565b610976565b34801561036057600080fd5b5061025f61036f366004611791565b6109c0565b34801561038057600080fd5b506101e661038f366004611a1d565b610a04565b3480156103a057600080fd5b506101e66103af366004611950565b610a63565b3480156103c057600080fd5b506101fd610ad6565b3480156103d557600080fd5b506101e66103e4366004611950565b610ae3565b6101e66103f73660046118f6565b610b52565b34801561040857600080fd5b506101fd610417366004611a63565b610c3a565b34801561042857600080fd5b5061022a610ce1565b34801561043d57600080fd5b506101b061044c3660046117ab565b610d05565b34801561045d57600080fd5b506101e661046c3660046117dd565b610d35565b60006001600160e01b031982167f01ffc9a70000000000000000000000000000000000000000000000000000000014806104d457506001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000145b8061050857506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b90505b919050565b61052b83838360405180602001604052806000815250610816565b505050565b6000805461053d90611f83565b80601f016020809104026020016040519081016040528092919081815260200182805461056990611f83565b80156105b65780601f1061058b576101008083540402835291602001916105b6565b820191906000526020600020905b81548152906001019060200180831161059957829003601f168201915b505050505081565b6000818152600460205260408120546001600160a01b03166105fb5760405162461bcd60e51b81526004016105f290611dbd565b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b6000818152600460205260409020546001600160a01b03163381148061066057506001600160a01b038116600090815260066020908152604080832033845290915290205460ff165b61067c5760405162461bcd60e51b81526004016105f290611c84565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075481565b60606001600160a01b0384166107065760405162461bcd60e51b81526004016105f290611d18565b6001600160a01b03841660009081526002602052604090208261072857805492505b60006107348585611f55565b67ffffffffffffffff81111561075a57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610783578160200160208202803683370190505b509050845b84811015610801578281815481106107b057634e487b7160e01b600052603260045260246000fd5b90600052602060002001548287836107c89190611f55565b815181106107e657634e487b7160e01b600052603260045260246000fd5b60209081029190910101526107fa81611fbe565b9050610788565b5095945050505050565b61052b838383610f22565b610821848484610d35565b610833836001600160a01b03166110b2565b156108fe576040517f0f7b88e300000000000000000000000000000000000000000000000000000000808252906001600160a01b03851690630f7b88e390610885903390899088908890600401611b14565b602060405180830381600087803b15801561089f57600080fd5b505af11580156108b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d79190611a01565b6001600160e01b031916146108fe5760405162461bcd60e51b81526004016105f290611e99565b50505050565b60096020526000908152604090205460ff1681565b61052b83838360405180602001604052806000815250610b52565b6008805461053d90611f83565b6000818152600460205260408120546001600160a01b0316806105085760405162461bcd60e51b81526004016105f290611df4565b3360009081526009602052604090205460ff166109a55760405162461bcd60e51b81526004016105f290611e62565b6109bd8160075460016109b89190611f29565b6110b8565b50565b60006001600160a01b0382166109e85760405162461bcd60e51b81526004016105f290611d18565b506001600160a01b031660009081526002602052604090205490565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a4c5760405162461bcd60e51b81526004016105f290611d86565b8051610a5f9060089060208401906115e1565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aab5760405162461bcd60e51b81526004016105f290611d86565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001805461053d90611f83565b3360008181526006602090815260408083206001600160a01b038716808552925291829020805460ff191685151517905590519091907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190610b46908590611bac565b60405180910390a35050565b610b5d848484610f22565b610b6f836001600160a01b03166110b2565b156108fe576040517f150b7a0200000000000000000000000000000000000000000000000000000000808252906001600160a01b0385169063150b7a0290610bc1903390899088908890600401611b5d565b602060405180830381600087803b158015610bdb57600080fd5b505af1158015610bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c139190611a01565b6001600160e01b031916146108fe5760405162461bcd60e51b81526004016105f290611c27565b6060610508610c4883611111565b60088054610c5590611f83565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8190611f83565b8015610cce5780601f10610ca357610100808354040283529160200191610cce565b820191906000526020600020905b815481529060010190602001808311610cb157829003601f168201915b505050505061111e90919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0380831660009081526006602090815260408083209385168352929052205460ff165b92915050565b6001600160a01b038316610d5b5760405162461bcd60e51b81526004016105f290611d4f565b6001600160a01b038216610d815760405162461bcd60e51b81526004016105f290611ce1565b3360006001600160a01b038516821480610dc057506001600160a01b0380861660009081526006602090815260408083209386168352929052205460ff165b905060005b8351811015610f1a576000848281518110610df057634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600081815260049092526040909120549091506001600160a01b03888116911614610e395760405162461bcd60e51b81526004016105f290611e2b565b8280610e5e57506000818152600560205260409020546001600160a01b038581169116145b610e7a5760405162461bcd60e51b81526004016105f290611bca565b6000818152600560205260409020546001600160a01b031615610eb457600081815260056020526040902080546001600160a01b03191690555b610ebe87826112e7565b610ec886826113ec565b80866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450610f1381611fbe565b9050610dc5565b505050505050565b6001600160a01b038316610f485760405162461bcd60e51b81526004016105f290611d4f565b6001600160a01b038216610f6e5760405162461bcd60e51b81526004016105f290611ce1565b6000818152600460205260409020546001600160a01b03848116911614610fa75760405162461bcd60e51b81526004016105f290611e2b565b336001600160a01b0384161480610fd457506000818152600560205260409020546001600160a01b031633145b8061100257506001600160a01b038316600090815260066020908152604080832033845290915290205460ff165b61101e5760405162461bcd60e51b81526004016105f290611bca565b6000818152600560205260409020546001600160a01b03161561105857600081815260056020526040902080546001600160a01b03191690555b61106283826112e7565b61106c82826113ec565b80826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b3b151590565b6110c282826113ec565b6007600081546110d190611fbe565b9091555060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b606061050882600a611445565b80518251606091849184916000916111369190611f29565b67ffffffffffffffff81111561115c57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611186576020820181803683370190505b5083518351919250906000805b83811015611234578681815181106111bb57634e487b7160e01b600052603260045260246000fd5b01602001517fff000000000000000000000000000000000000000000000000000000000000001685836111ed81611fbe565b94508151811061120d57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535061122d81611fbe565b9050611193565b5060005b828110156112d95785818151811061126057634e487b7160e01b600052603260045260246000fd5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016858361129281611fbe565b9450815181106112b257634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506112d281611fbe565b9050611238565b509298975050505050505050565b6000818152600360209081526040808320546001600160a01b03861684526002909252822080549192909161131e90600190611f55565b9050600082828154811061134257634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508083858154811061137057634e487b7160e01b600052603260045260246000fd5b600091825260208083209091019290925582815260039091526040902084905582548390806113af57634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810183905590920190925595815260049095525050604090922080546001600160a01b0319169055505050565b6001600160a01b03909116600081815260026020908152604080832080548685526003845282852081905560018101825590845282842001859055938252600490529190912080546001600160a01b0319169091179055565b606082611486575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610d2f565b6000835b80156114ac5761149982611fbe565b91506114a58482611f41565b905061148a565b5060008167ffffffffffffffff8111156114d657634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611500576020820181803683370190505b5090505b84156115d95760006115168587611fd9565b90506115228587611f41565b9550600a81101561158257611538816030611f29565b60f81b8261154585611f6c565b9450848151811061156657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506115d3565b61158d816057611f29565b60f81b8261159a85611f6c565b945084815181106115bb57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053505b50611504565b949350505050565b8280546115ed90611f83565b90600052602060002090601f01602090048101928261160f5760008555611655565b82601f1061162857805160ff1916838001178555611655565b82800160010185558215611655579182015b8281111561165557825182559160200191906001019061163a565b50611661929150611665565b5090565b5b808211156116615760008155600101611666565b600067ffffffffffffffff83111561169457611694612019565b6116a7601f8401601f1916602001611eff565b90508281528383830111156116bb57600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b038116811461050b57600080fd5b600082601f8301126116f9578081fd5b8135602067ffffffffffffffff82111561171557611715612019565b808202611723828201611eff565b83815282810190868401838801850189101561173d578687fd5b8693505b8584101561175f578035835260019390930192918401918401611741565b50979650505050505050565b600082601f83011261177b578081fd5b61178a8383356020850161167a565b9392505050565b6000602082840312156117a2578081fd5b61178a826116d2565b600080604083850312156117bd578081fd5b6117c6836116d2565b91506117d4602084016116d2565b90509250929050565b6000806000606084860312156117f1578081fd5b6117fa846116d2565b9250611808602085016116d2565b9150604084013567ffffffffffffffff811115611823578182fd5b61182f868287016116e9565b9150509250925092565b6000806000806080858703121561184e578081fd5b611857856116d2565b9350611865602086016116d2565b9250604085013567ffffffffffffffff80821115611881578283fd5b61188d888389016116e9565b935060608701359150808211156118a2578283fd5b506118af8782880161176b565b91505092959194509250565b6000806000606084860312156118cf578283fd5b6118d8846116d2565b92506118e6602085016116d2565b9150604084013590509250925092565b6000806000806080858703121561190b578384fd5b611914856116d2565b9350611922602086016116d2565b925060408501359150606085013567ffffffffffffffff811115611944578182fd5b6118af8782880161176b565b60008060408385031215611962578182fd5b61196b836116d2565b91506020830135801515811461197f578182fd5b809150509250929050565b6000806040838503121561199c578182fd5b6119a5836116d2565b946020939093013593505050565b6000806000606084860312156119c7578283fd5b6119d0846116d2565b95602085013595506040909401359392505050565b6000602082840312156119f6578081fd5b813561178a8161202f565b600060208284031215611a12578081fd5b815161178a8161202f565b600060208284031215611a2e578081fd5b813567ffffffffffffffff811115611a44578182fd5b8201601f81018413611a54578182fd5b6115d98482356020840161167a565b600060208284031215611a74578081fd5b5035919050565b6000815180845260208085019450808401835b83811015611aaa57815187529582019590820190600101611a8e565b509495945050505050565b60008151808452815b81811015611ada57602081850181015186830182015201611abe565b81811115611aeb5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b60006001600160a01b03808716835280861660208401525060806040830152611b406080830185611a7b565b8281036060840152611b528185611ab5565b979650505050505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152611b8f6080830184611ab5565b9695505050505050565b60006020825261178a6020830184611a7b565b901515815260200190565b60006020825261178a6020830184611ab5565b60208082526022908201527f73656e646572206d757374206265206f776e6572206f7220617070726f76616c60408201527f6564000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f6f6e455243373231526563656976656428292072657475726e20696e76616c6960408201527f6400000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f73656e646572206d757374206265206f776e6572206f7220617070726f76656460408201527f20666f7220616c6c000000000000000000000000000000000000000000000000606082015260800190565b60208082526012908201527f746f206973207a65726f20616464726573730000000000000000000000000000604082015260600190565b60208082526015908201527f6f776e6572206973207a65726f20616464726573730000000000000000000000604082015260600190565b60208082526014908201527f66726f6d206973207a65726f2061646472657373000000000000000000000000604082015260600190565b60208082526013908201527f6f6e6c7920636f6e7472616374206f776e657200000000000000000000000000604082015260600190565b60208082526015908201527f6e6f626f6479206f776e207468656e20746f6b656e0000000000000000000000604082015260600190565b60208082526014908201527f6e6f626f6479206f776e2074686520746f6b656e000000000000000000000000604082015260600190565b60208082526012908201527f66726f6d206d757374206265206f776e65720000000000000000000000000000604082015260600190565b60208082526010908201527f6e6f7420696e2077686974654c69737400000000000000000000000000000000604082015260600190565b60208082526023908201527f6f6e4552433732314578526563656976656428292072657475726e20696e766160408201527f6c69640000000000000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff81118282101715611f2157611f21612019565b604052919050565b60008219821115611f3c57611f3c611fed565b500190565b600082611f5057611f50612003565b500490565b600082821015611f6757611f67611fed565b500390565b600081611f7b57611f7b611fed565b506000190190565b600281046001821680611f9757607f821691505b60208210811415611fb857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611fd257611fd2611fed565b5060010190565b600082611fe857611fe8612003565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146109bd57600080fdfea264697066735822122077922ea72002267b7b6c937dab266ab778df98abaf8e8cfda4181b97c23ac0d664736f6c634300080000330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000114d79746856657273652047656e6573697300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044d59544800000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061018b5760003560e01c80636352211e116100d6578063a22cb4651161007f578063ce606ee011610059578063ce606ee01461041c578063e985e9c514610431578063f3993d11146104515761018b565b8063a22cb465146103c9578063b88d4fde146103e9578063c87b56dd146103fc5761018b565b80637ec4a659116100b05780637ec4a659146103745780638d14e1271461039457806395d89b41146103b45761018b565b80636352211e146103145780636a6278421461033457806370a08231146103545761018b565b806323185dc911610138578063372c12b111610112578063372c12b1146102cc57806342842e0e146102ec57806362b99ad4146102ff5761018b565b806323185dc91461026c57806323b872dd1461029957806328cfbd46146102ac5761018b565b8063081812fc11610169578063081812fc1461020a578063095ea7b31461023757806318160ddd1461024a5761018b565b806301ffc9a714610190578063034601ec146101c657806306fdde03146101e8575b600080fd5b34801561019c57600080fd5b506101b06101ab3660046119e5565b610471565b6040516101bd9190611bac565b60405180910390f35b3480156101d257600080fd5b506101e66101e13660046117dd565b610510565b005b3480156101f457600080fd5b506101fd610530565b6040516101bd9190611bb7565b34801561021657600080fd5b5061022a610225366004611a63565b6105be565b6040516101bd9190611b00565b6101e661024536600461198a565b610617565b34801561025657600080fd5b5061025f6106d8565b6040516101bd9190611ef6565b34801561027857600080fd5b5061028c6102873660046119b3565b6106de565b6040516101bd9190611b99565b6101e66102a73660046118bb565b61080b565b3480156102b857600080fd5b506101e66102c7366004611839565b610816565b3480156102d857600080fd5b506101b06102e7366004611791565b610904565b6101e66102fa3660046118bb565b610919565b34801561030b57600080fd5b506101fd610934565b34801561032057600080fd5b5061022a61032f366004611a63565b610941565b34801561034057600080fd5b506101e661034f366004611791565b610976565b34801561036057600080fd5b5061025f61036f366004611791565b6109c0565b34801561038057600080fd5b506101e661038f366004611a1d565b610a04565b3480156103a057600080fd5b506101e66103af366004611950565b610a63565b3480156103c057600080fd5b506101fd610ad6565b3480156103d557600080fd5b506101e66103e4366004611950565b610ae3565b6101e66103f73660046118f6565b610b52565b34801561040857600080fd5b506101fd610417366004611a63565b610c3a565b34801561042857600080fd5b5061022a610ce1565b34801561043d57600080fd5b506101b061044c3660046117ab565b610d05565b34801561045d57600080fd5b506101e661046c3660046117dd565b610d35565b60006001600160e01b031982167f01ffc9a70000000000000000000000000000000000000000000000000000000014806104d457506001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000145b8061050857506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b90505b919050565b61052b83838360405180602001604052806000815250610816565b505050565b6000805461053d90611f83565b80601f016020809104026020016040519081016040528092919081815260200182805461056990611f83565b80156105b65780601f1061058b576101008083540402835291602001916105b6565b820191906000526020600020905b81548152906001019060200180831161059957829003601f168201915b505050505081565b6000818152600460205260408120546001600160a01b03166105fb5760405162461bcd60e51b81526004016105f290611dbd565b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b6000818152600460205260409020546001600160a01b03163381148061066057506001600160a01b038116600090815260066020908152604080832033845290915290205460ff165b61067c5760405162461bcd60e51b81526004016105f290611c84565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075481565b60606001600160a01b0384166107065760405162461bcd60e51b81526004016105f290611d18565b6001600160a01b03841660009081526002602052604090208261072857805492505b60006107348585611f55565b67ffffffffffffffff81111561075a57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610783578160200160208202803683370190505b509050845b84811015610801578281815481106107b057634e487b7160e01b600052603260045260246000fd5b90600052602060002001548287836107c89190611f55565b815181106107e657634e487b7160e01b600052603260045260246000fd5b60209081029190910101526107fa81611fbe565b9050610788565b5095945050505050565b61052b838383610f22565b610821848484610d35565b610833836001600160a01b03166110b2565b156108fe576040517f0f7b88e300000000000000000000000000000000000000000000000000000000808252906001600160a01b03851690630f7b88e390610885903390899088908890600401611b14565b602060405180830381600087803b15801561089f57600080fd5b505af11580156108b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d79190611a01565b6001600160e01b031916146108fe5760405162461bcd60e51b81526004016105f290611e99565b50505050565b60096020526000908152604090205460ff1681565b61052b83838360405180602001604052806000815250610b52565b6008805461053d90611f83565b6000818152600460205260408120546001600160a01b0316806105085760405162461bcd60e51b81526004016105f290611df4565b3360009081526009602052604090205460ff166109a55760405162461bcd60e51b81526004016105f290611e62565b6109bd8160075460016109b89190611f29565b6110b8565b50565b60006001600160a01b0382166109e85760405162461bcd60e51b81526004016105f290611d18565b506001600160a01b031660009081526002602052604090205490565b336001600160a01b037f00000000000000000000000094d22422f1acc7f84cf20f82a5c2f63dbc2b073b1614610a4c5760405162461bcd60e51b81526004016105f290611d86565b8051610a5f9060089060208401906115e1565b5050565b336001600160a01b037f00000000000000000000000094d22422f1acc7f84cf20f82a5c2f63dbc2b073b1614610aab5760405162461bcd60e51b81526004016105f290611d86565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001805461053d90611f83565b3360008181526006602090815260408083206001600160a01b038716808552925291829020805460ff191685151517905590519091907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190610b46908590611bac565b60405180910390a35050565b610b5d848484610f22565b610b6f836001600160a01b03166110b2565b156108fe576040517f150b7a0200000000000000000000000000000000000000000000000000000000808252906001600160a01b0385169063150b7a0290610bc1903390899088908890600401611b5d565b602060405180830381600087803b158015610bdb57600080fd5b505af1158015610bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c139190611a01565b6001600160e01b031916146108fe5760405162461bcd60e51b81526004016105f290611c27565b6060610508610c4883611111565b60088054610c5590611f83565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8190611f83565b8015610cce5780601f10610ca357610100808354040283529160200191610cce565b820191906000526020600020905b815481529060010190602001808311610cb157829003601f168201915b505050505061111e90919063ffffffff16565b7f00000000000000000000000094d22422f1acc7f84cf20f82a5c2f63dbc2b073b81565b6001600160a01b0380831660009081526006602090815260408083209385168352929052205460ff165b92915050565b6001600160a01b038316610d5b5760405162461bcd60e51b81526004016105f290611d4f565b6001600160a01b038216610d815760405162461bcd60e51b81526004016105f290611ce1565b3360006001600160a01b038516821480610dc057506001600160a01b0380861660009081526006602090815260408083209386168352929052205460ff165b905060005b8351811015610f1a576000848281518110610df057634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600081815260049092526040909120549091506001600160a01b03888116911614610e395760405162461bcd60e51b81526004016105f290611e2b565b8280610e5e57506000818152600560205260409020546001600160a01b038581169116145b610e7a5760405162461bcd60e51b81526004016105f290611bca565b6000818152600560205260409020546001600160a01b031615610eb457600081815260056020526040902080546001600160a01b03191690555b610ebe87826112e7565b610ec886826113ec565b80866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450610f1381611fbe565b9050610dc5565b505050505050565b6001600160a01b038316610f485760405162461bcd60e51b81526004016105f290611d4f565b6001600160a01b038216610f6e5760405162461bcd60e51b81526004016105f290611ce1565b6000818152600460205260409020546001600160a01b03848116911614610fa75760405162461bcd60e51b81526004016105f290611e2b565b336001600160a01b0384161480610fd457506000818152600560205260409020546001600160a01b031633145b8061100257506001600160a01b038316600090815260066020908152604080832033845290915290205460ff165b61101e5760405162461bcd60e51b81526004016105f290611bca565b6000818152600560205260409020546001600160a01b03161561105857600081815260056020526040902080546001600160a01b03191690555b61106283826112e7565b61106c82826113ec565b80826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b3b151590565b6110c282826113ec565b6007600081546110d190611fbe565b9091555060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b606061050882600a611445565b80518251606091849184916000916111369190611f29565b67ffffffffffffffff81111561115c57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611186576020820181803683370190505b5083518351919250906000805b83811015611234578681815181106111bb57634e487b7160e01b600052603260045260246000fd5b01602001517fff000000000000000000000000000000000000000000000000000000000000001685836111ed81611fbe565b94508151811061120d57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535061122d81611fbe565b9050611193565b5060005b828110156112d95785818151811061126057634e487b7160e01b600052603260045260246000fd5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016858361129281611fbe565b9450815181106112b257634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506112d281611fbe565b9050611238565b509298975050505050505050565b6000818152600360209081526040808320546001600160a01b03861684526002909252822080549192909161131e90600190611f55565b9050600082828154811061134257634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508083858154811061137057634e487b7160e01b600052603260045260246000fd5b600091825260208083209091019290925582815260039091526040902084905582548390806113af57634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810183905590920190925595815260049095525050604090922080546001600160a01b0319169055505050565b6001600160a01b03909116600081815260026020908152604080832080548685526003845282852081905560018101825590845282842001859055938252600490529190912080546001600160a01b0319169091179055565b606082611486575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610d2f565b6000835b80156114ac5761149982611fbe565b91506114a58482611f41565b905061148a565b5060008167ffffffffffffffff8111156114d657634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611500576020820181803683370190505b5090505b84156115d95760006115168587611fd9565b90506115228587611f41565b9550600a81101561158257611538816030611f29565b60f81b8261154585611f6c565b9450848151811061156657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506115d3565b61158d816057611f29565b60f81b8261159a85611f6c565b945084815181106115bb57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053505b50611504565b949350505050565b8280546115ed90611f83565b90600052602060002090601f01602090048101928261160f5760008555611655565b82601f1061162857805160ff1916838001178555611655565b82800160010185558215611655579182015b8281111561165557825182559160200191906001019061163a565b50611661929150611665565b5090565b5b808211156116615760008155600101611666565b600067ffffffffffffffff83111561169457611694612019565b6116a7601f8401601f1916602001611eff565b90508281528383830111156116bb57600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b038116811461050b57600080fd5b600082601f8301126116f9578081fd5b8135602067ffffffffffffffff82111561171557611715612019565b808202611723828201611eff565b83815282810190868401838801850189101561173d578687fd5b8693505b8584101561175f578035835260019390930192918401918401611741565b50979650505050505050565b600082601f83011261177b578081fd5b61178a8383356020850161167a565b9392505050565b6000602082840312156117a2578081fd5b61178a826116d2565b600080604083850312156117bd578081fd5b6117c6836116d2565b91506117d4602084016116d2565b90509250929050565b6000806000606084860312156117f1578081fd5b6117fa846116d2565b9250611808602085016116d2565b9150604084013567ffffffffffffffff811115611823578182fd5b61182f868287016116e9565b9150509250925092565b6000806000806080858703121561184e578081fd5b611857856116d2565b9350611865602086016116d2565b9250604085013567ffffffffffffffff80821115611881578283fd5b61188d888389016116e9565b935060608701359150808211156118a2578283fd5b506118af8782880161176b565b91505092959194509250565b6000806000606084860312156118cf578283fd5b6118d8846116d2565b92506118e6602085016116d2565b9150604084013590509250925092565b6000806000806080858703121561190b578384fd5b611914856116d2565b9350611922602086016116d2565b925060408501359150606085013567ffffffffffffffff811115611944578182fd5b6118af8782880161176b565b60008060408385031215611962578182fd5b61196b836116d2565b91506020830135801515811461197f578182fd5b809150509250929050565b6000806040838503121561199c578182fd5b6119a5836116d2565b946020939093013593505050565b6000806000606084860312156119c7578283fd5b6119d0846116d2565b95602085013595506040909401359392505050565b6000602082840312156119f6578081fd5b813561178a8161202f565b600060208284031215611a12578081fd5b815161178a8161202f565b600060208284031215611a2e578081fd5b813567ffffffffffffffff811115611a44578182fd5b8201601f81018413611a54578182fd5b6115d98482356020840161167a565b600060208284031215611a74578081fd5b5035919050565b6000815180845260208085019450808401835b83811015611aaa57815187529582019590820190600101611a8e565b509495945050505050565b60008151808452815b81811015611ada57602081850181015186830182015201611abe565b81811115611aeb5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b60006001600160a01b03808716835280861660208401525060806040830152611b406080830185611a7b565b8281036060840152611b528185611ab5565b979650505050505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152611b8f6080830184611ab5565b9695505050505050565b60006020825261178a6020830184611a7b565b901515815260200190565b60006020825261178a6020830184611ab5565b60208082526022908201527f73656e646572206d757374206265206f776e6572206f7220617070726f76616c60408201527f6564000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f6f6e455243373231526563656976656428292072657475726e20696e76616c6960408201527f6400000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f73656e646572206d757374206265206f776e6572206f7220617070726f76656460408201527f20666f7220616c6c000000000000000000000000000000000000000000000000606082015260800190565b60208082526012908201527f746f206973207a65726f20616464726573730000000000000000000000000000604082015260600190565b60208082526015908201527f6f776e6572206973207a65726f20616464726573730000000000000000000000604082015260600190565b60208082526014908201527f66726f6d206973207a65726f2061646472657373000000000000000000000000604082015260600190565b60208082526013908201527f6f6e6c7920636f6e7472616374206f776e657200000000000000000000000000604082015260600190565b60208082526015908201527f6e6f626f6479206f776e207468656e20746f6b656e0000000000000000000000604082015260600190565b60208082526014908201527f6e6f626f6479206f776e2074686520746f6b656e000000000000000000000000604082015260600190565b60208082526012908201527f66726f6d206d757374206265206f776e65720000000000000000000000000000604082015260600190565b60208082526010908201527f6e6f7420696e2077686974654c69737400000000000000000000000000000000604082015260600190565b60208082526023908201527f6f6e4552433732314578526563656976656428292072657475726e20696e766160408201527f6c69640000000000000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff81118282101715611f2157611f21612019565b604052919050565b60008219821115611f3c57611f3c611fed565b500190565b600082611f5057611f50612003565b500490565b600082821015611f6757611f67611fed565b500390565b600081611f7b57611f7b611fed565b506000190190565b600281046001821680611f9757607f821691505b60208210811415611fb857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611fd257611fd2611fed565b5060010190565b600082611fe857611fe8612003565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146109bd57600080fdfea264697066735822122077922ea72002267b7b6c937dab266ab778df98abaf8e8cfda4181b97c23ac0d664736f6c63430008000033

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

0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000114d79746856657273652047656e6573697300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044d59544800000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): MythVerse Genesis
Arg [1] : _symbol (string): MYTH

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000011
Arg [3] : 4d79746856657273652047656e65736973000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 4d59544800000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

24408:621:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21548:273;;;;;;;;;;-1:-1:-1;21548:273:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22586:176;;;;;;;;;;-1:-1:-1;22586:176:0;;;;;:::i;:::-;;:::i;:::-;;16336:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;21103:248::-;;;;;;;;;;-1:-1:-1;21103:248:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;20484:406::-;;;;;;:::i;:::-;;:::i;21973:30::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;17083:584::-;;;;;;;;;;-1:-1:-1;17083:584:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;18578:161::-;;;;;;:::i;:::-;;:::i;22774:466::-;;;;;;;;;;-1:-1:-1;22774:466:0;;;;;:::i;:::-;;:::i;24456:41::-;;;;;;;;;;-1:-1:-1;24456:41:0;;;;;:::i;:::-;;:::i;17925:176::-;;;;;;:::i;:::-;;:::i;22016:23::-;;;;;;;;;;;;;:::i;17679:234::-;;;;;;;;;;-1:-1:-1;17679:234:0;;;;;:::i;:::-;;:::i;24875:151::-;;;;;;;;;;-1:-1:-1;24875:151:0;;;;;:::i;:::-;;:::i;16851:189::-;;;;;;;;;;-1:-1:-1;16851:189:0;;;;;:::i;:::-;;:::i;24618:108::-;;;;;;;;;;-1:-1:-1;24618:108:0;;;;;:::i;:::-;;:::i;24738:125::-;;;;;;;;;;-1:-1:-1;24738:125:0;;;;;:::i;:::-;;:::i;16370:29::-;;;;;;;;;;;;;:::i;20902:189::-;;;;;;;;;;-1:-1:-1;20902:189:0;;;;;:::i;:::-;;:::i;18113:453::-;;;;;;:::i;:::-;;:::i;24241:160::-;;;;;;;;;;-1:-1:-1;24241:160:0;;;;;:::i;:::-;;:::i;14858:51::-;;;;;;;;;;;;;:::i;21363:173::-;;;;;;;;;;-1:-1:-1;21363:173:0;;;;;:::i;:::-;;:::i;23252:977::-;;;;;;;;;;-1:-1:-1;23252:977:0;;;;;:::i;:::-;;:::i;21548:273::-;21635:4;-1:-1:-1;;;;;;21669:34:0;;21684:19;21669:34;;:85;;-1:-1:-1;;;;;;;21720:34:0;;21735:19;21720:34;21669:85;:144;;;-1:-1:-1;;;;;;;21771:42:0;;21786:27;21771:42;21669:144;21662:151;;21548:273;;;;:::o;22586:176::-;22709:45;22731:4;22737:2;22741:8;22709:45;;;;;;;;;;;;:21;:45::i;:::-;22586:176;;;:::o;16336:27::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21103:248::-;21181:7;21219:20;;;:11;:20;;;;;;-1:-1:-1;;;;;21219:20:0;21211:81;;;;-1:-1:-1;;;21211:81:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;21320:23:0;;;;:14;:23;;;;;;-1:-1:-1;;;;;21320:23:0;;21103:248::o;20484:406::-;20586:13;20602:20;;;:11;:20;;;;;;-1:-1:-1;;;;;20602:20:0;20651:10;:19;;;:70;;-1:-1:-1;;;;;;20687:22:0;;;;;;:15;:22;;;;;;;;20710:10;20687:34;;;;;;;;;;20651:70;20643:146;;;;-1:-1:-1;;;20643:146:0;;;;;;;:::i;:::-;20810:23;;;;:14;:23;;;;;;:28;;-1:-1:-1;;;;;;20810:28:0;-1:-1:-1;;;;;20810:28:0;;;;;;;;;20854;;20810:23;;20854:28;;;;;;;20484:406;;;:::o;21973:30::-;;;;:::o;17083:584::-;17185:16;-1:-1:-1;;;;;17232:19:0;;17224:53;;;;-1:-1:-1;;;17224:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17325:18:0;;17298:24;17325:18;;;:11;:18;;;;;17358:13;17354:70;;17399:13;;;-1:-1:-1;17354:70:0;17444:23;17484:21;17495:10;17484:8;:21;:::i;:::-;17470:36;;;;;;-1:-1:-1;;;17470:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17470:36:0;-1:-1:-1;17444:62:0;-1:-1:-1;17534:10:0;17517:109;17550:8;17546:1;:12;17517:109;;;17605:6;17612:1;17605:9;;;;;;-1:-1:-1;;;17605:9:0;;;;;;;;;;;;;;;;;17580:6;17591:10;17587:1;:14;;;;:::i;:::-;17580:22;;;;;;-1:-1:-1;;;17580:22:0;;;;;;;;;;;;;;;;;;:34;17560:3;;;:::i;:::-;;;17517:109;;;-1:-1:-1;17653:6:0;17083:584;-1:-1:-1;;;;;17083:584:0:o;18578:161::-;18699:32;18713:4;18719:2;18723:7;18699:13;:32::i;22774:466::-;22914:37;22932:4;22938:2;22942:8;22914:17;:37::i;:::-;22976:15;:2;-1:-1:-1;;;;;22976:13:0;;:15::i;:::-;22972:261;;;23016:97;;23134:30;23016:97;;;23134:30;-1:-1:-1;;;;;23016:63:0;;;14801:10;;23016:97;;23080:10;;23092:4;;23098:8;;23108:4;;23016:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;23016:148:0;;23008:213;;;;-1:-1:-1;;;23008:213:0;;;;;;;:::i;:::-;22774:466;;;;:::o;24456:41::-;;;;;;;;;;;;;;;:::o;17925:176::-;18054:39;18071:4;18077:2;18081:7;18054:39;;;;;;;;;;;;:16;:39::i;22016:23::-;;;;;;;:::i;17679:234::-;17753:7;17799:20;;;:11;:20;;;;;;-1:-1:-1;;;;;17799:20:0;17838:19;17830:52;;;;-1:-1:-1;;;17830:52:0;;;;;;;:::i;24875:151::-;24939:10;24929:21;;;;:9;:21;;;;;;;;24921:50;;;;-1:-1:-1;;;24921:50:0;;;;;;;:::i;:::-;24992:26;24998:2;25002:11;;25016:1;25002:15;;;;:::i;:::-;24992:5;:26::i;:::-;24875:151;:::o;16851:189::-;16916:7;-1:-1:-1;;;;;16944:19:0;;16936:53;;;;-1:-1:-1;;;16936:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;17007:18:0;;;;;:11;:18;;;;;:25;;16851:189::o;24618:108::-;14968:10;-1:-1:-1;;;;;14982:13:0;14968:27;;14960:59;;;;-1:-1:-1;;;14960:59:0;;;;;;;:::i;:::-;24700:18;;::::1;::::0;:9:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;;24618:108:::0;:::o;24738:125::-;14968:10;-1:-1:-1;;;;;14982:13:0;14968:27;;14960:59;;;;-1:-1:-1;;;14960:59:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24828:18:0;;;::::1;;::::0;;;:9:::1;:18;::::0;;;;:27;;-1:-1:-1;;24828:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24738:125::o;16370:29::-;;;;;;;:::i;20902:189::-;21001:10;20985:27;;;;:15;:27;;;;;;;;-1:-1:-1;;;;;20985:31:0;;;;;;;;;;;:42;;-1:-1:-1;;20985:42:0;;;;;;;21043:40;;20985:31;;21001:10;21043:40;;;;20985:42;;21043:40;:::i;:::-;;;;;;;;20902:189;;:::o;18113:453::-;18255:32;18269:4;18275:2;18279:7;18255:13;:32::i;:::-;18312:15;:2;-1:-1:-1;;;;;18312:13:0;;:15::i;:::-;18308:251;;;18352:92;;18465:27;18352:92;;;18465:27;-1:-1:-1;;;;;18352:59:0;;;14731:10;;18352:92;;18412:10;;18424:4;;18430:7;;18439:4;;18352:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;18352:140:0;;18344:203;;;;-1:-1:-1;;;18344:203:0;;;;;;;:::i;24241:160::-;24315:13;24358:35;24375:17;:6;:15;:17::i;:::-;24358:9;:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;;:::i;14858:51::-;;;:::o;21363:173::-;-1:-1:-1;;;;;21496:22:0;;;21462:4;21496:22;;;:15;:22;;;;;;;;:32;;;;;;;;;;;;21363:173;;;;;:::o;23252:977::-;-1:-1:-1;;;;;23377:18:0;;23369:51;;;;-1:-1:-1;;;23369:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23439:16:0;;23431:47;;;;-1:-1:-1;;;23431:47:0;;;;;;;:::i;:::-;23516:10;23499:14;-1:-1:-1;;;;;23553:14:0;;;;;:47;;-1:-1:-1;;;;;;23571:21:0;;;;;;;:15;:21;;;;;;;;:29;;;;;;;;;;;;23553:47;23537:63;;23626:9;23621:601;23645:8;:15;23641:1;:19;23621:601;;;23682:15;23700:8;23709:1;23700:11;;;;;;-1:-1:-1;;;23700:11:0;;;;;;;;;;;;;;;;;;;;23747:20;;;;:11;:20;;;;;;;;23700:11;;-1:-1:-1;;;;;;23739:28:0;;;23747:20;;23739:28;23731:59;;;;-1:-1:-1;;;23731:59:0;;;;;;;:::i;:::-;23813:8;:45;;;-1:-1:-1;23835:23:0;;;;:14;:23;;;;;;-1:-1:-1;;;;;23825:33:0;;;23835:23;;23825:33;23813:45;23805:109;;;;-1:-1:-1;;;23805:109:0;;;;;;;:::i;:::-;23982:1;23947:23;;;:14;:23;;;;;;-1:-1:-1;;;;;23947:23:0;:37;23943:108;;24012:23;;;;:14;:23;;;;;24005:30;;-1:-1:-1;;;;;;24005:30:0;;;23943:108;24079:31;24096:4;24102:7;24079:16;:31::i;:::-;24125:24;24137:2;24141:7;24125:11;:24::i;:::-;24202:7;24198:2;-1:-1:-1;;;;;24183:27:0;24192:4;-1:-1:-1;;;;;24183:27:0;;;;;;;;;;;-1:-1:-1;23662:3:0;;;:::i;:::-;;;23621:601;;;;23252:977;;;;;:::o;18751:765::-;-1:-1:-1;;;;;18864:18:0;;18856:51;;;;-1:-1:-1;;;18856:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18926:16:0;;18918:47;;;;-1:-1:-1;;;18918:47:0;;;;;;;:::i;:::-;19002:20;;;;:11;:20;;;;;;-1:-1:-1;;;;;18994:28:0;;;19002:20;;18994:28;18986:59;;;;-1:-1:-1;;;18986:59:0;;;;;;;:::i;:::-;19074:10;-1:-1:-1;;;;;19074:18:0;;;;:72;;-1:-1:-1;19123:23:0;;;;:14;:23;;;;;;-1:-1:-1;;;;;19123:23:0;19109:10;:37;19074:72;:122;;;-1:-1:-1;;;;;;19163:21:0;;;;;;:15;:21;;;;;;;;19185:10;19163:33;;;;;;;;;;19074:122;19066:182;;;;-1:-1:-1;;;19066:182:0;;;;;;;:::i;:::-;19308:1;19273:23;;;:14;:23;;;;;;-1:-1:-1;;;;;19273:23:0;:37;19269:100;;19334:23;;;;:14;:23;;;;;19327:30;;-1:-1:-1;;;;;;19327:30:0;;;19269:100;19389:31;19406:4;19412:7;19389:16;:31::i;:::-;19431:24;19443:2;19447:7;19431:11;:24::i;:::-;19500:7;19496:2;-1:-1:-1;;;;;19481:27:0;19490:4;-1:-1:-1;;;;;19481:27:0;;;;;;;;;;;18751:765;;;:::o;9093:634::-;9672:20;9711:8;;;9093:634::o;22052:189::-;22116:24;22128:2;22132:7;22116:11;:24::i;:::-;22163:11;;22161:13;;;;;:::i;:::-;;;;-1:-1:-1;22200:33:0;;22225:7;;-1:-1:-1;;;;;22200:33:0;;;22217:1;;22200:33;;22217:1;;22200:33;22052:189;;:::o;13555:116::-;13606:13;13639:24;13657:1;13660:2;13639:17;:24::i;12250:581::-;12481:9;;12469;;12331:13;;12391:1;;12428;;12367:15;;12469:21;;12481:9;12469:21;:::i;:::-;12459:32;;;;;;-1:-1:-1;;;12459:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12459:32:0;-1:-1:-1;12526:9:0;;12560;;12441:50;;-1:-1:-1;12526:9:0;12512:11;;12614:76;12638:3;12634:1;:7;12614:76;;;12673:2;12676:1;12673:5;;;;;;-1:-1:-1;;;12673:5:0;;;;;;;;;;;;;;;12663:2;12666:3;;;;:::i;:::-;;;12663:7;;;;;;-1:-1:-1;;;12663:7:0;;;;;;;;;;;;:15;-1:-1:-1;;;;;12663:15:0;;;;;;;;-1:-1:-1;12643:3:0;;;:::i;:::-;;;12614:76;;;;12715:9;12710:76;12734:3;12730:1;:7;12710:76;;;12769:2;12772:1;12769:5;;;;;;-1:-1:-1;;;12769:5:0;;;;;;;;;;;;;;;12759:2;12762:3;;;;:::i;:::-;;;12759:7;;;;;;-1:-1:-1;;;12759:7:0;;;;;;;;;;;;:15;-1:-1:-1;;;;;12759:15:0;;;;;;;;-1:-1:-1;12739:3:0;;;:::i;:::-;;;12710:76;;;-1:-1:-1;12820:2:0;;12250:581;-1:-1:-1;;;;;;;;12250:581:0:o;19575:594::-;19652:13;19668:20;;;:11;:20;;;;;;;;;-1:-1:-1;;;;;19736:17:0;;;;:11;:17;;;;;19784:13;;19668:20;;19736:17;;19784;;19800:1;;19784:17;:::i;:::-;19764:37;;19885:19;19907:6;19914:9;19907:17;;;;;;-1:-1:-1;;;19907:17:0;;;;;;;;;;;;;;;;;19885:39;;19955:11;19939:6;19946:5;19939:13;;;;;;-1:-1:-1;;;19939:13:0;;;;;;;;;;;;;;;;;;;;:27;;;;19981:24;;;:11;:24;;;;;;:32;;;20048:12;;:6;;:12;;;-1:-1:-1;;;20048:12:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20048:12:0;;;;;;;;;;;;20141:20;;;:11;:20;;;-1:-1:-1;;20141:20:0;;;;20134:27;;-1:-1:-1;;;;;;20134:27:0;;;-1:-1:-1;;;19575:594:0:o;20228:244::-;-1:-1:-1;;;;;20325:15:0;;;20298:24;20325:15;;;:11;:15;;;;;;;;20374:13;;20351:20;;;:11;:20;;;;;:36;;;20398:20;;;;;;;;;;;;;;;20439;;;:11;:20;;;;;;:25;;-1:-1:-1;;;;;;20439:25:0;;;;;;20228:244::o;12862:681::-;12937:13;12977:6;12973:49;;-1:-1:-1;13000:10:0;;;;;;;;;;;;;;;;;;;12973:49;13042:14;13088:1;13071:75;13091:6;;13071:75;;13126:8;;;:::i;:::-;;-1:-1:-1;13099:10:0;13104:5;13099:10;;:::i;:::-;;;13071:75;;;;13166:15;13194:6;13184:17;;;;;;-1:-1:-1;;;13184:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13184:17:0;;13166:35;;13222:276;13229:6;;13222:276;;13252:9;13264;13268:5;13264:1;:9;:::i;:::-;13252:21;-1:-1:-1;13288:10:0;13293:5;13288:10;;:::i;:::-;;;13335:2;13331:1;:6;13327:160;;;13386:6;:1;13390:2;13386:6;:::i;:::-;13373:21;;13358:2;13361:8;;;:::i;:::-;;;;13358:12;;;;;;-1:-1:-1;;;13358:12:0;;;;;;;;;;;;:36;-1:-1:-1;;;;;13358:36:0;;;;;;;;;13327:160;;;13463:6;:1;13467:2;13463:6;:::i;:::-;13450:21;;13435:2;13438:8;;;:::i;:::-;;;;13435:12;;;;;;-1:-1:-1;;;13435:12:0;;;;;;;;;;;;:36;-1:-1:-1;;;;;13435:36:0;;;;;;;;;13327:160;13222:276;;;;13532:2;12862:681;-1:-1:-1;;;;12862:681:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:409:1;;114:18;106:6;103:30;100:2;;;136:18;;:::i;:::-;174:58;220:2;197:17;;-1:-1:-1;;193:31:1;226:4;189:42;174:58;:::i;:::-;165:67;;255:6;248:5;241:21;295:3;286:6;281:3;277:16;274:25;271:2;;;312:1;309;302:12;271:2;361:6;356:3;349:4;342:5;338:16;325:43;415:1;408:4;399:6;392:5;388:18;384:29;377:40;90:333;;;;;:::o;428:198::-;498:20;;-1:-1:-1;;;;;547:54:1;;537:65;;527:2;;616:1;613;606:12;631:749;;744:3;737:4;729:6;725:17;721:27;711:2;;766:5;759;752:20;711:2;806:6;793:20;832:4;855:18;851:2;848:26;845:2;;;877:18;;:::i;:::-;924:2;920;916:11;947:27;970:2;966;962:11;947:27;:::i;:::-;1008:15;;;1039:12;;;;1071:15;;;1105;;;1101:24;;1098:33;-1:-1:-1;1095:2:1;;;1148:5;1141;1134:20;1095:2;1174:5;1165:14;;1188:163;1202:2;1199:1;1196:9;1188:163;;;1259:17;;1247:30;;1220:1;1213:9;;;;;1297:12;;;;1329;;1188:163;;;-1:-1:-1;1369:5:1;701:679;-1:-1:-1;;;;;;;701:679:1:o;1385:232::-;;1482:3;1475:4;1467:6;1463:17;1459:27;1449:2;;1504:5;1497;1490:20;1449:2;1530:81;1607:3;1598:6;1585:20;1578:4;1570:6;1566:17;1530:81;:::i;:::-;1521:90;1439:178;-1:-1:-1;;;1439:178:1:o;1622:198::-;;1734:2;1722:9;1713:7;1709:23;1705:32;1702:2;;;1755:6;1747;1740:22;1702:2;1783:31;1804:9;1783:31;:::i;1825:274::-;;;1954:2;1942:9;1933:7;1929:23;1925:32;1922:2;;;1975:6;1967;1960:22;1922:2;2003:31;2024:9;2003:31;:::i;:::-;1993:41;;2053:40;2089:2;2078:9;2074:18;2053:40;:::i;:::-;2043:50;;1912:187;;;;;:::o;2104:526::-;;;;2275:2;2263:9;2254:7;2250:23;2246:32;2243:2;;;2296:6;2288;2281:22;2243:2;2324:31;2345:9;2324:31;:::i;:::-;2314:41;;2374:40;2410:2;2399:9;2395:18;2374:40;:::i;:::-;2364:50;;2465:2;2454:9;2450:18;2437:32;2492:18;2484:6;2481:30;2478:2;;;2529:6;2521;2514:22;2478:2;2557:67;2616:7;2607:6;2596:9;2592:22;2557:67;:::i;:::-;2547:77;;;2233:397;;;;;:::o;2635:758::-;;;;;2832:3;2820:9;2811:7;2807:23;2803:33;2800:2;;;2854:6;2846;2839:22;2800:2;2882:31;2903:9;2882:31;:::i;:::-;2872:41;;2932:40;2968:2;2957:9;2953:18;2932:40;:::i;:::-;2922:50;;3023:2;3012:9;3008:18;2995:32;3046:18;3087:2;3079:6;3076:14;3073:2;;;3108:6;3100;3093:22;3073:2;3136:67;3195:7;3186:6;3175:9;3171:22;3136:67;:::i;:::-;3126:77;;3256:2;3245:9;3241:18;3228:32;3212:48;;3285:2;3275:8;3272:16;3269:2;;;3306:6;3298;3291:22;3269:2;;3334:53;3379:7;3368:8;3357:9;3353:24;3334:53;:::i;:::-;3324:63;;;2790:603;;;;;;;:::o;3398:342::-;;;;3544:2;3532:9;3523:7;3519:23;3515:32;3512:2;;;3565:6;3557;3550:22;3512:2;3593:31;3614:9;3593:31;:::i;:::-;3583:41;;3643:40;3679:2;3668:9;3664:18;3643:40;:::i;:::-;3633:50;;3730:2;3719:9;3715:18;3702:32;3692:42;;3502:238;;;;;:::o;3745:563::-;;;;;3917:3;3905:9;3896:7;3892:23;3888:33;3885:2;;;3939:6;3931;3924:22;3885:2;3967:31;3988:9;3967:31;:::i;:::-;3957:41;;4017:40;4053:2;4042:9;4038:18;4017:40;:::i;:::-;4007:50;;4104:2;4093:9;4089:18;4076:32;4066:42;;4159:2;4148:9;4144:18;4131:32;4186:18;4178:6;4175:30;4172:2;;;4223:6;4215;4208:22;4172:2;4251:51;4294:7;4285:6;4274:9;4270:22;4251:51;:::i;4313:369::-;;;4439:2;4427:9;4418:7;4414:23;4410:32;4407:2;;;4460:6;4452;4445:22;4407:2;4488:31;4509:9;4488:31;:::i;:::-;4478:41;;4569:2;4558:9;4554:18;4541:32;4616:5;4609:13;4602:21;4595:5;4592:32;4582:2;;4643:6;4635;4628:22;4582:2;4671:5;4661:15;;;4397:285;;;;;:::o;4687:266::-;;;4816:2;4804:9;4795:7;4791:23;4787:32;4784:2;;;4837:6;4829;4822:22;4784:2;4865:31;4886:9;4865:31;:::i;:::-;4855:41;4943:2;4928:18;;;;4915:32;;-1:-1:-1;;;4774:179:1:o;4958:334::-;;;;5104:2;5092:9;5083:7;5079:23;5075:32;5072:2;;;5125:6;5117;5110:22;5072:2;5153:31;5174:9;5153:31;:::i;:::-;5143:41;5231:2;5216:18;;5203:32;;-1:-1:-1;5282:2:1;5267:18;;;5254:32;;5062:230;-1:-1:-1;;;5062:230:1:o;5297:257::-;;5408:2;5396:9;5387:7;5383:23;5379:32;5376:2;;;5429:6;5421;5414:22;5376:2;5473:9;5460:23;5492:32;5518:5;5492:32;:::i;5559:261::-;;5681:2;5669:9;5660:7;5656:23;5652:32;5649:2;;;5702:6;5694;5687:22;5649:2;5739:9;5733:16;5758:32;5784:5;5758:32;:::i;5825:482::-;;5947:2;5935:9;5926:7;5922:23;5918:32;5915:2;;;5968:6;5960;5953:22;5915:2;6013:9;6000:23;6046:18;6038:6;6035:30;6032:2;;;6083:6;6075;6068:22;6032:2;6111:22;;6164:4;6156:13;;6152:27;-1:-1:-1;6142:2:1;;6198:6;6190;6183:22;6142:2;6226:75;6293:7;6288:2;6275:16;6270:2;6266;6262:11;6226:75;:::i;6312:190::-;;6424:2;6412:9;6403:7;6399:23;6395:32;6392:2;;;6445:6;6437;6430:22;6392:2;-1:-1:-1;6473:23:1;;6382:120;-1:-1:-1;6382:120:1:o;6507:443::-;;6604:5;6598:12;6631:6;6626:3;6619:19;6657:4;6686:2;6681:3;6677:12;6670:19;;6723:2;6716:5;6712:14;6744:3;6756:169;6770:6;6767:1;6764:13;6756:169;;;6831:13;;6819:26;;6865:12;;;;6900:15;;;;6792:1;6785:9;6756:169;;;-1:-1:-1;6941:3:1;;6574:376;-1:-1:-1;;;;;6574:376:1:o;6955:477::-;;7036:5;7030:12;7063:6;7058:3;7051:19;7088:3;7100:162;7114:6;7111:1;7108:13;7100:162;;;7176:4;7232:13;;;7228:22;;7222:29;7204:11;;;7200:20;;7193:59;7129:12;7100:162;;;7280:6;7277:1;7274:13;7271:2;;;7346:3;7339:4;7330:6;7325:3;7321:16;7317:27;7310:40;7271:2;-1:-1:-1;7414:2:1;7393:15;-1:-1:-1;;7389:29:1;7380:39;;;;7421:4;7376:50;;7006:426;-1:-1:-1;;7006:426:1:o;7437:226::-;-1:-1:-1;;;;;7601:55:1;;;;7583:74;;7571:2;7556:18;;7538:125::o;7668:652::-;;-1:-1:-1;;;;;8022:2:1;8014:6;8010:15;7999:9;7992:34;8074:2;8066:6;8062:15;8057:2;8046:9;8042:18;8035:43;;8114:3;8109:2;8098:9;8094:18;8087:31;8141:63;8199:3;8188:9;8184:19;8176:6;8141:63;:::i;:::-;8252:9;8244:6;8240:22;8235:2;8224:9;8220:18;8213:50;8280:34;8307:6;8299;8280:34;:::i;:::-;8272:42;7921:399;-1:-1:-1;;;;;;;7921:399:1:o;8325:513::-;;-1:-1:-1;;;;;8629:2:1;8621:6;8617:15;8606:9;8599:34;8681:2;8673:6;8669:15;8664:2;8653:9;8649:18;8642:43;;8721:6;8716:2;8705:9;8701:18;8694:34;8764:3;8759:2;8748:9;8744:18;8737:31;8785:47;8827:3;8816:9;8812:19;8804:6;8785:47;:::i;:::-;8777:55;8528:310;-1:-1:-1;;;;;;8528:310:1:o;8843:267::-;;9022:2;9011:9;9004:21;9042:62;9100:2;9089:9;9085:18;9077:6;9042:62;:::i;9115:187::-;9280:14;;9273:22;9255:41;;9243:2;9228:18;;9210:92::o;9307:221::-;;9456:2;9445:9;9438:21;9476:46;9518:2;9507:9;9503:18;9495:6;9476:46;:::i;9533:398::-;9735:2;9717:21;;;9774:2;9754:18;;;9747:30;9813:34;9808:2;9793:18;;9786:62;9884:4;9879:2;9864:18;;9857:32;9921:3;9906:19;;9707:224::o;9936:397::-;10138:2;10120:21;;;10177:2;10157:18;;;10150:30;10216:34;10211:2;10196:18;;10189:62;10287:3;10282:2;10267:18;;10260:31;10323:3;10308:19;;10110:223::o;10338:404::-;10540:2;10522:21;;;10579:2;10559:18;;;10552:30;10618:34;10613:2;10598:18;;10591:62;10689:10;10684:2;10669:18;;10662:38;10732:3;10717:19;;10512:230::o;10747:342::-;10949:2;10931:21;;;10988:2;10968:18;;;10961:30;11027:20;11022:2;11007:18;;11000:48;11080:2;11065:18;;10921:168::o;11094:345::-;11296:2;11278:21;;;11335:2;11315:18;;;11308:30;11374:23;11369:2;11354:18;;11347:51;11430:2;11415:18;;11268:171::o;11444:344::-;11646:2;11628:21;;;11685:2;11665:18;;;11658:30;11724:22;11719:2;11704:18;;11697:50;11779:2;11764:18;;11618:170::o;11793:343::-;11995:2;11977:21;;;12034:2;12014:18;;;12007:30;12073:21;12068:2;12053:18;;12046:49;12127:2;12112:18;;11967:169::o;12141:345::-;12343:2;12325:21;;;12382:2;12362:18;;;12355:30;12421:23;12416:2;12401:18;;12394:51;12477:2;12462:18;;12315:171::o;12491:344::-;12693:2;12675:21;;;12732:2;12712:18;;;12705:30;12771:22;12766:2;12751:18;;12744:50;12826:2;12811:18;;12665:170::o;12840:342::-;13042:2;13024:21;;;13081:2;13061:18;;;13054:30;13120:20;13115:2;13100:18;;13093:48;13173:2;13158:18;;13014:168::o;13187:340::-;13389:2;13371:21;;;13428:2;13408:18;;;13401:30;13467:18;13462:2;13447:18;;13440:46;13518:2;13503:18;;13361:166::o;13532:399::-;13734:2;13716:21;;;13773:2;13753:18;;;13746:30;13812:34;13807:2;13792:18;;13785:62;13883:5;13878:2;13863:18;;13856:33;13921:3;13906:19;;13706:225::o;13936:177::-;14082:25;;;14070:2;14055:18;;14037:76::o;14118:251::-;14188:2;14182:9;14218:17;;;14265:18;14250:34;;14286:22;;;14247:62;14244:2;;;14312:18;;:::i;:::-;14348:2;14341:22;14162:207;;-1:-1:-1;14162:207:1:o;14374:128::-;;14445:1;14441:6;14438:1;14435:13;14432:2;;;14451:18;;:::i;:::-;-1:-1:-1;14487:9:1;;14422:80::o;14507:120::-;;14573:1;14563:2;;14578:18;;:::i;:::-;-1:-1:-1;14612:9:1;;14553:74::o;14632:125::-;;14700:1;14697;14694:8;14691:2;;;14705:18;;:::i;:::-;-1:-1:-1;14742:9:1;;14681:76::o;14762:136::-;;14829:5;14819:2;;14838:18;;:::i;:::-;-1:-1:-1;;;14874:18:1;;14809:89::o;14903:437::-;14988:1;14978:12;;15035:1;15025:12;;;15046:2;;15100:4;15092:6;15088:17;15078:27;;15046:2;15153;15145:6;15142:14;15122:18;15119:38;15116:2;;;-1:-1:-1;;;15187:1:1;15180:88;15291:4;15288:1;15281:15;15319:4;15316:1;15309:15;15116:2;;14958:382;;;:::o;15345:135::-;;-1:-1:-1;;15405:17:1;;15402:2;;;15425:18;;:::i;:::-;-1:-1:-1;15472:1:1;15461:13;;15392:88::o;15485:112::-;;15543:1;15533:2;;15548:18;;:::i;:::-;-1:-1:-1;15582:9:1;;15523:74::o;15602:184::-;-1:-1:-1;;;15651:1:1;15644:88;15751:4;15748:1;15741:15;15775:4;15772:1;15765:15;15791:184;-1:-1:-1;;;15840:1:1;15833:88;15940:4;15937:1;15930:15;15964:4;15961:1;15954:15;15980:184;-1:-1:-1;;;16029:1:1;16022:88;16129:4;16126:1;16119:15;16153:4;16150:1;16143:15;16169:179;-1:-1:-1;;;;;;16249:5:1;16245:78;16238:5;16235:89;16225:2;;16338:1;16335;16328:12

Swarm Source

ipfs://77922ea72002267b7b6c937dab266ab778df98abaf8e8cfda4181b97c23ac0d6
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.