ETH Price: $3,300.21 (-3.49%)
Gas: 14 Gwei

Token

The Wild Guardians Collection #1 (TWG)
 

Overview

Max Total Supply

0 TWG

Holders

109

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
thewildguardians.eth
Balance
2 TWG
0x32addbb05d7be89017f06da99c2160c2d1ec62f0
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
NFT_Collection

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-25
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

pragma solidity ^0.8.0;


/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}


pragma solidity ^0.8.0;


/**
 * @dev Required interface of an ERC721 compliant contract.
 */
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;
}


pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant alphabet = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

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

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed 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] = alphabet[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

}

pragma solidity ^0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    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");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    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");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private 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

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


pragma solidity ^0.8.0;

/**
 * @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 `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}


pragma solidity ^0.8.0;


/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
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 tokenId);

    /**
     * @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);
}



pragma solidity ^0.8.0;


/**
 * @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);
}


pragma solidity ^0.8.0;


/**
 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
 * the Metadata extension, but not including the Enumerable extension, which is available separately as
 * {ERC721Enumerable}.
 */
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

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

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

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

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

    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @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
            || super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

    /**
     * @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) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

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

    /**
     * @dev Base URI for computing {tokenURI}. 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 virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

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

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "ERC721: approve to caller");

        _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 {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _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 virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    /**
     * @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.
     *
     * `_data` is additional data, it has no specified format and it is sent in call to `to`.
     *
     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
     * implement alternative mechanisms to perform token transfer, such as signature-based.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @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`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    /**
     * @dev Returns whether `spender` is allowed to manage `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || ERC721.isApprovedForAll(owner, spender));
    }

    /**
     * @dev Safely mints `tokenId` and transfers it to `to`.
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
     */
    function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {
        _mint(to, tokenId);
        require(_checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @dev Mints `tokenId` and transfers it to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

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

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

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

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

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

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

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

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

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     *
     * 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) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

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

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

        emit Transfer(from, to, tokenId);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits a {Approval} event.
     */
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), 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("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    // solhint-disable-next-line no-inline-assembly
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning.
     *
     * 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`.
     * - When `to` is zero, ``from``'s `tokenId` will be burned.
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { }
}

pragma solidity ^0.8.0;

/**
 * @title Counters
 * @author Matt Condon (@shrugs)
 * @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number
 * of elements in a mapping, issuing ERC721 ids, or counting request ids.
 *
 * Include with `using Counters for Counters.Counter;`
 */
library Counters {
    struct Counter {
        // This variable should never be directly accessed by users of the library: interactions must be restricted to
        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
        // this feature: see https://github.com/ethereum/solidity/issues/4637
        uint256 _value; // default: 0
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        unchecked {
            counter._value += 1;
        }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
        unchecked {
            counter._value = value - 1;
        }
    }
}

// 
/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, 'SafeMath: addition overflow');

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, 'SafeMath: subtraction overflow');
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, 'SafeMath: multiplication overflow');

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, 'SafeMath: division by zero');
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, 'SafeMath: modulo by zero');
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

    function min(uint256 x, uint256 y) internal pure returns (uint256 z) {
        z = x < y ? x : y;
    }

    // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
    function sqrt(uint256 y) internal pure returns (uint256 z) {
        if (y > 3) {
            z = y;
            uint256 x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}



// main smart contract

pragma solidity ^0.8.0;

contract NFT_Collection is ERC721, ReentrancyGuard {
  using Counters for Counters.Counter;
  Counters.Counter private _tokenIds;
  using SafeMath for uint256;
  address public owner;
  uint256 public royalty; 
  uint256 public mintPrice;
  uint256 public startMint;
  uint256 public basePriceMint;
  uint256 public maxSupply;
  bool public renounceURIFIX = false;
  address nftmintstarter = 0xcB66551b7fC4c97661236884F8a78a9aa98B4f8e;

  string private basetokenURI; 

  // project info
  string public twitter;
  string public website; 
  string public telegram;

  constructor (string memory name, string memory symbol, uint256 _royalty, uint256 basePrice, uint256 _startMint, uint256 _max, string memory _twitter, string memory _website, string memory _tgram, string memory _uri) ERC721(name, symbol) payable {
      owner = msg.sender;
      royalty = _royalty;
      startMint = _startMint;
      basePriceMint = basePrice;
      maxSupply = _max;
      twitter = _twitter;
      website = _website;
      telegram = _tgram;
      basetokenURI = _uri;
      if(_max <= 1000){
          payable(nftmintstarter).transfer(msg.value);
      } else {
          if(_max <= 5000){
            payable(nftmintstarter).transfer(msg.value);
          } else {
            payable(nftmintstarter).transfer(msg.value);
          }
      }


    // mint super rares
    mintInternal(1,0x8A158ce5Fd4F21845582758Eb08da6A89c065e47);
    mintInternal(1,0xE329E8e95B3Ed74cA80C0660644eF095F796B63a);
    mintInternal(1,0x970CDa4770c65ABCDe8756B59678c2FA40b68548);
    mintInternal(1,0x7eD9fb1243196714ceE6dE77747867555BCB680B);
    mintInternal(1,0xc3d3d6f46BB112E060cf4723b0Ab27B093DE05DD);
    mintInternal(1,0x6A09032CECeD598FE937E4318666632e3397b193);
    mintInternal(1,0x867736D97AB3EF6935D7259D9365E58fC2D8F1C7);
    mintInternal(1,0xDFa0a54fa7Dc1e932B4128239F0eB9d358dC6F3e);
    mintInternal(1,0x871ae6428aF0861F2956Fe68C19c9b891aBa2ED4);

    // mint rares
    mintInternal(2,0x8A158ce5Fd4F21845582758Eb08da6A89c065e47);
    mintInternal(2,0xE329E8e95B3Ed74cA80C0660644eF095F796B63a);
    mintInternal(2,0x970CDa4770c65ABCDe8756B59678c2FA40b68548);
    mintInternal(2,0x7eD9fb1243196714ceE6dE77747867555BCB680B);
    mintInternal(1,0x6D4947f811BF2c3E2613DB082f08652ea043E125);
    mintInternal(1,0x47c954081D99DCba8E1854C64A0AC994D5042F49);
    mintInternal(1,0x4384482cA84Ff331eaE08eCe9827F91577E16d17);
    mintInternal(1,0x4d100a7aa41152D335D3448618cAcbd72aE8bcb2);
    mintInternal(1,0x61703361be78066e4AE1C3847ea7F7B719F81e62);
    mintInternal(1,0xe5a97EfD4af1C87278BAB7918F7d8b871C4CD158);


    // mint regulars
    mintInternal(4,0x8A158ce5Fd4F21845582758Eb08da6A89c065e47);
    mintInternal(4,0xE329E8e95B3Ed74cA80C0660644eF095F796B63a);
    mintInternal(4,0x970CDa4770c65ABCDe8756B59678c2FA40b68548);
    mintInternal(4,0x7eD9fb1243196714ceE6dE77747867555BCB680B);
    mintInternal(1,0x9e9cb7872A0A528AaF00c80226C261b6F93731Fe);
    mintInternal(1,0xe35de13aE3444883d5324982B960f29124c13e21);
    mintInternal(1,0xa68f338bD7193Bb1203FDfA73a457b9f0D2fe574);
    mintInternal(1,0x7E8C69c23dEC1FD514d3Dbca78Eb0522c2b6E790);
    mintInternal(1,0x5be840577d46c18971446736578B5d12F60E604F);
    mintInternal(1,0x3FfBCfA4d9eF6016fBB7a66Ea24e91C84A48cfbC);
    mintInternal(1,0xF7599d8e762cD368dd7C2e062c136385bc35e999);
    mintInternal(1,0xAdC4D51a1FcC9e8D4afBe6Ab5b64dA9f10103F82);
    mintInternal(1,0x2938cDfb2bdC6015097456CA2E1CbC828E7b100f);
    mintInternal(1,0x600B42EF88391b5B8a3f3069C81F6a7B021f4044);
    mintInternal(1,0x7E5E7C6C0175079399f5720b822b22A57519A17F);
    mintInternal(1,0x4613B82f7C87d11406B455414464fF3F495304cb);
    mintInternal(1,0x68E32b841a1dA3845493b320DB611a31F2519929);
    mintInternal(1,0x541893B35d6cFF9a3C2bff28362173325adf84E9);
    mintInternal(1,0x4ABb0F6b101aecBC90C935E374C10F8c7f0D1F36);
    mintInternal(1,0xb726dfCA37aAb125877925eE3d99DCD8DeD26DD2);
    mintInternal(1,0xDA56c00331313700Bfa0f9397d1F4489A4e8983D);
    mintInternal(1,0x128239780bDb2184dD9A3F1a756D7510F4BD9277);
    mintInternal(1,0x89e84c84DCab16c87771F8285078A0Dbc8268DEA);
    mintInternal(1,0xC377ABA9732e1D679aD6446C9C88b14C3d236B69);
    mintInternal(1,0xCcFF8ab36C3Bf83c3E6a75abDF7832F6060f9Fe1);
    mintInternal(1,0x1F80979301FfdA08cbCb31f8f577FD2957c2a41f);
    mintInternal(1,0x53B6d705db9FD5cbAA067a95E54e710e83c2b3A5);
    mintInternal(1,0x804f5e2E2243995796EE8628C617b48433377876);
  }

  struct Artwork{
    uint256 id;
    address payable creator;
    address tokenAddress;
    string uri;
    uint256 royalty;
  }

  mapping(uint256 => Artwork) public Artworks;
  event WithdrawBNB(uint256 _value);


  function changePrice(uint256 _amount) public {
      require(msg.sender == owner, 'invalid');
      require(_amount > 0, 'invalid');
      basePriceMint = _amount;
  }

  function changeUri(string memory _uri) public {
      require(msg.sender == owner, 'invalid');
      basetokenURI = _uri;
  }

  function transferOwnership(address _newOwner) public {
      require(msg.sender == owner, 'invalid');
      owner = _newOwner;
  }

  // ignore uri parameter, wont matter anyways
  function mint(uint256 _amount, string[] memory uri) external payable nonReentrant {
      uint256 amountToPay = _amount.mul(basePriceMint);
      require(msg.value >= amountToPay, "invalid price paid");
      require(block.timestamp > startMint, "presale did not start");
      uint256 supplyBeing = _tokenIds.current().add(_amount);
      require(supplyBeing <= maxSupply, "finished minting");
      for(uint256 i=0; i<_amount; i++){
          uint256 currentID = _tokenIds.current();
          _safeMint(msg.sender, currentID);
          Artworks[currentID] = Artwork(currentID, payable(msg.sender), address(this), string(abi.encodePacked(basetokenURI, Strings.toString(currentID))), royalty);
        _tokenIds.increment();
      }
  } 

    function mintInternal(uint256 _amount, address _to) internal {
      uint256 amountToPay = _amount.mul(basePriceMint);
      uint256 supplyBeing = _tokenIds.current().add(_amount);
      require(supplyBeing <= maxSupply, "finished minting");
      for(uint256 i=0; i<_amount; i++){
          uint256 currentID = _tokenIds.current();
          _safeMint(_to, currentID);
          Artworks[currentID] = Artwork(currentID, payable(_to), address(this), string(abi.encodePacked(basetokenURI, Strings.toString(currentID))), royalty);
        _tokenIds.increment();
      }
  }

    // function fixURI(uint256 _id, string memory uri) public {
    //     require(msg.sender == owner && renounceURIFIX == false, "invalid");
    //     Artworks[_id].uri = uri;
    // }

    // function fixURImultiple(uint256[] memory _id, string[] memory uri) public {
    //     require(msg.sender == owner && renounceURIFIX == false, "invalid");
    //     require(_id.length == uri.length, "invalid");
    //     for(uint i=0; i<_id.length; i++){
    //     Artworks[_id[i]].uri = uri[i];
    //     }
    // }

    // function renounceURI() public {
    //     require(msg.sender == owner, "invalid owner");
    //     renounceURIFIX = true;
    // }

    function returnLastId() public view returns(uint256){
        return _tokenIds.current();
    }

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

    return Artworks[tokenId].uri;
  }

  function withdrawBNB() public {
      require(msg.sender == owner, "invalid owner");
      uint256 balance = address(this).balance;
      uint256 platformFee = balance.mul(300).div(10000); // 2%
      payable(nftmintstarter).transfer(platformFee);
      payable(msg.sender).transfer(balance.sub(platformFee));
      emit WithdrawBNB(balance);
  }

  function getRoyalty(uint256 tokenId) external virtual view returns(uint256 _royalty){
    require(_exists(tokenId), "ERC721Metadata: Royalty query for nonexistent token");

    return Artworks[tokenId].royalty;
  }

  function getCreator(uint256 tokenId) external virtual view returns(address payable creator){
    require(_exists(tokenId), "ERC721Metadata: Creator query for nonexistent token");

    return payable(Artworks[tokenId].creator);
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"_royalty","type":"uint256"},{"internalType":"uint256","name":"basePrice","type":"uint256"},{"internalType":"uint256","name":"_startMint","type":"uint256"},{"internalType":"uint256","name":"_max","type":"uint256"},{"internalType":"string","name":"_twitter","type":"string"},{"internalType":"string","name":"_website","type":"string"},{"internalType":"string","name":"_tgram","type":"string"},{"internalType":"string","name":"_uri","type":"string"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"WithdrawBNB","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"Artworks","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address payable","name":"creator","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"string","name":"uri","type":"string"},{"internalType":"uint256","name":"royalty","type":"uint256"}],"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":"basePriceMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"changePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"name":"changeUri","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":"uint256","name":"tokenId","type":"uint256"}],"name":"getCreator","outputs":[{"internalType":"address payable","name":"creator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getRoyalty","outputs":[{"internalType":"uint256","name":"_royalty","type":"uint256"}],"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":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"string[]","name":"uri","type":"string[]"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"renounceURIFIX","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"returnLastId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royalty","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":"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":[],"name":"startMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"telegram","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"twitter","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"website","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawBNB","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040819052600e80546001600160a81b03191674cb66551b7fc4c97661236884f8a78a9aa98b4f8e0017905562003753388190039081908339810160408190526200004c9162001051565b89518a908a906200006590600090602085019062000eee565b5080516200007b90600190602084019062000eee565b5050600160065550600880546001600160a01b031916331790556009889055600b869055600c879055600d8590558351620000be90601090602087019062000eee565b508251620000d490601190602086019062000eee565b508151620000ea90601290602085019062000eee565b5080516200010090600f90602084019062000eee565b506103e885116200015357600e546040516001600160a01b0361010090920491909116903480156108fc02916000818181858888f193505050501580156200014c573d6000803e3d6000fd5b50620001e1565b61138885116200019e57600e546040516001600160a01b0361010090920491909116903480156108fc02916000818181858888f193505050501580156200014c573d6000803e3d6000fd5b600e546040516001600160a01b0361010090920491909116903480156108fc02916000818181858888f19350505050158015620001df573d6000803e3d6000fd5b505b620002026001738a158ce5fd4f21845582758eb08da6a89c065e4762000800565b62000223600173e329e8e95b3ed74ca80c0660644ef095f796b63a62000800565b62000244600173970cda4770c65abcde8756b59678c2fa40b6854862000800565b620002656001737ed9fb1243196714cee6de77747867555bcb680b62000800565b62000286600173c3d3d6f46bb112e060cf4723b0ab27b093de05dd62000800565b620002a76001736a09032ceced598fe937e4318666632e3397b19362000800565b620002c8600173867736d97ab3ef6935d7259d9365e58fc2d8f1c762000800565b620002e9600173dfa0a54fa7dc1e932b4128239f0eb9d358dc6f3e62000800565b6200030a600173871ae6428af0861f2956fe68c19c9b891aba2ed462000800565b6200032b6002738a158ce5fd4f21845582758eb08da6a89c065e4762000800565b6200034c600273e329e8e95b3ed74ca80c0660644ef095f796b63a62000800565b6200036d600273970cda4770c65abcde8756b59678c2fa40b6854862000800565b6200038e6002737ed9fb1243196714cee6de77747867555bcb680b62000800565b620003af6001736d4947f811bf2c3e2613db082f08652ea043e12562000800565b620003d060017347c954081d99dcba8e1854c64a0ac994d5042f4962000800565b620003f16001734384482ca84ff331eae08ece9827f91577e16d1762000800565b620004126001734d100a7aa41152d335d3448618cacbd72ae8bcb262000800565b6200043360017361703361be78066e4ae1c3847ea7f7b719f81e6262000800565b62000454600173e5a97efd4af1c87278bab7918f7d8b871c4cd15862000800565b620004756004738a158ce5fd4f21845582758eb08da6a89c065e4762000800565b62000496600473e329e8e95b3ed74ca80c0660644ef095f796b63a62000800565b620004b7600473970cda4770c65abcde8756b59678c2fa40b6854862000800565b620004d86004737ed9fb1243196714cee6de77747867555bcb680b62000800565b620004f96001739e9cb7872a0a528aaf00c80226c261b6f93731fe62000800565b6200051a600173e35de13ae3444883d5324982b960f29124c13e2162000800565b6200053b600173a68f338bd7193bb1203fdfa73a457b9f0d2fe57462000800565b6200055c6001737e8c69c23dec1fd514d3dbca78eb0522c2b6e79062000800565b6200057d6001735be840577d46c18971446736578b5d12f60e604f62000800565b6200059e6001733ffbcfa4d9ef6016fbb7a66ea24e91c84a48cfbc62000800565b620005bf600173f7599d8e762cd368dd7c2e062c136385bc35e99962000800565b620005e0600173adc4d51a1fcc9e8d4afbe6ab5b64da9f10103f8262000800565b620006016001732938cdfb2bdc6015097456ca2e1cbc828e7b100f62000800565b62000622600173600b42ef88391b5b8a3f3069c81f6a7b021f404462000800565b620006436001737e5e7c6c0175079399f5720b822b22a57519a17f62000800565b620006646001734613b82f7c87d11406b455414464ff3f495304cb62000800565b6200068560017368e32b841a1da3845493b320db611a31f251992962000800565b620006a6600173541893b35d6cff9a3c2bff28362173325adf84e962000800565b620006c76001734abb0f6b101aecbc90c935e374c10f8c7f0d1f3662000800565b620006e8600173b726dfca37aab125877925ee3d99dcd8ded26dd262000800565b62000709600173da56c00331313700bfa0f9397d1f4489a4e8983d62000800565b6200072a600173128239780bdb2184dd9a3f1a756d7510f4bd927762000800565b6200074b60017389e84c84dcab16c87771f8285078a0dbc8268dea62000800565b6200076c600173c377aba9732e1d679ad6446c9c88b14c3d236b6962000800565b6200078d600173ccff8ab36c3bf83c3e6a75abdf7832f6060f9fe162000800565b620007ae6001731f80979301ffda08cbcb31f8f577fd2957c2a41f62000800565b620007cf60017353b6d705db9fd5cbaa067a95e54e710e83c2b3a562000800565b620007f0600173804f5e2e2243995796ee8628c617b4843337787662000800565b5050505050505050505062001464565b60006200081e600c5484620009ef60201b620012571790919060201c565b9050600062000852846200083e600762000a7f60201b620012dd1760201c565b62000a8360201b620012e11790919060201c565b9050600d548111156200089f5760405162461bcd60e51b815260206004820152601060248201526f66696e6973686564206d696e74696e6760801b60448201526064015b60405180910390fd5b60005b84811015620009e8576000620008c4600762000a7f60201b620012dd1760201c565b9050620008d2858262000ae6565b6040518060a00160405280828152602001866001600160a01b03168152602001306001600160a01b03168152602001600f620009198462000b0c60201b6200133e1760201c565b6040516020016200092c929190620011a0565b60408051808303601f1901815291815290825260095460209283015260008481526013835281902083518155838301516001820180546001600160a01b03199081166001600160a01b039384161790915592850151600283018054909416911617909155606083015180519192620009ad9260038501929091019062000eee565b5060808201518160040155905050620009d2600762000c2960201b620014431760201c565b5080620009df81620013d7565b915050620008a2565b5050505050565b60008262000a005750600062000a79565b600062000a0e83856200132b565b90508262000a1d858362001314565b1462000a765760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840162000896565b90505b92915050565b5490565b60008062000a928385620012f9565b90508381101562000a765760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000896565b62000b0882826040518060200160405280600081525062000c3260201b60201c565b5050565b60608162000b315750506040805180820190915260018152600360fc1b602082015290565b8160005b811562000b61578062000b4881620013d7565b915062000b599050600a8362001314565b915062000b35565b6000816001600160401b0381111562000b7e5762000b7e6200144e565b6040519080825280601f01601f19166020018201604052801562000ba9576020820181803683370190505b5090505b841562000c215762000bc16001836200134d565b915062000bd0600a86620013f5565b62000bdd906030620012f9565b60f81b81838151811062000bf55762000bf562001438565b60200101906001600160f81b031916908160001a90535062000c19600a8662001314565b945062000bad565b949350505050565b80546001019055565b62000c3e838362000c71565b62000c4d600084848462000db9565b62000c6c5760405162461bcd60e51b81526004016200089690620012a7565b505050565b6001600160a01b03821662000cc95760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640162000896565b6000818152600260205260409020546001600160a01b03161562000d305760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640162000896565b6001600160a01b038216600090815260036020526040812080546001929062000d5b908490620012f9565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600062000dda846001600160a01b031662000ee860201b6200144c1760201c565b1562000edd57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029062000e1490339089908890889060040162001251565b602060405180830381600087803b15801562000e2f57600080fd5b505af192505050801562000e62575060408051601f3d908101601f1916820190925262000e5f9181019062001025565b60015b62000ec2573d80801562000e93576040519150601f19603f3d011682016040523d82523d6000602084013e62000e98565b606091505b50805162000eba5760405162461bcd60e51b81526004016200089690620012a7565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905062000c21565b506001949350505050565b3b151590565b82805462000efc906200139a565b90600052602060002090601f01602090048101928262000f20576000855562000f6b565b82601f1062000f3b57805160ff191683800117855562000f6b565b8280016001018555821562000f6b579182015b8281111562000f6b57825182559160200191906001019062000f4e565b5062000f7992915062000f7d565b5090565b5b8082111562000f79576000815560010162000f7e565b600082601f83011262000fa657600080fd5b81516001600160401b038082111562000fc35762000fc36200144e565b604051601f8301601f19908116603f0116810190828211818310171562000fee5762000fee6200144e565b816040528381528660208588010111156200100857600080fd5b6200101b84602083016020890162001367565b9695505050505050565b6000602082840312156200103857600080fd5b81516001600160e01b03198116811462000a7657600080fd5b6000806000806000806000806000806101408b8d0312156200107257600080fd5b8a516001600160401b03808211156200108a57600080fd5b620010988e838f0162000f94565b9b5060208d0151915080821115620010af57600080fd5b620010bd8e838f0162000f94565b9a5060408d0151995060608d0151985060808d0151975060a08d0151965060c08d0151915080821115620010f057600080fd5b620010fe8e838f0162000f94565b955060e08d01519150808211156200111557600080fd5b620011238e838f0162000f94565b94506101008d01519150808211156200113b57600080fd5b620011498e838f0162000f94565b93506101208d01519150808211156200116157600080fd5b50620011708d828e0162000f94565b9150509295989b9194979a5092959850565b600081516200119681856020860162001367565b9290920192915050565b600080845481600182811c915080831680620011bd57607f831692505b6020808410821415620011de57634e487b7160e01b86526022600452602486fd5b818015620011f55760018114620012075762001236565b60ff1986168952848901965062001236565b60008b81526020902060005b868110156200122e5781548b82015290850190830162001213565b505084890196505b50505050505062001248818562001182565b95945050505050565b600060018060a01b038087168352808616602084015250836040830152608060608301528251806080840152620012908160a085016020870162001367565b601f01601f19169190910160a00195945050505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600082198211156200130f576200130f6200140c565b500190565b60008262001326576200132662001422565b500490565b60008160001904831182151516156200134857620013486200140c565b500290565b6000828210156200136257620013626200140c565b500390565b60005b83811015620013845781810151838201526020016200136a565b8381111562001394576000848401525b50505050565b600181811c90821680620013af57607f821691505b60208210811415620013d157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415620013ee57620013ee6200140c565b5060010190565b60008262001407576200140762001422565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6122df80620014746000396000f3fe6080604052600436106101735760003560e01c806301ffc9a71461017857806306fdde03146101ad578063081812fc146101cf578063095ea7b3146102075780631af9cf49146102295780631d111d13146102575780631e5521b71461026c57806323b872dd1461029d57806329ee566c146102bd5780632be09561146102d35780632da7e49b146102e957806342842e0e146102ff57806347ecb6651461031f5780636352211e146103345780636817c76c1461035457806370a082311461036a5780638a1bbf861461038a5780638da5cb5b1461039d57806395d89b41146103bd578063a22cb465146103d2578063a2b40d19146103f2578063abfaeee014610412578063b88d4fde14610427578063beb0a41614610447578063c6a2526d1461045c578063c87b56dd14610471578063d183b40f14610491578063d48e638a146104ab578063d5abeb01146104cb578063e985e9c5146104e1578063eb1f9f6e14610501578063f2fde38b14610521575b600080fd5b34801561018457600080fd5b50610198610193366004611d5a565b610541565b60405190151581526020015b60405180910390f35b3480156101b957600080fd5b506101c2610593565b6040516101a49190611fd5565b3480156101db57600080fd5b506101ef6101ea366004611dc8565b610625565b6040516001600160a01b0390911681526020016101a4565b34801561021357600080fd5b50610227610222366004611d30565b6106b2565b005b34801561023557600080fd5b50610249610244366004611dc8565b6107c3565b6040519081526020016101a4565b34801561026357600080fd5b5061022761084c565b34801561027857600080fd5b5061028c610287366004611dc8565b610960565b6040516101a49594939291906120ac565b3480156102a957600080fd5b506102276102b8366004611c3d565b610a25565b3480156102c957600080fd5b5061024960095481565b3480156102df57600080fd5b50610249600b5481565b3480156102f557600080fd5b50610249600c5481565b34801561030b57600080fd5b5061022761031a366004611c3d565b610a56565b34801561032b57600080fd5b506101c2610a71565b34801561034057600080fd5b506101ef61034f366004611dc8565b610aff565b34801561036057600080fd5b50610249600a5481565b34801561037657600080fd5b50610249610385366004611bef565b610b76565b610227610398366004611de1565b610bfd565b3480156103a957600080fd5b506008546101ef906001600160a01b031681565b3480156103c957600080fd5b506101c2610e79565b3480156103de57600080fd5b506102276103ed366004611cf4565b610e88565b3480156103fe57600080fd5b5061022761040d366004611dc8565b610f49565b34801561041e57600080fd5b506101c2610f98565b34801561043357600080fd5b50610227610442366004611c79565b610fa5565b34801561045357600080fd5b506101c2610fdd565b34801561046857600080fd5b50610249610fea565b34801561047d57600080fd5b506101c261048c366004611dc8565b610ffa565b34801561049d57600080fd5b50600e546101989060ff1681565b3480156104b757600080fd5b506101ef6104c6366004611dc8565b61110a565b3480156104d757600080fd5b50610249600d5481565b3480156104ed57600080fd5b506101986104fc366004611c0a565b61119c565b34801561050d57600080fd5b5061022761051c366004611d94565b6111ca565b34801561052d57600080fd5b5061022761053c366004611bef565b61120b565b60006001600160e01b031982166380ac58cd60e01b148061057257506001600160e01b03198216635b5e139f60e01b145b8061058d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546105a2906121ae565b80601f01602080910402602001604051908101604052809291908181526020018280546105ce906121ae565b801561061b5780601f106105f05761010080835404028352916020019161061b565b820191906000526020600020905b8154815290600101906020018083116105fe57829003601f168201915b5050505050905090565b600061063082611452565b6106965760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006106bd82610aff565b9050806001600160a01b0316836001600160a01b0316141561072b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161068d565b336001600160a01b03821614806107475750610747813361119c565b6107b45760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776044820152771b995c881b9bdc88185c1c1c9bdd995908199bdc88185b1b60421b606482015260840161068d565b6107be838361146f565b505050565b60006107ce82611452565b6108365760405162461bcd60e51b815260206004820152603360248201527f4552433732314d657461646174613a20526f79616c747920717565727920666f60448201527239103737b732bc34b9ba32b73a103a37b5b2b760691b606482015260840161068d565b5060009081526013602052604090206004015490565b6008546001600160a01b031633146108965760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21037bbb732b960991b604482015260640161068d565b4760006108b16127106108ab8461012c611257565b906114dd565b600e5460405191925061010090046001600160a01b0316906108fc8315029083906000818181858888f193505050501580156108f1573d6000803e3d6000fd5b50336108fc610900848461151c565b6040518115909202916000818181858888f19350505050158015610928573d6000803e3d6000fd5b506040518281527f2e2c7c37facc49beee8cf3642a3d75804e6e3651d595261095101e38bba05d3a9060200160405180910390a15050565b601360205260009081526040902080546001820154600283015460038401805493946001600160a01b0393841694939092169261099c906121ae565b80601f01602080910402602001604051908101604052809291908181526020018280546109c8906121ae565b8015610a155780601f106109ea57610100808354040283529160200191610a15565b820191906000526020600020905b8154815290600101906020018083116109f857829003601f168201915b5050505050908060040154905085565b610a2f338261155e565b610a4b5760405162461bcd60e51b815260040161068d9061203a565b6107be838383611620565b6107be83838360405180602001604052806000815250610fa5565b60128054610a7e906121ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610aaa906121ae565b8015610af75780601f10610acc57610100808354040283529160200191610af7565b820191906000526020600020905b815481529060010190602001808311610ada57829003601f168201915b505050505081565b6000818152600260205260408120546001600160a01b03168061058d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161068d565b60006001600160a01b038216610be15760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161068d565b506001600160a01b031660009081526003602052604090205490565b60026006541415610c505760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161068d565b6002600655600c54600090610c66908490611257565b905080341015610cad5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1c9a58d9481c185a5960721b604482015260640161068d565b600b544211610cf65760405162461bcd60e51b81526020600482015260156024820152741c1c995cd85b1948191a59081b9bdd081cdd185c9d605a1b604482015260640161068d565b6000610d0b84610d0560075490565b906112e1565b9050600d54811115610d525760405162461bcd60e51b815260206004820152601060248201526f66696e6973686564206d696e74696e6760801b604482015260640161068d565b60005b84811015610e6d576000610d6860075490565b9050610d7433826117ae565b6040518060a00160405280828152602001336001600160a01b03168152602001306001600160a01b03168152602001600f610dae8461133e565b604051602001610dbf929190611efa565b60408051808303601f1901815291815290825260095460209283015260008481526013835281902083518155838301516001820180546001600160a01b03199081166001600160a01b039384161790915592850151600283018054909416911617909155606083015180519192610e3e92600385019290910190611ac3565b5060808201518160040155905050610e5a600780546001019055565b5080610e65816121e9565b915050610d55565b50506001600655505050565b6060600180546105a2906121ae565b6001600160a01b038216331415610edd5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015260640161068d565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6008546001600160a01b03163314610f735760405162461bcd60e51b815260040161068d9061208b565b60008111610f935760405162461bcd60e51b815260040161068d9061208b565b600c55565b60108054610a7e906121ae565b610faf338361155e565b610fcb5760405162461bcd60e51b815260040161068d9061203a565b610fd7848484846117c8565b50505050565b60118054610a7e906121ae565b6000610ff560075490565b905090565b606061100582611452565b6110695760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161068d565b60008281526013602052604090206003018054611085906121ae565b80601f01602080910402602001604051908101604052809291908181526020018280546110b1906121ae565b80156110fe5780601f106110d3576101008083540402835291602001916110fe565b820191906000526020600020905b8154815290600101906020018083116110e157829003601f168201915b50505050509050919050565b600061111582611452565b61117d5760405162461bcd60e51b815260206004820152603360248201527f4552433732314d657461646174613a2043726561746f7220717565727920666f60448201527239103737b732bc34b9ba32b73a103a37b5b2b760691b606482015260840161068d565b506000908152601360205260409020600101546001600160a01b031690565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6008546001600160a01b031633146111f45760405162461bcd60e51b815260040161068d9061208b565b805161120790600f906020840190611ac3565b5050565b6008546001600160a01b031633146112355760405162461bcd60e51b815260040161068d9061208b565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000826112665750600061058d565b6000611272838561214c565b90508261127f8583612138565b146112d65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161068d565b9392505050565b5490565b6000806112ee8385612120565b9050838110156112d65760405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015260640161068d565b6060816113625750506040805180820190915260018152600360fc1b602082015290565b8160005b811561138c5780611376816121e9565b91506113859050600a83612138565b9150611366565b6000816001600160401b038111156113a6576113a661225a565b6040519080825280601f01601f1916602001820160405280156113d0576020820181803683370190505b5090505b841561143b576113e560018361216b565b91506113f2600a86612204565b6113fd906030612120565b60f81b81838151811061141257611412612244565b60200101906001600160f81b031916908160001a905350611434600a86612138565b94506113d4565b949350505050565b80546001019055565b3b151590565b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906114a482610aff565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006112d683836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b8152506117fb565b60006112d683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611832565b600061156982611452565b6115ca5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161068d565b60006115d583610aff565b9050806001600160a01b0316846001600160a01b031614806116105750836001600160a01b031661160584610625565b6001600160a01b0316145b8061143b575061143b818561119c565b826001600160a01b031661163382610aff565b6001600160a01b03161461169b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161068d565b6001600160a01b0382166116fd5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161068d565b61170860008261146f565b6001600160a01b038316600090815260036020526040812080546001929061173190849061216b565b90915550506001600160a01b038216600090815260036020526040812080546001929061175f908490612120565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915184939187169160008051602061228a83398151915291a4505050565b611207828260405180602001604052806000815250611863565b6117d3848484611620565b6117df84848484611896565b610fd75760405162461bcd60e51b815260040161068d90611fe8565b6000818361181c5760405162461bcd60e51b815260040161068d9190611fd5565b5060006118298486612138565b95945050505050565b600081848411156118565760405162461bcd60e51b815260040161068d9190611fd5565b506000611829848661216b565b61186d83836119a3565b61187a6000848484611896565b6107be5760405162461bcd60e51b815260040161068d90611fe8565b60006001600160a01b0384163b1561199857604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906118da903390899088908890600401611f98565b602060405180830381600087803b1580156118f457600080fd5b505af1925050508015611924575060408051601f3d908101601f1916820190925261192191810190611d77565b60015b61197e573d808015611952576040519150601f19603f3d011682016040523d82523d6000602084013e611957565b606091505b5080516119765760405162461bcd60e51b815260040161068d90611fe8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061143b565b506001949350505050565b6001600160a01b0382166119f95760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161068d565b611a0281611452565b15611a4e5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604482015260640161068d565b6001600160a01b0382166000908152600360205260408120805460019290611a77908490612120565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b038616908117909155905183929060008051602061228a833981519152908290a45050565b828054611acf906121ae565b90600052602060002090601f016020900481019282611af15760008555611b37565b82601f10611b0a57805160ff1916838001178555611b37565b82800160010185558215611b37579182015b82811115611b37578251825591602001919060010190611b1c565b50611b43929150611b47565b5090565b5b80821115611b435760008155600101611b48565b60006001600160401b03831115611b7557611b7561225a565b611b88601f8401601f19166020016120f0565b9050828152838383011115611b9c57600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b0381168114611bca57600080fd5b919050565b600082601f830112611be057600080fd5b6112d683833560208501611b5c565b600060208284031215611c0157600080fd5b6112d682611bb3565b60008060408385031215611c1d57600080fd5b611c2683611bb3565b9150611c3460208401611bb3565b90509250929050565b600080600060608486031215611c5257600080fd5b611c5b84611bb3565b9250611c6960208501611bb3565b9150604084013590509250925092565b60008060008060808587031215611c8f57600080fd5b611c9885611bb3565b9350611ca660208601611bb3565b92506040850135915060608501356001600160401b03811115611cc857600080fd5b8501601f81018713611cd957600080fd5b611ce887823560208401611b5c565b91505092959194509250565b60008060408385031215611d0757600080fd5b611d1083611bb3565b915060208301358015158114611d2557600080fd5b809150509250929050565b60008060408385031215611d4357600080fd5b611d4c83611bb3565b946020939093013593505050565b600060208284031215611d6c57600080fd5b81356112d681612270565b600060208284031215611d8957600080fd5b81516112d681612270565b600060208284031215611da657600080fd5b81356001600160401b03811115611dbc57600080fd5b61143b84828501611bcf565b600060208284031215611dda57600080fd5b5035919050565b60008060408385031215611df457600080fd5b823591506020808401356001600160401b0380821115611e1357600080fd5b818601915086601f830112611e2757600080fd5b813581811115611e3957611e3961225a565b8060051b611e488582016120f0565b8281528581019085870183870188018c1015611e6357600080fd5b60009350835b85811015611ea057813587811115611e7f578586fd5b611e8d8e8b838c0101611bcf565b8552509288019290880190600101611e69565b50989b909a5098505050505050505050565b60008151808452611eca816020860160208601612182565b601f01601f19169290920160200192915050565b60008151611ef0818560208601612182565b9290920192915050565b600080845481600182811c915080831680611f1657607f831692505b6020808410821415611f3657634e487b7160e01b86526022600452602486fd5b818015611f4a5760018114611f5b57611f88565b60ff19861689528489019650611f88565b60008b81526020902060005b86811015611f805781548b820152908501908301611f67565b505084890196505b5050505050506118298185611ede565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611fcb90830184611eb2565b9695505050505050565b6020815260006112d66020830184611eb2565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252600790820152661a5b9d985b1a5960ca1b604082015260600190565b8581526001600160a01b0385811660208301528416604082015260a0606082018190526000906120de90830185611eb2565b90508260808301529695505050505050565b604051601f8201601f191681016001600160401b03811182821017156121185761211861225a565b604052919050565b6000821982111561213357612133612218565b500190565b6000826121475761214761222e565b500490565b600081600019048311821515161561216657612166612218565b500290565b60008282101561217d5761217d612218565b500390565b60005b8381101561219d578181015183820152602001612185565b83811115610fd75750506000910152565b600181811c908216806121c257607f821691505b602082108114156121e357634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156121fd576121fd612218565b5060010190565b6000826122135761221361222e565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461228657600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ae8381ec6897637bfb904ef1034c965f1bf50a2a3cd609b8a0467ab6df34a49a64736f6c63430008070033000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e1bc9bf0400000000000000000000000000000000000000000000000000000000000063568c50000000000000000000000000000000000000000000000000000000000000138800000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000205468652057696c6420477561726469616e7320436f6c6c656374696f6e20233100000000000000000000000000000000000000000000000000000000000000035457470000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f747769747465722e636f6d2f54686557696c6447756172647300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c68747470733a2f2f74686577696c64677561726469616e732e636f6d00000000000000000000000000000000000000000000000000000000000000000000001d68747470733a2f2f742e6d652f54686557696c64477561726469616e730000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d504d677534355444356144714d6d625267715374505033547573616244473673487742727251766a6d4d546b2f00000000000000000000

Deployed Bytecode

0x6080604052600436106101735760003560e01c806301ffc9a71461017857806306fdde03146101ad578063081812fc146101cf578063095ea7b3146102075780631af9cf49146102295780631d111d13146102575780631e5521b71461026c57806323b872dd1461029d57806329ee566c146102bd5780632be09561146102d35780632da7e49b146102e957806342842e0e146102ff57806347ecb6651461031f5780636352211e146103345780636817c76c1461035457806370a082311461036a5780638a1bbf861461038a5780638da5cb5b1461039d57806395d89b41146103bd578063a22cb465146103d2578063a2b40d19146103f2578063abfaeee014610412578063b88d4fde14610427578063beb0a41614610447578063c6a2526d1461045c578063c87b56dd14610471578063d183b40f14610491578063d48e638a146104ab578063d5abeb01146104cb578063e985e9c5146104e1578063eb1f9f6e14610501578063f2fde38b14610521575b600080fd5b34801561018457600080fd5b50610198610193366004611d5a565b610541565b60405190151581526020015b60405180910390f35b3480156101b957600080fd5b506101c2610593565b6040516101a49190611fd5565b3480156101db57600080fd5b506101ef6101ea366004611dc8565b610625565b6040516001600160a01b0390911681526020016101a4565b34801561021357600080fd5b50610227610222366004611d30565b6106b2565b005b34801561023557600080fd5b50610249610244366004611dc8565b6107c3565b6040519081526020016101a4565b34801561026357600080fd5b5061022761084c565b34801561027857600080fd5b5061028c610287366004611dc8565b610960565b6040516101a49594939291906120ac565b3480156102a957600080fd5b506102276102b8366004611c3d565b610a25565b3480156102c957600080fd5b5061024960095481565b3480156102df57600080fd5b50610249600b5481565b3480156102f557600080fd5b50610249600c5481565b34801561030b57600080fd5b5061022761031a366004611c3d565b610a56565b34801561032b57600080fd5b506101c2610a71565b34801561034057600080fd5b506101ef61034f366004611dc8565b610aff565b34801561036057600080fd5b50610249600a5481565b34801561037657600080fd5b50610249610385366004611bef565b610b76565b610227610398366004611de1565b610bfd565b3480156103a957600080fd5b506008546101ef906001600160a01b031681565b3480156103c957600080fd5b506101c2610e79565b3480156103de57600080fd5b506102276103ed366004611cf4565b610e88565b3480156103fe57600080fd5b5061022761040d366004611dc8565b610f49565b34801561041e57600080fd5b506101c2610f98565b34801561043357600080fd5b50610227610442366004611c79565b610fa5565b34801561045357600080fd5b506101c2610fdd565b34801561046857600080fd5b50610249610fea565b34801561047d57600080fd5b506101c261048c366004611dc8565b610ffa565b34801561049d57600080fd5b50600e546101989060ff1681565b3480156104b757600080fd5b506101ef6104c6366004611dc8565b61110a565b3480156104d757600080fd5b50610249600d5481565b3480156104ed57600080fd5b506101986104fc366004611c0a565b61119c565b34801561050d57600080fd5b5061022761051c366004611d94565b6111ca565b34801561052d57600080fd5b5061022761053c366004611bef565b61120b565b60006001600160e01b031982166380ac58cd60e01b148061057257506001600160e01b03198216635b5e139f60e01b145b8061058d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546105a2906121ae565b80601f01602080910402602001604051908101604052809291908181526020018280546105ce906121ae565b801561061b5780601f106105f05761010080835404028352916020019161061b565b820191906000526020600020905b8154815290600101906020018083116105fe57829003601f168201915b5050505050905090565b600061063082611452565b6106965760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006106bd82610aff565b9050806001600160a01b0316836001600160a01b0316141561072b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161068d565b336001600160a01b03821614806107475750610747813361119c565b6107b45760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776044820152771b995c881b9bdc88185c1c1c9bdd995908199bdc88185b1b60421b606482015260840161068d565b6107be838361146f565b505050565b60006107ce82611452565b6108365760405162461bcd60e51b815260206004820152603360248201527f4552433732314d657461646174613a20526f79616c747920717565727920666f60448201527239103737b732bc34b9ba32b73a103a37b5b2b760691b606482015260840161068d565b5060009081526013602052604090206004015490565b6008546001600160a01b031633146108965760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21037bbb732b960991b604482015260640161068d565b4760006108b16127106108ab8461012c611257565b906114dd565b600e5460405191925061010090046001600160a01b0316906108fc8315029083906000818181858888f193505050501580156108f1573d6000803e3d6000fd5b50336108fc610900848461151c565b6040518115909202916000818181858888f19350505050158015610928573d6000803e3d6000fd5b506040518281527f2e2c7c37facc49beee8cf3642a3d75804e6e3651d595261095101e38bba05d3a9060200160405180910390a15050565b601360205260009081526040902080546001820154600283015460038401805493946001600160a01b0393841694939092169261099c906121ae565b80601f01602080910402602001604051908101604052809291908181526020018280546109c8906121ae565b8015610a155780601f106109ea57610100808354040283529160200191610a15565b820191906000526020600020905b8154815290600101906020018083116109f857829003601f168201915b5050505050908060040154905085565b610a2f338261155e565b610a4b5760405162461bcd60e51b815260040161068d9061203a565b6107be838383611620565b6107be83838360405180602001604052806000815250610fa5565b60128054610a7e906121ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610aaa906121ae565b8015610af75780601f10610acc57610100808354040283529160200191610af7565b820191906000526020600020905b815481529060010190602001808311610ada57829003601f168201915b505050505081565b6000818152600260205260408120546001600160a01b03168061058d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161068d565b60006001600160a01b038216610be15760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161068d565b506001600160a01b031660009081526003602052604090205490565b60026006541415610c505760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161068d565b6002600655600c54600090610c66908490611257565b905080341015610cad5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1c9a58d9481c185a5960721b604482015260640161068d565b600b544211610cf65760405162461bcd60e51b81526020600482015260156024820152741c1c995cd85b1948191a59081b9bdd081cdd185c9d605a1b604482015260640161068d565b6000610d0b84610d0560075490565b906112e1565b9050600d54811115610d525760405162461bcd60e51b815260206004820152601060248201526f66696e6973686564206d696e74696e6760801b604482015260640161068d565b60005b84811015610e6d576000610d6860075490565b9050610d7433826117ae565b6040518060a00160405280828152602001336001600160a01b03168152602001306001600160a01b03168152602001600f610dae8461133e565b604051602001610dbf929190611efa565b60408051808303601f1901815291815290825260095460209283015260008481526013835281902083518155838301516001820180546001600160a01b03199081166001600160a01b039384161790915592850151600283018054909416911617909155606083015180519192610e3e92600385019290910190611ac3565b5060808201518160040155905050610e5a600780546001019055565b5080610e65816121e9565b915050610d55565b50506001600655505050565b6060600180546105a2906121ae565b6001600160a01b038216331415610edd5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015260640161068d565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6008546001600160a01b03163314610f735760405162461bcd60e51b815260040161068d9061208b565b60008111610f935760405162461bcd60e51b815260040161068d9061208b565b600c55565b60108054610a7e906121ae565b610faf338361155e565b610fcb5760405162461bcd60e51b815260040161068d9061203a565b610fd7848484846117c8565b50505050565b60118054610a7e906121ae565b6000610ff560075490565b905090565b606061100582611452565b6110695760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161068d565b60008281526013602052604090206003018054611085906121ae565b80601f01602080910402602001604051908101604052809291908181526020018280546110b1906121ae565b80156110fe5780601f106110d3576101008083540402835291602001916110fe565b820191906000526020600020905b8154815290600101906020018083116110e157829003601f168201915b50505050509050919050565b600061111582611452565b61117d5760405162461bcd60e51b815260206004820152603360248201527f4552433732314d657461646174613a2043726561746f7220717565727920666f60448201527239103737b732bc34b9ba32b73a103a37b5b2b760691b606482015260840161068d565b506000908152601360205260409020600101546001600160a01b031690565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6008546001600160a01b031633146111f45760405162461bcd60e51b815260040161068d9061208b565b805161120790600f906020840190611ac3565b5050565b6008546001600160a01b031633146112355760405162461bcd60e51b815260040161068d9061208b565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000826112665750600061058d565b6000611272838561214c565b90508261127f8583612138565b146112d65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161068d565b9392505050565b5490565b6000806112ee8385612120565b9050838110156112d65760405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015260640161068d565b6060816113625750506040805180820190915260018152600360fc1b602082015290565b8160005b811561138c5780611376816121e9565b91506113859050600a83612138565b9150611366565b6000816001600160401b038111156113a6576113a661225a565b6040519080825280601f01601f1916602001820160405280156113d0576020820181803683370190505b5090505b841561143b576113e560018361216b565b91506113f2600a86612204565b6113fd906030612120565b60f81b81838151811061141257611412612244565b60200101906001600160f81b031916908160001a905350611434600a86612138565b94506113d4565b949350505050565b80546001019055565b3b151590565b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906114a482610aff565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006112d683836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b8152506117fb565b60006112d683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611832565b600061156982611452565b6115ca5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161068d565b60006115d583610aff565b9050806001600160a01b0316846001600160a01b031614806116105750836001600160a01b031661160584610625565b6001600160a01b0316145b8061143b575061143b818561119c565b826001600160a01b031661163382610aff565b6001600160a01b03161461169b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161068d565b6001600160a01b0382166116fd5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161068d565b61170860008261146f565b6001600160a01b038316600090815260036020526040812080546001929061173190849061216b565b90915550506001600160a01b038216600090815260036020526040812080546001929061175f908490612120565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915184939187169160008051602061228a83398151915291a4505050565b611207828260405180602001604052806000815250611863565b6117d3848484611620565b6117df84848484611896565b610fd75760405162461bcd60e51b815260040161068d90611fe8565b6000818361181c5760405162461bcd60e51b815260040161068d9190611fd5565b5060006118298486612138565b95945050505050565b600081848411156118565760405162461bcd60e51b815260040161068d9190611fd5565b506000611829848661216b565b61186d83836119a3565b61187a6000848484611896565b6107be5760405162461bcd60e51b815260040161068d90611fe8565b60006001600160a01b0384163b1561199857604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906118da903390899088908890600401611f98565b602060405180830381600087803b1580156118f457600080fd5b505af1925050508015611924575060408051601f3d908101601f1916820190925261192191810190611d77565b60015b61197e573d808015611952576040519150601f19603f3d011682016040523d82523d6000602084013e611957565b606091505b5080516119765760405162461bcd60e51b815260040161068d90611fe8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061143b565b506001949350505050565b6001600160a01b0382166119f95760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161068d565b611a0281611452565b15611a4e5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604482015260640161068d565b6001600160a01b0382166000908152600360205260408120805460019290611a77908490612120565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b038616908117909155905183929060008051602061228a833981519152908290a45050565b828054611acf906121ae565b90600052602060002090601f016020900481019282611af15760008555611b37565b82601f10611b0a57805160ff1916838001178555611b37565b82800160010185558215611b37579182015b82811115611b37578251825591602001919060010190611b1c565b50611b43929150611b47565b5090565b5b80821115611b435760008155600101611b48565b60006001600160401b03831115611b7557611b7561225a565b611b88601f8401601f19166020016120f0565b9050828152838383011115611b9c57600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b0381168114611bca57600080fd5b919050565b600082601f830112611be057600080fd5b6112d683833560208501611b5c565b600060208284031215611c0157600080fd5b6112d682611bb3565b60008060408385031215611c1d57600080fd5b611c2683611bb3565b9150611c3460208401611bb3565b90509250929050565b600080600060608486031215611c5257600080fd5b611c5b84611bb3565b9250611c6960208501611bb3565b9150604084013590509250925092565b60008060008060808587031215611c8f57600080fd5b611c9885611bb3565b9350611ca660208601611bb3565b92506040850135915060608501356001600160401b03811115611cc857600080fd5b8501601f81018713611cd957600080fd5b611ce887823560208401611b5c565b91505092959194509250565b60008060408385031215611d0757600080fd5b611d1083611bb3565b915060208301358015158114611d2557600080fd5b809150509250929050565b60008060408385031215611d4357600080fd5b611d4c83611bb3565b946020939093013593505050565b600060208284031215611d6c57600080fd5b81356112d681612270565b600060208284031215611d8957600080fd5b81516112d681612270565b600060208284031215611da657600080fd5b81356001600160401b03811115611dbc57600080fd5b61143b84828501611bcf565b600060208284031215611dda57600080fd5b5035919050565b60008060408385031215611df457600080fd5b823591506020808401356001600160401b0380821115611e1357600080fd5b818601915086601f830112611e2757600080fd5b813581811115611e3957611e3961225a565b8060051b611e488582016120f0565b8281528581019085870183870188018c1015611e6357600080fd5b60009350835b85811015611ea057813587811115611e7f578586fd5b611e8d8e8b838c0101611bcf565b8552509288019290880190600101611e69565b50989b909a5098505050505050505050565b60008151808452611eca816020860160208601612182565b601f01601f19169290920160200192915050565b60008151611ef0818560208601612182565b9290920192915050565b600080845481600182811c915080831680611f1657607f831692505b6020808410821415611f3657634e487b7160e01b86526022600452602486fd5b818015611f4a5760018114611f5b57611f88565b60ff19861689528489019650611f88565b60008b81526020902060005b86811015611f805781548b820152908501908301611f67565b505084890196505b5050505050506118298185611ede565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611fcb90830184611eb2565b9695505050505050565b6020815260006112d66020830184611eb2565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252600790820152661a5b9d985b1a5960ca1b604082015260600190565b8581526001600160a01b0385811660208301528416604082015260a0606082018190526000906120de90830185611eb2565b90508260808301529695505050505050565b604051601f8201601f191681016001600160401b03811182821017156121185761211861225a565b604052919050565b6000821982111561213357612133612218565b500190565b6000826121475761214761222e565b500490565b600081600019048311821515161561216657612166612218565b500290565b60008282101561217d5761217d612218565b500390565b60005b8381101561219d578181015183820152602001612185565b83811115610fd75750506000910152565b600181811c908216806121c257607f821691505b602082108114156121e357634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156121fd576121fd612218565b5060010190565b6000826122135761221361222e565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461228657600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ae8381ec6897637bfb904ef1034c965f1bf50a2a3cd609b8a0467ab6df34a49a64736f6c63430008070033

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

000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e1bc9bf0400000000000000000000000000000000000000000000000000000000000063568c50000000000000000000000000000000000000000000000000000000000000138800000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000205468652057696c6420477561726469616e7320436f6c6c656374696f6e20233100000000000000000000000000000000000000000000000000000000000000035457470000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f747769747465722e636f6d2f54686557696c6447756172647300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c68747470733a2f2f74686577696c64677561726469616e732e636f6d00000000000000000000000000000000000000000000000000000000000000000000001d68747470733a2f2f742e6d652f54686557696c64477561726469616e730000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d504d677534355444356144714d6d625267715374505033547573616244473673487742727251766a6d4d546b2f00000000000000000000

-----Decoded View---------------
Arg [0] : name (string): The Wild Guardians Collection #1
Arg [1] : symbol (string): TWG
Arg [2] : _royalty (uint256): 0
Arg [3] : basePrice (uint256): 40000000000000000
Arg [4] : _startMint (uint256): 1666616400
Arg [5] : _max (uint256): 5000
Arg [6] : _twitter (string): https://twitter.com/TheWildGuards
Arg [7] : _website (string): https://thewildguardians.com
Arg [8] : _tgram (string): https://t.me/TheWildGuardians
Arg [9] : _uri (string): ipfs://QmPMgu45TD5aDqMmbRgqStPP3TusabDG6sHwBrrQvjmMTk/

-----Encoded View---------------
24 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 000000000000000000000000000000000000000000000000008e1bc9bf040000
Arg [4] : 0000000000000000000000000000000000000000000000000000000063568c50
Arg [5] : 0000000000000000000000000000000000000000000000000000000000001388
Arg [6] : 00000000000000000000000000000000000000000000000000000000000001c0
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000220
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000260
Arg [9] : 00000000000000000000000000000000000000000000000000000000000002a0
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [11] : 5468652057696c6420477561726469616e7320436f6c6c656374696f6e202331
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [13] : 5457470000000000000000000000000000000000000000000000000000000000
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000021
Arg [15] : 68747470733a2f2f747769747465722e636f6d2f54686557696c644775617264
Arg [16] : 7300000000000000000000000000000000000000000000000000000000000000
Arg [17] : 000000000000000000000000000000000000000000000000000000000000001c
Arg [18] : 68747470733a2f2f74686577696c64677561726469616e732e636f6d00000000
Arg [19] : 000000000000000000000000000000000000000000000000000000000000001d
Arg [20] : 68747470733a2f2f742e6d652f54686557696c64477561726469616e73000000
Arg [21] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [22] : 697066733a2f2f516d504d677534355444356144714d6d625267715374505033
Arg [23] : 547573616244473673487742727251766a6d4d546b2f00000000000000000000


Deployed Bytecode Sourcemap

42614:8399:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20907:292;;;;;;;;;;-1:-1:-1;20907:292:0;;;;;:::i;:::-;;:::i;:::-;;;7845:14:1;;7838:22;7820:41;;7808:2;7793:18;20907:292:0;;;;;;;;21839:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;23306:221::-;;;;;;;;;;-1:-1:-1;23306:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6919:32:1;;;6901:51;;6889:2;6874:18;23306:221:0;6755:203:1;22836:404:0;;;;;;;;;;-1:-1:-1;22836:404:0;;;;;:::i;:::-;;:::i;:::-;;50552:218;;;;;;;;;;-1:-1:-1;50552:218:0;;;;;:::i;:::-;;:::i;:::-;;;17533:25:1;;;17521:2;17506:18;50552:218:0;17387:177:1;50193:353:0;;;;;;;;;;;;;:::i;47265:43::-;;;;;;;;;;-1:-1:-1;47265:43:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;24196:305::-;;;;;;;;;;-1:-1:-1;24196:305:0;;;;;:::i;:::-;;:::i;42805:22::-;;;;;;;;;;;;;;;;42862:24;;;;;;;;;;;;;;;;42891:28;;;;;;;;;;;;;;;;24572:151;;;;;;;;;;-1:-1:-1;24572:151:0;;;;;:::i;:::-;;:::i;43173:22::-;;;;;;;;;;;;;:::i;21533:239::-;;;;;;;;;;-1:-1:-1;21533:239:0;;;;;:::i;:::-;;:::i;42833:24::-;;;;;;;;;;;;;;;;21263:208;;;;;;;;;;-1:-1:-1;21263:208:0;;;;;:::i;:::-;;:::i;47853:750::-;;;;;;:::i;:::-;;:::i;42780:20::-;;;;;;;;;;-1:-1:-1;42780:20:0;;;;-1:-1:-1;;;;;42780:20:0;;;22008:104;;;;;;;;;;;;;:::i;23599:295::-;;;;;;;;;;-1:-1:-1;23599:295:0;;;;;:::i;:::-;;:::i;47355:171::-;;;;;;;;;;-1:-1:-1;47355:171:0;;;;;:::i;:::-;;:::i;43120:21::-;;;;;;;;;;;;;:::i;24794:285::-;;;;;;;;;;-1:-1:-1;24794:285:0;;;;;:::i;:::-;;:::i;43146:21::-;;;;;;;;;;;;;:::i;49878:97::-;;;;;;;;;;;;;:::i;49981:206::-;;;;;;;;;;-1:-1:-1;49981:206:0;;;;;:::i;:::-;;:::i;42953:34::-;;;;;;;;;;-1:-1:-1;42953:34:0;;;;;;;;50776:234;;;;;;;;;;-1:-1:-1;50776:234:0;;;;;:::i;:::-;;:::i;42924:24::-;;;;;;;;;;;;;;;;23965:164;;;;;;;;;;-1:-1:-1;23965:164:0;;;;;:::i;:::-;;:::i;47532:128::-;;;;;;;;;;-1:-1:-1;47532:128:0;;;;;:::i;:::-;;:::i;47666:133::-;;;;;;;;;;-1:-1:-1;47666:133:0;;;;;:::i;:::-;;:::i;20907:292::-;21009:4;-1:-1:-1;;;;;;21033:40:0;;-1:-1:-1;;;21033:40:0;;:105;;-1:-1:-1;;;;;;;21090:48:0;;-1:-1:-1;;;21090:48:0;21033:105;:158;;;-1:-1:-1;;;;;;;;;;1648:40:0;;;21155:36;21026:165;20907:292;-1:-1:-1;;20907:292:0:o;21839:100::-;21893:13;21926:5;21919:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21839:100;:::o;23306:221::-;23382:7;23410:16;23418:7;23410;:16::i;:::-;23402:73;;;;-1:-1:-1;;;23402:73:0;;14143:2:1;23402:73:0;;;14125:21:1;14182:2;14162:18;;;14155:30;14221:34;14201:18;;;14194:62;-1:-1:-1;;;14272:18:1;;;14265:42;14324:19;;23402:73:0;;;;;;;;;-1:-1:-1;23495:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;23495:24:0;;23306:221::o;22836:404::-;22917:13;22933:23;22948:7;22933:14;:23::i;:::-;22917:39;;22981:5;-1:-1:-1;;;;;22975:11:0;:2;-1:-1:-1;;;;;22975:11:0;;;22967:57;;;;-1:-1:-1;;;22967:57:0;;15729:2:1;22967:57:0;;;15711:21:1;15768:2;15748:18;;;15741:30;15807:34;15787:18;;;15780:62;-1:-1:-1;;;15858:18:1;;;15851:31;15899:19;;22967:57:0;15527:397:1;22967:57:0;8996:10;-1:-1:-1;;;;;23045:21:0;;;;:69;;-1:-1:-1;23070:44:0;23094:5;8996:10;23965:164;:::i;23070:44::-;23037:161;;;;-1:-1:-1;;;23037:161:0;;12134:2:1;23037:161:0;;;12116:21:1;12173:2;12153:18;;;12146:30;12212:34;12192:18;;;12185:62;-1:-1:-1;;;12263:18:1;;;12256:54;12327:19;;23037:161:0;11932:420:1;23037:161:0;23211:21;23220:2;23224:7;23211:8;:21::i;:::-;22906:334;22836:404;;:::o;50552:218::-;50619:16;50651;50659:7;50651;:16::i;:::-;50643:80;;;;-1:-1:-1;;;50643:80:0;;8718:2:1;50643:80:0;;;8700:21:1;8757:2;8737:18;;;8730:30;8796:34;8776:18;;;8769:62;-1:-1:-1;;;8847:18:1;;;8840:49;8906:19;;50643:80:0;8516:415:1;50643:80:0;-1:-1:-1;50739:17:0;;;;:8;:17;;;;;:25;;;;50552:218::o;50193:353::-;50254:5;;-1:-1:-1;;;;;50254:5:0;50240:10;:19;50232:45;;;;-1:-1:-1;;;50232:45:0;;11792:2:1;50232:45:0;;;11774:21:1;11831:2;11811:18;;;11804:30;-1:-1:-1;;;11850:18:1;;;11843:43;11903:18;;50232:45:0;11590:337:1;50232:45:0;50304:21;50286:15;50356:27;50377:5;50356:16;50304:21;50368:3;50356:11;:16::i;:::-;:20;;:27::i;:::-;50406:14;;50398:45;;50334:49;;-1:-1:-1;50406:14:0;;;-1:-1:-1;;;;;50406:14:0;;50398:45;;;;;50334:49;;50398:45;;;;50334:49;50406:14;50398:45;;;;;;;;;;;;;;;;;;;;-1:-1:-1;50460:10:0;50452:54;50481:24;:7;50493:11;50481;:24::i;:::-;50452:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;50520:20:0;;17533:25:1;;;50520:20:0;;17521:2:1;17506:18;50520:20:0;;;;;;;50223:323;;50193:353::o;47265:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47265:43:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24196:305::-;24357:41;8996:10;24390:7;24357:18;:41::i;:::-;24349:103;;;;-1:-1:-1;;;24349:103:0;;;;;;;:::i;:::-;24465:28;24475:4;24481:2;24485:7;24465:9;:28::i;24572:151::-;24676:39;24693:4;24699:2;24703:7;24676:39;;;;;;;;;;;;:16;:39::i;43173:22::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21533:239::-;21605:7;21641:16;;;:7;:16;;;;;;-1:-1:-1;;;;;21641:16:0;21676:19;21668:73;;;;-1:-1:-1;;;21668:73:0;;12970:2:1;21668:73:0;;;12952:21:1;13009:2;12989:18;;;12982:30;13048:34;13028:18;;;13021:62;-1:-1:-1;;;13099:18:1;;;13092:39;13148:19;;21668:73:0;12768:405:1;21263:208:0;21335:7;-1:-1:-1;;;;;21363:19:0;;21355:74;;;;-1:-1:-1;;;21355:74:0;;12559:2:1;21355:74:0;;;12541:21:1;12598:2;12578:18;;;12571:30;12637:34;12617:18;;;12610:62;-1:-1:-1;;;12688:18:1;;;12681:40;12738:19;;21355:74:0;12357:406:1;21355:74:0;-1:-1:-1;;;;;;21447:16:0;;;;;:9;:16;;;;;;;21263:208::o;47853:750::-;41610:1;42208:7;;:19;;42200:63;;;;-1:-1:-1;;;42200:63:0;;16894:2:1;42200:63:0;;;16876:21:1;16933:2;16913:18;;;16906:30;16972:33;16952:18;;;16945:61;17023:18;;42200:63:0;16692:355:1;42200:63:0;41610:1;42341:7;:18;47978:13:::1;::::0;47944:19:::1;::::0;47966:26:::1;::::0;:7;;:11:::1;:26::i;:::-;47944:48;;48022:11;48009:9;:24;;48001:55;;;::::0;-1:-1:-1;;;48001:55:0;;15382:2:1;48001:55:0::1;::::0;::::1;15364:21:1::0;15421:2;15401:18;;;15394:30;-1:-1:-1;;;15440:18:1;;;15433:48;15498:18;;48001:55:0::1;15180:342:1::0;48001:55:0::1;48091:9;;48073:15;:27;48065:61;;;::::0;-1:-1:-1;;;48065:61:0;;10270:2:1;48065:61:0::1;::::0;::::1;10252:21:1::0;10309:2;10289:18;;;10282:30;-1:-1:-1;;;10328:18:1;;;10321:51;10389:18;;48065:61:0::1;10068:345:1::0;48065:61:0::1;48135:19;48157:32;48181:7;48157:19;:9;33575:14:::0;;33483:114;48157:19:::1;:23:::0;::::1;:32::i;:::-;48135:54;;48221:9;;48206:11;:24;;48198:53;;;::::0;-1:-1:-1;;;48198:53:0;;16549:2:1;48198:53:0::1;::::0;::::1;16531:21:1::0;16588:2;16568:18;;;16561:30;-1:-1:-1;;;16607:18:1;;;16600:46;16663:18;;48198:53:0::1;16347:340:1::0;48198:53:0::1;48264:9;48260:338;48279:7;48277:1;:9;48260:338;;;48305:17;48325:19;:9;33575:14:::0;;33483:114;48325:19:::1;48305:39;;48357:32;48367:10;48379:9;48357;:32::i;:::-;48424:132;;;;;;;;48432:9;48424:132;;;;48451:10;-1:-1:-1::0;;;;;48424:132:0::1;;;;;48472:4;-1:-1:-1::0;;;;;48424:132:0::1;;;;;48503:12;48517:27;48534:9;48517:16;:27::i;:::-;48486:59;;;;;;;;;:::i;:::-;;::::0;;;;::::1;-1:-1:-1::0;;48486:59:0;;;;;;48424:132;;;48548:7:::1;::::0;48486:59:::1;48424:132:::0;;::::1;::::0;-1:-1:-1;48402:19:0;;;:8:::1;:19:::0;;;;;:154;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;48402:154:0;;::::1;-1:-1:-1::0;;;;;48402:154:0;;::::1;;::::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;::::1;::::0;;;:19;;:154:::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;48567:21;:9;33694:19:::0;;33712:1;33694:19;;;33605:127;48567:21:::1;-1:-1:-1::0;48288:3:0;::::1;::::0;::::1;:::i;:::-;;;;48260:338;;;-1:-1:-1::0;;41566:1:0;42520:7;:22;-1:-1:-1;;;47853:750:0:o;22008:104::-;22064:13;22097:7;22090:14;;;;;:::i;23599:295::-;-1:-1:-1;;;;;23702:24:0;;8996:10;23702:24;;23694:62;;;;-1:-1:-1;;;23694:62:0;;11025:2:1;23694:62:0;;;11007:21:1;11064:2;11044:18;;;11037:30;-1:-1:-1;;;11083:18:1;;;11076:55;11148:18;;23694:62:0;10823:349:1;23694:62:0;8996:10;23769:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;23769:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;23769:53:0;;;;;;;;;;23838:48;;7820:41:1;;;23769:42:0;;8996:10;23838:48;;7793:18:1;23838:48:0;;;;;;;23599:295;;:::o;47355:171::-;47431:5;;-1:-1:-1;;;;;47431:5:0;47417:10;:19;47409:39;;;;-1:-1:-1;;;47409:39:0;;;;;;;:::i;:::-;47475:1;47465:7;:11;47457:31;;;;-1:-1:-1;;;47457:31:0;;;;;;;:::i;:::-;47497:13;:23;47355:171::o;43120:21::-;;;;;;;:::i;24794:285::-;24926:41;8996:10;24959:7;24926:18;:41::i;:::-;24918:103;;;;-1:-1:-1;;;24918:103:0;;;;;;;:::i;:::-;25032:39;25046:4;25052:2;25056:7;25065:5;25032:13;:39::i;:::-;24794:285;;;;:::o;43146:21::-;;;;;;;:::i;49878:97::-;49922:7;49948:19;:9;33575:14;;33483:114;49948:19;49941:26;;49878:97;:::o;49981:206::-;50046:13;50076:16;50084:7;50076;:16::i;:::-;50068:76;;;;-1:-1:-1;;;50068:76:0;;14966:2:1;50068:76:0;;;14948:21:1;15005:2;14985:18;;;14978:30;15044:34;15024:18;;;15017:62;-1:-1:-1;;;15095:18:1;;;15088:45;15150:19;;50068:76:0;14764:411:1;50068:76:0;50160:17;;;;:8;:17;;;;;:21;;50153:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49981:206;;;:::o;50776:234::-;50843:23;50882:16;50890:7;50882;:16::i;:::-;50874:80;;;;-1:-1:-1;;;50874:80:0;;8298:2:1;50874:80:0;;;8280:21:1;8337:2;8317:18;;;8310:30;8376:34;8356:18;;;8349:62;-1:-1:-1;;;8427:18:1;;;8420:49;8486:19;;50874:80:0;8096:415:1;50874:80:0;-1:-1:-1;50978:17:0;;;;:8;:17;;;;;:25;;;-1:-1:-1;;;;;50978:25:0;;50776:234::o;23965:164::-;-1:-1:-1;;;;;24086:25:0;;;24062:4;24086:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;23965:164::o;47532:128::-;47609:5;;-1:-1:-1;;;;;47609:5:0;47595:10;:19;47587:39;;;;-1:-1:-1;;;47587:39:0;;;;;;;:::i;:::-;47635:19;;;;:12;;:19;;;;;:::i;:::-;;47532:128;:::o;47666:133::-;47750:5;;-1:-1:-1;;;;;47750:5:0;47736:10;:19;47728:39;;;;-1:-1:-1;;;47728:39:0;;;;;;;:::i;:::-;47776:5;:17;;-1:-1:-1;;;;;;47776:17:0;-1:-1:-1;;;;;47776:17:0;;;;;;;;;;47666:133::o;36215:471::-;36273:7;36518:6;36514:47;;-1:-1:-1;36548:1:0;36541:8;;36514:47;36573:9;36585:5;36589:1;36585;:5;:::i;:::-;36573:17;-1:-1:-1;36618:1:0;36609:5;36613:1;36573:17;36609:5;:::i;:::-;:10;36601:56;;;;-1:-1:-1;;;36601:56:0;;13741:2:1;36601:56:0;;;13723:21:1;13780:2;13760:18;;;13753:30;13819:34;13799:18;;;13792:62;-1:-1:-1;;;13870:18:1;;;13863:31;13911:19;;36601:56:0;13539:397:1;36601:56:0;36677:1;36215:471;-1:-1:-1;;;36215:471:0:o;33483:114::-;33575:14;;33483:114::o;34827:181::-;34885:7;;34917:5;34921:1;34917;:5;:::i;:::-;34905:17;;34946:1;34941;:6;;34933:46;;;;-1:-1:-1;;;34933:46:0;;9914:2:1;34933:46:0;;;9896:21:1;9953:2;9933:18;;;9926:30;-1:-1:-1;;;9972:18:1;;;9965:57;10039:18;;34933:46:0;9712:351:1;6593:723:0;6649:13;6870:10;6866:53;;-1:-1:-1;;6897:10:0;;;;;;;;;;;;-1:-1:-1;;;6897:10:0;;;;;6593:723::o;6866:53::-;6944:5;6929:12;6985:78;6992:9;;6985:78;;7018:8;;;;:::i;:::-;;-1:-1:-1;7041:10:0;;-1:-1:-1;7049:2:0;7041:10;;:::i;:::-;;;6985:78;;;7073:19;7105:6;-1:-1:-1;;;;;7095:17:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7095:17:0;;7073:39;;7123:154;7130:10;;7123:154;;7157:11;7167:1;7157:11;;:::i;:::-;;-1:-1:-1;7226:10:0;7234:2;7226:5;:10;:::i;:::-;7213:24;;:2;:24;:::i;:::-;7200:39;;7183:6;7190;7183:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;7183:56:0;;;;;;;;-1:-1:-1;7254:11:0;7263:2;7254:11;;:::i;:::-;;;7123:154;;;7301:6;6593:723;-1:-1:-1;;;;6593:723:0:o;33605:127::-;33694:19;;33712:1;33694:19;;;33605:127::o;9972:422::-;10339:20;10378:8;;;9972:422::o;26546:127::-;26611:4;26635:16;;;:7;:16;;;;;;-1:-1:-1;;;;;26635:16:0;:30;;;26546:127::o;30430:174::-;30505:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;30505:29:0;-1:-1:-1;;;;;30505:29:0;;;;;;;;:24;;30559:23;30505:24;30559:14;:23::i;:::-;-1:-1:-1;;;;;30550:46:0;;;;;;;;;;;30430:174;;:::o;37162:132::-;37220:7;37247:39;37251:1;37254;37247:39;;;;;;;;;;;;;-1:-1:-1;;;37247:39:0;;;:3;:39::i;35291:136::-;35349:7;35376:43;35380:1;35383;35376:43;;;;;;;;;;;;;;;;;:3;:43::i;26840:355::-;26933:4;26958:16;26966:7;26958;:16::i;:::-;26950:73;;;;-1:-1:-1;;;26950:73:0;;11379:2:1;26950:73:0;;;11361:21:1;11418:2;11398:18;;;11391:30;11457:34;11437:18;;;11430:62;-1:-1:-1;;;11508:18:1;;;11501:42;11560:19;;26950:73:0;11177:408:1;26950:73:0;27034:13;27050:23;27065:7;27050:14;:23::i;:::-;27034:39;;27103:5;-1:-1:-1;;;;;27092:16:0;:7;-1:-1:-1;;;;;27092:16:0;;:51;;;;27136:7;-1:-1:-1;;;;;27112:31:0;:20;27124:7;27112:11;:20::i;:::-;-1:-1:-1;;;;;27112:31:0;;27092:51;:94;;;;27147:39;27171:5;27178:7;27147:23;:39::i;29768:544::-;29893:4;-1:-1:-1;;;;;29866:31:0;:23;29881:7;29866:14;:23::i;:::-;-1:-1:-1;;;;;29866:31:0;;29858:85;;;;-1:-1:-1;;;29858:85:0;;14556:2:1;29858:85:0;;;14538:21:1;14595:2;14575:18;;;14568:30;14634:34;14614:18;;;14607:62;-1:-1:-1;;;14685:18:1;;;14678:39;14734:19;;29858:85:0;14354:405:1;29858:85:0;-1:-1:-1;;;;;29962:16:0;;29954:65;;;;-1:-1:-1;;;29954:65:0;;10620:2:1;29954:65:0;;;10602:21:1;10659:2;10639:18;;;10632:30;10698:34;10678:18;;;10671:62;-1:-1:-1;;;10749:18:1;;;10742:34;10793:19;;29954:65:0;10418:400:1;29954:65:0;30136:29;30153:1;30157:7;30136:8;:29::i;:::-;-1:-1:-1;;;;;30178:15:0;;;;;;:9;:15;;;;;:20;;30197:1;;30178:15;:20;;30197:1;;30178:20;:::i;:::-;;;;-1:-1:-1;;;;;;;30209:13:0;;;;;;:9;:13;;;;;:18;;30226:1;;30209:13;:18;;30226:1;;30209:18;:::i;:::-;;;;-1:-1:-1;;30238:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;30238:21:0;-1:-1:-1;;;;;30238:21:0;;;;;;;;;30277:27;;30238:16;;30277:27;;;;-1:-1:-1;;;;;;;;;;;30277:27:0;;29768:544;;;:::o;27537:110::-;27613:26;27623:2;27627:7;27613:26;;;;;;;;;;;;:9;:26::i;25961:272::-;26075:28;26085:4;26091:2;26095:7;26075:9;:28::i;:::-;26122:48;26145:4;26151:2;26155:7;26164:5;26122:22;:48::i;:::-;26114:111;;;;-1:-1:-1;;;26114:111:0;;;;;;;:::i;37790:312::-;37910:7;37945:12;37938:5;37930:28;;;;-1:-1:-1;;;37930:28:0;;;;;;;;:::i;:::-;-1:-1:-1;37969:9:0;37981:5;37985:1;37981;:5;:::i;:::-;37969:17;37790:312;-1:-1:-1;;;;;37790:312:0:o;35730:226::-;35850:7;35886:12;35878:6;;;;35870:29;;;;-1:-1:-1;;;35870:29:0;;;;;;;;:::i;:::-;-1:-1:-1;35910:9:0;35922:5;35926:1;35922;:5;:::i;27874:250::-;27970:18;27976:2;27980:7;27970:5;:18::i;:::-;28007:54;28038:1;28042:2;28046:7;28055:5;28007:22;:54::i;:::-;27999:117;;;;-1:-1:-1;;;27999:117:0;;;;;;;:::i;31169:843::-;31290:4;-1:-1:-1;;;;;31316:13:0;;10339:20;10378:8;31312:693;;31352:72;;-1:-1:-1;;;31352:72:0;;-1:-1:-1;;;;;31352:36:0;;;;;:72;;8996:10;;31403:4;;31409:7;;31418:5;;31352:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31352:72:0;;;;;;;;-1:-1:-1;;31352:72:0;;;;;;;;;;;;:::i;:::-;;;31348:602;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31598:13:0;;31594:341;;31641:60;;-1:-1:-1;;;31641:60:0;;;;;;;:::i;31594:341::-;31885:6;31879:13;31870:6;31866:2;31862:15;31855:38;31348:602;-1:-1:-1;;;;;;31475:55:0;-1:-1:-1;;;31475:55:0;;-1:-1:-1;31468:62:0;;31312:693;-1:-1:-1;31989:4:0;31169:843;;;;;;:::o;28460:382::-;-1:-1:-1;;;;;28540:16:0;;28532:61;;;;-1:-1:-1;;;28532:61:0;;13380:2:1;28532:61:0;;;13362:21:1;;;13399:18;;;13392:30;13458:34;13438:18;;;13431:62;13510:18;;28532:61:0;13178:356:1;28532:61:0;28613:16;28621:7;28613;:16::i;:::-;28612:17;28604:58;;;;-1:-1:-1;;;28604:58:0;;9557:2:1;28604:58:0;;;9539:21:1;9596:2;9576:18;;;9569:30;-1:-1:-1;;;9615:18:1;;;9608:58;9683:18;;28604:58:0;9355:352:1;28604:58:0;-1:-1:-1;;;;;28733:13:0;;;;;;:9;:13;;;;;:18;;28750:1;;28733:13;:18;;28750:1;;28733:18;:::i;:::-;;;;-1:-1:-1;;28762:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;28762:21:0;-1:-1:-1;;;;;28762:21:0;;;;;;;;28801:33;;28762:16;;;-1:-1:-1;;;;;;;;;;;28801:33:0;28762:16;;28801:33;28460:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:406:1;78:5;-1:-1:-1;;;;;101:30:1;;98:56;;;134:18;;:::i;:::-;172:57;217:2;196:15;;-1:-1:-1;;192:29:1;223:4;188:40;172:57;:::i;:::-;163:66;;252:6;245:5;238:21;292:3;283:6;278:3;274:16;271:25;268:45;;;309:1;306;299:12;268:45;358:6;353:3;346:4;339:5;335:16;322:43;412:1;405:4;396:6;389:5;385:18;381:29;374:40;14:406;;;;;:::o;425:173::-;493:20;;-1:-1:-1;;;;;542:31:1;;532:42;;522:70;;588:1;585;578:12;522:70;425:173;;;:::o;603:221::-;646:5;699:3;692:4;684:6;680:17;676:27;666:55;;717:1;714;707:12;666:55;739:79;814:3;805:6;792:20;785:4;777:6;773:17;739:79;:::i;829:186::-;888:6;941:2;929:9;920:7;916:23;912:32;909:52;;;957:1;954;947:12;909:52;980:29;999:9;980:29;:::i;1020:260::-;1088:6;1096;1149:2;1137:9;1128:7;1124:23;1120:32;1117:52;;;1165:1;1162;1155:12;1117:52;1188:29;1207:9;1188:29;:::i;:::-;1178:39;;1236:38;1270:2;1259:9;1255:18;1236:38;:::i;:::-;1226:48;;1020:260;;;;;:::o;1285:328::-;1362:6;1370;1378;1431:2;1419:9;1410:7;1406:23;1402:32;1399:52;;;1447:1;1444;1437:12;1399:52;1470:29;1489:9;1470:29;:::i;:::-;1460:39;;1518:38;1552:2;1541:9;1537:18;1518:38;:::i;:::-;1508:48;;1603:2;1592:9;1588:18;1575:32;1565:42;;1285:328;;;;;:::o;1618:666::-;1713:6;1721;1729;1737;1790:3;1778:9;1769:7;1765:23;1761:33;1758:53;;;1807:1;1804;1797:12;1758:53;1830:29;1849:9;1830:29;:::i;:::-;1820:39;;1878:38;1912:2;1901:9;1897:18;1878:38;:::i;:::-;1868:48;-1:-1:-1;1963:2:1;1948:18;;1935:32;;-1:-1:-1;2018:2:1;2003:18;;1990:32;-1:-1:-1;;;;;2034:30:1;;2031:50;;;2077:1;2074;2067:12;2031:50;2100:22;;2153:4;2145:13;;2141:27;-1:-1:-1;2131:55:1;;2182:1;2179;2172:12;2131:55;2205:73;2270:7;2265:2;2252:16;2247:2;2243;2239:11;2205:73;:::i;:::-;2195:83;;;1618:666;;;;;;;:::o;2289:347::-;2354:6;2362;2415:2;2403:9;2394:7;2390:23;2386:32;2383:52;;;2431:1;2428;2421:12;2383:52;2454:29;2473:9;2454:29;:::i;:::-;2444:39;;2533:2;2522:9;2518:18;2505:32;2580:5;2573:13;2566:21;2559:5;2556:32;2546:60;;2602:1;2599;2592:12;2546:60;2625:5;2615:15;;;2289:347;;;;;:::o;2641:254::-;2709:6;2717;2770:2;2758:9;2749:7;2745:23;2741:32;2738:52;;;2786:1;2783;2776:12;2738:52;2809:29;2828:9;2809:29;:::i;:::-;2799:39;2885:2;2870:18;;;;2857:32;;-1:-1:-1;;;2641:254:1:o;2900:245::-;2958:6;3011:2;2999:9;2990:7;2986:23;2982:32;2979:52;;;3027:1;3024;3017:12;2979:52;3066:9;3053:23;3085:30;3109:5;3085:30;:::i;3150:249::-;3219:6;3272:2;3260:9;3251:7;3247:23;3243:32;3240:52;;;3288:1;3285;3278:12;3240:52;3320:9;3314:16;3339:30;3363:5;3339:30;:::i;3404:322::-;3473:6;3526:2;3514:9;3505:7;3501:23;3497:32;3494:52;;;3542:1;3539;3532:12;3494:52;3569:23;;-1:-1:-1;;;;;3604:30:1;;3601:50;;;3647:1;3644;3637:12;3601:50;3670;3712:7;3703:6;3692:9;3688:22;3670:50;:::i;3731:180::-;3790:6;3843:2;3831:9;3822:7;3818:23;3814:32;3811:52;;;3859:1;3856;3849:12;3811:52;-1:-1:-1;3882:23:1;;3731:180;-1:-1:-1;3731:180:1:o;3916:1203::-;4019:6;4027;4080:2;4068:9;4059:7;4055:23;4051:32;4048:52;;;4096:1;4093;4086:12;4048:52;4119:23;;;-1:-1:-1;4161:2:1;4199:18;;;4186:32;-1:-1:-1;;;;;4267:14:1;;;4264:34;;;4294:1;4291;4284:12;4264:34;4332:6;4321:9;4317:22;4307:32;;4377:7;4370:4;4366:2;4362:13;4358:27;4348:55;;4399:1;4396;4389:12;4348:55;4435:2;4422:16;4457:2;4453;4450:10;4447:36;;;4463:18;;:::i;:::-;4509:2;4506:1;4502:10;4532:28;4556:2;4552;4548:11;4532:28;:::i;:::-;4594:15;;;4625:12;;;;4657:11;;;4687;;;4683:20;;4680:33;-1:-1:-1;4677:53:1;;;4726:1;4723;4716:12;4677:53;4748:1;4739:10;;4769:1;4779:310;4795:2;4790:3;4787:11;4779:310;;;4876:3;4863:17;4912:2;4899:11;4896:19;4893:39;;;4928:1;4925;4918:12;4893:39;4957:57;5006:7;5001:2;4987:11;4983:2;4979:20;4975:29;4957:57;:::i;:::-;4945:70;;-1:-1:-1;5035:12:1;;;;5067;;;;4817:1;4808:11;4779:310;;;-1:-1:-1;3916:1203:1;;5108:5;;-1:-1:-1;3916:1203:1;-1:-1:-1;;;;;;;;;3916:1203:1:o;5124:257::-;5165:3;5203:5;5197:12;5230:6;5225:3;5218:19;5246:63;5302:6;5295:4;5290:3;5286:14;5279:4;5272:5;5268:16;5246:63;:::i;:::-;5363:2;5342:15;-1:-1:-1;;5338:29:1;5329:39;;;;5370:4;5325:50;;5124:257;-1:-1:-1;;5124:257:1:o;5386:185::-;5428:3;5466:5;5460:12;5481:52;5526:6;5521:3;5514:4;5507:5;5503:16;5481:52;:::i;:::-;5549:16;;;;;5386:185;-1:-1:-1;;5386:185:1:o;5576:1174::-;5752:3;5781:1;5814:6;5808:13;5844:3;5866:1;5894:9;5890:2;5886:18;5876:28;;5954:2;5943:9;5939:18;5976;5966:61;;6020:4;6012:6;6008:17;5998:27;;5966:61;6046:2;6094;6086:6;6083:14;6063:18;6060:38;6057:165;;;-1:-1:-1;;;6121:33:1;;6177:4;6174:1;6167:15;6207:4;6128:3;6195:17;6057:165;6238:18;6265:104;;;;6383:1;6378:320;;;;6231:467;;6265:104;-1:-1:-1;;6298:24:1;;6286:37;;6343:16;;;;-1:-1:-1;6265:104:1;;6378:320;18505:1;18498:14;;;18542:4;18529:18;;6473:1;6487:165;6501:6;6498:1;6495:13;6487:165;;;6579:14;;6566:11;;;6559:35;6622:16;;;;6516:10;;6487:165;;;6491:3;;6681:6;6676:3;6672:16;6665:23;;6231:467;;;;;;;6714:30;6740:3;6732:6;6714:30;:::i;7187:488::-;-1:-1:-1;;;;;7456:15:1;;;7438:34;;7508:15;;7503:2;7488:18;;7481:43;7555:2;7540:18;;7533:34;;;7603:3;7598:2;7583:18;;7576:31;;;7381:4;;7624:45;;7649:19;;7641:6;7624:45;:::i;:::-;7616:53;7187:488;-1:-1:-1;;;;;;7187:488:1:o;7872:219::-;8021:2;8010:9;8003:21;7984:4;8041:44;8081:2;8070:9;8066:18;8058:6;8041:44;:::i;8936:414::-;9138:2;9120:21;;;9177:2;9157:18;;;9150:30;9216:34;9211:2;9196:18;;9189:62;-1:-1:-1;;;9282:2:1;9267:18;;9260:48;9340:3;9325:19;;8936:414::o;15929:413::-;16131:2;16113:21;;;16170:2;16150:18;;;16143:30;16209:34;16204:2;16189:18;;16182:62;-1:-1:-1;;;16275:2:1;16260:18;;16253:47;16332:3;16317:19;;15929:413::o;17052:330::-;17254:2;17236:21;;;17293:1;17273:18;;;17266:29;-1:-1:-1;;;17326:2:1;17311:18;;17304:37;17373:2;17358:18;;17052:330::o;17569:578::-;17828:25;;;-1:-1:-1;;;;;17927:15:1;;;17922:2;17907:18;;17900:43;17979:15;;17974:2;17959:18;;17952:43;17880:3;18026:2;18011:18;;18004:31;;;17809:4;;18052:45;;18077:19;;18069:6;18052:45;:::i;:::-;18044:53;;18134:6;18128:3;18117:9;18113:19;18106:35;17569:578;;;;;;;;:::o;18152:275::-;18223:2;18217:9;18288:2;18269:13;;-1:-1:-1;;18265:27:1;18253:40;;-1:-1:-1;;;;;18308:34:1;;18344:22;;;18305:62;18302:88;;;18370:18;;:::i;:::-;18406:2;18399:22;18152:275;;-1:-1:-1;18152:275:1:o;18558:128::-;18598:3;18629:1;18625:6;18622:1;18619:13;18616:39;;;18635:18;;:::i;:::-;-1:-1:-1;18671:9:1;;18558:128::o;18691:120::-;18731:1;18757;18747:35;;18762:18;;:::i;:::-;-1:-1:-1;18796:9:1;;18691:120::o;18816:168::-;18856:7;18922:1;18918;18914:6;18910:14;18907:1;18904:21;18899:1;18892:9;18885:17;18881:45;18878:71;;;18929:18;;:::i;:::-;-1:-1:-1;18969:9:1;;18816:168::o;18989:125::-;19029:4;19057:1;19054;19051:8;19048:34;;;19062:18;;:::i;:::-;-1:-1:-1;19099:9:1;;18989:125::o;19119:258::-;19191:1;19201:113;19215:6;19212:1;19209:13;19201:113;;;19291:11;;;19285:18;19272:11;;;19265:39;19237:2;19230:10;19201:113;;;19332:6;19329:1;19326:13;19323:48;;;-1:-1:-1;;19367:1:1;19349:16;;19342:27;19119:258::o;19382:380::-;19461:1;19457:12;;;;19504;;;19525:61;;19579:4;19571:6;19567:17;19557:27;;19525:61;19632:2;19624:6;19621:14;19601:18;19598:38;19595:161;;;19678:10;19673:3;19669:20;19666:1;19659:31;19713:4;19710:1;19703:15;19741:4;19738:1;19731:15;19595:161;;19382:380;;;:::o;19767:135::-;19806:3;-1:-1:-1;;19827:17:1;;19824:43;;;19847:18;;:::i;:::-;-1:-1:-1;19894:1:1;19883:13;;19767:135::o;19907:112::-;19939:1;19965;19955:35;;19970:18;;:::i;:::-;-1:-1:-1;20004:9:1;;19907:112::o;20024:127::-;20085:10;20080:3;20076:20;20073:1;20066:31;20116:4;20113:1;20106:15;20140:4;20137:1;20130:15;20156:127;20217:10;20212:3;20208:20;20205:1;20198:31;20248:4;20245:1;20238:15;20272:4;20269:1;20262:15;20288:127;20349:10;20344:3;20340:20;20337:1;20330:31;20380:4;20377:1;20370:15;20404:4;20401:1;20394:15;20420:127;20481:10;20476:3;20472:20;20469:1;20462:31;20512:4;20509:1;20502:15;20536:4;20533:1;20526:15;20552:131;-1:-1:-1;;;;;;20626:32:1;;20616:43;;20606:71;;20673:1;20670;20663:12;20606:71;20552:131;:::o

Swarm Source

ipfs://ae8381ec6897637bfb904ef1034c965f1bf50a2a3cd609b8a0467ab6df34a49a
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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