Contract 0x5c48Cf6fcC5f9F5A4cE90A694B91CDE82FDe0E29

 
 
Txn Hash
Method
Block
From
To
Value
0x0804715406877648b3dba26d94e86977ca208ed3a2b8b7c5bb84267bca7ca223Set Approval For...157647592022-10-17 2:09:4754 days 3 hrs ago0xf26f4a8cc033913145a1125dde1f890600169f35 IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00053681 11.64891432
0x4766f8bb3b4caab3a1068c59bdb252f53f2b28a6a7cca001df048d51dcb28ef6Safe Transfer Fr...157605772022-10-16 12:08:2354 days 17 hrs ago0xae14474b7826d7648c8fb074184c28227e44f318 IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00114241 17.78546278
0x601a218e14ed39be45fb4339c7a7617b398a90b38ecb206f122e9b1eb6b746feSafe Transfer Fr...157601792022-10-16 10:48:1154 days 18 hrs ago0xc35f3e897c31f69b272cd19559706f10a1c63e9d IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00062076 13.17046947
0x965032c61069b951808aa4fb9932437ddd11f0246cd3b3af08485ee977a09ad1Safe Transfer Fr...157601382022-10-16 10:39:5954 days 18 hrs ago0x178e62d1aa9c1d144a6520c84b5c15bc74269edd IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00059026 12.52328617
0x20ebdce773be4f10b030df437aabaa904d6455242b620b42df6a9b8be8e613d2Safe Transfer Fr...157600752022-10-16 10:27:2354 days 18 hrs ago0x8c57aa553d5fe669051d3b7ae5275233a5ebbe78 IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00055275 11.72763819
0xffb7070fcb554836ce893cb16392c4d9a9b787e05acf2cd7dc515591476b26c1Set Approval For...157599952022-10-16 10:11:2354 days 19 hrs ago0x909b166f822671ff2a09a4c2749ed1e9756e68d4 IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00053834 11.68216578
0x895b65f731b992d325196702128caf69a8424f471865f4d2aca77c4d12010593Set Approval For...157598012022-10-16 9:32:3554 days 19 hrs ago0xb25134b0510ec662ce8b5dc9b0359aa74c935541 IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00058609 12.71814779
0x40b41eb0377f89b946f1abc2a7d088d0c8da48b8a6ef626a04fd22e10ab2bbb3Transfer From157149602022-10-10 3:16:5961 days 2 hrs ago0x1ca1ec014a0e7494ea4012460385d8ba73493696 IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00270733 31.24485449
0x6325249d6d8c196c14ab7db2d2da26aa5a68f0f58a73aac12da3eae16b57f472Set Approval For...156053572022-09-24 19:38:4776 days 9 hrs ago0x1532abbb148f6723b18551b7ae7dfd6d2e6608d3 IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00022836 4.9556158
0x80d9b56d222298018daba153d07db0d8f0d1f41a7b8ca5e1da45cc2141047793Set Approval For...155949012022-09-23 8:37:3577 days 20 hrs ago0x1306515f1d6356609e03493b7657f240ebdfdde6 IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00020808 4.51535635
0x731ba1b322ae6e494b1489e88f26398b9d5ecfd14c0017fd0961c660b97ff976Transfer From155948842022-09-23 8:34:1177 days 20 hrs ago0x17d3ea7ea9dabb3a8cbeddb4334cce8158338b3b IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00022506 5.07817844
0x62e4fc5367825e9f1423d515c93f2b7c01935aec6586b56b42bc2d3a795ffe84Transfer From155948832022-09-23 8:33:5977 days 20 hrs ago0x17d3ea7ea9dabb3a8cbeddb4334cce8158338b3b IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00030877 4.66281812
0x89993e8b6d024943854a006658ddffd94cf363c6f85287ff6eb34565d881faf2Set Approval For...155206212022-09-12 11:29:0488 days 17 hrs ago0x4e161dfeb508f280d61a570aa69c96bd2cb99915 IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00060393 13.10543605
0x5e81bc008f43d0e02c78e261738b82c7c928446d4d162628826f64a8afab983fSet Approval For...153261422022-08-12 9:10:51119 days 20 hrs ago0x47d63c99ad2f4a5a49a8c84d1c2de7d4efd4399a IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00060324 13.09030936
0x3a8c12547167ad7ddea511c146480e4464bf2858f60da5d42b196a2eac7ffa7cSet Approval For...151774672022-07-20 4:46:34143 days 35 mins ago0x1ca1ec014a0e7494ea4012460385d8ba73493696 IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00084793 18.40006565
0x70e16969be9767027601f90b75ae6433cbceddf602c7668e331212584198d64cSet Approval For...151331472022-07-13 8:11:37149 days 21 hrs ago0xbb5c279ab29469e03ffe703bf40cd685cd9c178b IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00051498 11.17518482
0x056c949cca8799b96f3335cdc2e0fae31139fe879c82f9b8e6e092f24ba4eeb8Set Approval For...151331272022-07-13 8:08:27149 days 21 hrs ago0x15c376505286c1fdfd434ee666e311cfa7901f04 IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00079064 17.15701512
0xb98b922f8a0e734c0ed4e742832c9a851767a8ecba92d7a4edda6a193b35c4eeSet Approval For...151331022022-07-13 8:02:17149 days 21 hrs ago0xc5b6cb094a9593c3fef79edf5c7c188dd8586488 IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00086163 18.69739666
0x988f53228a0dc3ddc9ad480ebf821498b4fc6b24ebe741821299e22b91c8c98aSet Approval For...151260162022-07-12 5:37:38150 days 23 hrs ago0xb25134b0510ec662ce8b5dc9b0359aa74c935541 IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00078117 16.92071586
0x1fb8799cf18db2dff87e2176e5f520b0743cf08477c7d3b23213d3a117a52d42Transfer From151123552022-07-10 3:01:55153 days 2 hrs ago0xadd3fbffeb4384d01b6b5f8a371db459e6a44ea1 IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00038128 8.60511964
0x1e8ce12a9697640373ba6cc0644a5b0f1e76a5b30091e4caeb9f907cd7944e7bTransfer From151123412022-07-10 3:00:27153 days 2 hrs ago0x1a146d615e57a79f50f555f99db35b8b3acc72a6 IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00050949 11.49870744
0x885c0eaaa3f2e990f13e69720f5aa0161683f8df56ec55cf7c49fdec6ef112b6Transfer From151123222022-07-10 2:56:41153 days 2 hrs ago0x3465677f6bf00dc953707534ee384fa82755bebe IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00072621 16.38544858
0x5f5f19ad26119f4cc91566866f04a24fb9d0a8f1ac9991d1afc3c97652fabf0eTransfer From151122672022-07-10 2:45:18153 days 2 hrs ago0x584b560296685135f8131aa2e7c2b153727248be IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.0005655 12.76271828
0xb519cd427ca23a68b5299150368eb1ee5c56688629aa13de1e58b70f4d96e93fReveal151107032022-07-09 21:02:31153 days 8 hrs ago0x8c5ff7fc2a8304934db281a206b74bc4f5b4554d IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00147269 32.32355055
0x900db04357e79aafbd0df07c285787f656c215d7eb74b9cc5d3a5e55198b743bSet Base URI151106992022-07-09 21:01:33153 days 8 hrs ago0x8c5ff7fc2a8304934db281a206b74bc4f5b4554d IN  0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290 Ether0.00399041 34.84800574
[ Download CSV Export 
Latest 4 internal transactions
Parent Txn Hash Block From To Value
0x2e48480541ebeb8a9f3ee84c68d83e810ebb29d0db3be6bca8ca1553b320ffb5150834032022-07-05 15:44:15157 days 13 hrs ago 0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290x8c5ff7fc2a8304934db281a206b74bc4f5b4554d0.08 Ether
0x60dfa9411237e2df369a77dae8d015f9f73ce7158c2fa97f821bb2a29a4bf6a6148622962022-05-28 20:15:03195 days 9 hrs ago 0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290x8c5ff7fc2a8304934db281a206b74bc4f5b4554d1.9 Ether
0xa47d6a207d2ac093ed4b3f3df66b5f85555dfe22f064b8a804682869b362a2a2144462672022-03-24 2:19:36261 days 3 hrs ago 0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290x8c5ff7fc2a8304934db281a206b74bc4f5b4554d0.265 Ether
0xa473ab685a54fef7e3846ef92a9a2fe1932caba9e2045a5306cfdc1c375c61dc144299332022-03-21 13:20:17263 days 16 hrs ago 0x5c48cf6fcc5f9f5a4ce90a694b91cde82fde0e290x8c5ff7fc2a8304934db281a206b74bc4f5b4554d3.108 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MONKCHAINS

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-20
*/

/**
 *Submitted for verification at Etherscan.io on 2022-03-20
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.7;

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

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    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);
    }
}

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 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);
            }
        }
    }
}

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

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

// IERC721.SOL
//IERC721

interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 indexed tokenId
    );

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(
        address indexed owner,
        address indexed approved,
        uint256 indexed tokenId
    );

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(
        address indexed owner,
        address indexed operator,
        bool approved
    );

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId)
        external
        view
        returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator)
        external
        view
        returns (bool);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

// IERC721Enumerable.sol

interface IERC721Enumerable is IERC721 {
    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.
     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index)
        external
        view
        returns (uint256);

    /**
     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
     * Use along with {totalSupply} to enumerate all tokens.
     */
    function tokenByIndex(uint256 index) external view returns (uint256);
}

/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the token collection symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

// IERC721Reciver.sol
/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
     */
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

error ApprovalCallerNotOwnerNorApproved();
error ApprovalQueryForNonexistentToken();
error ApproveToCaller();
error ApprovalToCurrentOwner();
error BalanceQueryForZeroAddress();
error MintedQueryForZeroAddress();
error MintToZeroAddress();
error MintZeroQuantity();
error OwnerIndexOutOfBounds();
error OwnerQueryForNonexistentToken();
error TokenIndexOutOfBounds();
error TransferCallerNotOwnerNorApproved();
error TransferFromIncorrectOwner();
error TransferToNonERC721ReceiverImplementer();
error TransferToZeroAddress();
error UnableDetermineTokenOwner();
error URIQueryForNonexistentToken();

/**
 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
 * the Metadata and Enumerable extension. Built to optimize for lower gas during batch mints.
 *
 * Assumes serials are sequentially minted starting at 0 (e.g. 0, 1, 2, 3..).
 *
 * Does not support burning tokens to address(0).
 *
 * Assumes that an owner cannot have more than the 2**128 - 1 (max value of uint128) of supply
 */
contract ERC721A is
    Context,
    ERC165,
    IERC721,
    IERC721Metadata,
    IERC721Enumerable
{
    using Address for address;
    using Strings for uint256;

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }

    struct AddressData {
        uint128 balance;
        uint128 numberMinted;
    }

    uint256 internal _currentIndex;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to ownership details
    // An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details.
    mapping(uint256 => TokenOwnership) internal _ownerships;

    // Mapping owner address to address data
    mapping(address => AddressData) private _addressData;

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

    /**
     * @dev See {IERC721Enumerable-totalSupply}.
     */
    function totalSupply() public view override returns (uint256) {
        return _currentIndex;
    }

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index)
        public
        view
        override
        returns (uint256)
    {
        if (index >= totalSupply()) revert TokenIndexOutOfBounds();
        return index;
    }

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     * This read function is O(totalSupply). If calling from a separate contract, be sure to test gas first.
     * It may also degrade with extremely large collection sizes (e.g >> 10000), test for your use case.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index)
        public
        view
        override
        returns (uint256 a)
    {
        if (index >= balanceOf(owner)) revert OwnerIndexOutOfBounds();
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx;
        address currOwnershipAddr;

        // Counter overflow is impossible as the loop breaks when uint256 i is equal to another uint256 numMintedSoFar.
        unchecked {
            for (uint256 i; i < numMintedSoFar; i++) {
                TokenOwnership memory ownership = _ownerships[i];
                if (ownership.addr != address(0)) {
                    currOwnershipAddr = ownership.addr;
                }
                if (currOwnershipAddr == owner) {
                    if (tokenIdsIdx == index) {
                        return i;
                    }
                    tokenIdsIdx++;
                }
            }
        }

        // Execution should never reach this point.
        assert(false);
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override(ERC165, IERC165)
        returns (bool)
    {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            interfaceId == type(IERC721Enumerable).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view override returns (uint256) {
        if (owner == address(0)) revert BalanceQueryForZeroAddress();
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        if (owner == address(0)) revert MintedQueryForZeroAddress();
        return uint256(_addressData[owner].numberMinted);
    }

    /**
     * Gas spent here starts off proportional to the maximum mint batch size.
     * It gradually moves to O(1) as tokens get transferred around in the collection over time.
     */
    function ownershipOf(uint256 tokenId)
        internal
        view
        returns (TokenOwnership memory)
    {
        if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken();

        unchecked {
            for (uint256 curr = tokenId; curr >= 0; curr--) {
                TokenOwnership memory ownership = _ownerships[curr];
                if (ownership.addr != address(0)) {
                    return ownership;
                }
            }
        }

        revert UnableDetermineTokenOwner();
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        if (!_exists(tokenId)) revert URIQueryForNonexistentToken();

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

    /**
     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
     * by default, can be overriden in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public override {
        address owner = ERC721A.ownerOf(tokenId);
        if (to == owner) revert ApprovalToCurrentOwner();

        if (_msgSender() != owner && !isApprovedForAll(owner, _msgSender()))
            revert ApprovalCallerNotOwnerNorApproved();

        _approve(to, tokenId, owner);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId)
        public
        view
        override
        returns (address)
    {
        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved)
        public
        override
    {
        if (operator == _msgSender()) revert ApproveToCaller();

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev See {IERC721-isApprovedForAll}.
     */
    function isApprovedForAll(address owner, address operator)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _operatorApprovals[owner][operator];
    }

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        _transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public override {
        _transfer(from, to, tokenId);
        if (!_checkOnERC721Received(from, to, tokenId, _data))
            revert TransferToNonERC721ReceiverImplementer();
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     */
    function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < _currentIndex;
    }

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

    /**
     * @dev Safely mints `quantity` tokens and transfers them to `to`.
     *
     * Requirements:
     *
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called for each safe transfer.
     * - `quantity` must be greater than 0.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        _mint(to, quantity, _data, true);
    }

    /**
     * @dev Mints `quantity` tokens and transfers them to `to`.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `quantity` must be greater than 0.
     *
     * Emits a {Transfer} event.
     */
    function _mint(
        address to,
        uint256 quantity,
        bytes memory _data,
        bool safe
    ) internal {
        uint256 startTokenId = _currentIndex;
        if (to == address(0)) revert MintToZeroAddress();
        // if (quantity == 0) revert MintZeroQuantity();

        //_beforeTokenTransfers(address(0), to, startTokenId, quantity);

        // Overflows are incredibly unrealistic.
        // balance or numberMinted overflow if current value of either + quantity > 3.4e38 (2**128) - 1
        // updatedIndex overflows if _currentIndex + quantity > 1.56e77 (2**256) - 1
        unchecked {
            _addressData[to].balance += uint128(quantity);
            _addressData[to].numberMinted += uint128(quantity);

            _ownerships[startTokenId].addr = to;
            _ownerships[startTokenId].startTimestamp = uint64(block.timestamp);

            uint256 updatedIndex = startTokenId;

            for (uint256 i; i < quantity; i++) {
                emit Transfer(address(0), to, updatedIndex);
                if (
                    safe &&
                    !_checkOnERC721Received(address(0), to, updatedIndex, _data)
                ) {
                    revert TransferToNonERC721ReceiverImplementer();
                }

                updatedIndex++;
            }

            _currentIndex = updatedIndex;
        }

        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) private {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(prevOwnership.addr, _msgSender()));

        if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved();
        if (prevOwnership.addr != from) revert TransferFromIncorrectOwner();
        if (to == address(0)) revert TransferToZeroAddress();

        // _beforeTokenTransfers(from, to, tokenId, 1);

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

        // Underflow of the sender's balance is impossible because we check for
        // ownership above and the recipient's balance can't realistically overflow.
        // Counter overflow is incredibly unrealistic as tokenId would have to be 2**256.
        unchecked {
            _addressData[from].balance -= 1;
            _addressData[to].balance += 1;

            _ownerships[tokenId].addr = to;
            _ownerships[tokenId].startTimestamp = uint64(block.timestamp);

            // If the ownership slot of tokenId+1 is not explicitly set, that means the transfer initiator owns it.
            // Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls.
            uint256 nextTokenId = tokenId + 1;
            if (_ownerships[nextTokenId].addr == address(0)) {
                if (_exists(nextTokenId)) {
                    _ownerships[nextTokenId].addr = prevOwnership.addr;
                    _ownerships[nextTokenId].startTimestamp = prevOwnership
                        .startTimestamp;
                }
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits a {Approval} event.
     */
    function _approve(
        address to,
        uint256 tokenId,
        address owner
    ) private {
        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    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(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0)
                    revert TransferToNonERC721ReceiverImplementer();
                else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    /**
     * @dev Hook that is called before a set of serially-ordered token ids are about to be transferred. This includes minting.
     *
     * startTokenId - the first token id to be transferred
     * quantity - the amount to be transferred
     *
     * Calling conditions:
     *
     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
     * transferred to `to`.
     * - When `from` is zero, `tokenId` will be minted for `to`.
     */
    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}

    /**
     * @dev Hook that is called after a set of serially-ordered token ids have been transferred. This includes
     * minting.
     *
     * startTokenId - the first token id to be transferred
     * quantity - the amount to be transferred
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero.
     * - `from` and `to` are never both zero.
     */
    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library MerkleProof {
    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Each
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    /**
     * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up
     * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt
     * hash matches the root of the tree. When processing the proof, the pairs
     * of leafs & pre-images are assumed to be sorted.
     *
     * _Available since v4.4._
     */
    function processProof(bytes32[] memory proof, bytes32 leaf)
        internal
        pure
        returns (bytes32)
    {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b)
        private
        pure
        returns (bytes32 value)
    {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

contract MONKCHAINS is ERC721A, Ownable {
    // variables
    using Strings for uint256;

    constructor(
        bytes32 finalOgRootHash,
        bytes32 finalRootHash,
        string memory _NotRevealedUri
    ) ERC721A("MonkChains", "MONK") {
        OgRootHash = finalOgRootHash;
        rootHash = finalRootHash;
        setNotRevealedURI(_NotRevealedUri);
    }

    uint256 public maxsupply = 4988;
    uint256 public reserve = 448;
    uint256 public ogprice = 0.065 ether;
    uint256 public presaleprice = 0.088 ether;
    uint256 public price = 0.1 ether;
    uint256 public SaleMaxQuantity = 6;

    bool public isOgPaused = true;
    bool public isPreSalePaused = true;
    bool public isPaused = true;
    string public _baseURI1;
    bytes32 private OgRootHash;
    bytes32 private rootHash;
    // revealed uri variables

    bool public revealed = false;
    string public notRevealedUri;

    struct userAddress {
        address userAddress;
        uint256 counter;
    }

    mapping(address => userAddress) public _SaleAddresses;
    mapping(address => bool) public _SaleAddressExist;

    function flipOgMinting() public onlyOwner {
        isOgPaused = !isOgPaused;
    }

    function flipPreSaleMinting() public onlyOwner {
        isPreSalePaused = !isPreSalePaused;
    }

    function flipPauseMinting() public onlyOwner {
        isPaused = !isPaused;
    }

    function setOgRootHash(bytes32 updatedOgRootHash) public onlyOwner {
        OgRootHash = updatedOgRootHash;
    }

    function setRootHash(bytes32 updatedRootHash) public onlyOwner {
        rootHash = updatedRootHash;
    }

    function setBaseURI(string memory _newBaseURI) public onlyOwner {
        _baseURI1 = _newBaseURI;
    }

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

    function setReserve(uint256 _reserve) public onlyOwner {
        require(_reserve <= maxsupply, "the quantity exceeds");
        reserve = _reserve;
    }
    function setOgPrice(uint256 _newCost) public onlyOwner {
    ogprice = _newCost;
  }
   function setPreSalePrice(uint256 _newCost) public onlyOwner {
    presaleprice = _newCost;
  }
  function setPrice(uint256 _newCost) public onlyOwner {
    price = _newCost;
  }

    // set reaveal uri just in case

    function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner {
        notRevealedUri = _notRevealedURI;
    }

    // setting reaveal only time can possible
    //only owner
    function reveal() public onlyOwner {
        revealed = true;
    }

    function mintReservedTokens(uint256 quantity) public onlyOwner {
        require(quantity <= reserve, "All reserve tokens have bene minted");
        reserve -= quantity;
        _safeMint(msg.sender, quantity);
    }

    function OGMint(bytes32[] calldata _merkleProof, uint256 chosenAmount)
        public
        payable
    {
        if (_SaleAddressExist[msg.sender] == false) {
            _SaleAddresses[msg.sender] = userAddress({
                userAddress: msg.sender,
                counter: 0
            });
            _SaleAddressExist[msg.sender] = true;
        }
        require(isOgPaused == false, "turn on minting");
        require(
            chosenAmount > 0,
            "Number Of Tokens Can Not Be Less Than Or Equal To 0"
        );
        require(
            _SaleAddresses[msg.sender].counter + chosenAmount <=
                SaleMaxQuantity,
            "Quantity Must Be Lesser Than Max Supply"
        );
        require(
            totalSupply() + chosenAmount <= maxsupply - reserve,
            "all tokens have been minted"
        );
        bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
        require(
            MerkleProof.verify(_merkleProof, OgRootHash, leaf),
            "Invalid Proof"
        );

        require(
            ogprice * chosenAmount == msg.value,
            "Sent Ether Value Is Incorrect"
        );

        _safeMint(msg.sender, chosenAmount);
        _SaleAddresses[msg.sender].counter += chosenAmount;
    }

    function PreMint(bytes32[] calldata _merkleProof, uint256 chosenAmount)
        public
        payable
    {
        if (_SaleAddressExist[msg.sender] == false) {
            _SaleAddresses[msg.sender] = userAddress({
                userAddress: msg.sender,
                counter: 0
            });
            _SaleAddressExist[msg.sender] = true;
        }
        require(isPreSalePaused == false, "turn on minting");
        require(
            chosenAmount > 0,
            "Number Of Tokens Can Not Be Less Than Or Equal To 0"
        );
        require(
            _SaleAddresses[msg.sender].counter + chosenAmount <=
                SaleMaxQuantity,
            "Quantity Must Be Lesser Than Max Supply"
        );
        require(
            totalSupply() + chosenAmount <= maxsupply - reserve,
            "all tokens have been minted"
        );
        bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
        require(
            MerkleProof.verify(_merkleProof, rootHash, leaf),
            "Invalid Proof"
        );

        require(
            presaleprice * chosenAmount == msg.value,
            "Sent Ether Value Is Incorrect"
        );

        _safeMint(msg.sender, chosenAmount);
        _SaleAddresses[msg.sender].counter += chosenAmount;
    }

    function Mint(uint256 chosenAmount) public payable {
        require(isPaused == false, "turn on minting");
        require(
            chosenAmount > 0,
            "Number Of Tokens Can Not Be Less Than Or Equal To 0"
        );
        require(
            totalSupply() + chosenAmount <= maxsupply - reserve,
            "all tokens have been minted"
        );

        require(
            price * chosenAmount == msg.value,
            "Sent Ether Value Is Incorrect"
        );

        _safeMint(msg.sender, chosenAmount);
    }

    // setting up the reaveal functionality

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

        if (revealed == false) {
            return notRevealedUri;
        }

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

    function withdraw() public onlyOwner {
        (bool hq, ) = payable(owner()).call{value: address(this).balance}("");
        require(hq);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"bytes32","name":"finalOgRootHash","type":"bytes32"},{"internalType":"bytes32","name":"finalRootHash","type":"bytes32"},{"internalType":"string","name":"_NotRevealedUri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"OwnerIndexOutOfBounds","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TokenIndexOutOfBounds","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"UnableDetermineTokenOwner","type":"error"},{"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":"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":[{"internalType":"uint256","name":"chosenAmount","type":"uint256"}],"name":"Mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"chosenAmount","type":"uint256"}],"name":"OGMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"chosenAmount","type":"uint256"}],"name":"PreMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"SaleMaxQuantity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_SaleAddressExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_SaleAddresses","outputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"counter","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_baseURI1","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"flipOgMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPauseMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPreSaleMinting","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":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOgPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPreSalePaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxsupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mintReservedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ogprice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleprice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","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":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setOgPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"updatedOgRootHash","type":"bytes32"}],"name":"setOgRootHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reserve","type":"uint256"}],"name":"setReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"updatedRootHash","type":"bytes32"}],"name":"setRootHash","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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"a","type":"uint256"}],"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":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405261137c6008556101c060095566e6ed27d6668000600a55670138a388a43c0000600b5567016345785d8a0000600c556006600d55600e805462ffffff1916620101011790556012805460ff191690553480156200006057600080fd5b5060405162002c1b38038062002c1b833981016040819052620000839162000296565b604080518082018252600a8152694d6f6e6b436861696e7360b01b6020808301918252835180850190945260048452634d4f4e4b60e01b908401528151919291620000d191600191620001f0565b508051620000e7906002906020840190620001f0565b50505062000104620000fe6200012260201b60201c565b62000126565b60108390556011829055620001198162000178565b505050620003dc565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6007546001600160a01b03163314620001d75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b8051620001ec906013906020840190620001f0565b5050565b828054620001fe9062000389565b90600052602060002090601f0160209004810192826200022257600085556200026d565b82601f106200023d57805160ff19168380011785556200026d565b828001600101855582156200026d579182015b828111156200026d57825182559160200191906001019062000250565b506200027b9291506200027f565b5090565b5b808211156200027b576000815560010162000280565b600080600060608486031215620002ac57600080fd5b835160208086015160408701519295509350906001600160401b0380821115620002d557600080fd5b818701915087601f830112620002ea57600080fd5b815181811115620002ff57620002ff620003c6565b604051601f8201601f19908116603f011681019083821181831017156200032a576200032a620003c6565b816040528281528a868487010111156200034357600080fd5b600093505b8284101562000367578484018601518185018701529285019262000348565b82841115620003795760008684830101525b8096505050505050509250925092565b600181811c908216806200039e57607f821691505b60208210811415620003c057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61282f80620003ec6000396000f3fe6080604052600436106102c95760003560e01c806355f804b311610175578063a035b1fe116100dc578063c87b56dd11610095578063e985e9c51161006f578063e985e9c514610842578063ecd993081461088b578063f2c4ce1e146108a1578063f2fde38b146108c157600080fd5b8063c87b56dd146107f6578063cd3293de14610816578063cfc08dfb1461082c57600080fd5b8063a035b1fe14610755578063a22cb4651461076b578063a475b5dd1461078b578063b187bd26146107a0578063b19df54b146107c0578063b88d4fde146107d657600080fd5b80637d7eee421161012e5780637d7eee42146106635780638164669e1461068357806383af79e7146106e25780638da5cb5b1461070257806391b7f5ed1461072057806395d89b411461074057600080fd5b806355f804b3146105b95780636352211e146105d95780636a9f1a25146105f957806370a082311461060e578063715018a61461062e5780637d5cb4e51461064357600080fd5b806318160ddd116102345780634256dbe3116101ed5780634f6ccce7116101c75780634f6ccce71461054c5780634ffe794b1461056c578063518302271461058c57806353ceffa3146105a657600080fd5b80634256dbe3146104f657806342842e0e146105165780634b6406d11461053657600080fd5b806318160ddd1461044357806323b872dd146104625780632d7eae66146104825780632e280e32146104a25780632f745c59146104c15780633ccfd60b146104e157600080fd5b80630917c4e1116102865780630917c4e11461039c578063095ea7b3146103b15780630b1749b2146103d15780630d6157fb146103eb57806311e0f063146103fe57806316f8a0d11461041357600080fd5b806301ffc9a7146102ce57806304b134161461030357806306fdde031461031a578063078837031461033c578063081812fc1461034f578063081c8c4414610387575b600080fd5b3480156102da57600080fd5b506102ee6102e9366004612410565b6108e1565b60405190151581526020015b60405180910390f35b34801561030f57600080fd5b5061031861094e565b005b34801561032657600080fd5b5061032f61099e565b6040516102fa919061253b565b61031861034a3660046123f7565b610a30565b34801561035b57600080fd5b5061036f61036a3660046123f7565b610b24565b6040516001600160a01b0390911681526020016102fa565b34801561039357600080fd5b5061032f610b6a565b3480156103a857600080fd5b50610318610bf8565b3480156103bd57600080fd5b506103186103cc366004612352565b610c41565b3480156103dd57600080fd5b50600e546102ee9060ff1681565b6103186103f936600461237c565b610ccf565b34801561040a57600080fd5b5061032f610f4d565b34801561041f57600080fd5b506102ee61042e366004612210565b60156020526000908152604090205460ff1681565b34801561044f57600080fd5b506000545b6040519081526020016102fa565b34801561046e57600080fd5b5061031861047d36600461225e565b610f5a565b34801561048e57600080fd5b5061031861049d3660046123f7565b610f65565b3480156104ae57600080fd5b50600e546102ee90610100900460ff1681565b3480156104cd57600080fd5b506104546104dc366004612352565b610f94565b3480156104ed57600080fd5b50610318611069565b34801561050257600080fd5b506103186105113660046123f7565b611104565b34801561052257600080fd5b5061031861053136600461225e565b61117c565b34801561054257600080fd5b5061045460085481565b34801561055857600080fd5b506104546105673660046123f7565b611197565b34801561057857600080fd5b506103186105873660046123f7565b6111be565b34801561059857600080fd5b506012546102ee9060ff1681565b6103186105b436600461237c565b6111ed565b3480156105c557600080fd5b506103186105d436600461244a565b6113ec565b3480156105e557600080fd5b5061036f6105f43660046123f7565b61142d565b34801561060557600080fd5b5061031861143f565b34801561061a57600080fd5b50610454610629366004612210565b61147d565b34801561063a57600080fd5b506103186114cb565b34801561064f57600080fd5b5061031861065e3660046123f7565b611501565b34801561066f57600080fd5b5061031861067e3660046123f7565b6115ab565b34801561068f57600080fd5b506106c361069e366004612210565b601460205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152016102fa565b3480156106ee57600080fd5b506103186106fd3660046123f7565b6115da565b34801561070e57600080fd5b506007546001600160a01b031661036f565b34801561072c57600080fd5b5061031861073b3660046123f7565b611609565b34801561074c57600080fd5b5061032f611638565b34801561076157600080fd5b50610454600c5481565b34801561077757600080fd5b50610318610786366004612316565b611647565b34801561079757600080fd5b506103186116dd565b3480156107ac57600080fd5b50600e546102ee9062010000900460ff1681565b3480156107cc57600080fd5b50610454600b5481565b3480156107e257600080fd5b506103186107f136600461229a565b611716565b34801561080257600080fd5b5061032f6108113660046123f7565b611750565b34801561082257600080fd5b5061045460095481565b34801561083857600080fd5b50610454600d5481565b34801561084e57600080fd5b506102ee61085d36600461222b565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561089757600080fd5b50610454600a5481565b3480156108ad57600080fd5b506103186108bc36600461244a565b6118b9565b3480156108cd57600080fd5b506103186108dc366004612210565b6118f6565b60006001600160e01b031982166380ac58cd60e01b148061091257506001600160e01b03198216635b5e139f60e01b145b8061092d57506001600160e01b0319821663780e9d6360e01b145b8061094857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6007546001600160a01b031633146109815760405162461bcd60e51b8152600401610978906125e8565b60405180910390fd5b600e805461ff001981166101009182900460ff1615909102179055565b6060600180546109ad9061270b565b80601f01602080910402602001604051908101604052809291908181526020018280546109d99061270b565b8015610a265780601f106109fb57610100808354040283529160200191610a26565b820191906000526020600020905b815481529060010190602001808311610a0957829003601f168201915b5050505050905090565b600e5462010000900460ff1615610a595760405162461bcd60e51b81526004016109789061261d565b60008111610a795760405162461bcd60e51b81526004016109789061254e565b600954600854610a8991906126c8565b81610a9360005490565b610a9d919061267d565b1115610abb5760405162461bcd60e51b815260040161097890612646565b3481600c54610aca91906126a9565b14610b175760405162461bcd60e51b815260206004820152601d60248201527f53656e742045746865722056616c756520497320496e636f72726563740000006044820152606401610978565b610b21338261198e565b50565b6000610b31826000541190565b610b4e576040516333d1c03960e21b815260040160405180910390fd5b506000908152600560205260409020546001600160a01b031690565b60138054610b779061270b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba39061270b565b8015610bf05780601f10610bc557610100808354040283529160200191610bf0565b820191906000526020600020905b815481529060010190602001808311610bd357829003601f168201915b505050505081565b6007546001600160a01b03163314610c225760405162461bcd60e51b8152600401610978906125e8565b600e805462ff0000198116620100009182900460ff1615909102179055565b6000610c4c8261142d565b9050806001600160a01b0316836001600160a01b03161415610c815760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b03821614801590610ca15750610c9f813361085d565b155b15610cbf576040516367d9dca160e11b815260040160405180910390fd5b610cca8383836119a8565b505050565b3360009081526015602052604090205460ff16610d4057604080518082018252338082526000602080840182815292825260148152848220935184546001600160a01b0319166001600160a01b039091161784559151600193840155601590915291909120805460ff191690911790555b600e5460ff1615610d635760405162461bcd60e51b81526004016109789061261d565b60008111610d835760405162461bcd60e51b81526004016109789061254e565b600d5433600090815260146020526040902060010154610da490839061267d565b1115610dc25760405162461bcd60e51b8152600401610978906125a1565b600954600854610dd291906126c8565b81610ddc60005490565b610de6919061267d565b1115610e045760405162461bcd60e51b815260040161097890612646565b6040516bffffffffffffffffffffffff193360601b166020820152600090603401604051602081830303815290604052805190602001209050610e7e848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506010549150849050611a04565b610eba5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210283937b7b360991b6044820152606401610978565b3482600a54610ec991906126a9565b14610f165760405162461bcd60e51b815260206004820152601d60248201527f53656e742045746865722056616c756520497320496e636f72726563740000006044820152606401610978565b610f20338361198e565b3360009081526014602052604081206001018054849290610f4290849061267d565b909155505050505050565b600f8054610b779061270b565b610cca838383611a1a565b6007546001600160a01b03163314610f8f5760405162461bcd60e51b8152600401610978906125e8565b601155565b6000610f9f8361147d565b8210610fbe576040516306ed618760e11b815260040160405180910390fd5b600080549080805b83811015611057576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff16918301919091521561101957805192505b876001600160a01b0316836001600160a01b0316141561104e57868414156110475750935061094892505050565b6001909301925b50600101610fc6565b50611060612775565b50505092915050565b6007546001600160a01b031633146110935760405162461bcd60e51b8152600401610978906125e8565b60006110a76007546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d80600081146110f1576040519150601f19603f3d011682016040523d82523d6000602084013e6110f6565b606091505b5050905080610b2157600080fd5b6007546001600160a01b0316331461112e5760405162461bcd60e51b8152600401610978906125e8565b6008548111156111775760405162461bcd60e51b8152602060048201526014602482015273746865207175616e74697479206578636565647360601b6044820152606401610978565b600955565b610cca83838360405180602001604052806000815250611716565b6000805482106111ba576040516329c8c00760e21b815260040160405180910390fd5b5090565b6007546001600160a01b031633146111e85760405162461bcd60e51b8152600401610978906125e8565b601055565b3360009081526015602052604090205460ff1661125e57604080518082018252338082526000602080840182815292825260148152848220935184546001600160a01b0319166001600160a01b039091161784559151600193840155601590915291909120805460ff191690911790555b600e54610100900460ff16156112865760405162461bcd60e51b81526004016109789061261d565b600081116112a65760405162461bcd60e51b81526004016109789061254e565b600d54336000908152601460205260409020600101546112c790839061267d565b11156112e55760405162461bcd60e51b8152600401610978906125a1565b6009546008546112f591906126c8565b816112ff60005490565b611309919061267d565b11156113275760405162461bcd60e51b815260040161097890612646565b6040516bffffffffffffffffffffffff193360601b1660208201526000906034016040516020818303038152906040528051906020012090506113a1848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506011549150849050611a04565b6113dd5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210283937b7b360991b6044820152606401610978565b3482600b54610ec991906126a9565b6007546001600160a01b031633146114165760405162461bcd60e51b8152600401610978906125e8565b805161142990600f9060208401906120ee565b5050565b600061143882611c39565b5192915050565b6007546001600160a01b031633146114695760405162461bcd60e51b8152600401610978906125e8565b600e805460ff19811660ff90911615179055565b60006001600160a01b0382166114a6576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600460205260409020546001600160801b031690565b6007546001600160a01b031633146114f55760405162461bcd60e51b8152600401610978906125e8565b6114ff6000611cce565b565b6007546001600160a01b0316331461152b5760405162461bcd60e51b8152600401610978906125e8565b6009548111156115895760405162461bcd60e51b815260206004820152602360248201527f416c6c207265736572766520746f6b656e7320686176652062656e65206d696e6044820152621d195960ea1b6064820152608401610978565b806009600082825461159b91906126c8565b90915550610b219050338261198e565b6007546001600160a01b031633146115d55760405162461bcd60e51b8152600401610978906125e8565b600b55565b6007546001600160a01b031633146116045760405162461bcd60e51b8152600401610978906125e8565b600a55565b6007546001600160a01b031633146116335760405162461bcd60e51b8152600401610978906125e8565b600c55565b6060600280546109ad9061270b565b6001600160a01b0382163314156116715760405163b06307db60e01b815260040160405180910390fd5b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6007546001600160a01b031633146117075760405162461bcd60e51b8152600401610978906125e8565b6012805460ff19166001179055565b611721848484611a1a565b61172d84848484611d20565b61174a576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b606061175d826000541190565b6117c15760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610978565b60125460ff1661185d57601380546117d89061270b565b80601f01602080910402602001604051908101604052809291908181526020018280546118049061270b565b80156118515780601f1061182657610100808354040283529160200191611851565b820191906000526020600020905b81548152906001019060200180831161183457829003601f168201915b50505050509050919050565b6000611867611e2f565b9050600081511161188757604051806020016040528060008152506118b2565b8061189184611e3e565b6040516020016118a29291906124bf565b6040516020818303038152906040525b9392505050565b6007546001600160a01b031633146118e35760405162461bcd60e51b8152600401610978906125e8565b80516114299060139060208401906120ee565b6007546001600160a01b031633146119205760405162461bcd60e51b8152600401610978906125e8565b6001600160a01b0381166119855760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610978565b610b2181611cce565b611429828260405180602001604052806000815250611f3c565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600082611a118584611f49565b14949350505050565b6000611a2582611c39565b80519091506000906001600160a01b0316336001600160a01b03161480611a5c575033611a5184610b24565b6001600160a01b0316145b80611a6e57508151611a6e903361085d565b905080611a8e57604051632ce44b5f60e11b815260040160405180910390fd5b846001600160a01b031682600001516001600160a01b031614611ac35760405162a1148160e81b815260040160405180910390fd5b6001600160a01b038416611aea57604051633a954ecd60e21b815260040160405180910390fd5b611afa60008484600001516119a8565b6001600160a01b03858116600090815260046020908152604080832080546001600160801b03198082166001600160801b03928316600019018316179092558986168086528386208054938416938316600190810190931693909317909255888552600390935281842080546001600160e01b031916909117600160a01b4267ffffffffffffffff1602179055908601808352912054909116611bef57611ba2816000541190565b15611bef578251600082815260036020908152604090912080549186015167ffffffffffffffff16600160a01b026001600160e01b03199092166001600160a01b03909316929092171790555b5082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b5050505050565b6040805180820190915260008082526020820152611c58826000541190565b611c7557604051636f96cda160e11b815260040160405180910390fd5b815b6000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215611cc4579392505050565b5060001901611c77565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001600160a01b0384163b15611e2357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611d649033908990889088906004016124fe565b602060405180830381600087803b158015611d7e57600080fd5b505af1925050508015611dae575060408051601f3d908101601f19168201909252611dab9181019061242d565b60015b611e09573d808015611ddc576040519150601f19603f3d011682016040523d82523d6000602084013e611de1565b606091505b508051611e01576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611e27565b5060015b949350505050565b6060600f80546109ad9061270b565b606081611e625750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611e8c5780611e7681612746565b9150611e859050600a83612695565b9150611e66565b60008167ffffffffffffffff811115611ea757611ea76127cd565b6040519080825280601f01601f191660200182016040528015611ed1576020820181803683370190505b5090505b8415611e2757611ee66001836126c8565b9150611ef3600a86612761565b611efe90603061267d565b60f81b818381518110611f1357611f136127b7565b60200101906001600160f81b031916908160001a905350611f35600a86612695565b9450611ed5565b610cca8383836001611fbd565b600081815b8451811015611fb5576000858281518110611f6b57611f6b6127b7565b60200260200101519050808311611f915760008381526020829052604090209250611fa2565b600081815260208490526040902092505b5080611fad81612746565b915050611f4e565b509392505050565b6000546001600160a01b038516611fe657604051622e076360e81b815260040160405180910390fd5b6001600160a01b03851660008181526004602090815260408083208054600160801b6001600160801b031982166001600160801b039283168c01831690811782900483168c01909216021790558483526003909152812080546001600160e01b031916909217600160a01b4267ffffffffffffffff16021790915581905b858110156120e55760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a48380156120bb57506120b96000888488611d20565b155b156120d9576040516368d2bf6b60e11b815260040160405180910390fd5b60019182019101612064565b50600055611c32565b8280546120fa9061270b565b90600052602060002090601f01602090048101928261211c5760008555612162565b82601f1061213557805160ff1916838001178555612162565b82800160010185558215612162579182015b82811115612162578251825591602001919060010190612147565b506111ba9291505b808211156111ba576000815560010161216a565b600067ffffffffffffffff80841115612199576121996127cd565b604051601f8501601f19908116603f011681019082821181831017156121c1576121c16127cd565b816040528093508581528686860111156121da57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461220b57600080fd5b919050565b60006020828403121561222257600080fd5b6118b2826121f4565b6000806040838503121561223e57600080fd5b612247836121f4565b9150612255602084016121f4565b90509250929050565b60008060006060848603121561227357600080fd5b61227c846121f4565b925061228a602085016121f4565b9150604084013590509250925092565b600080600080608085870312156122b057600080fd5b6122b9856121f4565b93506122c7602086016121f4565b925060408501359150606085013567ffffffffffffffff8111156122ea57600080fd5b8501601f810187136122fb57600080fd5b61230a8782356020840161217e565b91505092959194509250565b6000806040838503121561232957600080fd5b612332836121f4565b91506020830135801515811461234757600080fd5b809150509250929050565b6000806040838503121561236557600080fd5b61236e836121f4565b946020939093013593505050565b60008060006040848603121561239157600080fd5b833567ffffffffffffffff808211156123a957600080fd5b818601915086601f8301126123bd57600080fd5b8135818111156123cc57600080fd5b8760208260051b85010111156123e157600080fd5b6020928301989097509590910135949350505050565b60006020828403121561240957600080fd5b5035919050565b60006020828403121561242257600080fd5b81356118b2816127e3565b60006020828403121561243f57600080fd5b81516118b2816127e3565b60006020828403121561245c57600080fd5b813567ffffffffffffffff81111561247357600080fd5b8201601f8101841361248457600080fd5b611e278482356020840161217e565b600081518084526124ab8160208601602086016126df565b601f01601f19169290920160200192915050565b600083516124d18184602088016126df565b8351908301906124e58183602088016126df565b64173539b7b760d91b9101908152600501949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061253190830184612493565b9695505050505050565b6020815260006118b26020830184612493565b60208082526033908201527f4e756d626572204f6620546f6b656e732043616e204e6f74204265204c6573736040820152720205468616e204f7220457175616c20546f203606c1b606082015260800190565b60208082526027908201527f5175616e74697479204d757374204265204c6573736572205468616e204d617860408201526620537570706c7960c81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600f908201526e7475726e206f6e206d696e74696e6760881b604082015260600190565b6020808252601b908201527f616c6c20746f6b656e732068617665206265656e206d696e7465640000000000604082015260600190565b600082198211156126905761269061278b565b500190565b6000826126a4576126a46127a1565b500490565b60008160001904831182151516156126c3576126c361278b565b500290565b6000828210156126da576126da61278b565b500390565b60005b838110156126fa5781810151838201526020016126e2565b8381111561174a5750506000910152565b600181811c9082168061271f57607f821691505b6020821081141561274057634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561275a5761275a61278b565b5060010190565b600082612770576127706127a1565b500690565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610b2157600080fdfea2646970667358221220267a9f4ed967e5ac7b244dfe9baaba1fcd77d8a0c8a217d6fb0ff0da7b88d9ad64736f6c634300080700335ee8fd67fccdb16f561cf3e9ab588e142be5e638e7ec508a15cb04a5100cb4b55e2ad42dfb157b4aa24bee438a670ed2f4e60b0caa8fb5e3f38c9f8868853a0d0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f6d6f6e6b2e6d7970696e6174612e636c6f75642f697066732f516d4e635646724241625a735152395757384d34476677556d527664556963775577315057646e69536f544d36742f00000000000000000000000000000000

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

5ee8fd67fccdb16f561cf3e9ab588e142be5e638e7ec508a15cb04a5100cb4b55e2ad42dfb157b4aa24bee438a670ed2f4e60b0caa8fb5e3f38c9f8868853a0d0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f6d6f6e6b2e6d7970696e6174612e636c6f75642f697066732f516d4e635646724241625a735152395757384d34476677556d527664556963775577315057646e69536f544d36742f00000000000000000000000000000000

-----Decoded View---------------
Arg [0] : finalOgRootHash (bytes32): 0x5ee8fd67fccdb16f561cf3e9ab588e142be5e638e7ec508a15cb04a5100cb4b5
Arg [1] : finalRootHash (bytes32): 0x5e2ad42dfb157b4aa24bee438a670ed2f4e60b0caa8fb5e3f38c9f8868853a0d
Arg [2] : _NotRevealedUri (string): https://monk.mypinata.cloud/ipfs/QmNcVFrBAbZsQR9WW8M4GfwUmRvdUicwUw1PWdniSoTM6t/

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 5ee8fd67fccdb16f561cf3e9ab588e142be5e638e7ec508a15cb04a5100cb4b5
Arg [1] : 5e2ad42dfb157b4aa24bee438a670ed2f4e60b0caa8fb5e3f38c9f8868853a0d
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000050
Arg [4] : 68747470733a2f2f6d6f6e6b2e6d7970696e6174612e636c6f75642f69706673
Arg [5] : 2f516d4e635646724241625a735152395757384d34476677556d527664556963
Arg [6] : 775577315057646e69536f544d36742f00000000000000000000000000000000


Deployed ByteCode Sourcemap

34874:7043:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17747:422;;;;;;;;;;-1:-1:-1;17747:422:0;;;;;:::i;:::-;;:::i;:::-;;;7415:14:1;;7408:22;7390:41;;7378:2;7363:18;17747:422:0;;;;;;;;36121:100;;;;;;;;;;;;;:::i;:::-;;19645;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;40430:555::-;;;;;;:::i;:::-;;:::i;21236:245::-;;;;;;;;;;-1:-1:-1;21236:245:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6434:32:1;;;6416:51;;6404:2;6389:18;21236:245:0;6270:203:1;35782:28:0;;;;;;;;;;;;;:::i;36229:84::-;;;;;;;;;;;;;:::i;20812:358::-;;;;;;;;;;-1:-1:-1;20812:358:0;;;;;:::i;:::-;;:::i;35509:29::-;;;;;;;;;;-1:-1:-1;35509:29:0;;;;;;;;37781:1312;;;;;;:::i;:::-;;:::i;35620:23::-;;;;;;;;;;;;;:::i;35970:49::-;;;;;;;;;;-1:-1:-1;35970:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15930:101;;;;;;;;;;-1:-1:-1;15983:7:0;16010:13;15930:101;;;11977:25:1;;;11965:2;11950:18;15930:101:0;11831:177:1;22207:170:0;;;;;;;;;;-1:-1:-1;22207:170:0;;;;;:::i;:::-;;:::i;36445:108::-;;;;;;;;;;-1:-1:-1;36445:108:0;;;;;:::i;:::-;;:::i;35545:34::-;;;;;;;;;;-1:-1:-1;35545:34:0;;;;;;;;;;;16625:1050;;;;;;;;;;-1:-1:-1;16625:1050:0;;;;;:::i;:::-;;:::i;41767:147::-;;;;;;;;;;;;;:::i;36793:157::-;;;;;;;;;;-1:-1:-1;36793:157:0;;;;;:::i;:::-;;:::i;22448:185::-;;;;;;;;;;-1:-1:-1;22448:185:0;;;;;:::i;:::-;;:::i;35263:31::-;;;;;;;;;;;;;;;;16108:217;;;;;;;;;;-1:-1:-1;16108:217:0;;;;;:::i;:::-;;:::i;36321:116::-;;;;;;;;;;-1:-1:-1;36321:116:0;;;;;:::i;:::-;;:::i;35747:28::-;;;;;;;;;;-1:-1:-1;35747:28:0;;;;;;;;39101:1321;;;;;;:::i;:::-;;:::i;36561:106::-;;;;;;;;;;-1:-1:-1;36561:106:0;;;;;:::i;:::-;;:::i;19454:124::-;;;;;;;;;;-1:-1:-1;19454:124:0;;;;;:::i;:::-;;:::i;36028:85::-;;;;;;;;;;;;;:::i;18233:206::-;;;;;;;;;;-1:-1:-1;18233:206:0;;;;;:::i;:::-;;:::i;32130:103::-;;;;;;;;;;;;;:::i;37552:221::-;;;;;;;;;;-1:-1:-1;37552:221:0;;;;;:::i;:::-;;:::i;37047:96::-;;;;;;;;;;-1:-1:-1;37047:96:0;;;;;:::i;:::-;;:::i;35910:53::-;;;;;;;;;;-1:-1:-1;35910:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35910:53:0;;;;;;;;;;-1:-1:-1;;;;;7163:32:1;;;7145:51;;7227:2;7212:18;;7205:34;;;;7118:18;35910:53:0;6971:274:1;36956:86:0;;;;;;;;;;-1:-1:-1;36956:86:0;;;;;:::i;:::-;;:::i;31479:87::-;;;;;;;;;;-1:-1:-1;31552:6:0;;-1:-1:-1;;;;;31552:6:0;31479:87;;37147:82;;;;;;;;;;-1:-1:-1;37147:82:0;;;;;:::i;:::-;;:::i;19814:104::-;;;;;;;;;;;;;:::i;35427:32::-;;;;;;;;;;;;;;;;21553:302;;;;;;;;;;-1:-1:-1;21553:302:0;;;;;:::i;:::-;;:::i;37475:69::-;;;;;;;;;;;;;:::i;35586:27::-;;;;;;;;;;-1:-1:-1;35586:27:0;;;;;;;;;;;35379:41;;;;;;;;;;;;;;;;22704:321;;;;;;;;;;-1:-1:-1;22704:321:0;;;;;:::i;:::-;;:::i;41040:719::-;;;;;;;;;;-1:-1:-1;41040:719:0;;;;;:::i;:::-;;:::i;35301:28::-;;;;;;;;;;;;;;;;35466:34;;;;;;;;;;;;;;;;21926:214;;;;;;;;;;-1:-1:-1;21926:214:0;;;;;:::i;:::-;-1:-1:-1;;;;;22097:25:0;;;22068:4;22097:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;21926:214;35336:36;;;;;;;;;;;;;;;;37276:126;;;;;;;;;;-1:-1:-1;37276:126:0;;;;;:::i;:::-;;:::i;32388:238::-;;;;;;;;;;-1:-1:-1;32388:238:0;;;;;:::i;:::-;;:::i;17747:422::-;17894:4;-1:-1:-1;;;;;;17936:40:0;;-1:-1:-1;;;17936:40:0;;:105;;-1:-1:-1;;;;;;;17993:48:0;;-1:-1:-1;;;17993:48:0;17936:105;:172;;;-1:-1:-1;;;;;;;18058:50:0;;-1:-1:-1;;;18058:50:0;17936:172;:225;;;-1:-1:-1;;;;;;;;;;6408:40:0;;;18125:36;17916:245;17747:422;-1:-1:-1;;17747:422:0:o;36121:100::-;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;;;;;;;;;36198:15:::1;::::0;;-1:-1:-1;;36179:34:0;::::1;36198:15;::::0;;;::::1;;;36197:16;36179:34:::0;;::::1;;::::0;;36121:100::o;19645:::-;19699:13;19732:5;19725:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19645:100;:::o;40430:555::-;40500:8;;;;;;;:17;40492:45;;;;-1:-1:-1;;;40492:45:0;;;;;;;:::i;:::-;40585:1;40570:12;:16;40548:117;;;;-1:-1:-1;;;40548:117:0;;;;;;;:::i;:::-;40742:7;;40730:9;;:19;;;;:::i;:::-;40714:12;40698:13;15983:7;16010:13;;15930:101;40698:13;:28;;;;:::i;:::-;:51;;40676:128;;;;-1:-1:-1;;;40676:128:0;;;;;;;:::i;:::-;40863:9;40847:12;40839:5;;:20;;;;:::i;:::-;:33;40817:112;;;;-1:-1:-1;;;40817:112:0;;11675:2:1;40817:112:0;;;11657:21:1;11714:2;11694:18;;;11687:30;11753:31;11733:18;;;11726:59;11802:18;;40817:112:0;11473:353:1;40817:112:0;40942:35;40952:10;40964:12;40942:9;:35::i;:::-;40430:555;:::o;21236:245::-;21340:7;21370:16;21378:7;23337:4;23371:13;-1:-1:-1;23361:23:0;23280:112;21370:16;21365:64;;21395:34;;-1:-1:-1;;;21395:34:0;;;;;;;;;;;21365:64;-1:-1:-1;21449:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;21449:24:0;;21236:245::o;35782:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;36229:84::-;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;36297:8:::1;::::0;;-1:-1:-1;;36285:20:0;::::1;36297:8:::0;;;;::::1;;;36296:9;36285:20:::0;;::::1;;::::0;;36229:84::o;20812:358::-;20885:13;20901:24;20917:7;20901:15;:24::i;:::-;20885:40;;20946:5;-1:-1:-1;;;;;20940:11:0;:2;-1:-1:-1;;;;;20940:11:0;;20936:48;;;20960:24;;-1:-1:-1;;;20960:24:0;;;;;;;;;;;20936:48;1815:10;-1:-1:-1;;;;;21001:21:0;;;;;;:63;;-1:-1:-1;21027:37:0;21044:5;1815:10;21926:214;:::i;21027:37::-;21026:38;21001:63;20997:124;;;21086:35;;-1:-1:-1;;;21086:35:0;;;;;;;;;;;20997:124;21134:28;21143:2;21147:7;21156:5;21134:8;:28::i;:::-;20874:296;20812:358;;:::o;37781:1312::-;37923:10;37905:29;;;;:17;:29;;;;;;;;37901:250;;37989:99;;;;;;;;38033:10;37989:99;;;-1:-1:-1;37989:99:0;;;;;;;37960:26;;;:14;:26;;;;;:128;;;;-1:-1:-1;;;;;;37960:128:0;-1:-1:-1;;;;;37960:128:0;;;;;;;;-1:-1:-1;37960:128:0;;;;38103:17;:29;;;;;;;:36;;-1:-1:-1;;38103:36:0;;;;;;37901:250;38169:10;;;;:19;38161:47;;;;-1:-1:-1;;;38161:47:0;;;;;;;:::i;:::-;38256:1;38241:12;:16;38219:117;;;;-1:-1:-1;;;38219:117:0;;;;;;;:::i;:::-;38439:15;;38384:10;38369:26;;;;:14;:26;;;;;:34;;;:49;;38406:12;;38369:49;:::i;:::-;:85;;38347:174;;;;-1:-1:-1;;;38347:174:0;;;;;;;:::i;:::-;38598:7;;38586:9;;:19;;;;:::i;:::-;38570:12;38554:13;15983:7;16010:13;;15930:101;38554:13;:28;;;;:::i;:::-;:51;;38532:128;;;;-1:-1:-1;;;38532:128:0;;;;;;;:::i;:::-;38696:28;;-1:-1:-1;;38713:10:0;5333:2:1;5329:15;5325:53;38696:28:0;;;5313:66:1;38671:12:0;;5395::1;;38696:28:0;;;;;;;;;;;;38686:39;;;;;;38671:54;;38758:50;38777:12;;38758:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;38791:10:0;;;-1:-1:-1;38803:4:0;;-1:-1:-1;38758:18:0;:50::i;:::-;38736:113;;;;-1:-1:-1;;;38736:113:0;;11333:2:1;38736:113:0;;;11315:21:1;11372:2;11352:18;;;11345:30;-1:-1:-1;;;11391:18:1;;;11384:43;11444:18;;38736:113:0;11131:337:1;38736:113:0;38910:9;38894:12;38884:7;;:22;;;;:::i;:::-;:35;38862:114;;;;-1:-1:-1;;;38862:114:0;;11675:2:1;38862:114:0;;;11657:21:1;11714:2;11694:18;;;11687:30;11753:31;11733:18;;;11726:59;11802:18;;38862:114:0;11473:353:1;38862:114:0;38989:35;38999:10;39011:12;38989:9;:35::i;:::-;39050:10;39035:26;;;;:14;:26;;;;;:34;;:50;;39073:12;;39035:26;:50;;39073:12;;39035:50;:::i;:::-;;;;-1:-1:-1;;;;;;37781:1312:0:o;35620:23::-;;;;;;;:::i;22207:170::-;22341:28;22351:4;22357:2;22361:7;22341:9;:28::i;36445:108::-;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;36519:8:::1;:26:::0;36445:108::o;16625:1050::-;16750:9;16790:16;16800:5;16790:9;:16::i;:::-;16781:5;:25;16777:61;;16815:23;;-1:-1:-1;;;16815:23:0;;;;;;;;;;;16777:61;16849:22;16010:13;;;16849:22;;17112:466;17132:14;17128:1;:18;17112:466;;;17172:31;17206:14;;;:11;:14;;;;;;;;;17172:48;;;;;;;;;-1:-1:-1;;;;;17172:48:0;;;;;-1:-1:-1;;;17172:48:0;;;;;;;;;;;;17243:28;17239:111;;17316:14;;;-1:-1:-1;17239:111:0;17393:5;-1:-1:-1;;;;;17372:26:0;:17;-1:-1:-1;;;;;17372:26:0;;17368:195;;;17442:5;17427:11;:20;17423:85;;;-1:-1:-1;17483:1:0;-1:-1:-1;17476:8:0;;-1:-1:-1;;;17476:8:0;17423:85;17530:13;;;;;17368:195;-1:-1:-1;17148:3:0;;17112:466;;;-1:-1:-1;17654:13:0;;:::i;:::-;16766:909;;;16625:1050;;;;:::o;41767:147::-;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;41816:7:::1;41837;31552:6:::0;;-1:-1:-1;;;;;31552:6:0;;31479:87;41837:7:::1;-1:-1:-1::0;;;;;41829:21:0::1;41858;41829:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41815:69;;;41903:2;41895:11;;;::::0;::::1;36793:157:::0;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;36879:9:::1;;36867:8;:21;;36859:54;;;::::0;-1:-1:-1;;;36859:54:0;;9103:2:1;36859:54:0::1;::::0;::::1;9085:21:1::0;9142:2;9122:18;;;9115:30;-1:-1:-1;;;9161:18:1;;;9154:50;9221:18;;36859:54:0::1;8901:344:1::0;36859:54:0::1;36924:7;:18:::0;36793:157::o;22448:185::-;22586:39;22603:4;22609:2;22613:7;22586:39;;;;;;;;;;;;:16;:39::i;16108:217::-;16211:7;16010:13;;16240:5;:22;16236:58;;16271:23;;-1:-1:-1;;;16271:23:0;;;;;;;;;;;16236:58;-1:-1:-1;16312:5:0;16108:217::o;36321:116::-;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;36399:10:::1;:30:::0;36321:116::o;39101:1321::-;39244:10;39226:29;;;;:17;:29;;;;;;;;39222:250;;39310:99;;;;;;;;39354:10;39310:99;;;-1:-1:-1;39310:99:0;;;;;;;39281:26;;;:14;:26;;;;;:128;;;;-1:-1:-1;;;;;;39281:128:0;-1:-1:-1;;;;;39281:128:0;;;;;;;;-1:-1:-1;39281:128:0;;;;39424:17;:29;;;;;;;:36;;-1:-1:-1;;39424:36:0;;;;;;39222:250;39490:15;;;;;;;:24;39482:52;;;;-1:-1:-1;;;39482:52:0;;;;;;;:::i;:::-;39582:1;39567:12;:16;39545:117;;;;-1:-1:-1;;;39545:117:0;;;;;;;:::i;:::-;39765:15;;39710:10;39695:26;;;;:14;:26;;;;;:34;;;:49;;39732:12;;39695:49;:::i;:::-;:85;;39673:174;;;;-1:-1:-1;;;39673:174:0;;;;;;;:::i;:::-;39924:7;;39912:9;;:19;;;;:::i;:::-;39896:12;39880:13;15983:7;16010:13;;15930:101;39880:13;:28;;;;:::i;:::-;:51;;39858:128;;;;-1:-1:-1;;;39858:128:0;;;;;;;:::i;:::-;40022:28;;-1:-1:-1;;40039:10:0;5333:2:1;5329:15;5325:53;40022:28:0;;;5313:66:1;39997:12:0;;5395::1;;40022:28:0;;;;;;;;;;;;40012:39;;;;;;39997:54;;40084:48;40103:12;;40084:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;40117:8:0;;;-1:-1:-1;40127:4:0;;-1:-1:-1;40084:18:0;:48::i;:::-;40062:111;;;;-1:-1:-1;;;40062:111:0;;11333:2:1;40062:111:0;;;11315:21:1;11372:2;11352:18;;;11345:30;-1:-1:-1;;;11391:18:1;;;11384:43;11444:18;;40062:111:0;11131:337:1;40062:111:0;40239:9;40223:12;40208;;:27;;;;:::i;36561:106::-;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;36636:23;;::::1;::::0;:9:::1;::::0;:23:::1;::::0;::::1;::::0;::::1;:::i;:::-;;36561:106:::0;:::o;19454:124::-;19518:7;19545:20;19557:7;19545:11;:20::i;:::-;:25;;19454:124;-1:-1:-1;;19454:124:0:o;36028:85::-;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;36095:10:::1;::::0;;-1:-1:-1;;36081:24:0;::::1;36095:10;::::0;;::::1;36094:11;36081:24;::::0;;36028:85::o;18233:206::-;18297:7;-1:-1:-1;;;;;18321:19:0;;18317:60;;18349:28;;-1:-1:-1;;;18349:28:0;;;;;;;;;;;18317:60;-1:-1:-1;;;;;;18403:19:0;;;;;:12;:19;;;;;:27;-1:-1:-1;;;;;18403:27:0;;18233:206::o;32130:103::-;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;32195:30:::1;32222:1;32195:18;:30::i;:::-;32130:103::o:0;37552:221::-;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;37646:7:::1;;37634:8;:19;;37626:67;;;::::0;-1:-1:-1;;;37626:67:0;;10229:2:1;37626:67:0::1;::::0;::::1;10211:21:1::0;10268:2;10248:18;;;10241:30;10307:34;10287:18;;;10280:62;-1:-1:-1;;;10358:18:1;;;10351:33;10401:19;;37626:67:0::1;10027:399:1::0;37626:67:0::1;37715:8;37704:7;;:19;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;37734:31:0::1;::::0;-1:-1:-1;37744:10:0::1;37756:8:::0;37734:9:::1;:31::i;37047:96::-:0;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;37114:12:::1;:23:::0;37047:96::o;36956:86::-;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;37018:7:::1;:18:::0;36956:86::o;37147:82::-;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;37207:5:::1;:16:::0;37147:82::o;19814:104::-;19870:13;19903:7;19896:14;;;;;:::i;21553:302::-;-1:-1:-1;;;;;21667:24:0;;1815:10;21667:24;21663:54;;;21700:17;;-1:-1:-1;;;21700:17:0;;;;;;;;;;;21663:54;1815:10;21730:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;21730:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;21730:53:0;;;;;;;;;;21799:48;;7390:41:1;;;21730:42:0;;1815:10;21799:48;;7363:18:1;21799:48:0;;;;;;;21553:302;;:::o;37475:69::-;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;37521:8:::1;:15:::0;;-1:-1:-1;;37521:15:0::1;37532:4;37521:15;::::0;;37475:69::o;22704:321::-;22863:28;22873:4;22879:2;22883:7;22863:9;:28::i;:::-;22907:48;22930:4;22936:2;22940:7;22949:5;22907:22;:48::i;:::-;22902:115;;22977:40;;-1:-1:-1;;;22977:40:0;;;;;;;;;;;22902:115;22704:321;;;;:::o;41040:719::-;41158:13;41211:16;41219:7;23337:4;23371:13;-1:-1:-1;23361:23:0;23280:112;41211:16;41189:113;;;;-1:-1:-1;;;41189:113:0;;9813:2:1;41189:113:0;;;9795:21:1;9852:2;9832:18;;;9825:30;9891:34;9871:18;;;9864:62;-1:-1:-1;;;9942:18:1;;;9935:45;9997:19;;41189:113:0;9611:411:1;41189:113:0;41319:8;;;;41315:71;;41360:14;41353:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41040:719;;;:::o;41315:71::-;41398:28;41429:10;:8;:10::i;:::-;41398:41;;41501:1;41476:14;41470:28;:32;:281;;;;;;;;;;;;;;;;;41594:14;41635:18;:7;:16;:18::i;:::-;41551:159;;;;;;;;;:::i;:::-;;;;;;;;;;;;;41470:281;41450:301;41040:719;-1:-1:-1;;;41040:719:0:o;37276:126::-;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;37362:32;;::::1;::::0;:14:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;32388:238::-:0;31552:6;;-1:-1:-1;;;;;31552:6:0;1815:10;31699:23;31691:68;;;;-1:-1:-1;;;31691:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32491:22:0;::::1;32469:110;;;::::0;-1:-1:-1;;;32469:110:0;;7868:2:1;32469:110:0::1;::::0;::::1;7850:21:1::0;7907:2;7887:18;;;7880:30;7946:34;7926:18;;;7919:62;-1:-1:-1;;;7997:18:1;;;7990:36;8043:19;;32469:110:0::1;7666:402:1::0;32469:110:0::1;32590:28;32609:8;32590:18;:28::i;23400:104::-:0;23469:27;23479:2;23483:8;23469:27;;;;;;;;;;;;:9;:27::i;28138:196::-;28253:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;28253:29:0;-1:-1:-1;;;;;28253:29:0;;;;;;;;;28298:28;;28253:24;;28298:28;;;;;;;28138:196;;;:::o;33345:190::-;33470:4;33523;33494:25;33507:5;33514:4;33494:12;:25::i;:::-;:33;;33345:190;-1:-1:-1;;;;33345:190:0:o;26029:1991::-;26144:35;26182:20;26194:7;26182:11;:20::i;:::-;26257:18;;26144:58;;-1:-1:-1;26215:22:0;;-1:-1:-1;;;;;26241:34:0;1815:10;-1:-1:-1;;;;;26241:34:0;;:87;;;-1:-1:-1;1815:10:0;26292:20;26304:7;26292:11;:20::i;:::-;-1:-1:-1;;;;;26292:36:0;;26241:87;:154;;;-1:-1:-1;26362:18:0;;26345:50;;1815:10;21926:214;:::i;26345:50::-;26215:181;;26414:17;26409:66;;26440:35;;-1:-1:-1;;;26440:35:0;;;;;;;;;;;26409:66;26512:4;-1:-1:-1;;;;;26490:26:0;:13;:18;;;-1:-1:-1;;;;;26490:26:0;;26486:67;;26525:28;;-1:-1:-1;;;26525:28:0;;;;;;;;;;;26486:67;-1:-1:-1;;;;;26568:16:0;;26564:52;;26593:23;;-1:-1:-1;;;26593:23:0;;;;;;;;;;;26564:52;26740:49;26757:1;26761:7;26770:13;:18;;;26740:8;:49::i;:::-;-1:-1:-1;;;;;27085:18:0;;;;;;;:12;:18;;;;;;;;:31;;-1:-1:-1;;;;;;27085:31:0;;;-1:-1:-1;;;;;27085:31:0;;;-1:-1:-1;;27085:31:0;;;;;;;27131:16;;;;;;;;;:29;;;;;;;;-1:-1:-1;27131:29:0;;;;;;;;;;;;;27177:20;;;:11;:20;;;;;;:30;;-1:-1:-1;;;;;;27222:61:0;;;;-1:-1:-1;;;27267:15:0;27222:61;;;;;;27557:11;;;27587:24;;;;;:29;27557:11;;27587:29;27583:321;;27655:20;27663:11;23337:4;23371:13;-1:-1:-1;23361:23:0;23280:112;27655:20;27651:238;;;27732:18;;;27700:24;;;:11;:24;;;;;;;;:50;;27815:54;;;;27773:96;;-1:-1:-1;;;27773:96:0;-1:-1:-1;;;;;;27773:96:0;;;-1:-1:-1;;;;;27700:50:0;;;27773:96;;;;;;;27651:238;27060:855;27951:7;27947:2;-1:-1:-1;;;;;27932:27:0;27941:4;-1:-1:-1;;;;;27932:27:0;;;;;;;;;;;27970:42;26133:1887;;26029:1991;;;:::o;18856:536::-;-1:-1:-1;;;;;;;;;;;;;;;;;18988:16:0;18996:7;23337:4;23371:13;-1:-1:-1;23361:23:0;23280:112;18988:16;18983:61;;19013:31;;-1:-1:-1;;;19013:31:0;;;;;;;;;;;18983:61;19102:7;19082:245;19149:31;19183:17;;;:11;:17;;;;;;;;;19149:51;;;;;;;;;-1:-1:-1;;;;;19149:51:0;;;;;-1:-1:-1;;;19149:51:0;;;;;;;;;;;;19223:28;19219:93;;19283:9;18856:536;-1:-1:-1;;;18856:536:0:o;19219:93::-;-1:-1:-1;;;19122:6:0;19082:245;;32786:191;32879:6;;;-1:-1:-1;;;;;32896:17:0;;;-1:-1:-1;;;;;;32896:17:0;;;;;;;32929:40;;32879:6;;;32896:17;32879:6;;32929:40;;32860:16;;32929:40;32849:128;32786:191;:::o;28899:919::-;29054:4;-1:-1:-1;;;;;29075:13:0;;2056:19;:23;29071:740;;29128:175;;-1:-1:-1;;;29128:175:0;;-1:-1:-1;;;;;29128:36:0;;;;;:175;;1815:10;;29222:4;;29249:7;;29279:5;;29128:175;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29128:175:0;;;;;;;;-1:-1:-1;;29128:175:0;;;;;;;;;;;;:::i;:::-;;;29107:649;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29490:13:0;;29486:255;;29538:40;;-1:-1:-1;;;29538:40:0;;;;;;;;;;;29486:255;29691:6;29685:13;29676:6;29672:2;29668:15;29661:38;29107:649;-1:-1:-1;;;;;;29367:55:0;-1:-1:-1;;;29367:55:0;;-1:-1:-1;29360:62:0;;29071:740;-1:-1:-1;29795:4:0;29071:740;28899:919;;;;;;:::o;36675:110::-;36735:13;36768:9;36761:16;;;;;:::i;222:532::-;278:13;308:10;304:53;;-1:-1:-1;;335:10:0;;;;;;;;;;;;-1:-1:-1;;;335:10:0;;;;;222:532::o;304:53::-;382:5;367:12;423:78;430:9;;423:78;;456:8;;;;:::i;:::-;;-1:-1:-1;479:10:0;;-1:-1:-1;487:2:0;479:10;;:::i;:::-;;;423:78;;;511:19;543:6;533:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;533:17:0;;511:39;;561:154;568:10;;561:154;;595:11;605:1;595:11;;:::i;:::-;;-1:-1:-1;664:10:0;672:2;664:5;:10;:::i;:::-;651:24;;:2;:24;:::i;:::-;638:39;;621:6;628;621:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;621:56:0;;;;;;;;-1:-1:-1;692:11:0;701:2;692:11;;:::i;:::-;;;561:154;;23867:163;23990:32;23996:2;24000:8;24010:5;24017:4;23990:5;:32::i;33896:707::-;34006:7;34054:4;34006:7;34069:497;34093:5;:12;34089:1;:16;34069:497;;;34127:20;34150:5;34156:1;34150:8;;;;;;;;:::i;:::-;;;;;;;34127:31;;34193:12;34177;:28;34173:382;;34706:13;34761:15;;;34797:4;34790:15;;;34844:4;34828:21;;34305:57;;34173:382;;;34706:13;34761:15;;;34797:4;34790:15;;;34844:4;34828:21;;34482:57;;34173:382;-1:-1:-1;34107:3:0;;;;:::i;:::-;;;;34069:497;;;-1:-1:-1;34583:12:0;33896:707;-1:-1:-1;;;33896:707:0:o;24289:1486::-;24428:20;24451:13;-1:-1:-1;;;;;24479:16:0;;24475:48;;24504:19;;-1:-1:-1;;;24504:19:0;;;;;;;;;;;24475:48;-1:-1:-1;;;;;24936:16:0;;;;;;:12;:16;;;;;;;;:45;;-1:-1:-1;;;;;;;;;24936:45:0;;-1:-1:-1;;;;;24936:45:0;;;;;;;;;;24996:50;;;;;;;;;;;;;;25063:25;;;:11;:25;;;;;:35;;-1:-1:-1;;;;;;25113:66:0;;;;-1:-1:-1;;;25163:15:0;25113:66;;;;;;;25063:25;;25248:391;25268:8;25264:1;:12;25248:391;;;25307:38;;25332:12;;-1:-1:-1;;;;;25307:38:0;;;25324:1;;25307:38;;25324:1;;25307:38;25390:4;:89;;;;;25420:59;25451:1;25455:2;25459:12;25473:5;25420:22;:59::i;:::-;25419:60;25390:89;25364:225;;;25529:40;;-1:-1:-1;;;25529:40:0;;;;;;;;;;;25364:225;25609:14;;;;;25278:3;25248:391;;;-1:-1:-1;25655:13:0;:28;25707:60;22704:321;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:186::-;887:6;940:2;928:9;919:7;915:23;911:32;908:52;;;956:1;953;946:12;908:52;979:29;998:9;979:29;:::i;1019:260::-;1087:6;1095;1148:2;1136:9;1127:7;1123:23;1119:32;1116:52;;;1164:1;1161;1154:12;1116:52;1187:29;1206:9;1187:29;:::i;:::-;1177:39;;1235:38;1269:2;1258:9;1254:18;1235:38;:::i;:::-;1225:48;;1019:260;;;;;:::o;1284:328::-;1361:6;1369;1377;1430:2;1418:9;1409:7;1405:23;1401:32;1398:52;;;1446:1;1443;1436:12;1398:52;1469:29;1488:9;1469:29;:::i;:::-;1459:39;;1517:38;1551:2;1540:9;1536:18;1517:38;:::i;:::-;1507:48;;1602:2;1591:9;1587:18;1574:32;1564:42;;1284:328;;;;;:::o;1617:666::-;1712:6;1720;1728;1736;1789:3;1777:9;1768:7;1764:23;1760:33;1757:53;;;1806:1;1803;1796:12;1757:53;1829:29;1848:9;1829:29;:::i;:::-;1819:39;;1877:38;1911:2;1900:9;1896:18;1877:38;:::i;:::-;1867:48;;1962:2;1951:9;1947:18;1934:32;1924:42;;2017:2;2006:9;2002:18;1989:32;2044:18;2036:6;2033:30;2030:50;;;2076:1;2073;2066:12;2030:50;2099:22;;2152:4;2144:13;;2140:27;-1:-1:-1;2130:55:1;;2181:1;2178;2171:12;2130:55;2204:73;2269:7;2264:2;2251:16;2246:2;2242;2238:11;2204:73;:::i;:::-;2194:83;;;1617:666;;;;;;;:::o;2288:347::-;2353:6;2361;2414:2;2402:9;2393:7;2389:23;2385:32;2382:52;;;2430:1;2427;2420:12;2382:52;2453:29;2472:9;2453:29;:::i;:::-;2443:39;;2532:2;2521:9;2517:18;2504:32;2579:5;2572:13;2565:21;2558:5;2555:32;2545:60;;2601:1;2598;2591:12;2545:60;2624:5;2614:15;;;2288:347;;;;;:::o;2640:254::-;2708:6;2716;2769:2;2757:9;2748:7;2744:23;2740:32;2737:52;;;2785:1;2782;2775:12;2737:52;2808:29;2827:9;2808:29;:::i;:::-;2798:39;2884:2;2869:18;;;;2856:32;;-1:-1:-1;;;2640:254:1:o;2899:689::-;2994:6;3002;3010;3063:2;3051:9;3042:7;3038:23;3034:32;3031:52;;;3079:1;3076;3069:12;3031:52;3119:9;3106:23;3148:18;3189:2;3181:6;3178:14;3175:34;;;3205:1;3202;3195:12;3175:34;3243:6;3232:9;3228:22;3218:32;;3288:7;3281:4;3277:2;3273:13;3269:27;3259:55;;3310:1;3307;3300:12;3259:55;3350:2;3337:16;3376:2;3368:6;3365:14;3362:34;;;3392:1;3389;3382:12;3362:34;3447:7;3440:4;3430:6;3427:1;3423:14;3419:2;3415:23;3411:34;3408:47;3405:67;;;3468:1;3465;3458:12;3405:67;3499:4;3491:13;;;;3523:6;;-1:-1:-1;3561:20:1;;;;3548:34;;2899:689;-1:-1:-1;;;;2899:689:1:o;3593:180::-;3652:6;3705:2;3693:9;3684:7;3680:23;3676:32;3673:52;;;3721:1;3718;3711:12;3673:52;-1:-1:-1;3744:23:1;;3593:180;-1:-1:-1;3593:180:1:o;3778:245::-;3836:6;3889:2;3877:9;3868:7;3864:23;3860:32;3857:52;;;3905:1;3902;3895:12;3857:52;3944:9;3931:23;3963:30;3987:5;3963:30;:::i;4028:249::-;4097:6;4150:2;4138:9;4129:7;4125:23;4121:32;4118:52;;;4166:1;4163;4156:12;4118:52;4198:9;4192:16;4217:30;4241:5;4217:30;:::i;4282:450::-;4351:6;4404:2;4392:9;4383:7;4379:23;4375:32;4372:52;;;4420:1;4417;4410:12;4372:52;4460:9;4447:23;4493:18;4485:6;4482:30;4479:50;;;4525:1;4522;4515:12;4479:50;4548:22;;4601:4;4593:13;;4589:27;-1:-1:-1;4579:55:1;;4630:1;4627;4620:12;4579:55;4653:73;4718:7;4713:2;4700:16;4695:2;4691;4687:11;4653:73;:::i;4922:257::-;4963:3;5001:5;4995:12;5028:6;5023:3;5016:19;5044:63;5100:6;5093:4;5088:3;5084:14;5077:4;5070:5;5066:16;5044:63;:::i;:::-;5161:2;5140:15;-1:-1:-1;;5136:29:1;5127:39;;;;5168:4;5123:50;;4922:257;-1:-1:-1;;4922:257:1:o;5418:637::-;5698:3;5736:6;5730:13;5752:53;5798:6;5793:3;5786:4;5778:6;5774:17;5752:53;:::i;:::-;5868:13;;5827:16;;;;5890:57;5868:13;5827:16;5924:4;5912:17;;5890:57;:::i;:::-;-1:-1:-1;;;5969:20:1;;5998:22;;;6047:1;6036:13;;5418:637;-1:-1:-1;;;;5418:637:1:o;6478:488::-;-1:-1:-1;;;;;6747:15:1;;;6729:34;;6799:15;;6794:2;6779:18;;6772:43;6846:2;6831:18;;6824:34;;;6894:3;6889:2;6874:18;;6867:31;;;6672:4;;6915:45;;6940:19;;6932:6;6915:45;:::i;:::-;6907:53;6478:488;-1:-1:-1;;;;;;6478:488:1:o;7442:219::-;7591:2;7580:9;7573:21;7554:4;7611:44;7651:2;7640:9;7636:18;7628:6;7611:44;:::i;8073:415::-;8275:2;8257:21;;;8314:2;8294:18;;;8287:30;8353:34;8348:2;8333:18;;8326:62;-1:-1:-1;;;8419:2:1;8404:18;;8397:49;8478:3;8463:19;;8073:415::o;8493:403::-;8695:2;8677:21;;;8734:2;8714:18;;;8707:30;8773:34;8768:2;8753:18;;8746:62;-1:-1:-1;;;8839:2:1;8824:18;;8817:37;8886:3;8871:19;;8493:403::o;9250:356::-;9452:2;9434:21;;;9471:18;;;9464:30;9530:34;9525:2;9510:18;;9503:62;9597:2;9582:18;;9250:356::o;10431:339::-;10633:2;10615:21;;;10672:2;10652:18;;;10645:30;-1:-1:-1;;;10706:2:1;10691:18;;10684:45;10761:2;10746:18;;10431:339::o;10775:351::-;10977:2;10959:21;;;11016:2;10996:18;;;10989:30;11055:29;11050:2;11035:18;;11028:57;11117:2;11102:18;;10775:351::o;12013:128::-;12053:3;12084:1;12080:6;12077:1;12074:13;12071:39;;;12090:18;;:::i;:::-;-1:-1:-1;12126:9:1;;12013:128::o;12146:120::-;12186:1;12212;12202:35;;12217:18;;:::i;:::-;-1:-1:-1;12251:9:1;;12146:120::o;12271:168::-;12311:7;12377:1;12373;12369:6;12365:14;12362:1;12359:21;12354:1;12347:9;12340:17;12336:45;12333:71;;;12384:18;;:::i;:::-;-1:-1:-1;12424:9:1;;12271:168::o;12444:125::-;12484:4;12512:1;12509;12506:8;12503:34;;;12517:18;;:::i;:::-;-1:-1:-1;12554:9:1;;12444:125::o;12574:258::-;12646:1;12656:113;12670:6;12667:1;12664:13;12656:113;;;12746:11;;;12740:18;12727:11;;;12720:39;12692:2;12685:10;12656:113;;;12787:6;12784:1;12781:13;12778:48;;;-1:-1:-1;;12822:1:1;12804:16;;12797:27;12574:258::o;12837:380::-;12916:1;12912:12;;;;12959;;;12980:61;;13034:4;13026:6;13022:17;13012:27;;12980:61;13087:2;13079:6;13076:14;13056:18;13053:38;13050:161;;;13133:10;13128:3;13124:20;13121:1;13114:31;13168:4;13165:1;13158:15;13196:4;13193:1;13186:15;13050:161;;12837:380;;;:::o;13222:135::-;13261:3;-1:-1:-1;;13282:17:1;;13279:43;;;13302:18;;:::i;:::-;-1:-1:-1;13349:1:1;13338:13;;13222:135::o;13362:112::-;13394:1;13420;13410:35;;13425:18;;:::i;:::-;-1:-1:-1;13459:9:1;;13362:112::o;13479:127::-;13540:10;13535:3;13531:20;13528:1;13521:31;13571:4;13568:1;13561:15;13595:4;13592:1;13585:15;13611:127;13672:10;13667:3;13663:20;13660:1;13653:31;13703:4;13700:1;13693:15;13727:4;13724:1;13717:15;13743:127;13804:10;13799:3;13795:20;13792:1;13785:31;13835:4;13832:1;13825:15;13859:4;13856:1;13849:15;13875:127;13936:10;13931:3;13927:20;13924:1;13917:31;13967:4;13964:1;13957:15;13991:4;13988:1;13981:15;14007:127;14068:10;14063:3;14059:20;14056:1;14049:31;14099:4;14096:1;14089:15;14123:4;14120:1;14113:15;14139:131;-1:-1:-1;;;;;;14213:32:1;;14203:43;;14193:71;;14260:1;14257;14250:12

Swarm Source

ipfs://267a9f4ed967e5ac7b244dfe9baaba1fcd77d8a0c8a217d6fb0ff0da7b88d9ad
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.