ETH Price: $3,381.79 (-1.90%)
Gas: 3 Gwei

Token

Transit NFT Meelons (Meelons)
 

Overview

Max Total Supply

10,000 Meelons

Holders

589

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 Meelons
0x74c160e7b7ff01e32277ffb8162dcde635a72061
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:
Meelons

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 10 of 11: Meelons.sol
pragma solidity ^0.8.0;
pragma experimental ABIEncoderV2;

import "./ERC721.sol";
import "./InitializableOwnable.sol";
import "./Address.sol";

contract Meelons is ERC721, InitializableOwnable {
    using Address for address;

    uint256 private _totalSupply = 10000;
    uint256 private _mintCount;
    uint256 private startFrom = 1;
    uint256 private startTime;
    uint256 private tokenSum;
    mapping(uint256 => uint256) private tokenMatrix;

    mapping(address => mapping(uint => bool)) private is_minted;
    mapping(uint => bytes32) private merkle_root;
    mapping(uint => uint) private white_number;
    mapping(uint => uint) private white_minted;

    event MintMeelon(address indexed owner, uint256 tokenId);

    constructor(string memory uri, uint start_time) public ERC721("Transit NFT Meelons", "Meelons") {
        initOwner(msg.sender);
        initBaseUri(uri);
        startTime = start_time;
    }

    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    function queryRoot(uint whichRoot) public view returns (bytes32) {
        return merkle_root[whichRoot];
    }

    function queryMinted(uint whichList, address account) public view returns (bool) {
        return is_minted[account][whichList];
    }

    function queryListMinted(uint whichList) public view returns (uint, uint) {
        uint totalNumber = white_number[whichList];
        uint minted = white_minted[whichList];
        return (totalNumber, minted);
    }

    function queryStartMint() public view returns (bool) {
        return startTime <= block.timestamp && startTime != 0;
    }

    function queryMintAllow(address account, uint[] memory whichList) public view returns (bool[] memory result) {
        uint256 len = whichList.length;
        result = new bool[](len);
        for (uint i; i < len; i++) {
            result[i] = !is_minted[account][whichList[i]] && white_minted[whichList[i]] < white_number[whichList[i]];
        }
    }

    function setRoot(bytes32[] memory root, uint[] memory whichRoot) public onlyOwner() {
        require(root.length == whichRoot.length, "Invaild data!");
        for (uint i; i < whichRoot.length; i++) {
            merkle_root[whichRoot[i]] = root[i];
        } 
    }

    function setWhiteNumber(uint[] memory whichList, uint[] memory number) public onlyOwner() {
        require(whichList.length == number.length, "Invaild data!");
        for (uint i; i < number.length; i++) {
            white_number[whichList[i]] = number[i];
        } 
    }

    function mintMeelon(bytes32[][] memory proof, uint[] memory whichRoot) public returns (uint256 tokenId) {
        require(!msg.sender.isContract(), "Not allow contract to mint!");
        require(_mintCount <= _totalSupply, "Mint overflow!");
        require(startTime <= block.timestamp && startTime != 0, "Non start mint!");
        uint len = proof.length;
        require(len == whichRoot.length, "Invaild data!");
        for (uint i; i < len; i++) {
            if (white_minted[whichRoot[i]] >= white_number[whichRoot[i]]) {
                continue;
            }
            require(!is_minted[msg.sender][whichRoot[i]], "Already minted!");
            require(verify(merkle_root[whichRoot[i]], proof[i], msg.sender), "Non-whitelist!");
            tokenId = nextToken();
            _safeMint(msg.sender, tokenId);
            white_minted[whichRoot[i]] = white_minted[whichRoot[i]] + 1;
            is_minted[msg.sender][whichRoot[i]] = true;
            emit MintMeelon(msg.sender, tokenId);
        }
    }

    function verify(bytes32 root, bytes32[] memory proof, address account) public view returns (bool) {
        bytes32 computedHash = keccak256(abi.encodePacked(account));
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));
            } else {
                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));
            }
        }
        return computedHash == root;
    }

    function nextToken() internal returns (uint256) {
        uint256 maxIndex = _totalSupply - _mintCount;
        uint256 random = uint256(keccak256(
            abi.encodePacked(
                block.timestamp,
                tokenSum,
                block.coinbase,
                msg.sender,
                block.difficulty,
                block.coinbase.balance,
                block.gaslimit
            )
        )) % maxIndex;
        uint256 value = 0;
        if (tokenMatrix[random] == 0) {
            value = random;
        } else {
            value = tokenMatrix[random];
        }
        if (tokenMatrix[maxIndex - 1] == 0) {
            tokenMatrix[random] = maxIndex - 1;
        } else {
            tokenMatrix[random] = tokenMatrix[maxIndex - 1];
        }
        tokenSum = tokenSum + value + startFrom;
        _mintCount = _mintCount + 1;
        return value + startFrom;
    }

}

File 1 of 11: Address.sol
pragma solidity ^0.8.0;

library Address {

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 2 of 11: Context.sol
pragma solidity ^0.8.0;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 3 of 11: ERC165.sol
pragma solidity ^0.8.0;

import "./IERC165.sol";

abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

File 4 of 11: ERC721.sol
pragma solidity ^0.8.0;

import "./IERC721.sol";
import "./IERC721Receiver.sol";
import "./IERC721Metadata.sol";
import "./Address.sol";
import "./Context.sol";
import "./Strings.sol";
import "./ERC165.sol";

contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    string private _base_URI;

    // Mapping from token ID to owner address
    mapping(uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping(address => uint256) private _balances;

    // Mapping from token ID to approved address
    mapping(uint256 => address) private _tokenApprovals;

    // Mapping from owner to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

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

    function initBaseUri(string memory uri) internal {
        _base_URI = uri;
    }

    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    function balanceOf(address owner) public view virtual override returns (uint256) {
        return _balances[owner];
    }

    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        return owner;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "Meelon: URI query for nonexistent token");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString(), ".json")) : "";
    }

    function _baseURI() internal view virtual returns (string memory) {
        return _base_URI;
    }

    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "Meelon: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "Meelon: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "Meelon: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "Meelon: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "Meelon: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "Meelon: transfer to non ERC721Receiver implementer");
    }

    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "Meelon: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "Meelon: transfer to non ERC721Receiver implementer"
        );
    }

    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "Meelon: mint to the zero address");
        require(!_exists(tokenId), "Meelon: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);
    }

    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        // Clear approvals
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);
    }

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "Meelon: transfer of token that is not own");
        require(to != address(0), "Meelon: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);
    }

    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "Meelon: approve to caller");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("Meelon: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}

File 5 of 11: IERC165.sol
pragma solidity ^0.8.0;

interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

File 6 of 11: IERC721.sol
pragma solidity ^0.8.0;

import "./IERC165.sol";

interface IERC721 is IERC165 {

    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    
    function balanceOf(address owner) external view returns (uint256 balance);
    
    function ownerOf(uint256 tokenId) external view returns (address owner);
    
    function safeTransferFrom(address from, address to, uint256 tokenId) external;

    function transferFrom(address from, address to, uint256 tokenId) external;

    function approve(address to, uint256 tokenId) external;

    function getApproved(uint256 tokenId) external view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) external;

    function isApprovedForAll(address owner, address operator) external view returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

File 7 of 11: IERC721Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.3.2 (token/ERC721/extensions/IERC721Metadata.sol)
pragma solidity ^0.8.0;

import "./IERC721.sol";

interface IERC721Metadata is IERC721 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function tokenURI(uint256 tokenId) external view returns (string memory);
}

File 8 of 11: IERC721Receiver.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.3.2 (token/ERC721/IERC721Receiver.sol)
pragma solidity ^0.8.0;

interface IERC721Receiver {

    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

File 9 of 11: InitializableOwnable.sol
pragma solidity >= 0.6.9;
pragma experimental ABIEncoderV2;

contract InitializableOwnable {
    address public _OWNER_;
    address public _NEW_OWNER_;
    bool internal _INITIALIZED_;

    // ============ Events ============

    event OwnershipTransferPrepared(address indexed previousOwner, address indexed newOwner);

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    // ============ Modifiers ============

    modifier notInitialized() {
        require(!_INITIALIZED_, "TRANSIT_INITIALIZED");
        _;
    }

    modifier onlyOwner() {
        require(msg.sender == _OWNER_, "NOT_OWNER");
        _;
    }

    // ============ Functions ============

    function initOwner(address newOwner) public notInitialized {
        _INITIALIZED_ = true;
        _OWNER_ = newOwner;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        emit OwnershipTransferPrepared(_OWNER_, newOwner);
        _NEW_OWNER_ = newOwner;
    }

    function claimOwnership() public {
        require(msg.sender == _NEW_OWNER_, "INVALID_CLAIM");
        emit OwnershipTransferred(_OWNER_, _NEW_OWNER_);
        _OWNER_ = _NEW_OWNER_;
        _NEW_OWNER_ = address(0);
    }
}

File 11 of 11: Strings.sol
pragma solidity ^0.8.0;

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"uri","type":"string"},{"internalType":"uint256","name":"start_time","type":"uint256"}],"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":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"MintMeelon","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferPrepared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":[],"name":"_NEW_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","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":"newOwner","type":"address"}],"name":"initOwner","outputs":[],"stateMutability":"nonpayable","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":"bytes32[][]","name":"proof","type":"bytes32[][]"},{"internalType":"uint256[]","name":"whichRoot","type":"uint256[]"}],"name":"mintMeelon","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"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":"uint256","name":"whichList","type":"uint256"}],"name":"queryListMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"whichList","type":"uint256[]"}],"name":"queryMintAllow","outputs":[{"internalType":"bool[]","name":"result","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"whichList","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"queryMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"whichRoot","type":"uint256"}],"name":"queryRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"queryStartMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"nonpayable","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":"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":"bytes32[]","name":"root","type":"bytes32[]"},{"internalType":"uint256[]","name":"whichRoot","type":"uint256[]"}],"name":"setRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"whichList","type":"uint256[]"},{"internalType":"uint256[]","name":"number","type":"uint256[]"}],"name":"setWhiteNumber","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"address","name":"account","type":"address"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

60806040526127106009556001600b553480156200001c57600080fd5b5060405162002894380380620028948339810160408190526200003f916200020d565b604080518082018252601381527f5472616e736974204e4654204d65656c6f6e73000000000000000000000000006020808301918252835180850190945260078452664d65656c6f6e7360c81b908401528151919291620000a39160009162000167565b508051620000b990600190602084019062000167565b505050620000cd33620000e260201b60201c565b620000d8826200014e565b600c55506200036e565b600854600160a01b900460ff1615620001185760405162461bcd60e51b81526004016200010f90620002e4565b60405180910390fd5b6008805460ff60a01b1916600160a01b179055600780546001600160a01b039092166001600160a01b0319909216919091179055565b80516200016390600290602084019062000167565b5050565b82805462000175906200031b565b90600052602060002090601f016020900481019282620001995760008555620001e4565b82601f10620001b457805160ff1916838001178555620001e4565b82800160010185558215620001e4579182015b82811115620001e4578251825591602001919060010190620001c7565b50620001f2929150620001f6565b5090565b5b80821115620001f25760008155600101620001f7565b6000806040838503121562000220578182fd5b82516001600160401b038082111562000237578384fd5b818501915085601f8301126200024b578384fd5b81518181111562000260576200026062000358565b6040516020601f8301601f191682018101848111838210171562000288576200028862000358565b60405282825284830181018910156200029f578687fd5b8693505b82841015620002c25784840181015182850182015292830192620002a3565b82841115620002d357868184840101525b969096015195979596505050505050565b60208082526013908201527f5452414e5349545f494e495449414c495a454400000000000000000000000000604082015260600190565b6002810460018216806200033057607f821691505b602082108114156200035257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b612516806200037e6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636352211e116100f9578063a64258c011610097578063b88d4fde11610071578063b88d4fde1461039e578063c87b56dd146103b1578063e985e9c5146103c4578063f2fde38b146103d7576101c4565b8063a64258c014610357578063a8fa65e51461036a578063b4d0c8c01461037d576101c4565b806394ecbb91116100d357806394ecbb911461030957806395d89b4114610329578063a0fc53bd14610331578063a22cb46514610344576101c4565b80636352211e146102db57806370a08231146102ee5780638456db1514610301576101c4565b806318160ddd1161016657806342842e0e1161014057806342842e0e1461029a5780634cc23d96146102ad5780634e71e0c8146102c0578063549144d0146102c8576101c4565b806318160ddd1461025f57806323b872dd146102745780633f7c178d14610287576101c4565b8063095ea7b3116101a2578063095ea7b3146102275780630d0092971461023c57806316048bc41461024f57806316cb450a14610257576101c4565b806301ffc9a7146101c957806306fdde03146101f2578063081812fc14610207575b600080fd5b6101dc6101d7366004611c8b565b6103ea565b6040516101e99190611e70565b60405180910390f35b6101fa610432565b6040516101e99190611e84565b61021a610215366004611cc3565b6104c4565b6040516101e99190611dd9565b61023a610235366004611b1d565b610510565b005b61023a61024a366004611958565b6105a8565b61021a610608565b6101dc610617565b610267610631565b6040516101e99190611e7b565b61023a6102823660046119a4565b610637565b610267610295366004611cc3565b61066f565b61023a6102a83660046119a4565b610681565b6101dc6102bb366004611c36565b61069c565b61023a610781565b6102676102d6366004611b46565b610811565b61021a6102e9366004611cc3565b610b9b565b6102676102fc366004611958565b610bb6565b61021a610bd1565b61031c610317366004611a97565b610be0565b6040516101e99190611e2a565b6101fa610d60565b6101dc61033f366004611cdb565b610d6f565b61023a610352366004611ae3565b610d97565b61023a610365366004611bec565b610dad565b61023a610378366004611bec565b610e7d565b61039061038b366004611cc3565b610f4d565b6040516101e9929190611d46565b61023a6103ac3660046119df565b610f6c565b6101fa6103bf366004611cc3565b610fab565b6101dc6103d2366004611972565b61102e565b61023a6103e5366004611958565b61105c565b60006001600160e01b031982166380ac58cd60e01b148061041b57506001600160e01b03198216635b5e139f60e01b145b8061042a575061042a826110e2565b90505b919050565b6060600080546104419061241b565b80601f016020809104026020016040519081016040528092919081815260200182805461046d9061241b565b80156104ba5780601f1061048f576101008083540402835291602001916104ba565b820191906000526020600020905b81548152906001019060200180831161049d57829003601f168201915b5050505050905090565b60006104cf826110fb565b6104f45760405162461bcd60e51b81526004016104eb90612083565b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b600061051b82610b9b565b9050806001600160a01b0316836001600160a01b0316141561054f5760405162461bcd60e51b81526004016104eb90611f64565b806001600160a01b0316610561611118565b6001600160a01b0316148061057d575061057d816103d2611118565b6105995760405162461bcd60e51b81526004016104eb90612286565b6105a3838361111c565b505050565b600854600160a01b900460ff16156105d25760405162461bcd60e51b81526004016104eb90611ff6565b6008805460ff60a01b1916600160a01b179055600780546001600160a01b039092166001600160a01b0319909216919091179055565b6007546001600160a01b031681565b600042600c541115801561062c5750600c5415155b905090565b60095490565b610648610642611118565b8261118a565b6106645760405162461bcd60e51b81526004016104eb90611fa5565b6105a383838361120f565b60009081526010602052604090205490565b6105a383838360405180602001604052806000815250610f6c565b600080826040516020016106b09190611d29565b60405160208183030381529060405280519060200120905060005b84518110156107765760008582815181106106f657634e487b7160e01b600052603260045260246000fd5b6020026020010151905080831161073757828160405160200161071a929190611d46565b604051602081830303815290604052805190602001209250610763565b808360405160200161074a929190611d46565b6040516020818303038152906040528051906020012092505b508061076e81612456565b9150506106cb565b509093149392505050565b6008546001600160a01b031633146107ab5760405162461bcd60e51b81526004016104eb90611ee0565b6008546007546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360088054600780546001600160a01b03199081166001600160a01b03841617909155169055565b600061081c3361133c565b156108395760405162461bcd60e51b81526004016104eb90612023565b600954600a54111561085d5760405162461bcd60e51b81526004016104eb90612113565b42600c54111580156108705750600c5415155b61088c5760405162461bcd60e51b81526004016104eb9061205a565b8251825181146108ae5760405162461bcd60e51b81526004016104eb9061225f565b60005b81811015610b9357601160008583815181106108dd57634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020546012600086848151811061091857634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020541061093957610b81565b336000908152600f60205260408120855190919086908490811061096d57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528101919091526040016000205460ff16156109a85760405162461bcd60e51b81526004016104eb90612335565b610a14601060008684815181106109cf57634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002054868381518110610a0657634e487b7160e01b600052603260045260246000fd5b60200260200101513361069c565b610a305760405162461bcd60e51b81526004016104eb90611f3c565b610a38611342565b9250610a44338461148e565b60126000858381518110610a6857634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020546001610a8b91906123ac565b60126000868481518110610aaf57634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020819055506001600f6000336001600160a01b03166001600160a01b031681526020019081526020016000206000868481518110610b1257634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002060006101000a81548160ff021916908315150217905550336001600160a01b03167ff955746b8a1ea69568161bb778f2d4d4c11d0187308b444cd9b0b9891d2257a184604051610b789190611e7b565b60405180910390a25b80610b8b81612456565b9150506108b1565b505092915050565b6000908152600360205260409020546001600160a01b031690565b6001600160a01b031660009081526004602052604090205490565b6008546001600160a01b031681565b80516060908067ffffffffffffffff811115610c0c57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c35578160200160208202803683370190505b50915060005b81811015610b93576001600160a01b0385166000908152600f602052604081208551909190869084908110610c8057634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528101919091526040016000205460ff16158015610d1e575060116000858381518110610cca57634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000205460126000868481518110610d0557634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002054105b838281518110610d3e57634e487b7160e01b600052603260045260246000fd5b9115156020928302919091019091015280610d5881612456565b915050610c3b565b6060600180546104419061241b565b6001600160a01b03166000908152600f60209081526040808320938352929052205460ff1690565b610da9610da2611118565b83836114a8565b5050565b6007546001600160a01b03163314610dd75760405162461bcd60e51b81526004016104eb90612172565b8051825114610df85760405162461bcd60e51b81526004016104eb9061225f565b60005b81518110156105a357828181518110610e2457634e487b7160e01b600052603260045260246000fd5b602002602001015160106000848481518110610e5057634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020819055508080610e7590612456565b915050610dfb565b6007546001600160a01b03163314610ea75760405162461bcd60e51b81526004016104eb90612172565b8051825114610ec85760405162461bcd60e51b81526004016104eb9061225f565b60005b81518110156105a357818181518110610ef457634e487b7160e01b600052603260045260246000fd5b602002602001015160116000858481518110610f2057634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020819055508080610f4590612456565b915050610ecb565b6000908152601160209081526040808320546012909252909120549091565b610f7d610f77611118565b8361118a565b610f995760405162461bcd60e51b81526004016104eb90611fa5565b610fa58484848461154b565b50505050565b6060610fb6826110fb565b610fd25760405162461bcd60e51b81526004016104eb90612195565b6000610fdc61157e565b90506000815111610ffc5760405180602001604052806000815250611027565b806110068461158d565b604051602001611017929190611d54565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b6007546001600160a01b031633146110865760405162461bcd60e51b81526004016104eb90612172565b6007546040516001600160a01b038084169216907fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6290600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160e01b031981166301ffc9a760e01b14919050565b6000908152600360205260409020546001600160a01b0316151590565b3390565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061115182610b9b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611195826110fb565b6111b15760405162461bcd60e51b81526004016104eb906121dc565b60006111bc83610b9b565b9050806001600160a01b0316846001600160a01b031614806111f75750836001600160a01b03166111ec846104c4565b6001600160a01b0316145b806112075750611207818561102e565b949350505050565b826001600160a01b031661122282610b9b565b6001600160a01b0316146112485760405162461bcd60e51b81526004016104eb90611e97565b6001600160a01b03821661126e5760405162461bcd60e51b81526004016104eb906120cf565b6112798383836105a3565b61128460008261111c565b6001600160a01b03831660009081526004602052604081208054600192906112ad9084906123d8565b90915550506001600160a01b03821660009081526004602052604081208054600192906112db9084906123ac565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b3b151590565b600080600a5460095461135591906123d8565b905060008142600d54413344416001600160a01b031631456040516020016113839796959493929190611d93565b6040516020818303038152906040528051906020012060001c6113a69190612471565b6000818152600e6020526040812054919250906113c45750806113d5565b506000818152600e60205260409020545b600e60006113e46001866123d8565b8152602001908152602001600020546000141561141a576114066001846123d8565b6000838152600e602052604090205561144a565b600e60006114296001866123d8565b81526020808201929092526040908101600090812054858252600e90935220555b600b5481600d5461145b91906123ac565b61146591906123ac565b600d55600a546114769060016123ac565b600a55600b5461148690826123ac565b935050505090565b610da98282604051806020016040528060008152506116a8565b816001600160a01b0316836001600160a01b031614156114da5760405162461bcd60e51b81526004016104eb9061213b565b6001600160a01b0383811660008181526006602090815260408083209487168084529490915290819020805460ff1916851515179055517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319061153e908590611e70565b60405180910390a3505050565b61155684848461120f565b611562848484846116db565b610fa55760405162461bcd60e51b81526004016104eb906122e3565b6060600280546104419061241b565b6060816115b257506040805180820190915260018152600360fc1b602082015261042d565b8160005b81156115dc57806115c681612456565b91506115d59050600a836123c4565b91506115b6565b60008167ffffffffffffffff81111561160557634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561162f576020820181803683370190505b5090505b8415611207576116446001836123d8565b9150611651600a86612471565b61165c9060306123ac565b60f81b81838151811061167f57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506116a1600a866123c4565b9450611633565b6116b283836117f6565b6116bf60008484846116db565b6105a35760405162461bcd60e51b81526004016104eb906122e3565b60006116ef846001600160a01b031661133c565b156117eb57836001600160a01b031663150b7a0261170b611118565b8786866040518563ffffffff1660e01b815260040161172d9493929190611ded565b602060405180830381600087803b15801561174757600080fd5b505af1925050508015611777575060408051601f3d908101601f1916820190925261177491810190611ca7565b60015b6117d1573d8080156117a5576040519150601f19603f3d011682016040523d82523d6000602084013e6117aa565b606091505b5080516117c95760405162461bcd60e51b81526004016104eb906122e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611207565b506001949350505050565b6001600160a01b03821661181c5760405162461bcd60e51b81526004016104eb90611f07565b611825816110fb565b156118425760405162461bcd60e51b81526004016104eb90612228565b61184e600083836105a3565b6001600160a01b03821660009081526004602052604081208054600192906118779084906123ac565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b80356001600160a01b038116811461042d57600080fd5b600082601f8301126118fc578081fd5b8135602061191161190c83612388565b61235e565b828152818101908583018385028701840188101561192d578586fd5b855b8581101561194b5781358452928401929084019060010161192f565b5090979650505050505050565b600060208284031215611969578081fd5b611027826118d5565b60008060408385031215611984578081fd5b61198d836118d5565b915061199b602084016118d5565b90509250929050565b6000806000606084860312156119b8578081fd5b6119c1846118d5565b92506119cf602085016118d5565b9150604084013590509250925092565b600080600080608085870312156119f4578081fd5b6119fd856118d5565b93506020611a0c8187016118d5565b935060408601359250606086013567ffffffffffffffff80821115611a2f578384fd5b818801915088601f830112611a42578384fd5b813581811115611a5457611a546124b1565b611a66601f8201601f1916850161235e565b91508082528984828501011115611a7b578485fd5b8084840185840137810190920192909252939692955090935050565b60008060408385031215611aa9578182fd5b611ab2836118d5565b9150602083013567ffffffffffffffff811115611acd578182fd5b611ad9858286016118ec565b9150509250929050565b60008060408385031215611af5578182fd5b611afe836118d5565b915060208301358015158114611b12578182fd5b809150509250929050565b60008060408385031215611b2f578182fd5b611b38836118d5565b946020939093013593505050565b60008060408385031215611b58578182fd5b823567ffffffffffffffff80821115611b6f578384fd5b818501915085601f830112611b82578384fd5b81356020611b9261190c83612388565b82815281810190858301885b85811015611bc757611bb58c8684358b01016118ec565b84529284019290840190600101611b9e565b50909750505086013592505080821115611bdf578283fd5b50611ad9858286016118ec565b60008060408385031215611bfe578182fd5b823567ffffffffffffffff80821115611c15578384fd5b611c21868387016118ec565b93506020850135915080821115611bdf578283fd5b600080600060608486031215611c4a578081fd5b83359250602084013567ffffffffffffffff811115611c67578182fd5b611c73868287016118ec565b925050611c82604085016118d5565b90509250925092565b600060208284031215611c9c578081fd5b8135611027816124c7565b600060208284031215611cb8578081fd5b8151611027816124c7565b600060208284031215611cd4578081fd5b5035919050565b60008060408385031215611ced578182fd5b8235915061199b602084016118d5565b60008151808452611d158160208601602086016123ef565b601f01601f19169290920160200192915050565b60609190911b6bffffffffffffffffffffffff1916815260140190565b918252602082015260400190565b60008351611d668184602088016123ef565b835190830190611d7a8183602088016123ef565b64173539b7b760d91b9101908152600501949350505050565b96875260208701959095526bffffffffffffffffffffffff19606094851b811660408801529290931b90911660548501526068840152608883015260a882015260c80190565b6001600160a01b0391909116815260200190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611e2090830184611cfd565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611e64578351151583529284019291840191600101611e46565b50909695505050505050565b901515815260200190565b90815260200190565b6000602082526110276020830184611cfd565b60208082526029908201527f4d65656c6f6e3a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b6020808252818101527f4d65656c6f6e3a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252600e908201526d4e6f6e2d77686974656c6973742160901b604082015260600190565b60208082526021908201527f4d65656c6f6e3a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b60208082526031908201527f4d65656c6f6e3a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601390820152721514905394d25517d253925512505312569151606a1b604082015260600190565b6020808252601b908201527f4e6f7420616c6c6f7720636f6e747261637420746f206d696e74210000000000604082015260600190565b6020808252600f908201526e4e6f6e207374617274206d696e742160881b604082015260600190565b6020808252602c908201527f4d65656c6f6e3a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526024908201527f4d65656c6f6e3a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252600e908201526d4d696e74206f766572666c6f772160901b604082015260600190565b60208082526019908201527f4d65656c6f6e3a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b60208082526027908201527f4d65656c6f6e3a2055524920717565727920666f72206e6f6e6578697374656e6040820152663a103a37b5b2b760c91b606082015260800190565b6020808252602c908201527f4d65656c6f6e3a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252601c908201527f4d65656c6f6e3a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b6020808252600d908201526c496e7661696c6420646174612160981b604082015260600190565b60208082526038908201527f4d65656c6f6e3a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b60208082526032908201527f4d65656c6f6e3a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252600f908201526e416c7265616479206d696e7465642160881b604082015260600190565b60405181810167ffffffffffffffff81118282101715612380576123806124b1565b604052919050565b600067ffffffffffffffff8211156123a2576123a26124b1565b5060209081020190565b600082198211156123bf576123bf612485565b500190565b6000826123d3576123d361249b565b500490565b6000828210156123ea576123ea612485565b500390565b60005b8381101561240a5781810151838201526020016123f2565b83811115610fa55750506000910152565b60028104600182168061242f57607f821691505b6020821081141561245057634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561246a5761246a612485565b5060010190565b6000826124805761248061249b565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146124dd57600080fd5b5056fea2646970667358221220b02edffc4dc4b75fb1ca5718deee1f97ce0c615fb138c9cfe90dc7a43393661264736f6c6343000800003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000061c054200000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d65664a626b6e6544656e4d57336b3555324761505759735032574c3756524b5969503765386a4239653378482f00000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80636352211e116100f9578063a64258c011610097578063b88d4fde11610071578063b88d4fde1461039e578063c87b56dd146103b1578063e985e9c5146103c4578063f2fde38b146103d7576101c4565b8063a64258c014610357578063a8fa65e51461036a578063b4d0c8c01461037d576101c4565b806394ecbb91116100d357806394ecbb911461030957806395d89b4114610329578063a0fc53bd14610331578063a22cb46514610344576101c4565b80636352211e146102db57806370a08231146102ee5780638456db1514610301576101c4565b806318160ddd1161016657806342842e0e1161014057806342842e0e1461029a5780634cc23d96146102ad5780634e71e0c8146102c0578063549144d0146102c8576101c4565b806318160ddd1461025f57806323b872dd146102745780633f7c178d14610287576101c4565b8063095ea7b3116101a2578063095ea7b3146102275780630d0092971461023c57806316048bc41461024f57806316cb450a14610257576101c4565b806301ffc9a7146101c957806306fdde03146101f2578063081812fc14610207575b600080fd5b6101dc6101d7366004611c8b565b6103ea565b6040516101e99190611e70565b60405180910390f35b6101fa610432565b6040516101e99190611e84565b61021a610215366004611cc3565b6104c4565b6040516101e99190611dd9565b61023a610235366004611b1d565b610510565b005b61023a61024a366004611958565b6105a8565b61021a610608565b6101dc610617565b610267610631565b6040516101e99190611e7b565b61023a6102823660046119a4565b610637565b610267610295366004611cc3565b61066f565b61023a6102a83660046119a4565b610681565b6101dc6102bb366004611c36565b61069c565b61023a610781565b6102676102d6366004611b46565b610811565b61021a6102e9366004611cc3565b610b9b565b6102676102fc366004611958565b610bb6565b61021a610bd1565b61031c610317366004611a97565b610be0565b6040516101e99190611e2a565b6101fa610d60565b6101dc61033f366004611cdb565b610d6f565b61023a610352366004611ae3565b610d97565b61023a610365366004611bec565b610dad565b61023a610378366004611bec565b610e7d565b61039061038b366004611cc3565b610f4d565b6040516101e9929190611d46565b61023a6103ac3660046119df565b610f6c565b6101fa6103bf366004611cc3565b610fab565b6101dc6103d2366004611972565b61102e565b61023a6103e5366004611958565b61105c565b60006001600160e01b031982166380ac58cd60e01b148061041b57506001600160e01b03198216635b5e139f60e01b145b8061042a575061042a826110e2565b90505b919050565b6060600080546104419061241b565b80601f016020809104026020016040519081016040528092919081815260200182805461046d9061241b565b80156104ba5780601f1061048f576101008083540402835291602001916104ba565b820191906000526020600020905b81548152906001019060200180831161049d57829003601f168201915b5050505050905090565b60006104cf826110fb565b6104f45760405162461bcd60e51b81526004016104eb90612083565b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b600061051b82610b9b565b9050806001600160a01b0316836001600160a01b0316141561054f5760405162461bcd60e51b81526004016104eb90611f64565b806001600160a01b0316610561611118565b6001600160a01b0316148061057d575061057d816103d2611118565b6105995760405162461bcd60e51b81526004016104eb90612286565b6105a3838361111c565b505050565b600854600160a01b900460ff16156105d25760405162461bcd60e51b81526004016104eb90611ff6565b6008805460ff60a01b1916600160a01b179055600780546001600160a01b039092166001600160a01b0319909216919091179055565b6007546001600160a01b031681565b600042600c541115801561062c5750600c5415155b905090565b60095490565b610648610642611118565b8261118a565b6106645760405162461bcd60e51b81526004016104eb90611fa5565b6105a383838361120f565b60009081526010602052604090205490565b6105a383838360405180602001604052806000815250610f6c565b600080826040516020016106b09190611d29565b60405160208183030381529060405280519060200120905060005b84518110156107765760008582815181106106f657634e487b7160e01b600052603260045260246000fd5b6020026020010151905080831161073757828160405160200161071a929190611d46565b604051602081830303815290604052805190602001209250610763565b808360405160200161074a929190611d46565b6040516020818303038152906040528051906020012092505b508061076e81612456565b9150506106cb565b509093149392505050565b6008546001600160a01b031633146107ab5760405162461bcd60e51b81526004016104eb90611ee0565b6008546007546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360088054600780546001600160a01b03199081166001600160a01b03841617909155169055565b600061081c3361133c565b156108395760405162461bcd60e51b81526004016104eb90612023565b600954600a54111561085d5760405162461bcd60e51b81526004016104eb90612113565b42600c54111580156108705750600c5415155b61088c5760405162461bcd60e51b81526004016104eb9061205a565b8251825181146108ae5760405162461bcd60e51b81526004016104eb9061225f565b60005b81811015610b9357601160008583815181106108dd57634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020546012600086848151811061091857634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020541061093957610b81565b336000908152600f60205260408120855190919086908490811061096d57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528101919091526040016000205460ff16156109a85760405162461bcd60e51b81526004016104eb90612335565b610a14601060008684815181106109cf57634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002054868381518110610a0657634e487b7160e01b600052603260045260246000fd5b60200260200101513361069c565b610a305760405162461bcd60e51b81526004016104eb90611f3c565b610a38611342565b9250610a44338461148e565b60126000858381518110610a6857634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020546001610a8b91906123ac565b60126000868481518110610aaf57634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020819055506001600f6000336001600160a01b03166001600160a01b031681526020019081526020016000206000868481518110610b1257634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002060006101000a81548160ff021916908315150217905550336001600160a01b03167ff955746b8a1ea69568161bb778f2d4d4c11d0187308b444cd9b0b9891d2257a184604051610b789190611e7b565b60405180910390a25b80610b8b81612456565b9150506108b1565b505092915050565b6000908152600360205260409020546001600160a01b031690565b6001600160a01b031660009081526004602052604090205490565b6008546001600160a01b031681565b80516060908067ffffffffffffffff811115610c0c57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c35578160200160208202803683370190505b50915060005b81811015610b93576001600160a01b0385166000908152600f602052604081208551909190869084908110610c8057634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528101919091526040016000205460ff16158015610d1e575060116000858381518110610cca57634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000205460126000868481518110610d0557634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002054105b838281518110610d3e57634e487b7160e01b600052603260045260246000fd5b9115156020928302919091019091015280610d5881612456565b915050610c3b565b6060600180546104419061241b565b6001600160a01b03166000908152600f60209081526040808320938352929052205460ff1690565b610da9610da2611118565b83836114a8565b5050565b6007546001600160a01b03163314610dd75760405162461bcd60e51b81526004016104eb90612172565b8051825114610df85760405162461bcd60e51b81526004016104eb9061225f565b60005b81518110156105a357828181518110610e2457634e487b7160e01b600052603260045260246000fd5b602002602001015160106000848481518110610e5057634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020819055508080610e7590612456565b915050610dfb565b6007546001600160a01b03163314610ea75760405162461bcd60e51b81526004016104eb90612172565b8051825114610ec85760405162461bcd60e51b81526004016104eb9061225f565b60005b81518110156105a357818181518110610ef457634e487b7160e01b600052603260045260246000fd5b602002602001015160116000858481518110610f2057634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020819055508080610f4590612456565b915050610ecb565b6000908152601160209081526040808320546012909252909120549091565b610f7d610f77611118565b8361118a565b610f995760405162461bcd60e51b81526004016104eb90611fa5565b610fa58484848461154b565b50505050565b6060610fb6826110fb565b610fd25760405162461bcd60e51b81526004016104eb90612195565b6000610fdc61157e565b90506000815111610ffc5760405180602001604052806000815250611027565b806110068461158d565b604051602001611017929190611d54565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b6007546001600160a01b031633146110865760405162461bcd60e51b81526004016104eb90612172565b6007546040516001600160a01b038084169216907fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6290600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160e01b031981166301ffc9a760e01b14919050565b6000908152600360205260409020546001600160a01b0316151590565b3390565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061115182610b9b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611195826110fb565b6111b15760405162461bcd60e51b81526004016104eb906121dc565b60006111bc83610b9b565b9050806001600160a01b0316846001600160a01b031614806111f75750836001600160a01b03166111ec846104c4565b6001600160a01b0316145b806112075750611207818561102e565b949350505050565b826001600160a01b031661122282610b9b565b6001600160a01b0316146112485760405162461bcd60e51b81526004016104eb90611e97565b6001600160a01b03821661126e5760405162461bcd60e51b81526004016104eb906120cf565b6112798383836105a3565b61128460008261111c565b6001600160a01b03831660009081526004602052604081208054600192906112ad9084906123d8565b90915550506001600160a01b03821660009081526004602052604081208054600192906112db9084906123ac565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b3b151590565b600080600a5460095461135591906123d8565b905060008142600d54413344416001600160a01b031631456040516020016113839796959493929190611d93565b6040516020818303038152906040528051906020012060001c6113a69190612471565b6000818152600e6020526040812054919250906113c45750806113d5565b506000818152600e60205260409020545b600e60006113e46001866123d8565b8152602001908152602001600020546000141561141a576114066001846123d8565b6000838152600e602052604090205561144a565b600e60006114296001866123d8565b81526020808201929092526040908101600090812054858252600e90935220555b600b5481600d5461145b91906123ac565b61146591906123ac565b600d55600a546114769060016123ac565b600a55600b5461148690826123ac565b935050505090565b610da98282604051806020016040528060008152506116a8565b816001600160a01b0316836001600160a01b031614156114da5760405162461bcd60e51b81526004016104eb9061213b565b6001600160a01b0383811660008181526006602090815260408083209487168084529490915290819020805460ff1916851515179055517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319061153e908590611e70565b60405180910390a3505050565b61155684848461120f565b611562848484846116db565b610fa55760405162461bcd60e51b81526004016104eb906122e3565b6060600280546104419061241b565b6060816115b257506040805180820190915260018152600360fc1b602082015261042d565b8160005b81156115dc57806115c681612456565b91506115d59050600a836123c4565b91506115b6565b60008167ffffffffffffffff81111561160557634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561162f576020820181803683370190505b5090505b8415611207576116446001836123d8565b9150611651600a86612471565b61165c9060306123ac565b60f81b81838151811061167f57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506116a1600a866123c4565b9450611633565b6116b283836117f6565b6116bf60008484846116db565b6105a35760405162461bcd60e51b81526004016104eb906122e3565b60006116ef846001600160a01b031661133c565b156117eb57836001600160a01b031663150b7a0261170b611118565b8786866040518563ffffffff1660e01b815260040161172d9493929190611ded565b602060405180830381600087803b15801561174757600080fd5b505af1925050508015611777575060408051601f3d908101601f1916820190925261177491810190611ca7565b60015b6117d1573d8080156117a5576040519150601f19603f3d011682016040523d82523d6000602084013e6117aa565b606091505b5080516117c95760405162461bcd60e51b81526004016104eb906122e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611207565b506001949350505050565b6001600160a01b03821661181c5760405162461bcd60e51b81526004016104eb90611f07565b611825816110fb565b156118425760405162461bcd60e51b81526004016104eb90612228565b61184e600083836105a3565b6001600160a01b03821660009081526004602052604081208054600192906118779084906123ac565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b80356001600160a01b038116811461042d57600080fd5b600082601f8301126118fc578081fd5b8135602061191161190c83612388565b61235e565b828152818101908583018385028701840188101561192d578586fd5b855b8581101561194b5781358452928401929084019060010161192f565b5090979650505050505050565b600060208284031215611969578081fd5b611027826118d5565b60008060408385031215611984578081fd5b61198d836118d5565b915061199b602084016118d5565b90509250929050565b6000806000606084860312156119b8578081fd5b6119c1846118d5565b92506119cf602085016118d5565b9150604084013590509250925092565b600080600080608085870312156119f4578081fd5b6119fd856118d5565b93506020611a0c8187016118d5565b935060408601359250606086013567ffffffffffffffff80821115611a2f578384fd5b818801915088601f830112611a42578384fd5b813581811115611a5457611a546124b1565b611a66601f8201601f1916850161235e565b91508082528984828501011115611a7b578485fd5b8084840185840137810190920192909252939692955090935050565b60008060408385031215611aa9578182fd5b611ab2836118d5565b9150602083013567ffffffffffffffff811115611acd578182fd5b611ad9858286016118ec565b9150509250929050565b60008060408385031215611af5578182fd5b611afe836118d5565b915060208301358015158114611b12578182fd5b809150509250929050565b60008060408385031215611b2f578182fd5b611b38836118d5565b946020939093013593505050565b60008060408385031215611b58578182fd5b823567ffffffffffffffff80821115611b6f578384fd5b818501915085601f830112611b82578384fd5b81356020611b9261190c83612388565b82815281810190858301885b85811015611bc757611bb58c8684358b01016118ec565b84529284019290840190600101611b9e565b50909750505086013592505080821115611bdf578283fd5b50611ad9858286016118ec565b60008060408385031215611bfe578182fd5b823567ffffffffffffffff80821115611c15578384fd5b611c21868387016118ec565b93506020850135915080821115611bdf578283fd5b600080600060608486031215611c4a578081fd5b83359250602084013567ffffffffffffffff811115611c67578182fd5b611c73868287016118ec565b925050611c82604085016118d5565b90509250925092565b600060208284031215611c9c578081fd5b8135611027816124c7565b600060208284031215611cb8578081fd5b8151611027816124c7565b600060208284031215611cd4578081fd5b5035919050565b60008060408385031215611ced578182fd5b8235915061199b602084016118d5565b60008151808452611d158160208601602086016123ef565b601f01601f19169290920160200192915050565b60609190911b6bffffffffffffffffffffffff1916815260140190565b918252602082015260400190565b60008351611d668184602088016123ef565b835190830190611d7a8183602088016123ef565b64173539b7b760d91b9101908152600501949350505050565b96875260208701959095526bffffffffffffffffffffffff19606094851b811660408801529290931b90911660548501526068840152608883015260a882015260c80190565b6001600160a01b0391909116815260200190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611e2090830184611cfd565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611e64578351151583529284019291840191600101611e46565b50909695505050505050565b901515815260200190565b90815260200190565b6000602082526110276020830184611cfd565b60208082526029908201527f4d65656c6f6e3a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b6020808252818101527f4d65656c6f6e3a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252600e908201526d4e6f6e2d77686974656c6973742160901b604082015260600190565b60208082526021908201527f4d65656c6f6e3a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b60208082526031908201527f4d65656c6f6e3a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601390820152721514905394d25517d253925512505312569151606a1b604082015260600190565b6020808252601b908201527f4e6f7420616c6c6f7720636f6e747261637420746f206d696e74210000000000604082015260600190565b6020808252600f908201526e4e6f6e207374617274206d696e742160881b604082015260600190565b6020808252602c908201527f4d65656c6f6e3a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526024908201527f4d65656c6f6e3a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252600e908201526d4d696e74206f766572666c6f772160901b604082015260600190565b60208082526019908201527f4d65656c6f6e3a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b60208082526027908201527f4d65656c6f6e3a2055524920717565727920666f72206e6f6e6578697374656e6040820152663a103a37b5b2b760c91b606082015260800190565b6020808252602c908201527f4d65656c6f6e3a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252601c908201527f4d65656c6f6e3a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b6020808252600d908201526c496e7661696c6420646174612160981b604082015260600190565b60208082526038908201527f4d65656c6f6e3a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b60208082526032908201527f4d65656c6f6e3a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252600f908201526e416c7265616479206d696e7465642160881b604082015260600190565b60405181810167ffffffffffffffff81118282101715612380576123806124b1565b604052919050565b600067ffffffffffffffff8211156123a2576123a26124b1565b5060209081020190565b600082198211156123bf576123bf612485565b500190565b6000826123d3576123d361249b565b500490565b6000828210156123ea576123ea612485565b500390565b60005b8381101561240a5781810151838201526020016123f2565b83811115610fa55750506000910152565b60028104600182168061242f57607f821691505b6020821081141561245057634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561246a5761246a612485565b5060010190565b6000826124805761248061249b565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146124dd57600080fd5b5056fea2646970667358221220b02edffc4dc4b75fb1ca5718deee1f97ce0c615fb138c9cfe90dc7a43393661264736f6c63430008000033

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000061c054200000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d65664a626b6e6544656e4d57336b3555324761505759735032574c3756524b5969503765386a4239653378482f00000000000000000000

-----Decoded View---------------
Arg [0] : uri (string): ipfs://QmefJbkneDenMW3k5U2GaPWYsP2WL7VRKYiP7e8jB9e3xH/
Arg [1] : start_time (uint256): 1639994400

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000061c05420
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [3] : 697066733a2f2f516d65664a626b6e6544656e4d57336b355532476150575973
Arg [4] : 5032574c3756524b5969503765386a4239653378482f00000000000000000000


Deployed Bytecode Sourcemap

144:4927:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1095:300:3;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1686:98;;;:::i;:::-;;;;;;;:::i;2746:217::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2339:401::-;;;;;;:::i;:::-;;:::i;:::-;;709:124:8;;;;;;:::i;:::-;;:::i;97:22::-;;;:::i;1504:123:9:-;;;:::i;928:89::-;;;:::i;:::-;;;;;;;:::i;3296:330:3:-;;;;;;:::i;:::-;;:::i;1023:111:9:-;;;;;;:::i;:::-;;:::i;3632:179:3:-;;;;;;:::i;:::-;;:::i;3575:578:9:-;;;;;;:::i;:::-;;:::i;1005:223:8:-;;;:::i;2550:1019:9:-;;;;;;:::i;:::-;;:::i;1528:152:3:-;;;;;;:::i;:::-;;:::i;1401:121::-;;;;;;:::i;:::-;;:::i;125:26:8:-;;;:::i;1633:355:9:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1790:102:3:-;;;:::i;1140:134:9:-;;;;;;:::i;:::-;;:::i;2969:153:3:-;;;;;;:::i;:::-;;:::i;1994:268:9:-;;;;;;:::i;:::-;;:::i;2268:276::-;;;;;;:::i;:::-;;:::i;1280:218::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;3817:320:3:-;;;;;;:::i;:::-;;:::i;1898:330::-;;;;;;:::i;:::-;;:::i;3128:162::-;;;;;;:::i;:::-;;:::i;839:160:8:-;;;;;;:::i;:::-;;:::i;1095:300:3:-;1197:4;-1:-1:-1;;;;;;1232:40:3;;-1:-1:-1;;;1232:40:3;;:104;;-1:-1:-1;;;;;;;1288:48:3;;-1:-1:-1;;;1288:48:3;1232:104;:156;;;;1352:36;1376:11;1352:23;:36::i;:::-;1213:175;;1095:300;;;;:::o;1686:98::-;1740:13;1772:5;1765:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1686:98;:::o;2746:217::-;2822:7;2849:16;2857:7;2849;:16::i;:::-;2841:73;;;;-1:-1:-1;;;2841:73:3;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;2932:24:3;;;;:15;:24;;;;;;-1:-1:-1;;;;;2932:24:3;;2746:217::o;2339:401::-;2419:13;2435:23;2450:7;2435:14;:23::i;:::-;2419:39;;2482:5;-1:-1:-1;;;;;2476:11:3;:2;-1:-1:-1;;;;;2476:11:3;;;2468:57;;;;-1:-1:-1;;;2468:57:3;;;;;;;:::i;:::-;2573:5;-1:-1:-1;;;;;2557:21:3;:12;:10;:12::i;:::-;-1:-1:-1;;;;;2557:21:3;;:62;;;;2582:37;2599:5;2606:12;:10;:12::i;2582:37::-;2536:165;;;;-1:-1:-1;;;2536:165:3;;;;;;;:::i;:::-;2712:21;2721:2;2725:7;2712:8;:21::i;:::-;2339:401;;;:::o;709:124:8:-;506:13;;-1:-1:-1;;;506:13:8;;;;505:14;497:46;;;;-1:-1:-1;;;497:46:8;;;;;;;:::i;:::-;778:13:::1;:20:::0;;-1:-1:-1;;;;778:20:8::1;-1:-1:-1::0;;;778:20:8::1;::::0;;808:7:::1;:18:::0;;-1:-1:-1;;;;;808:18:8;;::::1;-1:-1:-1::0;;;;;;808:18:8;;::::1;::::0;;;::::1;::::0;;709:124::o;97:22::-;;;-1:-1:-1;;;;;97:22:8;;:::o;1504:123:9:-;1551:4;1587:15;1574:9;;:28;;:46;;;;-1:-1:-1;1606:9:9;;:14;;1574:46;1567:53;;1504:123;:::o;928:89::-;998:12;;928:89;:::o;3296:330:3:-;3485:41;3504:12;:10;:12::i;:::-;3518:7;3485:18;:41::i;:::-;3477:103;;;;-1:-1:-1;;;3477:103:3;;;;;;;:::i;:::-;3591:28;3601:4;3607:2;3611:7;3591:9;:28::i;1023:111:9:-;1079:7;1105:22;;;:11;:22;;;;;;;1023:111::o;3632:179:3:-;3765:39;3782:4;3788:2;3792:7;3765:39;;;;;;;;;;;;:16;:39::i;3575:578:9:-;3667:4;3683:20;3733:7;3716:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;3706:36;;;;;;3683:59;;3757:9;3752:358;3776:5;:12;3772:1;:16;3752:358;;;3809:20;3832:5;3838:1;3832:8;;;;;;-1:-1:-1;;;3832:8:9;;;;;;;;;;;;;;;3809:31;;3874:12;3858;:28;3854:246;;3948:12;3962;3931:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3921:55;;;;;;3906:70;;3854:246;;;4057:12;4071;4040:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4030:55;;;;;;4015:70;;3854:246;-1:-1:-1;3790:3:9;;;;:::i;:::-;;;;3752:358;;;-1:-1:-1;4126:20:9;;;;3575:578;-1:-1:-1;;;3575:578:9:o;1005:223:8:-;1070:11;;-1:-1:-1;;;;;1070:11:8;1056:10;:25;1048:51;;;;-1:-1:-1;;;1048:51:8;;;;;;;:::i;:::-;1144:11;;1135:7;;1114:42;;-1:-1:-1;;;;;1144:11:8;;;;1135:7;;;;1114:42;;1144:11;;1114:42;1176:11;;;1166:7;:21;;-1:-1:-1;;;;;;1166:21:8;;;-1:-1:-1;;;;;1176:11:8;;1166:21;;;;1197:24;;;1005:223::o;2550:1019:9:-;2637:15;2673:23;:10;:21;:23::i;:::-;2672:24;2664:64;;;;-1:-1:-1;;;2664:64:9;;;;;;;:::i;:::-;2760:12;;2746:10;;:26;;2738:53;;;;-1:-1:-1;;;2738:53:9;;;;;;;:::i;:::-;2822:15;2809:9;;:28;;:46;;;;-1:-1:-1;2841:9:9;;:14;;2809:46;2801:74;;;;-1:-1:-1;;;2801:74:9;;;;;;;:::i;:::-;2896:12;;2933:16;;2926:23;;2918:49;;;;-1:-1:-1;;;2918:49:9;;;;;;;:::i;:::-;2982:6;2977:586;2994:3;2990:1;:7;2977:586;;;3052:12;:26;3065:9;3075:1;3065:12;;;;;;-1:-1:-1;;;3065:12:9;;;;;;;;;;;;;;;3052:26;;;;;;;;;;;;3022:12;:26;3035:9;3045:1;3035:12;;;;;;-1:-1:-1;;;3035:12:9;;;;;;;;;;;;;;;3022:26;;;;;;;;;;;;:56;3018:103;;3098:8;;3018:103;3153:10;3143:21;;;;:9;:21;;;;;3165:12;;3143:21;;;3165:9;;3175:1;;3165:12;;;;-1:-1:-1;;;3165:12:9;;;;;;;;;;;;;;;;;;;;3143:35;;;;;;;;;;-1:-1:-1;3143:35:9;;;;3142:36;3134:64;;;;-1:-1:-1;;;3134:64:9;;;;;;;:::i;:::-;3220:55;3227:11;:25;3239:9;3249:1;3239:12;;;;;;-1:-1:-1;;;3239:12:9;;;;;;;;;;;;;;;3227:25;;;;;;;;;;;;3254:5;3260:1;3254:8;;;;;;-1:-1:-1;;;3254:8:9;;;;;;;;;;;;;;;3264:10;3220:6;:55::i;:::-;3212:82;;;;-1:-1:-1;;;3212:82:9;;;;;;;:::i;:::-;3318:11;:9;:11::i;:::-;3308:21;;3343:30;3353:10;3365:7;3343:9;:30::i;:::-;3416:12;:26;3429:9;3439:1;3429:12;;;;;;-1:-1:-1;;;3429:12:9;;;;;;;;;;;;;;;3416:26;;;;;;;;;;;;3445:1;3416:30;;;;:::i;:::-;3387:12;:26;3400:9;3410:1;3400:12;;;;;;-1:-1:-1;;;3400:12:9;;;;;;;;;;;;;;;3387:26;;;;;;;;;;;:59;;;;3498:4;3460:9;:21;3470:10;-1:-1:-1;;;;;3460:21:9;-1:-1:-1;;;;;3460:21:9;;;;;;;;;;;;:35;3482:9;3492:1;3482:12;;;;;;-1:-1:-1;;;3482:12:9;;;;;;;;;;;;;;;3460:35;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;3532:10;-1:-1:-1;;;;;3521:31:9;;3544:7;3521:31;;;;;;:::i;:::-;;;;;;;;2977:586;2999:3;;;;:::i;:::-;;;;2977:586;;;;2550:1019;;;;;:::o;1528:152:3:-;1600:7;1635:16;;;:7;:16;;;;;;-1:-1:-1;;;;;1635:16:3;;1528:152::o;1401:121::-;-1:-1:-1;;;;;1499:16:3;1473:7;1499:16;;;:9;:16;;;;;;;1401:121::o;125:26:8:-;;;-1:-1:-1;;;;;125:26:8;;:::o;1633:355:9:-;1766:16;;1720:20;;1766:16;1801:15;;;;;;-1:-1:-1;;;1801:15:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1801:15:9;;1792:24;;1831:6;1826:156;1843:3;1839:1;:7;1826:156;;;-1:-1:-1;;;;;1880:18:9;;;;;;:9;:18;;;;;1899:12;;1880:18;;;1899:9;;1909:1;;1899:12;;;;-1:-1:-1;;;1899:12:9;;;;;;;;;;;;;;;;;;;;1880:32;;;;;;;;;;-1:-1:-1;1880:32:9;;;;1879:33;:92;;;;;1945:12;:26;1958:9;1968:1;1958:12;;;;;;-1:-1:-1;;;1958:12:9;;;;;;;;;;;;;;;1945:26;;;;;;;;;;;;1916:12;:26;1929:9;1939:1;1929:12;;;;;;-1:-1:-1;;;1929:12:9;;;;;;;;;;;;;;;1916:26;;;;;;;;;;;;:55;1879:92;1867:6;1874:1;1867:9;;;;;;-1:-1:-1;;;1867:9:9;;;;;;;;;:104;;;:9;;;;;;;;;;;:104;1848:3;;;;:::i;:::-;;;;1826:156;;1790:102:3;1846:13;1878:7;1871:14;;;;;:::i;1140:134:9:-;-1:-1:-1;;;;;1238:18:9;1215:4;1238:18;;;:9;:18;;;;;;;;:29;;;;;;;;;;;1140:134::o;2969:153:3:-;3063:52;3082:12;:10;:12::i;:::-;3096:8;3106;3063:18;:52::i;:::-;2969:153;;:::o;1994:268:9:-;620:7:8;;-1:-1:-1;;;;;620:7:8;606:10;:21;598:43;;;;-1:-1:-1;;;598:43:8;;;;;;;:::i;:::-;2111:9:9::1;:16;2096:4;:11;:31;2088:57;;;;-1:-1:-1::0;;;2088:57:9::1;;;;;;;:::i;:::-;2160:6;2155:100;2172:9;:16;2168:1;:20;2155:100;;;2237:4;2242:1;2237:7;;;;;;-1:-1:-1::0;;;2237:7:9::1;;;;;;;;;;;;;;;2209:11;:25;2221:9;2231:1;2221:12;;;;;;-1:-1:-1::0;;;2221:12:9::1;;;;;;;;;;;;;;;2209:25;;;;;;;;;;;:35;;;;2190:3;;;;;:::i;:::-;;;;2155:100;;2268:276:::0;620:7:8;;-1:-1:-1;;;;;620:7:8;606:10;:21;598:43;;;;-1:-1:-1;;;598:43:8;;;;;;;:::i;:::-;2396:6:9::1;:13;2376:9;:16;:33;2368:59;;;;-1:-1:-1::0;;;2368:59:9::1;;;;;;;:::i;:::-;2442:6;2437:100;2454:6;:13;2450:1;:17;2437:100;;;2517:6;2524:1;2517:9;;;;;;-1:-1:-1::0;;;2517:9:9::1;;;;;;;;;;;;;;;2488:12;:26;2501:9;2511:1;2501:12;;;;;;-1:-1:-1::0;;;2501:12:9::1;;;;;;;;;;;;;;;2488:26;;;;;;;;;;;:38;;;;2469:3;;;;;:::i;:::-;;;;2437:100;;1280:218:::0;1342:4;1383:23;;;:12;:23;;;;;;;;;1430:12;:23;;;;;;;1383;;1280:218::o;3817:320:3:-;3986:41;4005:12;:10;:12::i;:::-;4019:7;3986:18;:41::i;:::-;3978:103;;;;-1:-1:-1;;;3978:103:3;;;;;;;:::i;:::-;4091:39;4105:4;4111:2;4115:7;4124:5;4091:13;:39::i;:::-;3817:320;;;;:::o;1898:330::-;1971:13;2004:16;2012:7;2004;:16::i;:::-;1996:68;;;;-1:-1:-1;;;1996:68:3;;;;;;;:::i;:::-;2075:21;2099:10;:8;:10::i;:::-;2075:34;;2150:1;2132:7;2126:21;:25;:95;;;;;;;;;;;;;;;;;2178:7;2187:18;:7;:16;:18::i;:::-;2161:54;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2126:95;2119:102;1898:330;-1:-1:-1;;;1898:330:3:o;3128:162::-;-1:-1:-1;;;;;3248:25:3;;;3225:4;3248:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3128:162::o;839:160:8:-;620:7;;-1:-1:-1;;;;;620:7:8;606:10;:21;598:43;;;;-1:-1:-1;;;598:43:8;;;;;;;:::i;:::-;942:7:::1;::::0;916:44:::1;::::0;-1:-1:-1;;;;;916:44:8;;::::1;::::0;942:7:::1;::::0;916:44:::1;::::0;942:7:::1;::::0;916:44:::1;970:11;:22:::0;;-1:-1:-1;;;;;;970:22:8::1;-1:-1:-1::0;;;;;970:22:8;;;::::1;::::0;;;::::1;::::0;;839:160::o;92:155:2:-;-1:-1:-1;;;;;;200:40:2;;-1:-1:-1;;;200:40:2;92:155;;;:::o;4456:125:3:-;4521:4;4544:16;;;:7;:16;;;;;;-1:-1:-1;;;;;4544:16:3;:30;;;4456:125::o;57:96:1:-;136:10;57:96;:::o;6666:171:3:-;6740:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;6740:29:3;-1:-1:-1;;;;;6740:29:3;;;;;;;;:24;;6793:23;6740:24;6793:14;:23::i;:::-;-1:-1:-1;;;;;6784:46:3;;;;;;;;;;;6666:171;;:::o;4587:344::-;4680:4;4704:16;4712:7;4704;:16::i;:::-;4696:73;;;;-1:-1:-1;;;4696:73:3;;;;;;;:::i;:::-;4779:13;4795:23;4810:7;4795:14;:23::i;:::-;4779:39;;4847:5;-1:-1:-1;;;;;4836:16:3;:7;-1:-1:-1;;;;;4836:16:3;;:51;;;;4880:7;-1:-1:-1;;;;;4856:31:3;:20;4868:7;4856:11;:20::i;:::-;-1:-1:-1;;;;;4856:31:3;;4836:51;:87;;;;4891:32;4908:5;4915:7;4891:16;:32::i;:::-;4828:96;4587:344;-1:-1:-1;;;;4587:344:3:o;6100:560::-;6254:4;-1:-1:-1;;;;;6227:31:3;:23;6242:7;6227:14;:23::i;:::-;-1:-1:-1;;;;;6227:31:3;;6219:85;;;;-1:-1:-1;;;6219:85:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;6322:16:3;;6314:65;;;;-1:-1:-1;;;6314:65:3;;;;;;;:::i;:::-;6390:39;6411:4;6417:2;6421:7;6390:20;:39::i;:::-;6491:29;6508:1;6512:7;6491:8;:29::i;:::-;-1:-1:-1;;;;;6531:15:3;;;;;;:9;:15;;;;;:20;;6550:1;;6531:15;:20;;6550:1;;6531:20;:::i;:::-;;;;-1:-1:-1;;;;;;;6561:13:3;;;;;;:9;:13;;;;;:18;;6578:1;;6561:13;:18;;6578:1;;6561:18;:::i;:::-;;;;-1:-1:-1;;6589:16:3;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;6589:21:3;-1:-1:-1;;;;;6589:21:3;;;;;;;;;6626:27;;6589:16;;6626:27;;;;;;;6100:560;;;:::o;48:190:0:-;177:20;223:8;;;48:190::o;4159:909:9:-;4198:7;4217:16;4251:10;;4236:12;;:25;;;;:::i;:::-;4217:44;;4271:14;4588:8;4353:15;4386:8;;4412:14;4444:10;4472:16;4506:14;-1:-1:-1;;;;;4506:22:9;;4546:14;4319:255;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4296:288;;;;;;4288:297;;:308;;;;:::i;:::-;4606:13;4637:19;;;:11;:19;;;;;;4271:325;;-1:-1:-1;4606:13:9;4633:127;;-1:-1:-1;4685:6:9;4633:127;;;-1:-1:-1;4730:19:9;;;;:11;:19;;;;;;4633:127;4773:11;:25;4785:12;4796:1;4785:8;:12;:::i;:::-;4773:25;;;;;;;;;;;;4802:1;4773:30;4769:173;;;4841:12;4852:1;4841:8;:12;:::i;:::-;4819:19;;;;:11;:19;;;;;:34;4769:173;;;4906:11;:25;4918:12;4929:1;4918:8;:12;:::i;:::-;4906:25;;;;;;;;;;;;;;-1:-1:-1;4906:25:9;;;;4884:19;;;:11;:19;;;;:47;4769:173;4981:9;;4973:5;4962:8;;:16;;;;:::i;:::-;:28;;;;:::i;:::-;4951:8;:39;5013:10;;:14;;5026:1;5013:14;:::i;:::-;5000:10;:27;5052:9;;5044:17;;:5;:17;:::i;:::-;5037:24;;;;;4159:909;:::o;4937:108:3:-;5012:26;5022:2;5026:7;5012:26;;;;;;;;;;;;:9;:26::i;6843:307::-;6993:8;-1:-1:-1;;;;;6984:17:3;:5;-1:-1:-1;;;;;6984:17:3;;;6976:55;;;;-1:-1:-1;;;6976:55:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;7041:25:3;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;:46;;-1:-1:-1;;7041:46:3;;;;;;;7102:41;;;;;7041:46;;7102:41;:::i;:::-;;;;;;;;6843:307;;;:::o;4143:::-;4294:28;4304:4;4310:2;4314:7;4294:9;:28::i;:::-;4340:48;4363:4;4369:2;4373:7;4382:5;4340:22;:48::i;:::-;4332:111;;;;-1:-1:-1;;;4332:111:3;;;;;;;:::i;2234:99::-;2285:13;2317:9;2310:16;;;;;:::i;112:515:10:-;168:13;197:10;193:51;;-1:-1:-1;223:10:10;;;;;;;;;;;;-1:-1:-1;;;223:10:10;;;;;;193:51;268:5;253:12;307:75;314:9;;307:75;;339:8;;;;:::i;:::-;;-1:-1:-1;361:10:10;;-1:-1:-1;369:2:10;361:10;;:::i;:::-;;;307:75;;;391:19;423:6;413:17;;;;;;-1:-1:-1;;;413:17:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;413:17:10;;391:39;;440:150;447:10;;440:150;;473:11;483:1;473:11;;:::i;:::-;;-1:-1:-1;541:10:10;549:2;541:5;:10;:::i;:::-;528:24;;:2;:24;:::i;:::-;515:39;;498:6;505;498:14;;;;;;-1:-1:-1;;;498:14:10;;;;;;;;;;;;:56;-1:-1:-1;;;;;498:56:10;;;;;;;;-1:-1:-1;568:11:10;577:2;568:11;;:::i;:::-;;;440:150;;5051:311:3;5176:18;5182:2;5186:7;5176:5;:18::i;:::-;5225:54;5256:1;5260:2;5264:7;5273:5;5225:22;:54::i;:::-;5204:151;;;;-1:-1:-1;;;5204:151:3;;;;;;;:::i;7156:778::-;7306:4;7326:15;:2;-1:-1:-1;;;;;7326:13:3;;:15::i;:::-;7322:606;;;7377:2;-1:-1:-1;;;;;7361:36:3;;7398:12;:10;:12::i;:::-;7412:4;7418:7;7427:5;7361:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7361:72:3;;;;;;;;-1:-1:-1;;7361:72:3;;;;;;;;;;;;:::i;:::-;;;7357:519;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7600:13:3;;7596:266;;7642:60;;-1:-1:-1;;;7642:60:3;;;;;;;:::i;7596:266::-;7814:6;7808:13;7799:6;7795:2;7791:15;7784:38;7357:519;-1:-1:-1;;;;;;7483:51:3;-1:-1:-1;;;7483:51:3;;-1:-1:-1;7476:58:3;;7322:606;-1:-1:-1;7913:4:3;7156:778;;;;;;:::o;5368:372::-;-1:-1:-1;;;;;5447:16:3;;5439:61;;;;-1:-1:-1;;;5439:61:3;;;;;;;:::i;:::-;5519:16;5527:7;5519;:16::i;:::-;5518:17;5510:58;;;;-1:-1:-1;;;5510:58:3;;;;;;;:::i;:::-;5579:45;5608:1;5612:2;5616:7;5579:20;:45::i;:::-;-1:-1:-1;;;;;5635:13:3;;;;;;:9;:13;;;;;:18;;5652:1;;5635:13;:18;;5652:1;;5635:18;:::i;:::-;;;;-1:-1:-1;;5663:16:3;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;5663:21:3;-1:-1:-1;;;;;5663:21:3;;;;;;;;5700:33;;5663:16;;;5700:33;;5663:16;;5700:33;5368:372;;:::o;14:175:11:-;84:20;;-1:-1:-1;;;;;133:31:11;;123:42;;113:2;;179:1;176;169:12;194:719;;307:3;300:4;292:6;288:17;284:27;274:2;;329:5;322;315:20;274:2;369:6;356:20;395:4;419:79;434:63;494:2;434:63;:::i;:::-;419:79;:::i;:::-;532:15;;;563:12;;;;595:15;;;641:11;;;629:24;;625:33;;622:42;-1:-1:-1;619:2:11;;;681:5;674;667:20;619:2;707:5;721:163;735:2;732:1;729:9;721:163;;;792:17;;780:30;;830:12;;;;862;;;;753:1;746:9;721:163;;;-1:-1:-1;902:5:11;;264:649;-1:-1:-1;;;;;;;264:649:11:o;1642:198::-;;1754:2;1742:9;1733:7;1729:23;1725:32;1722:2;;;1775:6;1767;1760:22;1722:2;1803:31;1824:9;1803:31;:::i;1845:274::-;;;1974:2;1962:9;1953:7;1949:23;1945:32;1942:2;;;1995:6;1987;1980:22;1942:2;2023:31;2044:9;2023:31;:::i;:::-;2013:41;;2073:40;2109:2;2098:9;2094:18;2073:40;:::i;:::-;2063:50;;1932:187;;;;;:::o;2124:342::-;;;;2270:2;2258:9;2249:7;2245:23;2241:32;2238:2;;;2291:6;2283;2276:22;2238:2;2319:31;2340:9;2319:31;:::i;:::-;2309:41;;2369:40;2405:2;2394:9;2390:18;2369:40;:::i;:::-;2359:50;;2456:2;2445:9;2441:18;2428:32;2418:42;;2228:238;;;;;:::o;2471:1028::-;;;;;2643:3;2631:9;2622:7;2618:23;2614:33;2611:2;;;2665:6;2657;2650:22;2611:2;2693:31;2714:9;2693:31;:::i;:::-;2683:41;;2743:2;2764:40;2800:2;2789:9;2785:18;2764:40;:::i;:::-;2754:50;;2851:2;2840:9;2836:18;2823:32;2813:42;;2906:2;2895:9;2891:18;2878:32;2929:18;2970:2;2962:6;2959:14;2956:2;;;2991:6;2983;2976:22;2956:2;3034:6;3023:9;3019:22;3009:32;;3079:7;3072:4;3068:2;3064:13;3060:27;3050:2;;3106:6;3098;3091:22;3050:2;3147;3134:16;3169:2;3165;3162:10;3159:2;;;3175:18;;:::i;:::-;3217:52;3259:2;3240:13;;-1:-1:-1;;3236:27:11;3232:36;;3217:52;:::i;:::-;3204:65;;3292:2;3285:5;3278:17;3332:7;3327:2;3322;3318;3314:11;3310:20;3307:33;3304:2;;;3358:6;3350;3343:22;3304:2;3418;3413;3409;3405:11;3400:2;3393:5;3389:14;3376:45;3441:14;;3437:23;;;3430:39;;;;2601:898;;;;-1:-1:-1;2601:898:11;;-1:-1:-1;;2601:898:11:o;3504:450::-;;;3658:2;3646:9;3637:7;3633:23;3629:32;3626:2;;;3679:6;3671;3664:22;3626:2;3707:31;3728:9;3707:31;:::i;:::-;3697:41;;3789:2;3778:9;3774:18;3761:32;3816:18;3808:6;3805:30;3802:2;;;3853:6;3845;3838:22;3802:2;3881:67;3940:7;3931:6;3920:9;3916:22;3881:67;:::i;:::-;3871:77;;;3616:338;;;;;:::o;3959:369::-;;;4085:2;4073:9;4064:7;4060:23;4056:32;4053:2;;;4106:6;4098;4091:22;4053:2;4134:31;4155:9;4134:31;:::i;:::-;4124:41;;4215:2;4204:9;4200:18;4187:32;4262:5;4255:13;4248:21;4241:5;4238:32;4228:2;;4289:6;4281;4274:22;4228:2;4317:5;4307:15;;;4043:285;;;;;:::o;4333:266::-;;;4462:2;4450:9;4441:7;4437:23;4433:32;4430:2;;;4483:6;4475;4468:22;4430:2;4511:31;4532:9;4511:31;:::i;:::-;4501:41;4589:2;4574:18;;;;4561:32;;-1:-1:-1;;;4420:179:11:o;4604:1239::-;;;4808:2;4796:9;4787:7;4783:23;4779:32;4776:2;;;4829:6;4821;4814:22;4776:2;4874:9;4861:23;4903:18;4944:2;4936:6;4933:14;4930:2;;;4965:6;4957;4950:22;4930:2;5008:6;4997:9;4993:22;4983:32;;5053:7;5046:4;5042:2;5038:13;5034:27;5024:2;;5080:6;5072;5065:22;5024:2;5121;5108:16;5143:4;5167:79;5182:63;5242:2;5182:63;:::i;5167:79::-;5280:15;;;5311:12;;;;5343:11;;;5372:6;5387:226;5401:2;5398:1;5395:9;5387:226;;;5458:80;5530:7;5525:2;5518:3;5505:17;5501:2;5497:26;5493:35;5458:80;:::i;:::-;5446:93;;5559:12;;;;5591;;;;5419:1;5412:9;5387:226;;;-1:-1:-1;5632:5:11;;-1:-1:-1;;;5675:18:11;;5662:32;;-1:-1:-1;;5706:16:11;;;5703:2;;;5740:6;5732;5725:22;5703:2;;5768:69;5829:7;5818:8;5807:9;5803:24;5768:69;:::i;5848:637::-;;;6027:2;6015:9;6006:7;6002:23;5998:32;5995:2;;;6048:6;6040;6033:22;5995:2;6093:9;6080:23;6122:18;6163:2;6155:6;6152:14;6149:2;;;6184:6;6176;6169:22;6149:2;6212:67;6271:7;6262:6;6251:9;6247:22;6212:67;:::i;:::-;6202:77;;6332:2;6321:9;6317:18;6304:32;6288:48;;6361:2;6351:8;6348:16;6345:2;;;6382:6;6374;6367:22;7132:518;;;;7303:2;7291:9;7282:7;7278:23;7274:32;7271:2;;;7324:6;7316;7309:22;7271:2;7365:9;7352:23;7342:33;;7426:2;7415:9;7411:18;7398:32;7453:18;7445:6;7442:30;7439:2;;;7490:6;7482;7475:22;7439:2;7518:67;7577:7;7568:6;7557:9;7553:22;7518:67;:::i;:::-;7508:77;;;7604:40;7640:2;7629:9;7625:18;7604:40;:::i;:::-;7594:50;;7261:389;;;;;:::o;7655:257::-;;7766:2;7754:9;7745:7;7741:23;7737:32;7734:2;;;7787:6;7779;7772:22;7734:2;7831:9;7818:23;7850:32;7876:5;7850:32;:::i;7917:261::-;;8039:2;8027:9;8018:7;8014:23;8010:32;8007:2;;;8060:6;8052;8045:22;8007:2;8097:9;8091:16;8116:32;8142:5;8116:32;:::i;8183:190::-;;8295:2;8283:9;8274:7;8270:23;8266:32;8263:2;;;8316:6;8308;8301:22;8263:2;-1:-1:-1;8344:23:11;;8253:120;-1:-1:-1;8253:120:11:o;8378:266::-;;;8507:2;8495:9;8486:7;8482:23;8478:32;8475:2;;;8528:6;8520;8513:22;8475:2;8569:9;8556:23;8546:33;;8598:40;8634:2;8623:9;8619:18;8598:40;:::i;8649:259::-;;8730:5;8724:12;8757:6;8752:3;8745:19;8773:63;8829:6;8822:4;8817:3;8813:14;8806:4;8799:5;8795:16;8773:63;:::i;:::-;8890:2;8869:15;-1:-1:-1;;8865:29:11;8856:39;;;;8897:4;8852:50;;8700:208;-1:-1:-1;;8700:208:11:o;8913:229::-;9062:2;9058:15;;;;-1:-1:-1;;9054:53:11;9042:66;;9133:2;9124:12;;9032:110::o;9147:247::-;9304:19;;;9348:2;9339:12;;9332:28;9385:2;9376:12;;9294:100::o;9399:637::-;;9717:6;9711:13;9733:53;9779:6;9774:3;9767:4;9759:6;9755:17;9733:53;:::i;:::-;9849:13;;9808:16;;;;9871:57;9849:13;9808:16;9905:4;9893:17;;9871:57;:::i;:::-;-1:-1:-1;;;9950:20:11;;9979:22;;;10028:1;10017:13;;9687:349;-1:-1:-1;;;;9687:349:11:o;10041:678::-;10354:19;;;10398:2;10389:12;;10382:28;;;;-1:-1:-1;;10498:2:11;10494:15;;;10490:24;;10485:2;10476:12;;10469:46;10549:15;;;;10545:24;;;10540:2;10531:12;;10524:46;10595:3;10586:13;;10579:29;10633:3;10624:13;;10617:29;10671:3;10662:13;;10655:29;10709:3;10700:13;;10344:375::o;10724:203::-;-1:-1:-1;;;;;10888:32:11;;;;10870:51;;10858:2;10843:18;;10825:102::o;10932:490::-;-1:-1:-1;;;;;11201:15:11;;;11183:34;;11253:15;;11248:2;11233:18;;11226:43;11300:2;11285:18;;11278:34;;;11348:3;11343:2;11328:18;;11321:31;;;10932:490;;11369:47;;11396:19;;11388:6;11369:47;:::i;:::-;11361:55;11135:287;-1:-1:-1;;;;;;11135:287:11:o;11427:645::-;11592:2;11644:21;;;11714:13;;11617:18;;;11736:22;;;11427:645;;11592:2;11815:15;;;;11789:2;11774:18;;;11427:645;11861:185;11875:6;11872:1;11869:13;11861:185;;;11950:13;;11943:21;11936:29;11924:42;;12021:15;;;;11986:12;;;;11897:1;11890:9;11861:185;;;-1:-1:-1;12063:3:11;;11572:500;-1:-1:-1;;;;;;11572:500:11:o;12077:187::-;12242:14;;12235:22;12217:41;;12205:2;12190:18;;12172:92::o;12269:177::-;12415:25;;;12403:2;12388:18;;12370:76::o;12451:221::-;;12600:2;12589:9;12582:21;12620:46;12662:2;12651:9;12647:18;12639:6;12620:46;:::i;12677:405::-;12879:2;12861:21;;;12918:2;12898:18;;;12891:30;12957:34;12952:2;12937:18;;12930:62;-1:-1:-1;;;13023:2:11;13008:18;;13001:39;13072:3;13057:19;;12851:231::o;13087:337::-;13289:2;13271:21;;;13328:2;13308:18;;;13301:30;-1:-1:-1;;;13362:2:11;13347:18;;13340:43;13415:2;13400:18;;13261:163::o;13429:356::-;13631:2;13613:21;;;13650:18;;;13643:30;13709:34;13704:2;13689:18;;13682:62;13776:2;13761:18;;13603:182::o;13790:338::-;13992:2;13974:21;;;14031:2;14011:18;;;14004:30;-1:-1:-1;;;14065:2:11;14050:18;;14043:44;14119:2;14104:18;;13964:164::o;14133:397::-;14335:2;14317:21;;;14374:2;14354:18;;;14347:30;14413:34;14408:2;14393:18;;14386:62;-1:-1:-1;;;14479:2:11;14464:18;;14457:31;14520:3;14505:19;;14307:223::o;14535:413::-;14737:2;14719:21;;;14776:2;14756:18;;;14749:30;14815:34;14810:2;14795:18;;14788:62;-1:-1:-1;;;14881:2:11;14866:18;;14859:47;14938:3;14923:19;;14709:239::o;14953:343::-;15155:2;15137:21;;;15194:2;15174:18;;;15167:30;-1:-1:-1;;;15228:2:11;15213:18;;15206:49;15287:2;15272:18;;15127:169::o;15301:351::-;15503:2;15485:21;;;15542:2;15522:18;;;15515:30;15581:29;15576:2;15561:18;;15554:57;15643:2;15628:18;;15475:177::o;15657:339::-;15859:2;15841:21;;;15898:2;15878:18;;;15871:30;-1:-1:-1;;;15932:2:11;15917:18;;15910:45;15987:2;15972:18;;15831:165::o;16001:408::-;16203:2;16185:21;;;16242:2;16222:18;;;16215:30;16281:34;16276:2;16261:18;;16254:62;-1:-1:-1;;;16347:2:11;16332:18;;16325:42;16399:3;16384:19;;16175:234::o;16414:400::-;16616:2;16598:21;;;16655:2;16635:18;;;16628:30;16694:34;16689:2;16674:18;;16667:62;-1:-1:-1;;;16760:2:11;16745:18;;16738:34;16804:3;16789:19;;16588:226::o;16819:338::-;17021:2;17003:21;;;17060:2;17040:18;;;17033:30;-1:-1:-1;;;17094:2:11;17079:18;;17072:44;17148:2;17133:18;;16993:164::o;17162:349::-;17364:2;17346:21;;;17403:2;17383:18;;;17376:30;17442:27;17437:2;17422:18;;17415:55;17502:2;17487:18;;17336:175::o;17516:332::-;17718:2;17700:21;;;17757:1;17737:18;;;17730:29;-1:-1:-1;;;17790:2:11;17775:18;;17768:39;17839:2;17824:18;;17690:158::o;17853:403::-;18055:2;18037:21;;;18094:2;18074:18;;;18067:30;18133:34;18128:2;18113:18;;18106:62;-1:-1:-1;;;18199:2:11;18184:18;;18177:37;18246:3;18231:19;;18027:229::o;18261:408::-;18463:2;18445:21;;;18502:2;18482:18;;;18475:30;18541:34;18536:2;18521:18;;18514:62;-1:-1:-1;;;18607:2:11;18592:18;;18585:42;18659:3;18644:19;;18435:234::o;18674:352::-;18876:2;18858:21;;;18915:2;18895:18;;;18888:30;18954;18949:2;18934:18;;18927:58;19017:2;19002:18;;18848:178::o;19031:337::-;19233:2;19215:21;;;19272:2;19252:18;;;19245:30;-1:-1:-1;;;19306:2:11;19291:18;;19284:43;19359:2;19344:18;;19205:163::o;19373:420::-;19575:2;19557:21;;;19614:2;19594:18;;;19587:30;19653:34;19648:2;19633:18;;19626:62;19724:26;19719:2;19704:18;;19697:54;19783:3;19768:19;;19547:246::o;19798:414::-;20000:2;19982:21;;;20039:2;20019:18;;;20012:30;20078:34;20073:2;20058:18;;20051:62;-1:-1:-1;;;20144:2:11;20129:18;;20122:48;20202:3;20187:19;;19972:240::o;20217:339::-;20419:2;20401:21;;;20458:2;20438:18;;;20431:30;-1:-1:-1;;;20492:2:11;20477:18;;20470:45;20547:2;20532:18;;20391:165::o;20996:251::-;21066:2;21060:9;21096:17;;;21143:18;21128:34;;21164:22;;;21125:62;21122:2;;;21190:18;;:::i;:::-;21226:2;21219:22;21040:207;;-1:-1:-1;21040:207:11:o;21252:206::-;;21365:18;21357:6;21354:30;21351:2;;;21387:18;;:::i;:::-;-1:-1:-1;21447:4:11;21428:17;;;21424:28;;21341:117::o;21463:128::-;;21534:1;21530:6;21527:1;21524:13;21521:2;;;21540:18;;:::i;:::-;-1:-1:-1;21576:9:11;;21511:80::o;21596:120::-;;21662:1;21652:2;;21667:18;;:::i;:::-;-1:-1:-1;21701:9:11;;21642:74::o;21721:125::-;;21789:1;21786;21783:8;21780:2;;;21794:18;;:::i;:::-;-1:-1:-1;21831:9:11;;21770:76::o;21851:258::-;21923:1;21933:113;21947:6;21944:1;21941:13;21933:113;;;22023:11;;;22017:18;22004:11;;;21997:39;21969:2;21962:10;21933:113;;;22064:6;22061:1;22058:13;22055:2;;;-1:-1:-1;;22099:1:11;22081:16;;22074:27;21904:205::o;22114:380::-;22199:1;22189:12;;22246:1;22236:12;;;22257:2;;22311:4;22303:6;22299:17;22289:27;;22257:2;22364;22356:6;22353:14;22333:18;22330:38;22327:2;;;22410:10;22405:3;22401:20;22398:1;22391:31;22445:4;22442:1;22435:15;22473:4;22470:1;22463:15;22327:2;;22169:325;;;:::o;22499:135::-;;-1:-1:-1;;22559:17:11;;22556:2;;;22579:18;;:::i;:::-;-1:-1:-1;22626:1:11;22615:13;;22546:88::o;22639:112::-;;22697:1;22687:2;;22702:18;;:::i;:::-;-1:-1:-1;22736:9:11;;22677:74::o;22756:127::-;22817:10;22812:3;22808:20;22805:1;22798:31;22848:4;22845:1;22838:15;22872:4;22869:1;22862:15;22888:127;22949:10;22944:3;22940:20;22937:1;22930:31;22980:4;22977:1;22970:15;23004:4;23001:1;22994:15;23020:127;23081:10;23076:3;23072:20;23069:1;23062:31;23112:4;23109:1;23102:15;23136:4;23133:1;23126:15;23152:133;-1:-1:-1;;;;;;23228:32:11;;23218:43;;23208:2;;23275:1;23272;23265:12;23208:2;23198:87;:::o

Swarm Source

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