ERC-721
Overview
Max Total Supply
108 AXX
Holders
46
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 AXXLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
CryptAxx
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-18 */ // SPDX-License-Identifier: MIT // File: @openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) 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 IERC165Upgradeable { /** * @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); } // File: @openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721Upgradeable is IERC165Upgradeable { /** * @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; } // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.0 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "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] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.0 (utils/Context.sol) 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) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.0 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts v4.4.0 (utils/Address.sol) 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; 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"); (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"); (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"); (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"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts v4.4.0 (token/ERC721/IERC721Receiver.sol) 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); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.0 (utils/introspection/IERC165.sol) 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); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.0 (utils/introspection/ERC165.sol) 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; } } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts v4.4.0 (token/ERC721/IERC721.sol) 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; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol // OpenZeppelin Contracts v4.4.0 (token/ERC721/extensions/IERC721Enumerable.sol) 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); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.0 (token/ERC721/extensions/IERC721Metadata.sol) 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); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol // OpenZeppelin Contracts v4.4.0 (token/ERC721/ERC721.sol) 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}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || 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 { _setApprovalForAll(_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 || 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 Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @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.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { 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` and `to` are never both zero. * * 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 {} } // File: @openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol // OpenZeppelin Contracts v4.4.0 (token/ERC721/extensions/ERC721Enumerable.sol) pragma solidity ^0.8.0; /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @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 override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } } // File: contracts/CryptAxx.sol pragma solidity ^0.8.0; // Uses ERC721Enumerable, Ownable // @notice // Traits are distributed randomly so number sequence does not affect rarity // @dev // Operator Process: // Dec 18 - Set paused to false to activate minting functions // Dec 18 - Set whitelistMintLive to true to activate whitelist minting // Dec 18 - Run round 1 of adminMint to mint promo & giveaway NFTs // Dec 18 - Run teamMint to mint CryptAxx team NFTs // Dec 25 - Set whitelistMintLive to false to close whitelist minting // Jan 1 - Set publicMintLive to true to activate public minting // Jan 1 - Run round 2 of adminMint to mint promo & giveaway NFTs // Jan 2 - Set revealed to true to activate final metadata (central server reveal until fully minted, then IPFS) // TBD - Run mythicMint at 20% completion to random whitelist address - offchain - live Discord event contract CryptAxx is ERC721Enumerable, Ownable{ using Strings for uint256; string internal baseURI; // This is the baseURI after reveal, changeable via setBaseURI string internal baseExtension = ".json"; // The URI extention to use, changeable via setBaseExtension string internal notRevealedUri; // This is the baseURI before reveal, changeable via setNotRevealedURI uint256 public cost = 0.1 ether; // Cost of the NFT, changeable via setCost uint256 public maxSupply = 10000; // Max supply of this NFT, only decreasable uint256 public maxBurn = 7777; // Max amount of NFTs that can be burned by owner, not changeable uint256 public maxPerTransaction = 10; // Max amount of NFTs mintable per session, changeable via setMaxPerTransaction uint256 public maxPerAddress = 10; // Max amount of NFTs mintable per address, changeable via setMaxPerAddress uint256 public whitelistMaxLimit = 5000; // Max amount of NFTs available to mint during whitelist mint, changeable via setWhitelistMaxLimit uint256 public publicMaxLimit = 4799; // Max amount of NFTs available to mint during public mint, changeable via setPublicMaxLimit uint256 public adminMintLimit = 180; // Max amount of NFTs held for promotions & community giveaways, not changeable uint256 public teamMintLimit = 20; // Max amount of NFTs held for CryptAxx team, not changeable bool public paused = true; // Is contract paused, changeable via setPaused bool public revealed = false; // Is final metadata revealed, changeable via setRevealed bool public whitelistMintLive = false; // Is the whitelist mint live, changeable via setWhitelistMintLive bool public publicMintLive = false; // Is the public mint live, changeable via setPublicMintLive bool public mythicDropped = false; // Has the mythic been airdropped, changeable via setMythicDropped address[] public whitelistedAddresses; // Array of whitelist addresses, changeable via setWhitelistedAddresses mapping(address => uint256) public addressMintedBalance; // How many NFTs have been minted from this address receive() external payable {} constructor( string memory _name, string memory _symbol, string memory _initBaseURI, string memory _initNotRevealedUri ) ERC721(_name, _symbol) { setBaseURI(_initBaseURI); setNotRevealedURI(_initNotRevealedUri); } function _baseURI() internal view virtual override returns (string memory) { return baseURI; } modifier transCheck(uint256 qty) { require(!paused, "MINTING IS NOT LIVE"); uint256 ownerMintedCount = addressMintedBalance[msg.sender]; require(msg.value >= cost * qty, "NOT ENOUGH ETH TO COMPLETE TRANSACTION"); require(ownerMintedCount + qty <= maxPerAddress, "CAN ONLY MINT 5 NFTS PER ADDRESS"); require(qty > 0, "MUST MINT AT LEAST 1 NFT"); require(qty <= maxPerTransaction, "CAN ONLY MINT 5 NFTS PER TRANSACTION"); require(totalSupply() + qty <= maxSupply, "NOT ENOUGH NFTS LEFT TO MINT"); require(tx.origin == msg.sender, "CANNOT MINT THROUGH A CUSTOM CONTRACT"); _; } modifier transCheckAdmin(uint256 qty) { require(qty > 0, "MUST MINT AT LEAST 1 NFT"); require(totalSupply() + qty <= maxSupply, "NOT ENOUGH NFTS LEFT TO MINT"); _; } modifier whitelistCheck() { require(whitelistMintLive, "WHITELIST MINT IS NOT LIVE"); require(isWhitelisted(msg.sender), "ADDRESS NOT ON WHITELIST"); require(whitelistMaxLimit > 0, "NOT ENOUGH WHITELIST NFTS LEFT TO MINT"); _; } modifier publicCheck() { require(publicMintLive, "PUBLIC MINT IS NOT LIVE"); require(publicMaxLimit > 0, "NOT ENOUGH PUBLIC NFTS LEFT TO MINT"); _; } function whitelistMint(uint256 qty) public payable transCheck(qty) whitelistCheck() { for (uint256 i = 0; i < qty; i++) { whitelistMaxLimit--; addressMintedBalance[msg.sender]++; _safeMint(msg.sender, totalSupply() + 1); } } function publicMint(uint256 qty) public payable transCheck(qty) publicCheck() { for (uint256 i = 0; i < qty; i++) { publicMaxLimit--; addressMintedBalance[msg.sender]++; _safeMint(msg.sender, totalSupply() + 1); } } function adminMint(uint256 qty, address to) public onlyOwner transCheckAdmin(qty) { require(adminMintLimit - qty >= 0, "NOT ENOUGH ADMIN NFTS LEFT TO MINT"); for (uint256 i = 0; i < qty; i++) { adminMintLimit--; _safeMint(to, totalSupply() + 1); } } function teamMint(uint256 qty, address to) public onlyOwner transCheckAdmin(qty) { require(teamMintLimit - qty >= 0, "NOT ENOUGH TEAM NFTS LEFT TO MINT"); for (uint256 i = 0; i < qty; i++) { teamMintLimit--; _safeMint(to, totalSupply() + 1); } } function burnTokens(uint256 qty) public onlyOwner transCheckAdmin(qty) { require(maxBurn - qty >= 0, "CANNOT BURN ANYMORE TOKEN WITH THIS FUNCTION"); for (uint256 i = 0; i < qty; i++) { maxBurn--; _safeMint(0x000000000000000000000000000000000000dEaD, totalSupply() + 1); } } function isWhitelisted(address _user) internal view returns (bool) { for (uint i = 0; i < whitelistedAddresses.length; i++) { if (whitelistedAddresses[i] == _user) { return true; } } return false; } function mythicMint(address to, uint256 tokenId) public onlyOwner { require(mythicDropped == false, "MYTHIC AIRDROP ALREADY MINTED"); mythicDropped = true; _safeMint(to, tokenId); } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI QUERY FOR NONEXISTENT TOKEN"); if (revealed == false) { return notRevealedUri; } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string( abi.encodePacked( currentBaseURI, tokenId.toString(), baseExtension ) ) : ""; } function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function setBaseExtension(string memory _newBaseExtension) public onlyOwner { baseExtension = _newBaseExtension; } function setNotRevealedURI(string memory _newNotRevealedURI) public onlyOwner { notRevealedUri = _newNotRevealedURI; } function setCost(uint256 _newCost) public onlyOwner { cost = _newCost; } function setMaxPerTransaction(uint256 _newMaxPerTransaction) public onlyOwner { maxPerTransaction = _newMaxPerTransaction; } function setMaxPerAddress(uint256 _newMaxPerAddress) public onlyOwner { maxPerAddress = _newMaxPerAddress; } function setWhitelistMaxLimit(uint256 _newWhitelistMaxLimit) public onlyOwner { whitelistMaxLimit = _newWhitelistMaxLimit; } function setPublicMaxLimit(uint256 _newPublicMaxLimit) public onlyOwner { publicMaxLimit = _newPublicMaxLimit; } function setPaused(bool _newPausedState) public onlyOwner { paused = _newPausedState; } function setRevealed(bool _newRevealedState) public onlyOwner { revealed = _newRevealedState; } function setWhitelistMintLive(bool _newWhitelistMintLiveState) public onlyOwner { whitelistMintLive = _newWhitelistMintLiveState; } function setPublicMintLive(bool _newPublicMintLiveState) public onlyOwner { publicMintLive = _newPublicMintLiveState; } function setWhitelistedAddresses(address[] calldata _newWhitelistedAddresses) public onlyOwner { delete whitelistedAddresses; whitelistedAddresses = _newWhitelistedAddresses; } function decreaseMaxSupply(uint256 newMaxSupply) public onlyOwner { require(newMaxSupply < maxSupply, "CAN ONLY DECREASE SUPPLY"); maxSupply = newMaxSupply; } function withdraw() public onlyOwner { payable(msg.sender).transfer(address(this).balance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"string","name":"_initNotRevealedUri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressMintedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"adminMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"adminMintLimit","outputs":[{"internalType":"uint256","name":"","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":[{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSupply","type":"uint256"}],"name":"decreaseMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mythicDropped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mythicMint","outputs":[],"stateMutability":"nonpayable","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":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicMaxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"publicMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"publicMintLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxPerAddress","type":"uint256"}],"name":"setMaxPerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxPerTransaction","type":"uint256"}],"name":"setMaxPerTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newNotRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_newPausedState","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPublicMaxLimit","type":"uint256"}],"name":"setPublicMaxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_newPublicMintLiveState","type":"bool"}],"name":"setPublicMintLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_newRevealedState","type":"bool"}],"name":"setRevealed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newWhitelistMaxLimit","type":"uint256"}],"name":"setWhitelistMaxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_newWhitelistMintLiveState","type":"bool"}],"name":"setWhitelistMintLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_newWhitelistedAddresses","type":"address[]"}],"name":"setWhitelistedAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"teamMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"teamMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistMaxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"whitelistMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"whitelistMintLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistedAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526005608081905264173539b7b760d91b60a09081526200002891600c91906200023c565b5067016345785d8a0000600e55612710600f55611e61601055600a60118190556012556113886013556112bf601490815560b46015556016556017805464ffffffff001960ff199091166001171690553480156200008557600080fd5b5060405162003ba838038062003ba8833981016040819052620000a8916200038d565b835184908490620000c19060009060208501906200023c565b508051620000d79060019060208401906200023c565b505050620000f4620000ee6200011460201b60201c565b62000118565b620000ff826200016a565b6200010a81620001d2565b50505050620004c9565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200017462000114565b6001600160a01b0316620001876200022d565b6001600160a01b031614620001b95760405162461bcd60e51b8152600401620001b09062000441565b60405180910390fd5b8051620001ce90600b9060208401906200023c565b5050565b620001dc62000114565b6001600160a01b0316620001ef6200022d565b6001600160a01b031614620002185760405162461bcd60e51b8152600401620001b09062000441565b8051620001ce90600d9060208401906200023c565b600a546001600160a01b031690565b8280546200024a9062000476565b90600052602060002090601f0160209004810192826200026e5760008555620002b9565b82601f106200028957805160ff1916838001178555620002b9565b82800160010185558215620002b9579182015b82811115620002b95782518255916020019190600101906200029c565b50620002c7929150620002cb565b5090565b5b80821115620002c75760008155600101620002cc565b600082601f830112620002f3578081fd5b81516001600160401b0380821115620003105762000310620004b3565b6040516020601f8401601f1916820181018381118382101715620003385762000338620004b3565b60405283825285840181018710156200034f578485fd5b8492505b8383101562000372578583018101518284018201529182019162000353565b838311156200038357848185840101525b5095945050505050565b60008060008060808587031215620003a3578384fd5b84516001600160401b0380821115620003ba578586fd5b620003c888838901620002e2565b95506020870151915080821115620003de578485fd5b620003ec88838901620002e2565b9450604087015191508082111562000402578384fd5b6200041088838901620002e2565b9350606087015191508082111562000426578283fd5b506200043587828801620002e2565b91505092959194509250565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6002810460018216806200048b57607f821691505b60208210811415620004ad57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6136cf80620004d96000396000f3fe60806040526004361061036f5760003560e01c806370a08231116101c6578063bb21d765116100f7578063e316c3eb11610095578063eda53f151161006f578063eda53f151461094f578063f1528ae114610964578063f2c4ce1e14610984578063f2fde38b146109a457610376565b8063e316c3eb14610905578063e398a9721461091a578063e985e9c51461092f57610376565b8063ccfdd2f8116100d1578063ccfdd2f814610890578063d5abeb01146108b0578063da3ef23f146108c5578063e0a80853146108e557610376565b8063bb21d76514610830578063bfa457bc14610850578063c87b56dd1461087057610376565b80638f807bdf1161016457806395e8cc911161013e57806395e8cc91146107b0578063a22cb465146107d0578063b88d4fde146107f0578063ba4e5c491461081057610376565b80638f807bdf1461075b57806391ff4a731461077b57806395d89b411461079b57610376565b80637bddd65b116101a05780637bddd65b146106fe578063868ff4a21461071e5780638da5cb5b146107315780638f43b8031461074657610376565b806370a08231146106b4578063715018a6146106d4578063746a8020146106e957610376565b8063419a0960116102a057806355f804b31161023e578063639814e011610218578063639814e01461063f578063674e3f4d146106545780636b936ac4146106745780636d1b229d1461069457610376565b806355f804b3146105ea5780635c975abb1461060a5780636352211e1461061f57610376565b80634b980d671161027a5780634b980d671461058b5780634dbc99a6146105a05780634f6ccce7146105b557806351830227146105d557610376565b8063419a09601461053657806342842e0e1461054b57806344a0d68a1461056b57610376565b806318160ddd1161030d57806327c7dde7116102e757806327c7dde7146104d95780632db11544146104ee5780632f745c59146105015780633ccfd60b1461052157610376565b806318160ddd1461048457806318cae2691461049957806323b872dd146104b957610376565b8063095ea7b311610349578063095ea7b3146104005780630dc28efe1461042257806313faede61461044257806316c38b3c1461046457610376565b806301ffc9a71461037b57806306fdde03146103b1578063081812fc146103d357610376565b3661037657005b600080fd5b34801561038757600080fd5b5061039b610396366004612a01565b6109c4565b6040516103a89190612bf8565b60405180910390f35b3480156103bd57600080fd5b506103c66109f1565b6040516103a89190612c03565b3480156103df57600080fd5b506103f36103ee366004612a7f565b610a83565b6040516103a89190612ba7565b34801561040c57600080fd5b5061042061041b36600461294f565b610acf565b005b34801561042e57600080fd5b5061042061043d366004612a97565b610b67565b34801561044e57600080fd5b50610457610c7d565b6040516103a8919061351d565b34801561047057600080fd5b5061042061047f3660046129e7565b610c83565b34801561049057600080fd5b50610457610cd5565b3480156104a557600080fd5b506104576104b4366004612826565b610cdb565b3480156104c557600080fd5b506104206104d4366004612872565b610ced565b3480156104e557600080fd5b5061039b610d25565b6104206104fc366004612a7f565b610d35565b34801561050d57600080fd5b5061045761051c36600461294f565b610f00565b34801561052d57600080fd5b50610420610f52565b34801561054257600080fd5b5061039b610fc0565b34801561055757600080fd5b50610420610566366004612872565b610fcf565b34801561057757600080fd5b50610420610586366004612a7f565b610fea565b34801561059757600080fd5b5061045761102e565b3480156105ac57600080fd5b50610457611034565b3480156105c157600080fd5b506104576105d0366004612a7f565b61103a565b3480156105e157600080fd5b5061039b611095565b3480156105f657600080fd5b50610420610605366004612a39565b6110a3565b34801561061657600080fd5b5061039b6110f9565b34801561062b57600080fd5b506103f361063a366004612a7f565b611102565b34801561064b57600080fd5b50610457611137565b34801561066057600080fd5b5061042061066f36600461294f565b61113d565b34801561068057600080fd5b5061042061068f366004612a7f565b6111c6565b3480156106a057600080fd5b506104206106af366004612a7f565b61120a565b3480156106c057600080fd5b506104576106cf366004612826565b61130c565b3480156106e057600080fd5b50610420611350565b3480156106f557600080fd5b5061045761139b565b34801561070a57600080fd5b50610420610719366004612a7f565b6113a1565b61042061072c366004612a7f565b6113e5565b34801561073d57600080fd5b506103f36115d4565b34801561075257600080fd5b506104576115e3565b34801561076757600080fd5b50610420610776366004612a7f565b6115e9565b34801561078757600080fd5b50610420610796366004612a7f565b61162d565b3480156107a757600080fd5b506103c6611692565b3480156107bc57600080fd5b506104206107cb3660046129e7565b6116a1565b3480156107dc57600080fd5b506104206107eb366004612926565b6116fe565b3480156107fc57600080fd5b5061042061080b3660046128ad565b611710565b34801561081c57600080fd5b506103f361082b366004612a7f565b611749565b34801561083c57600080fd5b5061042061084b3660046129e7565b611773565b34801561085c57600080fd5b5061042061086b366004612a97565b6117ce565b34801561087c57600080fd5b506103c661088b366004612a7f565b6118ce565b34801561089c57600080fd5b506104206108ab366004612a7f565b6119f5565b3480156108bc57600080fd5b50610457611a39565b3480156108d157600080fd5b506104206108e0366004612a39565b611a3f565b3480156108f157600080fd5b506104206109003660046129e7565b611a91565b34801561091157600080fd5b50610457611aea565b34801561092657600080fd5b50610457611af0565b34801561093b57600080fd5b5061039b61094a366004612840565b611af6565b34801561095b57600080fd5b5061039b611b24565b34801561097057600080fd5b5061042061097f366004612978565b611b35565b34801561099057600080fd5b5061042061099f366004612a39565b611b8c565b3480156109b057600080fd5b506104206109bf366004612826565b611bde565b60006001600160e01b0319821663780e9d6360e01b14806109e957506109e982611c4c565b90505b919050565b606060008054610a00906135d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2c906135d7565b8015610a795780601f10610a4e57610100808354040283529160200191610a79565b820191906000526020600020905b815481529060010190602001808311610a5c57829003601f168201915b5050505050905090565b6000610a8e82611c8c565b610ab35760405162461bcd60e51b8152600401610aaa906131d2565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000610ada82611102565b9050806001600160a01b0316836001600160a01b03161415610b0e5760405162461bcd60e51b8152600401610aaa9061338f565b806001600160a01b0316610b20611ca9565b6001600160a01b03161480610b3c5750610b3c8161094a611ca9565b610b585760405162461bcd60e51b8152600401610aaa90612ffd565b610b628383611cad565b505050565b610b6f611ca9565b6001600160a01b0316610b806115d4565b6001600160a01b031614610ba65760405162461bcd60e51b8152600401610aaa90613262565b8160008111610bc75760405162461bcd60e51b8152600401610aaa906130ed565b600f5481610bd3610cd5565b610bdd9190613532565b1115610bfb5760405162461bcd60e51b8152600401610aaa906132e0565b600083601554610c0b919061357d565b1015610c295760405162461bcd60e51b8152600401610aaa9061315b565b60005b83811015610c775760158054906000610c44836135c0565b9190505550610c6583610c55610cd5565b610c60906001613532565b611d1b565b80610c6f81613612565b915050610c2c565b50505050565b600e5481565b610c8b611ca9565b6001600160a01b0316610c9c6115d4565b6001600160a01b031614610cc25760405162461bcd60e51b8152600401610aaa90613262565b6017805460ff1916911515919091179055565b60085490565b60196020526000908152604090205481565b610cfe610cf8611ca9565b82611d35565b610d1a5760405162461bcd60e51b8152600401610aaa906133d0565b610b62838383611dba565b6017546301000000900460ff1681565b601754819060ff1615610d5a5760405162461bcd60e51b8152600401610aaa906134f0565b33600090815260196020526040902054600e54610d7890839061355e565b341015610d975760405162461bcd60e51b8152600401610aaa90612deb565b601254610da48383613532565b1115610dc25760405162461bcd60e51b8152600401610aaa90612db6565b60008211610de25760405162461bcd60e51b8152600401610aaa906130ed565b601154821115610e045760405162461bcd60e51b8152600401610aaa9061321e565b600f5482610e10610cd5565b610e1a9190613532565b1115610e385760405162461bcd60e51b8152600401610aaa906132e0565b323314610e575760405162461bcd60e51b8152600401610aaa90612e74565b6017546301000000900460ff16610e805760405162461bcd60e51b8152600401610aaa9061346d565b600060145411610ea25760405162461bcd60e51b8152600401610aaa90612e31565b60005b83811015610c775760148054906000610ebd836135c0565b9091555050336000908152601960205260408120805491610edd83613612565b9190505550610eee33610c55610cd5565b80610ef881613612565b915050610ea5565b6000610f0b8361130c565b8210610f295760405162461bcd60e51b8152600401610aaa90612c4d565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b610f5a611ca9565b6001600160a01b0316610f6b6115d4565b6001600160a01b031614610f915760405162461bcd60e51b8152600401610aaa90613262565b60405133904780156108fc02916000818181858888f19350505050158015610fbd573d6000803e3d6000fd5b50565b60175462010000900460ff1681565b610b6283838360405180602001604052806000815250611710565b610ff2611ca9565b6001600160a01b03166110036115d4565b6001600160a01b0316146110295760405162461bcd60e51b8152600401610aaa90613262565b600e55565b60115481565b60165481565b6000611044610cd5565b82106110625760405162461bcd60e51b8152600401610aaa906134a4565b6008828154811061108357634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b601754610100900460ff1681565b6110ab611ca9565b6001600160a01b03166110bc6115d4565b6001600160a01b0316146110e25760405162461bcd60e51b8152600401610aaa90613262565b80516110f590600b906020840190612685565b5050565b60175460ff1681565b6000818152600260205260408120546001600160a01b0316806109e95760405162461bcd60e51b8152600401610aaa906130a4565b60125481565b611145611ca9565b6001600160a01b03166111566115d4565b6001600160a01b03161461117c5760405162461bcd60e51b8152600401610aaa90613262565b601754640100000000900460ff16156111a75760405162461bcd60e51b8152600401610aaa90612eb9565b6017805464ff0000000019166401000000001790556110f58282611d1b565b6111ce611ca9565b6001600160a01b03166111df6115d4565b6001600160a01b0316146112055760405162461bcd60e51b8152600401610aaa90613262565b601355565b611212611ca9565b6001600160a01b03166112236115d4565b6001600160a01b0316146112495760405162461bcd60e51b8152600401610aaa90613262565b806000811161126a5760405162461bcd60e51b8152600401610aaa906130ed565b600f5481611276610cd5565b6112809190613532565b111561129e5760405162461bcd60e51b8152600401610aaa906132e0565b6000826010546112ae919061357d565b10156112cc5760405162461bcd60e51b8152600401610aaa90613421565b60005b82811015610b6257601080549060006112e7836135c0565b91905055506112fa61dead610c55610cd5565b8061130481613612565b9150506112cf565b60006001600160a01b0382166113345760405162461bcd60e51b8152600401610aaa9061305a565b506001600160a01b031660009081526003602052604090205490565b611358611ca9565b6001600160a01b03166113696115d4565b6001600160a01b03161461138f5760405162461bcd60e51b8152600401610aaa90613262565b6113996000611ee7565b565b60155481565b6113a9611ca9565b6001600160a01b03166113ba6115d4565b6001600160a01b0316146113e05760405162461bcd60e51b8152600401610aaa90613262565b601255565b601754819060ff161561140a5760405162461bcd60e51b8152600401610aaa906134f0565b33600090815260196020526040902054600e5461142890839061355e565b3410156114475760405162461bcd60e51b8152600401610aaa90612deb565b6012546114548383613532565b11156114725760405162461bcd60e51b8152600401610aaa90612db6565b600082116114925760405162461bcd60e51b8152600401610aaa906130ed565b6011548211156114b45760405162461bcd60e51b8152600401610aaa9061321e565b600f54826114c0610cd5565b6114ca9190613532565b11156114e85760405162461bcd60e51b8152600401610aaa906132e0565b3233146115075760405162461bcd60e51b8152600401610aaa90612e74565b60175462010000900460ff1661152f5760405162461bcd60e51b8152600401610aaa90613317565b61153833611f39565b6115545760405162461bcd60e51b8152600401610aaa90612c16565b6000601354116115765760405162461bcd60e51b8152600401610aaa90612fb7565b60005b83811015610c775760138054906000611591836135c0565b90915550503360009081526019602052604081208054916115b183613612565b91905055506115c233610c55610cd5565b806115cc81613612565b915050611579565b600a546001600160a01b031690565b60145481565b6115f1611ca9565b6001600160a01b03166116026115d4565b6001600160a01b0316146116285760405162461bcd60e51b8152600401610aaa90613262565b601455565b611635611ca9565b6001600160a01b03166116466115d4565b6001600160a01b03161461166c5760405162461bcd60e51b8152600401610aaa90613262565b600f54811061168d5760405162461bcd60e51b8152600401610aaa90613124565b600f55565b606060018054610a00906135d7565b6116a9611ca9565b6001600160a01b03166116ba6115d4565b6001600160a01b0316146116e05760405162461bcd60e51b8152600401610aaa90613262565b6017805491151563010000000263ff00000019909216919091179055565b6110f5611709611ca9565b8383611fb2565b61172161171b611ca9565b83611d35565b61173d5760405162461bcd60e51b8152600401610aaa906133d0565b610c7784848484612055565b6018818154811061175957600080fd5b6000918252602090912001546001600160a01b0316905081565b61177b611ca9565b6001600160a01b031661178c6115d4565b6001600160a01b0316146117b25760405162461bcd60e51b8152600401610aaa90613262565b60178054911515620100000262ff000019909216919091179055565b6117d6611ca9565b6001600160a01b03166117e76115d4565b6001600160a01b03161461180d5760405162461bcd60e51b8152600401610aaa90613262565b816000811161182e5760405162461bcd60e51b8152600401610aaa906130ed565b600f548161183a610cd5565b6118449190613532565b11156118625760405162461bcd60e51b8152600401610aaa906132e0565b600083601654611872919061357d565b10156118905760405162461bcd60e51b8152600401610aaa9061334e565b60005b83811015610c7757601680549060006118ab836135c0565b91905055506118bc83610c55610cd5565b806118c681613612565b915050611893565b60606118d982611c8c565b6118f55760405162461bcd60e51b8152600401610aaa90612d30565b601754610100900460ff1661199657600d8054611911906135d7565b80601f016020809104026020016040519081016040528092919081815260200182805461193d906135d7565b801561198a5780601f1061195f5761010080835404028352916020019161198a565b820191906000526020600020905b81548152906001019060200180831161196d57829003601f168201915b505050505090506109ec565b60006119a0612088565b905060008151116119c057604051806020016040528060008152506119ee565b806119ca84612097565b600c6040516020016119de93929190612ae5565b6040516020818303038152906040525b9392505050565b6119fd611ca9565b6001600160a01b0316611a0e6115d4565b6001600160a01b031614611a345760405162461bcd60e51b8152600401610aaa90613262565b601155565b600f5481565b611a47611ca9565b6001600160a01b0316611a586115d4565b6001600160a01b031614611a7e5760405162461bcd60e51b8152600401610aaa90613262565b80516110f590600c906020840190612685565b611a99611ca9565b6001600160a01b0316611aaa6115d4565b6001600160a01b031614611ad05760405162461bcd60e51b8152600401610aaa90613262565b601780549115156101000261ff0019909216919091179055565b60105481565b60135481565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b601754640100000000900460ff1681565b611b3d611ca9565b6001600160a01b0316611b4e6115d4565b6001600160a01b031614611b745760405162461bcd60e51b8152600401610aaa90613262565b611b8060186000612709565b610b6260188383612727565b611b94611ca9565b6001600160a01b0316611ba56115d4565b6001600160a01b031614611bcb5760405162461bcd60e51b8152600401610aaa90613262565b80516110f590600d906020840190612685565b611be6611ca9565b6001600160a01b0316611bf76115d4565b6001600160a01b031614611c1d5760405162461bcd60e51b8152600401610aaa90613262565b6001600160a01b038116611c435760405162461bcd60e51b8152600401610aaa90612cea565b610fbd81611ee7565b60006001600160e01b031982166380ac58cd60e01b1480611c7d57506001600160e01b03198216635b5e139f60e01b145b806109e957506109e9826121b2565b6000908152600260205260409020546001600160a01b0316151590565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611ce282611102565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6110f58282604051806020016040528060008152506121cb565b6000611d4082611c8c565b611d5c5760405162461bcd60e51b8152600401610aaa90612f6b565b6000611d6783611102565b9050806001600160a01b0316846001600160a01b03161480611da25750836001600160a01b0316611d9784610a83565b6001600160a01b0316145b80611db25750611db28185611af6565b949350505050565b826001600160a01b0316611dcd82611102565b6001600160a01b031614611df35760405162461bcd60e51b8152600401610aaa90613297565b6001600160a01b038216611e195760405162461bcd60e51b8152600401610aaa90612ef0565b611e248383836121fe565b611e2f600082611cad565b6001600160a01b0383166000908152600360205260408120805460019290611e5890849061357d565b90915550506001600160a01b0382166000908152600360205260408120805460019290611e86908490613532565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000805b601854811015611fa957826001600160a01b031660188281548110611f7257634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415611f975760019150506109ec565b80611fa181613612565b915050611f3d565b50600092915050565b816001600160a01b0316836001600160a01b03161415611fe45760405162461bcd60e51b8152600401610aaa90612f34565b6001600160a01b0383811660008181526005602090815260408083209487168084529490915290819020805460ff1916851515179055517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190612048908590612bf8565b60405180910390a3505050565b612060848484611dba565b61206c84848484612287565b610c775760405162461bcd60e51b8152600401610aaa90612c98565b6060600b8054610a00906135d7565b6060816120bc57506040805180820190915260018152600360fc1b60208201526109ec565b8160005b81156120e657806120d081613612565b91506120df9050600a8361354a565b91506120c0565b60008167ffffffffffffffff81111561210f57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612139576020820181803683370190505b5090505b8415611db25761214e60018361357d565b915061215b600a8661362d565b612166906030613532565b60f81b81838151811061218957634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506121ab600a8661354a565b945061213d565b6001600160e01b031981166301ffc9a760e01b14919050565b6121d583836123a2565b6121e26000848484612287565b610b625760405162461bcd60e51b8152600401610aaa90612c98565b612209838383610b62565b6001600160a01b0383166122255761222081612481565b612248565b816001600160a01b0316836001600160a01b0316146122485761224883826124c5565b6001600160a01b0382166122645761225f81612562565b610b62565b826001600160a01b0316826001600160a01b031614610b6257610b62828261263b565b600061229b846001600160a01b031661267f565b1561239757836001600160a01b031663150b7a026122b7611ca9565b8786866040518563ffffffff1660e01b81526004016122d99493929190612bbb565b602060405180830381600087803b1580156122f357600080fd5b505af1925050508015612323575060408051601f3d908101601f1916820190925261232091810190612a1d565b60015b61237d573d808015612351576040519150601f19603f3d011682016040523d82523d6000602084013e612356565b606091505b5080516123755760405162461bcd60e51b8152600401610aaa90612c98565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611db2565b506001949350505050565b6001600160a01b0382166123c85760405162461bcd60e51b8152600401610aaa9061319d565b6123d181611c8c565b156123ee5760405162461bcd60e51b8152600401610aaa90612d7f565b6123fa600083836121fe565b6001600160a01b0382166000908152600360205260408120805460019290612423908490613532565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b600060016124d28461130c565b6124dc919061357d565b60008381526007602052604090205490915080821461252f576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906125749060019061357d565b600083815260096020526040812054600880549394509092849081106125aa57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080600883815481106125d957634e487b7160e01b600052603260045260246000fd5b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061261f57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006126468361130c565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b3b151590565b828054612691906135d7565b90600052602060002090601f0160209004810192826126b357600085556126f9565b82601f106126cc57805160ff19168380011785556126f9565b828001600101855582156126f9579182015b828111156126f95782518255916020019190600101906126de565b5061270592915061277a565b5090565b5080546000825590600052602060002090810190610fbd919061277a565b8280548282559060005260206000209081019282156126f9579160200282015b828111156126f95781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190612747565b5b80821115612705576000815560010161277b565b600067ffffffffffffffff808411156127aa576127aa61366d565b604051601f8501601f1916810160200182811182821017156127ce576127ce61366d565b6040528481529150818385018610156127e657600080fd5b8484602083013760006020868301015250509392505050565b80356001600160a01b03811681146109ec57600080fd5b803580151581146109ec57600080fd5b600060208284031215612837578081fd5b6119ee826127ff565b60008060408385031215612852578081fd5b61285b836127ff565b9150612869602084016127ff565b90509250929050565b600080600060608486031215612886578081fd5b61288f846127ff565b925061289d602085016127ff565b9150604084013590509250925092565b600080600080608085870312156128c2578081fd5b6128cb856127ff565b93506128d9602086016127ff565b925060408501359150606085013567ffffffffffffffff8111156128fb578182fd5b8501601f8101871361290b578182fd5b61291a8782356020840161278f565b91505092959194509250565b60008060408385031215612938578182fd5b612941836127ff565b915061286960208401612816565b60008060408385031215612961578182fd5b61296a836127ff565b946020939093013593505050565b6000806020838503121561298a578182fd5b823567ffffffffffffffff808211156129a1578384fd5b818501915085601f8301126129b4578384fd5b8135818111156129c2578485fd5b86602080830285010111156129d5578485fd5b60209290920196919550909350505050565b6000602082840312156129f8578081fd5b6119ee82612816565b600060208284031215612a12578081fd5b81356119ee81613683565b600060208284031215612a2e578081fd5b81516119ee81613683565b600060208284031215612a4a578081fd5b813567ffffffffffffffff811115612a60578182fd5b8201601f81018413612a70578182fd5b611db28482356020840161278f565b600060208284031215612a90578081fd5b5035919050565b60008060408385031215612aa9578182fd5b82359150612869602084016127ff565b60008151808452612ad1816020860160208601613594565b601f01601f19169290920160200192915050565b600084516020612af88285838a01613594565b855191840191612b0b8184848a01613594565b8554920191839060028104600180831680612b2757607f831692505b858310811415612b4557634e487b7160e01b88526022600452602488fd5b808015612b595760018114612b6a57612b96565b60ff19851688528388019550612b96565b612b738b613526565b895b85811015612b8e5781548a820152908401908801612b75565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0391909116815260200190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612bee90830184612ab9565b9695505050505050565b901515815260200190565b6000602082526119ee6020830184612ab9565b60208082526018908201527f41444452455353204e4f54204f4e2057484954454c4953540000000000000000604082015260600190565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252602f908201527f4552433732314d657461646174613a2055524920515545525920464f52204e4f60408201526e2722ac24a9aa22a72a102a27a5a2a760891b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b6020808252818101527f43414e204f4e4c59204d494e542035204e465453205045522041444452455353604082015260600190565b60208082526026908201527f4e4f5420454e4f5547482045544820544f20434f4d504c455445205452414e5360408201526520a1aa24a7a760d11b606082015260800190565b60208082526023908201527f4e4f5420454e4f554748205055424c4943204e465453204c45465420544f204d60408201526212539560ea1b606082015260800190565b60208082526025908201527f43414e4e4f54204d494e54205448524f554748204120435553544f4d20434f4e60408201526415149050d560da1b606082015260800190565b6020808252601d908201527f4d59544849432041495244524f5020414c5245414459204d494e544544000000604082015260600190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526026908201527f4e4f5420454e4f5547482057484954454c495354204e465453204c454654205460408201526513c81352539560d21b606082015260800190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201526832b73a103a37b5b2b760b91b606082015260800190565b60208082526018908201527f4d555354204d494e54204154204c454153542031204e46540000000000000000604082015260600190565b60208082526018908201527f43414e204f4e4c5920444543524541534520535550504c590000000000000000604082015260600190565b60208082526022908201527f4e4f5420454e4f5547482041444d494e204e465453204c45465420544f204d49604082015261139560f21b606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526024908201527f43414e204f4e4c59204d494e542035204e46545320504552205452414e5341436040820152632a24a7a760e11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b6020808252601c908201527f4e4f5420454e4f554748204e465453204c45465420544f204d494e5400000000604082015260600190565b6020808252601a908201527f57484954454c495354204d494e54204953204e4f54204c495645000000000000604082015260600190565b60208082526021908201527f4e4f5420454e4f554748205445414d204e465453204c45465420544f204d494e6040820152601560fa1b606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602c908201527f43414e4e4f54204255524e20414e594d4f524520544f4b454e2057495448205460408201526b2424a990232aa721aa24a7a760a11b606082015260800190565b60208082526017908201527f5055424c4943204d494e54204953204e4f54204c495645000000000000000000604082015260600190565b6020808252602c908201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60408201526b7574206f6620626f756e647360a01b606082015260800190565b6020808252601390820152724d494e54494e47204953204e4f54204c49564560681b604082015260600190565b90815260200190565b60009081526020902090565b6000821982111561354557613545613641565b500190565b60008261355957613559613657565b500490565b600081600019048311821515161561357857613578613641565b500290565b60008282101561358f5761358f613641565b500390565b60005b838110156135af578181015183820152602001613597565b83811115610c775750506000910152565b6000816135cf576135cf613641565b506000190190565b6002810460018216806135eb57607f821691505b6020821081141561360c57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561362657613626613641565b5060010190565b60008261363c5761363c613657565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610fbd57600080fdfea26469706673582212204174c556b97cd4bc59c497a418585193c9af8b47dfe4918d3e62401adcc916d364736f6c63430008000033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000010437279707441787820477569746172730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034158580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a68747470733a2f2f63727970746178786e66742e636f6d2f61787865732d76312f6d657461646174612f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003068747470733a2f2f63727970746178786e66742e636f6d2f61787865732d76312f6d657461646174612f302e6a736f6e00000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061036f5760003560e01c806370a08231116101c6578063bb21d765116100f7578063e316c3eb11610095578063eda53f151161006f578063eda53f151461094f578063f1528ae114610964578063f2c4ce1e14610984578063f2fde38b146109a457610376565b8063e316c3eb14610905578063e398a9721461091a578063e985e9c51461092f57610376565b8063ccfdd2f8116100d1578063ccfdd2f814610890578063d5abeb01146108b0578063da3ef23f146108c5578063e0a80853146108e557610376565b8063bb21d76514610830578063bfa457bc14610850578063c87b56dd1461087057610376565b80638f807bdf1161016457806395e8cc911161013e57806395e8cc91146107b0578063a22cb465146107d0578063b88d4fde146107f0578063ba4e5c491461081057610376565b80638f807bdf1461075b57806391ff4a731461077b57806395d89b411461079b57610376565b80637bddd65b116101a05780637bddd65b146106fe578063868ff4a21461071e5780638da5cb5b146107315780638f43b8031461074657610376565b806370a08231146106b4578063715018a6146106d4578063746a8020146106e957610376565b8063419a0960116102a057806355f804b31161023e578063639814e011610218578063639814e01461063f578063674e3f4d146106545780636b936ac4146106745780636d1b229d1461069457610376565b806355f804b3146105ea5780635c975abb1461060a5780636352211e1461061f57610376565b80634b980d671161027a5780634b980d671461058b5780634dbc99a6146105a05780634f6ccce7146105b557806351830227146105d557610376565b8063419a09601461053657806342842e0e1461054b57806344a0d68a1461056b57610376565b806318160ddd1161030d57806327c7dde7116102e757806327c7dde7146104d95780632db11544146104ee5780632f745c59146105015780633ccfd60b1461052157610376565b806318160ddd1461048457806318cae2691461049957806323b872dd146104b957610376565b8063095ea7b311610349578063095ea7b3146104005780630dc28efe1461042257806313faede61461044257806316c38b3c1461046457610376565b806301ffc9a71461037b57806306fdde03146103b1578063081812fc146103d357610376565b3661037657005b600080fd5b34801561038757600080fd5b5061039b610396366004612a01565b6109c4565b6040516103a89190612bf8565b60405180910390f35b3480156103bd57600080fd5b506103c66109f1565b6040516103a89190612c03565b3480156103df57600080fd5b506103f36103ee366004612a7f565b610a83565b6040516103a89190612ba7565b34801561040c57600080fd5b5061042061041b36600461294f565b610acf565b005b34801561042e57600080fd5b5061042061043d366004612a97565b610b67565b34801561044e57600080fd5b50610457610c7d565b6040516103a8919061351d565b34801561047057600080fd5b5061042061047f3660046129e7565b610c83565b34801561049057600080fd5b50610457610cd5565b3480156104a557600080fd5b506104576104b4366004612826565b610cdb565b3480156104c557600080fd5b506104206104d4366004612872565b610ced565b3480156104e557600080fd5b5061039b610d25565b6104206104fc366004612a7f565b610d35565b34801561050d57600080fd5b5061045761051c36600461294f565b610f00565b34801561052d57600080fd5b50610420610f52565b34801561054257600080fd5b5061039b610fc0565b34801561055757600080fd5b50610420610566366004612872565b610fcf565b34801561057757600080fd5b50610420610586366004612a7f565b610fea565b34801561059757600080fd5b5061045761102e565b3480156105ac57600080fd5b50610457611034565b3480156105c157600080fd5b506104576105d0366004612a7f565b61103a565b3480156105e157600080fd5b5061039b611095565b3480156105f657600080fd5b50610420610605366004612a39565b6110a3565b34801561061657600080fd5b5061039b6110f9565b34801561062b57600080fd5b506103f361063a366004612a7f565b611102565b34801561064b57600080fd5b50610457611137565b34801561066057600080fd5b5061042061066f36600461294f565b61113d565b34801561068057600080fd5b5061042061068f366004612a7f565b6111c6565b3480156106a057600080fd5b506104206106af366004612a7f565b61120a565b3480156106c057600080fd5b506104576106cf366004612826565b61130c565b3480156106e057600080fd5b50610420611350565b3480156106f557600080fd5b5061045761139b565b34801561070a57600080fd5b50610420610719366004612a7f565b6113a1565b61042061072c366004612a7f565b6113e5565b34801561073d57600080fd5b506103f36115d4565b34801561075257600080fd5b506104576115e3565b34801561076757600080fd5b50610420610776366004612a7f565b6115e9565b34801561078757600080fd5b50610420610796366004612a7f565b61162d565b3480156107a757600080fd5b506103c6611692565b3480156107bc57600080fd5b506104206107cb3660046129e7565b6116a1565b3480156107dc57600080fd5b506104206107eb366004612926565b6116fe565b3480156107fc57600080fd5b5061042061080b3660046128ad565b611710565b34801561081c57600080fd5b506103f361082b366004612a7f565b611749565b34801561083c57600080fd5b5061042061084b3660046129e7565b611773565b34801561085c57600080fd5b5061042061086b366004612a97565b6117ce565b34801561087c57600080fd5b506103c661088b366004612a7f565b6118ce565b34801561089c57600080fd5b506104206108ab366004612a7f565b6119f5565b3480156108bc57600080fd5b50610457611a39565b3480156108d157600080fd5b506104206108e0366004612a39565b611a3f565b3480156108f157600080fd5b506104206109003660046129e7565b611a91565b34801561091157600080fd5b50610457611aea565b34801561092657600080fd5b50610457611af0565b34801561093b57600080fd5b5061039b61094a366004612840565b611af6565b34801561095b57600080fd5b5061039b611b24565b34801561097057600080fd5b5061042061097f366004612978565b611b35565b34801561099057600080fd5b5061042061099f366004612a39565b611b8c565b3480156109b057600080fd5b506104206109bf366004612826565b611bde565b60006001600160e01b0319821663780e9d6360e01b14806109e957506109e982611c4c565b90505b919050565b606060008054610a00906135d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2c906135d7565b8015610a795780601f10610a4e57610100808354040283529160200191610a79565b820191906000526020600020905b815481529060010190602001808311610a5c57829003601f168201915b5050505050905090565b6000610a8e82611c8c565b610ab35760405162461bcd60e51b8152600401610aaa906131d2565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000610ada82611102565b9050806001600160a01b0316836001600160a01b03161415610b0e5760405162461bcd60e51b8152600401610aaa9061338f565b806001600160a01b0316610b20611ca9565b6001600160a01b03161480610b3c5750610b3c8161094a611ca9565b610b585760405162461bcd60e51b8152600401610aaa90612ffd565b610b628383611cad565b505050565b610b6f611ca9565b6001600160a01b0316610b806115d4565b6001600160a01b031614610ba65760405162461bcd60e51b8152600401610aaa90613262565b8160008111610bc75760405162461bcd60e51b8152600401610aaa906130ed565b600f5481610bd3610cd5565b610bdd9190613532565b1115610bfb5760405162461bcd60e51b8152600401610aaa906132e0565b600083601554610c0b919061357d565b1015610c295760405162461bcd60e51b8152600401610aaa9061315b565b60005b83811015610c775760158054906000610c44836135c0565b9190505550610c6583610c55610cd5565b610c60906001613532565b611d1b565b80610c6f81613612565b915050610c2c565b50505050565b600e5481565b610c8b611ca9565b6001600160a01b0316610c9c6115d4565b6001600160a01b031614610cc25760405162461bcd60e51b8152600401610aaa90613262565b6017805460ff1916911515919091179055565b60085490565b60196020526000908152604090205481565b610cfe610cf8611ca9565b82611d35565b610d1a5760405162461bcd60e51b8152600401610aaa906133d0565b610b62838383611dba565b6017546301000000900460ff1681565b601754819060ff1615610d5a5760405162461bcd60e51b8152600401610aaa906134f0565b33600090815260196020526040902054600e54610d7890839061355e565b341015610d975760405162461bcd60e51b8152600401610aaa90612deb565b601254610da48383613532565b1115610dc25760405162461bcd60e51b8152600401610aaa90612db6565b60008211610de25760405162461bcd60e51b8152600401610aaa906130ed565b601154821115610e045760405162461bcd60e51b8152600401610aaa9061321e565b600f5482610e10610cd5565b610e1a9190613532565b1115610e385760405162461bcd60e51b8152600401610aaa906132e0565b323314610e575760405162461bcd60e51b8152600401610aaa90612e74565b6017546301000000900460ff16610e805760405162461bcd60e51b8152600401610aaa9061346d565b600060145411610ea25760405162461bcd60e51b8152600401610aaa90612e31565b60005b83811015610c775760148054906000610ebd836135c0565b9091555050336000908152601960205260408120805491610edd83613612565b9190505550610eee33610c55610cd5565b80610ef881613612565b915050610ea5565b6000610f0b8361130c565b8210610f295760405162461bcd60e51b8152600401610aaa90612c4d565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b610f5a611ca9565b6001600160a01b0316610f6b6115d4565b6001600160a01b031614610f915760405162461bcd60e51b8152600401610aaa90613262565b60405133904780156108fc02916000818181858888f19350505050158015610fbd573d6000803e3d6000fd5b50565b60175462010000900460ff1681565b610b6283838360405180602001604052806000815250611710565b610ff2611ca9565b6001600160a01b03166110036115d4565b6001600160a01b0316146110295760405162461bcd60e51b8152600401610aaa90613262565b600e55565b60115481565b60165481565b6000611044610cd5565b82106110625760405162461bcd60e51b8152600401610aaa906134a4565b6008828154811061108357634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b601754610100900460ff1681565b6110ab611ca9565b6001600160a01b03166110bc6115d4565b6001600160a01b0316146110e25760405162461bcd60e51b8152600401610aaa90613262565b80516110f590600b906020840190612685565b5050565b60175460ff1681565b6000818152600260205260408120546001600160a01b0316806109e95760405162461bcd60e51b8152600401610aaa906130a4565b60125481565b611145611ca9565b6001600160a01b03166111566115d4565b6001600160a01b03161461117c5760405162461bcd60e51b8152600401610aaa90613262565b601754640100000000900460ff16156111a75760405162461bcd60e51b8152600401610aaa90612eb9565b6017805464ff0000000019166401000000001790556110f58282611d1b565b6111ce611ca9565b6001600160a01b03166111df6115d4565b6001600160a01b0316146112055760405162461bcd60e51b8152600401610aaa90613262565b601355565b611212611ca9565b6001600160a01b03166112236115d4565b6001600160a01b0316146112495760405162461bcd60e51b8152600401610aaa90613262565b806000811161126a5760405162461bcd60e51b8152600401610aaa906130ed565b600f5481611276610cd5565b6112809190613532565b111561129e5760405162461bcd60e51b8152600401610aaa906132e0565b6000826010546112ae919061357d565b10156112cc5760405162461bcd60e51b8152600401610aaa90613421565b60005b82811015610b6257601080549060006112e7836135c0565b91905055506112fa61dead610c55610cd5565b8061130481613612565b9150506112cf565b60006001600160a01b0382166113345760405162461bcd60e51b8152600401610aaa9061305a565b506001600160a01b031660009081526003602052604090205490565b611358611ca9565b6001600160a01b03166113696115d4565b6001600160a01b03161461138f5760405162461bcd60e51b8152600401610aaa90613262565b6113996000611ee7565b565b60155481565b6113a9611ca9565b6001600160a01b03166113ba6115d4565b6001600160a01b0316146113e05760405162461bcd60e51b8152600401610aaa90613262565b601255565b601754819060ff161561140a5760405162461bcd60e51b8152600401610aaa906134f0565b33600090815260196020526040902054600e5461142890839061355e565b3410156114475760405162461bcd60e51b8152600401610aaa90612deb565b6012546114548383613532565b11156114725760405162461bcd60e51b8152600401610aaa90612db6565b600082116114925760405162461bcd60e51b8152600401610aaa906130ed565b6011548211156114b45760405162461bcd60e51b8152600401610aaa9061321e565b600f54826114c0610cd5565b6114ca9190613532565b11156114e85760405162461bcd60e51b8152600401610aaa906132e0565b3233146115075760405162461bcd60e51b8152600401610aaa90612e74565b60175462010000900460ff1661152f5760405162461bcd60e51b8152600401610aaa90613317565b61153833611f39565b6115545760405162461bcd60e51b8152600401610aaa90612c16565b6000601354116115765760405162461bcd60e51b8152600401610aaa90612fb7565b60005b83811015610c775760138054906000611591836135c0565b90915550503360009081526019602052604081208054916115b183613612565b91905055506115c233610c55610cd5565b806115cc81613612565b915050611579565b600a546001600160a01b031690565b60145481565b6115f1611ca9565b6001600160a01b03166116026115d4565b6001600160a01b0316146116285760405162461bcd60e51b8152600401610aaa90613262565b601455565b611635611ca9565b6001600160a01b03166116466115d4565b6001600160a01b03161461166c5760405162461bcd60e51b8152600401610aaa90613262565b600f54811061168d5760405162461bcd60e51b8152600401610aaa90613124565b600f55565b606060018054610a00906135d7565b6116a9611ca9565b6001600160a01b03166116ba6115d4565b6001600160a01b0316146116e05760405162461bcd60e51b8152600401610aaa90613262565b6017805491151563010000000263ff00000019909216919091179055565b6110f5611709611ca9565b8383611fb2565b61172161171b611ca9565b83611d35565b61173d5760405162461bcd60e51b8152600401610aaa906133d0565b610c7784848484612055565b6018818154811061175957600080fd5b6000918252602090912001546001600160a01b0316905081565b61177b611ca9565b6001600160a01b031661178c6115d4565b6001600160a01b0316146117b25760405162461bcd60e51b8152600401610aaa90613262565b60178054911515620100000262ff000019909216919091179055565b6117d6611ca9565b6001600160a01b03166117e76115d4565b6001600160a01b03161461180d5760405162461bcd60e51b8152600401610aaa90613262565b816000811161182e5760405162461bcd60e51b8152600401610aaa906130ed565b600f548161183a610cd5565b6118449190613532565b11156118625760405162461bcd60e51b8152600401610aaa906132e0565b600083601654611872919061357d565b10156118905760405162461bcd60e51b8152600401610aaa9061334e565b60005b83811015610c7757601680549060006118ab836135c0565b91905055506118bc83610c55610cd5565b806118c681613612565b915050611893565b60606118d982611c8c565b6118f55760405162461bcd60e51b8152600401610aaa90612d30565b601754610100900460ff1661199657600d8054611911906135d7565b80601f016020809104026020016040519081016040528092919081815260200182805461193d906135d7565b801561198a5780601f1061195f5761010080835404028352916020019161198a565b820191906000526020600020905b81548152906001019060200180831161196d57829003601f168201915b505050505090506109ec565b60006119a0612088565b905060008151116119c057604051806020016040528060008152506119ee565b806119ca84612097565b600c6040516020016119de93929190612ae5565b6040516020818303038152906040525b9392505050565b6119fd611ca9565b6001600160a01b0316611a0e6115d4565b6001600160a01b031614611a345760405162461bcd60e51b8152600401610aaa90613262565b601155565b600f5481565b611a47611ca9565b6001600160a01b0316611a586115d4565b6001600160a01b031614611a7e5760405162461bcd60e51b8152600401610aaa90613262565b80516110f590600c906020840190612685565b611a99611ca9565b6001600160a01b0316611aaa6115d4565b6001600160a01b031614611ad05760405162461bcd60e51b8152600401610aaa90613262565b601780549115156101000261ff0019909216919091179055565b60105481565b60135481565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b601754640100000000900460ff1681565b611b3d611ca9565b6001600160a01b0316611b4e6115d4565b6001600160a01b031614611b745760405162461bcd60e51b8152600401610aaa90613262565b611b8060186000612709565b610b6260188383612727565b611b94611ca9565b6001600160a01b0316611ba56115d4565b6001600160a01b031614611bcb5760405162461bcd60e51b8152600401610aaa90613262565b80516110f590600d906020840190612685565b611be6611ca9565b6001600160a01b0316611bf76115d4565b6001600160a01b031614611c1d5760405162461bcd60e51b8152600401610aaa90613262565b6001600160a01b038116611c435760405162461bcd60e51b8152600401610aaa90612cea565b610fbd81611ee7565b60006001600160e01b031982166380ac58cd60e01b1480611c7d57506001600160e01b03198216635b5e139f60e01b145b806109e957506109e9826121b2565b6000908152600260205260409020546001600160a01b0316151590565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611ce282611102565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6110f58282604051806020016040528060008152506121cb565b6000611d4082611c8c565b611d5c5760405162461bcd60e51b8152600401610aaa90612f6b565b6000611d6783611102565b9050806001600160a01b0316846001600160a01b03161480611da25750836001600160a01b0316611d9784610a83565b6001600160a01b0316145b80611db25750611db28185611af6565b949350505050565b826001600160a01b0316611dcd82611102565b6001600160a01b031614611df35760405162461bcd60e51b8152600401610aaa90613297565b6001600160a01b038216611e195760405162461bcd60e51b8152600401610aaa90612ef0565b611e248383836121fe565b611e2f600082611cad565b6001600160a01b0383166000908152600360205260408120805460019290611e5890849061357d565b90915550506001600160a01b0382166000908152600360205260408120805460019290611e86908490613532565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000805b601854811015611fa957826001600160a01b031660188281548110611f7257634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415611f975760019150506109ec565b80611fa181613612565b915050611f3d565b50600092915050565b816001600160a01b0316836001600160a01b03161415611fe45760405162461bcd60e51b8152600401610aaa90612f34565b6001600160a01b0383811660008181526005602090815260408083209487168084529490915290819020805460ff1916851515179055517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190612048908590612bf8565b60405180910390a3505050565b612060848484611dba565b61206c84848484612287565b610c775760405162461bcd60e51b8152600401610aaa90612c98565b6060600b8054610a00906135d7565b6060816120bc57506040805180820190915260018152600360fc1b60208201526109ec565b8160005b81156120e657806120d081613612565b91506120df9050600a8361354a565b91506120c0565b60008167ffffffffffffffff81111561210f57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612139576020820181803683370190505b5090505b8415611db25761214e60018361357d565b915061215b600a8661362d565b612166906030613532565b60f81b81838151811061218957634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506121ab600a8661354a565b945061213d565b6001600160e01b031981166301ffc9a760e01b14919050565b6121d583836123a2565b6121e26000848484612287565b610b625760405162461bcd60e51b8152600401610aaa90612c98565b612209838383610b62565b6001600160a01b0383166122255761222081612481565b612248565b816001600160a01b0316836001600160a01b0316146122485761224883826124c5565b6001600160a01b0382166122645761225f81612562565b610b62565b826001600160a01b0316826001600160a01b031614610b6257610b62828261263b565b600061229b846001600160a01b031661267f565b1561239757836001600160a01b031663150b7a026122b7611ca9565b8786866040518563ffffffff1660e01b81526004016122d99493929190612bbb565b602060405180830381600087803b1580156122f357600080fd5b505af1925050508015612323575060408051601f3d908101601f1916820190925261232091810190612a1d565b60015b61237d573d808015612351576040519150601f19603f3d011682016040523d82523d6000602084013e612356565b606091505b5080516123755760405162461bcd60e51b8152600401610aaa90612c98565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611db2565b506001949350505050565b6001600160a01b0382166123c85760405162461bcd60e51b8152600401610aaa9061319d565b6123d181611c8c565b156123ee5760405162461bcd60e51b8152600401610aaa90612d7f565b6123fa600083836121fe565b6001600160a01b0382166000908152600360205260408120805460019290612423908490613532565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b600060016124d28461130c565b6124dc919061357d565b60008381526007602052604090205490915080821461252f576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906125749060019061357d565b600083815260096020526040812054600880549394509092849081106125aa57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080600883815481106125d957634e487b7160e01b600052603260045260246000fd5b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061261f57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006126468361130c565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b3b151590565b828054612691906135d7565b90600052602060002090601f0160209004810192826126b357600085556126f9565b82601f106126cc57805160ff19168380011785556126f9565b828001600101855582156126f9579182015b828111156126f95782518255916020019190600101906126de565b5061270592915061277a565b5090565b5080546000825590600052602060002090810190610fbd919061277a565b8280548282559060005260206000209081019282156126f9579160200282015b828111156126f95781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190612747565b5b80821115612705576000815560010161277b565b600067ffffffffffffffff808411156127aa576127aa61366d565b604051601f8501601f1916810160200182811182821017156127ce576127ce61366d565b6040528481529150818385018610156127e657600080fd5b8484602083013760006020868301015250509392505050565b80356001600160a01b03811681146109ec57600080fd5b803580151581146109ec57600080fd5b600060208284031215612837578081fd5b6119ee826127ff565b60008060408385031215612852578081fd5b61285b836127ff565b9150612869602084016127ff565b90509250929050565b600080600060608486031215612886578081fd5b61288f846127ff565b925061289d602085016127ff565b9150604084013590509250925092565b600080600080608085870312156128c2578081fd5b6128cb856127ff565b93506128d9602086016127ff565b925060408501359150606085013567ffffffffffffffff8111156128fb578182fd5b8501601f8101871361290b578182fd5b61291a8782356020840161278f565b91505092959194509250565b60008060408385031215612938578182fd5b612941836127ff565b915061286960208401612816565b60008060408385031215612961578182fd5b61296a836127ff565b946020939093013593505050565b6000806020838503121561298a578182fd5b823567ffffffffffffffff808211156129a1578384fd5b818501915085601f8301126129b4578384fd5b8135818111156129c2578485fd5b86602080830285010111156129d5578485fd5b60209290920196919550909350505050565b6000602082840312156129f8578081fd5b6119ee82612816565b600060208284031215612a12578081fd5b81356119ee81613683565b600060208284031215612a2e578081fd5b81516119ee81613683565b600060208284031215612a4a578081fd5b813567ffffffffffffffff811115612a60578182fd5b8201601f81018413612a70578182fd5b611db28482356020840161278f565b600060208284031215612a90578081fd5b5035919050565b60008060408385031215612aa9578182fd5b82359150612869602084016127ff565b60008151808452612ad1816020860160208601613594565b601f01601f19169290920160200192915050565b600084516020612af88285838a01613594565b855191840191612b0b8184848a01613594565b8554920191839060028104600180831680612b2757607f831692505b858310811415612b4557634e487b7160e01b88526022600452602488fd5b808015612b595760018114612b6a57612b96565b60ff19851688528388019550612b96565b612b738b613526565b895b85811015612b8e5781548a820152908401908801612b75565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0391909116815260200190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612bee90830184612ab9565b9695505050505050565b901515815260200190565b6000602082526119ee6020830184612ab9565b60208082526018908201527f41444452455353204e4f54204f4e2057484954454c4953540000000000000000604082015260600190565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252602f908201527f4552433732314d657461646174613a2055524920515545525920464f52204e4f60408201526e2722ac24a9aa22a72a102a27a5a2a760891b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b6020808252818101527f43414e204f4e4c59204d494e542035204e465453205045522041444452455353604082015260600190565b60208082526026908201527f4e4f5420454e4f5547482045544820544f20434f4d504c455445205452414e5360408201526520a1aa24a7a760d11b606082015260800190565b60208082526023908201527f4e4f5420454e4f554748205055424c4943204e465453204c45465420544f204d60408201526212539560ea1b606082015260800190565b60208082526025908201527f43414e4e4f54204d494e54205448524f554748204120435553544f4d20434f4e60408201526415149050d560da1b606082015260800190565b6020808252601d908201527f4d59544849432041495244524f5020414c5245414459204d494e544544000000604082015260600190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526026908201527f4e4f5420454e4f5547482057484954454c495354204e465453204c454654205460408201526513c81352539560d21b606082015260800190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201526832b73a103a37b5b2b760b91b606082015260800190565b60208082526018908201527f4d555354204d494e54204154204c454153542031204e46540000000000000000604082015260600190565b60208082526018908201527f43414e204f4e4c5920444543524541534520535550504c590000000000000000604082015260600190565b60208082526022908201527f4e4f5420454e4f5547482041444d494e204e465453204c45465420544f204d49604082015261139560f21b606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526024908201527f43414e204f4e4c59204d494e542035204e46545320504552205452414e5341436040820152632a24a7a760e11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b6020808252601c908201527f4e4f5420454e4f554748204e465453204c45465420544f204d494e5400000000604082015260600190565b6020808252601a908201527f57484954454c495354204d494e54204953204e4f54204c495645000000000000604082015260600190565b60208082526021908201527f4e4f5420454e4f554748205445414d204e465453204c45465420544f204d494e6040820152601560fa1b606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602c908201527f43414e4e4f54204255524e20414e594d4f524520544f4b454e2057495448205460408201526b2424a990232aa721aa24a7a760a11b606082015260800190565b60208082526017908201527f5055424c4943204d494e54204953204e4f54204c495645000000000000000000604082015260600190565b6020808252602c908201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60408201526b7574206f6620626f756e647360a01b606082015260800190565b6020808252601390820152724d494e54494e47204953204e4f54204c49564560681b604082015260600190565b90815260200190565b60009081526020902090565b6000821982111561354557613545613641565b500190565b60008261355957613559613657565b500490565b600081600019048311821515161561357857613578613641565b500290565b60008282101561358f5761358f613641565b500390565b60005b838110156135af578181015183820152602001613597565b83811115610c775750506000910152565b6000816135cf576135cf613641565b506000190190565b6002810460018216806135eb57607f821691505b6020821081141561360c57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561362657613626613641565b5060010190565b60008261363c5761363c613657565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610fbd57600080fdfea26469706673582212204174c556b97cd4bc59c497a418585193c9af8b47dfe4918d3e62401adcc916d364736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000010437279707441787820477569746172730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034158580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a68747470733a2f2f63727970746178786e66742e636f6d2f61787865732d76312f6d657461646174612f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003068747470733a2f2f63727970746178786e66742e636f6d2f61787865732d76312f6d657461646174612f302e6a736f6e00000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): CryptAxx Guitars
Arg [1] : _symbol (string): AXX
Arg [2] : _initBaseURI (string): https://cryptaxxnft.com/axxes-v1/metadata/
Arg [3] : _initNotRevealedUri (string): https://cryptaxxnft.com/axxes-v1/metadata/0.json
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000010
Arg [5] : 4372797074417878204775697461727300000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [7] : 4158580000000000000000000000000000000000000000000000000000000000
Arg [8] : 000000000000000000000000000000000000000000000000000000000000002a
Arg [9] : 68747470733a2f2f63727970746178786e66742e636f6d2f61787865732d7631
Arg [10] : 2f6d657461646174612f00000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000030
Arg [12] : 68747470733a2f2f63727970746178786e66742e636f6d2f61787865732d7631
Arg [13] : 2f6d657461646174612f302e6a736f6e00000000000000000000000000000000
Deployed Bytecode Sourcemap
51269:8994:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44157:224;;;;;;;;;;-1:-1:-1;44157:224:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31651:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;33210:221::-;;;;;;;;;;-1:-1:-1;33210:221:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;32733:411::-;;;;;;;;;;-1:-1:-1;32733:411:0;;;;;:::i;:::-;;:::i;:::-;;56172:283;;;;;;;;;;-1:-1:-1;56172:283:0;;;;;:::i;:::-;;:::i;51750:31::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;59252:101::-;;;;;;;;;;-1:-1:-1;59252:101:0;;;;;:::i;:::-;;:::i;44797:113::-;;;;;;;;;;;;;:::i;53756:55::-;;;;;;;;;;-1:-1:-1;53756:55:0;;;;;:::i;:::-;;:::i;33960:339::-;;;;;;;;;;-1:-1:-1;33960:339:0;;;;;:::i;:::-;;:::i;53359:34::-;;;;;;;;;;;;;:::i;55914:253::-;;;;;;:::i;:::-;;:::i;44465:256::-;;;;;;;;;;-1:-1:-1;44465:256:0;;;;;:::i;:::-;;:::i;60153:107::-;;;;;;;;;;;;;:::i;53227:37::-;;;;;;;;;;;;;:::i;34370:185::-;;;;;;;;;;-1:-1:-1;34370:185:0;;;;;:::i;:::-;;:::i;58602:86::-;;;;;;;;;;-1:-1:-1;58602:86:0;;;;;:::i;:::-;;:::i;52102:37::-;;;;;;;;;;;;;:::i;52863:33::-;;;;;;;;;;;;;:::i;44987:233::-;;;;;;;;;;-1:-1:-1;44987:233:0;;;;;:::i;:::-;;:::i;53104:28::-;;;;;;;;;;;;;:::i;58214:104::-;;;;;;;;;;-1:-1:-1;58214:104:0;;;;;:::i;:::-;;:::i;52991:25::-;;;;;;;;;;;;;:::i;31345:239::-;;;;;;;;;;-1:-1:-1;31345:239:0;;;;;:::i;:::-;;:::i;52248:33::-;;;;;;;;;;;;;:::i;57347:213::-;;;;;;;;;;-1:-1:-1;57347:213:0;;;;;:::i;:::-;;:::i;58972:138::-;;;;;;;;;;-1:-1:-1;58972:138:0;;;;;:::i;:::-;;:::i;56750:308::-;;;;;;;;;;-1:-1:-1;56750:308:0;;;;;:::i;:::-;;:::i;31075:208::-;;;;;;;;;;-1:-1:-1;31075:208:0;;;;;:::i;:::-;;:::i;10621:103::-;;;;;;;;;;;;;:::i;52718:35::-;;;;;;;;;;;;;:::i;58842:122::-;;;;;;;;;;-1:-1:-1;58842:122:0;;;;;:::i;:::-;;:::i;55644:262::-;;;;;;:::i;:::-;;:::i;9970:87::-;;;;;;;;;;;;;:::i;52558:36::-;;;;;;;;;;;;;:::i;59118:126::-;;;;;;;;;;-1:-1:-1;59118:126:0;;;;;:::i;:::-;;:::i;59979:166::-;;;;;;;;;;-1:-1:-1;59979:166:0;;;;;:::i;:::-;;:::i;31820:104::-;;;;;;;;;;;;;:::i;59631:133::-;;;;;;;;;;-1:-1:-1;59631:133:0;;;;;:::i;:::-;;:::i;33503:155::-;;;;;;;;;;-1:-1:-1;33503:155:0;;;;;:::i;:::-;;:::i;34626:328::-;;;;;;;;;;-1:-1:-1;34626:328:0;;;;;:::i;:::-;;:::i;53619:37::-;;;;;;;;;;-1:-1:-1;53619:37:0;;;;;:::i;:::-;;:::i;59478:145::-;;;;;;;;;;-1:-1:-1;59478:145:0;;;;;:::i;:::-;;:::i;56463:279::-;;;;;;;;;;-1:-1:-1;56463:279:0;;;;;:::i;:::-;;:::i;57568:638::-;;;;;;;;;;-1:-1:-1;57568:638:0;;;;;:::i;:::-;;:::i;58696:138::-;;;;;;;;;;-1:-1:-1;58696:138:0;;;;;:::i;:::-;;:::i;51858:32::-;;;;;;;;;;;;;:::i;58326:128::-;;;;;;;;;;-1:-1:-1;58326:128:0;;;;;:::i;:::-;;:::i;59361:109::-;;;;;;;;;;-1:-1:-1;59361:109:0;;;;;:::i;:::-;;:::i;51969:29::-;;;;;;;;;;;;;:::i;52392:39::-;;;;;;;;;;;;;:::i;33729:164::-;;;;;;;;;;-1:-1:-1;33729:164:0;;;;;:::i;:::-;;:::i;53485:33::-;;;;;;;;;;;;;:::i;59772:199::-;;;;;;;;;;-1:-1:-1;59772:199:0;;;;;:::i;:::-;;:::i;58462:132::-;;;;;;;;;;-1:-1:-1;58462:132:0;;;;;:::i;:::-;;:::i;10879:201::-;;;;;;;;;;-1:-1:-1;10879:201:0;;;;;:::i;:::-;;:::i;44157:224::-;44259:4;-1:-1:-1;;;;;;44283:50:0;;-1:-1:-1;;;44283:50:0;;:90;;;44337:36;44361:11;44337:23;:36::i;:::-;44276:97;;44157:224;;;;:::o;31651:100::-;31705:13;31738:5;31731:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31651:100;:::o;33210:221::-;33286:7;33314:16;33322:7;33314;:16::i;:::-;33306:73;;;;-1:-1:-1;;;33306:73:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;33399:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;33399:24:0;;33210:221::o;32733:411::-;32814:13;32830:23;32845:7;32830:14;:23::i;:::-;32814:39;;32878:5;-1:-1:-1;;;;;32872:11:0;:2;-1:-1:-1;;;;;32872:11:0;;;32864:57;;;;-1:-1:-1;;;32864:57:0;;;;;;;:::i;:::-;32972:5;-1:-1:-1;;;;;32956:21:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;32956:21:0;;:62;;;;32981:37;32998:5;33005:12;:10;:12::i;32981:37::-;32934:168;;;;-1:-1:-1;;;32934:168:0;;;;;;;:::i;:::-;33115:21;33124:2;33128:7;33115:8;:21::i;:::-;32733:411;;;:::o;56172:283::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;56249:3:::1;55040:1;55034:3;:7;55026:44;;;;-1:-1:-1::0;;;55026:44:0::1;;;;;;;:::i;:::-;55106:9;;55099:3;55083:13;:11;:13::i;:::-;:19;;;;:::i;:::-;:32;;55075:73;;;;-1:-1:-1::0;;;55075:73:0::1;;;;;;;:::i;:::-;56297:1:::2;56290:3;56273:14;;:20;;;;:::i;:::-;:25;;56265:72;;;;-1:-1:-1::0;;;56265:72:0::2;;;;;;;:::i;:::-;56347:9;56342:109;56366:3;56362:1;:7;56342:109;;;56391:14;:16:::0;;;:14:::2;:16;::::0;::::2;:::i;:::-;;;;;;56413:32;56423:2;56427:13;:11;:13::i;:::-;:17;::::0;56443:1:::2;56427:17;:::i;:::-;56413:9;:32::i;:::-;56371:3:::0;::::2;::::0;::::2;:::i;:::-;;;;56342:109;;;;10261:1:::1;56172:283:::0;;:::o;51750:31::-;;;;:::o;59252:101::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;59321:6:::1;:24:::0;;-1:-1:-1;;59321:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;59252:101::o;44797:113::-;44885:10;:17;44797:113;:::o;53756:55::-;;;;;;;;;;;;;:::o;33960:339::-;34155:41;34174:12;:10;:12::i;:::-;34188:7;34155:18;:41::i;:::-;34147:103;;;;-1:-1:-1;;;34147:103:0;;;;;;;:::i;:::-;34263:28;34273:4;34279:2;34283:7;34263:9;:28::i;53359:34::-;;;;;;;;;:::o;55914:253::-;54368:6;;55973:3;;54368:6;;54367:7;54359:39;;;;-1:-1:-1;;;54359:39:0;;;;;;;:::i;:::-;54457:10;54409:24;54436:32;;;:20;:32;;;;;;54500:4;;:10;;54507:3;;54500:10;:::i;:::-;54487:9;:23;;54479:74;;;;-1:-1:-1;;;54479:74:0;;;;;;;:::i;:::-;54598:13;;54572:22;54591:3;54572:16;:22;:::i;:::-;:39;;54564:84;;;;-1:-1:-1;;;54564:84:0;;;;;;;:::i;:::-;54673:1;54667:3;:7;54659:44;;;;-1:-1:-1;;;54659:44:0;;;;;;;:::i;:::-;54729:17;;54722:3;:24;;54714:73;;;;-1:-1:-1;;;54714:73:0;;;;;;;:::i;:::-;54823:9;;54816:3;54800:13;:11;:13::i;:::-;:19;;;;:::i;:::-;:32;;54792:73;;;;-1:-1:-1;;;54792:73:0;;;;;;;:::i;:::-;54884:9;54897:10;54884:23;54876:73;;;;-1:-1:-1;;;54876:73:0;;;;;;;:::i;:::-;55496:14:::1;::::0;;;::::1;;;55488:50;;;;-1:-1:-1::0;;;55488:50:0::1;;;;;;;:::i;:::-;55575:1;55558:14;;:18;55550:66;;;;-1:-1:-1::0;;;55550:66:0::1;;;;;;;:::i;:::-;56002:9:::2;55997:166;56021:3;56017:1;:7;55997:166;;;56046:14;:16:::0;;;:14:::2;:16;::::0;::::2;:::i;:::-;::::0;;;-1:-1:-1;;56098:10:0::2;56077:32;::::0;;;:20:::2;:32;::::0;;;;:34;;;::::2;::::0;::::2;:::i;:::-;;;;;;56117:40;56127:10;56139:13;:11;:13::i;56117:40::-;56026:3:::0;::::2;::::0;::::2;:::i;:::-;;;;55997:166;;44465:256:::0;44562:7;44598:23;44615:5;44598:16;:23::i;:::-;44590:5;:31;44582:87;;;;-1:-1:-1;;;44582:87:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;44687:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;44465:256::o;60153:107::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;60201:51:::1;::::0;60209:10:::1;::::0;60230:21:::1;60201:51:::0;::::1;;;::::0;::::1;::::0;;;60230:21;60209:10;60201:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;60153:107::o:0;53227:37::-;;;;;;;;;:::o;34370:185::-;34508:39;34525:4;34531:2;34535:7;34508:39;;;;;;;;;;;;:16;:39::i;58602:86::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;58665:4:::1;:15:::0;58602:86::o;52102:37::-;;;;:::o;52863:33::-;;;;:::o;44987:233::-;45062:7;45098:30;:28;:30::i;:::-;45090:5;:38;45082:95;;;;-1:-1:-1;;;45082:95:0;;;;;;;:::i;:::-;45195:10;45206:5;45195:17;;;;;;-1:-1:-1;;;45195:17:0;;;;;;;;;;;;;;;;;45188:24;;44987:233;;;:::o;53104:28::-;;;;;;;;;:::o;58214:104::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;58289:21;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;58214:104:::0;:::o;52991:25::-;;;;;;:::o;31345:239::-;31417:7;31453:16;;;:7;:16;;;;;;-1:-1:-1;;;;;31453:16:0;31488:19;31480:73;;;;-1:-1:-1;;;31480:73:0;;;;;;;:::i;52248:33::-;;;;:::o;57347:213::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;57432:13:::1;::::0;;;::::1;;;:22;57424:64;;;;-1:-1:-1::0;;;57424:64:0::1;;;;;;;:::i;:::-;57499:13;:20:::0;;-1:-1:-1;;57499:20:0::1;::::0;::::1;::::0;;57530:22:::1;57540:2:::0;57544:7;57530:9:::1;:22::i;58972:138::-:0;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;59061:17:::1;:41:::0;58972:138::o;56750:308::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;56816:3:::1;55040:1;55034:3;:7;55026:44;;;;-1:-1:-1::0;;;55026:44:0::1;;;;;;;:::i;:::-;55106:9;;55099:3;55083:13;:11;:13::i;:::-;:19;;;;:::i;:::-;:32;;55075:73;;;;-1:-1:-1::0;;;55075:73:0::1;;;;;;;:::i;:::-;56857:1:::2;56850:3;56840:7;;:13;;;;:::i;:::-;:18;;56832:75;;;;-1:-1:-1::0;;;56832:75:0::2;;;;;;;:::i;:::-;56917:9;56912:142;56936:3;56932:1;:7;56912:142;;;56961:7;:9:::0;;;:7:::2;:9;::::0;::::2;:::i;:::-;;;;;;56976:72;56986:42;57030:13;:11;:13::i;56976:72::-;56941:3:::0;::::2;::::0;::::2;:::i;:::-;;;;56912:142;;31075:208:::0;31147:7;-1:-1:-1;;;;;31175:19:0;;31167:74;;;;-1:-1:-1;;;31167:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;31259:16:0;;;;;:9;:16;;;;;;;31075:208::o;10621:103::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;10686:30:::1;10713:1;10686:18;:30::i;:::-;10621:103::o:0;52718:35::-;;;;:::o;58842:122::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;58923:13:::1;:33:::0;58842:122::o;55644:262::-;54368:6;;55706:3;;54368:6;;54367:7;54359:39;;;;-1:-1:-1;;;54359:39:0;;;;;;;:::i;:::-;54457:10;54409:24;54436:32;;;:20;:32;;;;;;54500:4;;:10;;54507:3;;54500:10;:::i;:::-;54487:9;:23;;54479:74;;;;-1:-1:-1;;;54479:74:0;;;;;;;:::i;:::-;54598:13;;54572:22;54591:3;54572:16;:22;:::i;:::-;:39;;54564:84;;;;-1:-1:-1;;;54564:84:0;;;;;;;:::i;:::-;54673:1;54667:3;:7;54659:44;;;;-1:-1:-1;;;54659:44:0;;;;;;;:::i;:::-;54729:17;;54722:3;:24;;54714:73;;;;-1:-1:-1;;;54714:73:0;;;;;;;:::i;:::-;54823:9;;54816:3;54800:13;:11;:13::i;:::-;:19;;;;:::i;:::-;:32;;54792:73;;;;-1:-1:-1;;;54792:73:0;;;;;;;:::i;:::-;54884:9;54897:10;54884:23;54876:73;;;;-1:-1:-1;;;54876:73:0;;;;;;;:::i;:::-;55221:17:::1;::::0;;;::::1;;;55213:56;;;;-1:-1:-1::0;;;55213:56:0::1;;;;;;;:::i;:::-;55289:25;55303:10;55289:13;:25::i;:::-;55281:62;;;;-1:-1:-1::0;;;55281:62:0::1;;;;;;;:::i;:::-;55382:1;55362:17;;:21;55354:72;;;;-1:-1:-1::0;;;55354:72:0::1;;;;;;;:::i;:::-;55738:9:::2;55733:169;55757:3;55753:1;:7;55733:169;;;55782:17;:19:::0;;;:17:::2;:19;::::0;::::2;:::i;:::-;::::0;;;-1:-1:-1;;55837:10:0::2;55816:32;::::0;;;:20:::2;:32;::::0;;;;:34;;;::::2;::::0;::::2;:::i;:::-;;;;;;55856:40;55866:10;55878:13;:11;:13::i;55856:40::-;55762:3:::0;::::2;::::0;::::2;:::i;:::-;;;;55733:169;;9970:87:::0;10043:6;;-1:-1:-1;;;;;10043:6:0;9970:87;:::o;52558:36::-;;;;:::o;59118:126::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;59201:14:::1;:35:::0;59118:126::o;59979:166::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;60073:9:::1;;60058:12;:24;60050:61;;;;-1:-1:-1::0;;;60050:61:0::1;;;;;;;:::i;:::-;60116:9;:24:::0;59979:166::o;31820:104::-;31876:13;31909:7;31902:14;;;;;:::i;59631:133::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;59716:14:::1;:40:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;59716:40:0;;::::1;::::0;;;::::1;::::0;;59631:133::o;33503:155::-;33598:52;33617:12;:10;:12::i;:::-;33631:8;33641;33598:18;:52::i;34626:328::-;34801:41;34820:12;:10;:12::i;:::-;34834:7;34801:18;:41::i;:::-;34793:103;;;;-1:-1:-1;;;34793:103:0;;;;;;;:::i;:::-;34907:39;34921:4;34927:2;34931:7;34940:5;34907:13;:39::i;53619:37::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;53619:37:0;;-1:-1:-1;53619:37:0;:::o;59478:145::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;59569:17:::1;:46:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;59569:46:0;;::::1;::::0;;;::::1;::::0;;59478:145::o;56463:279::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;56539:3:::1;55040:1;55034:3;:7;55026:44;;;;-1:-1:-1::0;;;55026:44:0::1;;;;;;;:::i;:::-;55106:9;;55099:3;55083:13;:11;:13::i;:::-;:19;;;;:::i;:::-;:32;;55075:73;;;;-1:-1:-1::0;;;55075:73:0::1;;;;;;;:::i;:::-;56586:1:::2;56579:3;56563:13;;:19;;;;:::i;:::-;:24;;56555:70;;;;-1:-1:-1::0;;;56555:70:0::2;;;;;;;:::i;:::-;56635:9;56630:108;56654:3;56650:1;:7;56630:108;;;56679:13;:15:::0;;;:13:::2;:15;::::0;::::2;:::i;:::-;;;;;;56700:32;56710:2;56714:13;:11;:13::i;56700:32::-;56659:3:::0;::::2;::::0;::::2;:::i;:::-;;;;56630:108;;57568:638:::0;57641:13;57675:16;57683:7;57675;:16::i;:::-;57667:76;;;;-1:-1:-1;;;57667:76:0;;;;;;;:::i;:::-;57760:8;;;;;;;57756:71;;57801:14;57794:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;57756:71;57839:28;57870:10;:8;:10::i;:::-;57839:41;;57942:1;57917:14;57911:28;:32;:287;;;;;;;;;;;;;;;;;58035:14;58076:18;:7;:16;:18::i;:::-;58121:13;57992:165;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;57911:287;57891:307;57568:638;-1:-1:-1;;;57568:638:0:o;58696:138::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;58785:17:::1;:41:::0;58696:138::o;51858:32::-;;;;:::o;58326:128::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;58413:33;;::::1;::::0;:13:::1;::::0;:33:::1;::::0;::::1;::::0;::::1;:::i;59361:109::-:0;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;59434:8:::1;:28:::0;;;::::1;;;;-1:-1:-1::0;;59434:28:0;;::::1;::::0;;;::::1;::::0;;59361:109::o;51969:29::-;;;;:::o;52392:39::-;;;;:::o;33729:164::-;-1:-1:-1;;;;;33850:25:0;;;33826:4;33850:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;33729:164::o;53485:33::-;;;;;;;;;:::o;59772:199::-;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;59878:27:::1;59885:20;;59878:27;:::i;:::-;59916:47;:20;59939:24:::0;;59916:47:::1;:::i;58462:132::-:0;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;58551:35;;::::1;::::0;:14:::1;::::0;:35:::1;::::0;::::1;::::0;::::1;:::i;10879:201::-:0;10201:12;:10;:12::i;:::-;-1:-1:-1;;;;;10190:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;10190:23:0;;10182:68;;;;-1:-1:-1;;;10182:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10968:22:0;::::1;10960:73;;;;-1:-1:-1::0;;;10960:73:0::1;;;;;;;:::i;:::-;11044:28;11063:8;11044:18;:28::i;30706:305::-:0;30808:4;-1:-1:-1;;;;;;30845:40:0;;-1:-1:-1;;;30845:40:0;;:105;;-1:-1:-1;;;;;;;30902:48:0;;-1:-1:-1;;;30902:48:0;30845:105;:158;;;;30967:36;30991:11;30967:23;:36::i;36464:127::-;36529:4;36553:16;;;:7;:16;;;;;;-1:-1:-1;;;;;36553:16:0;:30;;;36464:127::o;8694:98::-;8774:10;8694:98;:::o;40446:174::-;40521:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;40521:29:0;-1:-1:-1;;;;;40521:29:0;;;;;;;;:24;;40575:23;40521:24;40575:14;:23::i;:::-;-1:-1:-1;;;;;40566:46:0;;;;;;;;;;;40446:174;;:::o;37448:110::-;37524:26;37534:2;37538:7;37524:26;;;;;;;;;;;;:9;:26::i;36758:348::-;36851:4;36876:16;36884:7;36876;:16::i;:::-;36868:73;;;;-1:-1:-1;;;36868:73:0;;;;;;;:::i;:::-;36952:13;36968:23;36983:7;36968:14;:23::i;:::-;36952:39;;37021:5;-1:-1:-1;;;;;37010:16:0;:7;-1:-1:-1;;;;;37010:16:0;;:51;;;;37054:7;-1:-1:-1;;;;;37030:31:0;:20;37042:7;37030:11;:20::i;:::-;-1:-1:-1;;;;;37030:31:0;;37010:51;:87;;;;37065:32;37082:5;37089:7;37065:16;:32::i;:::-;37002:96;36758:348;-1:-1:-1;;;;36758:348:0:o;39750:578::-;39909:4;-1:-1:-1;;;;;39882:31:0;:23;39897:7;39882:14;:23::i;:::-;-1:-1:-1;;;;;39882:31:0;;39874:85;;;;-1:-1:-1;;;39874:85:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39978:16:0;;39970:65;;;;-1:-1:-1;;;39970:65:0;;;;;;;:::i;:::-;40048:39;40069:4;40075:2;40079:7;40048:20;:39::i;:::-;40152:29;40169:1;40173:7;40152:8;:29::i;:::-;-1:-1:-1;;;;;40194:15:0;;;;;;:9;:15;;;;;:20;;40213:1;;40194:15;:20;;40213:1;;40194:20;:::i;:::-;;;;-1:-1:-1;;;;;;;40225:13:0;;;;;;:9;:13;;;;;:18;;40242:1;;40225:13;:18;;40242:1;;40225:18;:::i;:::-;;;;-1:-1:-1;;40254:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;40254:21:0;-1:-1:-1;;;;;40254:21:0;;;;;;;;;40293:27;;40254:16;;40293:27;;;;;;;39750:578;;;:::o;11240:191::-;11333:6;;;-1:-1:-1;;;;;11350:17:0;;;-1:-1:-1;;;;;;11350:17:0;;;;;;;11383:40;;11333:6;;;11350:17;11333:6;;11383:40;;11314:16;;11383:40;11240:191;;:::o;57066:273::-;57127:4;;57144:165;57165:20;:27;57161:31;;57144:165;;;57245:5;-1:-1:-1;;;;;57218:32:0;:20;57239:1;57218:23;;;;;;-1:-1:-1;;;57218:23:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;57218:23:0;:32;57214:84;;;57278:4;57271:11;;;;;57214:84;57194:3;;;;:::i;:::-;;;;57144:165;;;-1:-1:-1;57326:5:0;;57066:273;-1:-1:-1;;57066:273:0:o;40762:315::-;40917:8;-1:-1:-1;;;;;40908:17:0;:5;-1:-1:-1;;;;;40908:17:0;;;40900:55;;;;-1:-1:-1;;;40900:55:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40966:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;:46;;-1:-1:-1;;40966:46:0;;;;;;;41028:41;;;;;40966:46;;41028:41;:::i;:::-;;;;;;;;40762:315;;;:::o;35836:::-;35993:28;36003:4;36009:2;36013:7;35993:9;:28::i;:::-;36040:48;36063:4;36069:2;36073:7;36082:5;36040:22;:48::i;:::-;36032:111;;;;-1:-1:-1;;;36032:111:0;;;;;;;:::i;54199:108::-;54259:13;54292:7;54285:14;;;;;:::i;6256:723::-;6312:13;6533:10;6529:53;;-1:-1:-1;6560:10:0;;;;;;;;;;;;-1:-1:-1;;;6560:10:0;;;;;;6529:53;6607:5;6592:12;6648:78;6655:9;;6648:78;;6681:8;;;;:::i;:::-;;-1:-1:-1;6704:10:0;;-1:-1:-1;6712:2:0;6704:10;;:::i;:::-;;;6648:78;;;6736:19;6768:6;6758:17;;;;;;-1:-1:-1;;;6758:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6758:17:0;;6736:39;;6786:154;6793:10;;6786:154;;6820:11;6830:1;6820:11;;:::i;:::-;;-1:-1:-1;6889:10:0;6897:2;6889:5;:10;:::i;:::-;6876:24;;:2;:24;:::i;:::-;6863:39;;6846:6;6853;6846:14;;;;;;-1:-1:-1;;;6846:14:0;;;;;;;;;;;;:56;-1:-1:-1;;;;;6846:56:0;;;;;;;;-1:-1:-1;6917:11:0;6926:2;6917:11;;:::i;:::-;;;6786:154;;22402:157;-1:-1:-1;;;;;;22511:40:0;;-1:-1:-1;;;22511:40:0;22402:157;;;:::o;37785:321::-;37915:18;37921:2;37925:7;37915:5;:18::i;:::-;37966:54;37997:1;38001:2;38005:7;38014:5;37966:22;:54::i;:::-;37944:154;;;;-1:-1:-1;;;37944:154:0;;;;;;;:::i;45833:589::-;45977:45;46004:4;46010:2;46014:7;45977:26;:45::i;:::-;-1:-1:-1;;;;;46039:18:0;;46035:187;;46074:40;46106:7;46074:31;:40::i;:::-;46035:187;;;46144:2;-1:-1:-1;;;;;46136:10:0;:4;-1:-1:-1;;;;;46136:10:0;;46132:90;;46163:47;46196:4;46202:7;46163:32;:47::i;:::-;-1:-1:-1;;;;;46236:16:0;;46232:183;;46269:45;46306:7;46269:36;:45::i;:::-;46232:183;;;46342:4;-1:-1:-1;;;;;46336:10:0;:2;-1:-1:-1;;;;;46336:10:0;;46332:83;;46363:40;46391:2;46395:7;46363:27;:40::i;41642:799::-;41797:4;41818:15;:2;-1:-1:-1;;;;;41818:13:0;;:15::i;:::-;41814:620;;;41870:2;-1:-1:-1;;;;;41854:36:0;;41891:12;:10;:12::i;:::-;41905:4;41911:7;41920:5;41854:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41854:72:0;;;;;;;;-1:-1:-1;;41854:72:0;;;;;;;;;;;;:::i;:::-;;;41850:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42096:13:0;;42092:272;;42139:60;;-1:-1:-1;;;42139:60:0;;;;;;;:::i;42092:272::-;42314:6;42308:13;42299:6;42295:2;42291:15;42284:38;41850:529;-1:-1:-1;;;;;;41977:51:0;-1:-1:-1;;;41977:51:0;;-1:-1:-1;41970:58:0;;41814:620;-1:-1:-1;42418:4:0;41642:799;;;;;;:::o;38442:382::-;-1:-1:-1;;;;;38522:16:0;;38514:61;;;;-1:-1:-1;;;38514:61:0;;;;;;;:::i;:::-;38595:16;38603:7;38595;:16::i;:::-;38594:17;38586:58;;;;-1:-1:-1;;;38586:58:0;;;;;;;:::i;:::-;38657:45;38686:1;38690:2;38694:7;38657:20;:45::i;:::-;-1:-1:-1;;;;;38715:13:0;;;;;;:9;:13;;;;;:18;;38732:1;;38715:13;:18;;38732:1;;38715:18;:::i;:::-;;;;-1:-1:-1;;38744:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;38744:21:0;-1:-1:-1;;;;;38744:21:0;;;;;;;;38783:33;;38744:16;;;38783:33;;38744:16;;38783:33;38442:382;;:::o;47145:164::-;47249:10;:17;;47222:24;;;;:15;:24;;;;;:44;;;47277:24;;;;;;;;;;;;47145:164::o;47936:988::-;48202:22;48252:1;48227:22;48244:4;48227:16;:22::i;:::-;:26;;;;:::i;:::-;48264:18;48285:26;;;:17;:26;;;;;;48202:51;;-1:-1:-1;48418:28:0;;;48414:328;;-1:-1:-1;;;;;48485:18:0;;48463:19;48485:18;;;:12;:18;;;;;;;;:34;;;;;;;;;48536:30;;;;;;:44;;;48653:30;;:17;:30;;;;;:43;;;48414:328;-1:-1:-1;48838:26:0;;;;:17;:26;;;;;;;;48831:33;;;-1:-1:-1;;;;;48882:18:0;;;;;:12;:18;;;;;:34;;;;;;;48875:41;47936:988::o;49219:1079::-;49497:10;:17;49472:22;;49497:21;;49517:1;;49497:21;:::i;:::-;49529:18;49550:24;;;:15;:24;;;;;;49923:10;:26;;49472:46;;-1:-1:-1;49550:24:0;;49472:46;;49923:26;;;;-1:-1:-1;;;49923:26:0;;;;;;;;;;;;;;;;;49901:48;;49987:11;49962:10;49973;49962:22;;;;;;-1:-1:-1;;;49962:22:0;;;;;;;;;;;;;;;;;;;;:36;;;;50067:28;;;:15;:28;;;;;;;:41;;;50239:24;;;;;50232:31;50274:10;:16;;;;;-1:-1:-1;;;50274:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;49219:1079;;;;:::o;46723:221::-;46808:14;46825:20;46842:2;46825:16;:20::i;:::-;-1:-1:-1;;;;;46856:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;46901:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;46723:221:0:o;12258:387::-;12581:20;12629:8;;;12258:387::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:607:1;;110:18;151:2;143:6;140:14;137:2;;;157:18;;:::i;:::-;206:2;200:9;279:2;256:17;;-1:-1:-1;;252:31:1;240:44;;286:4;236:55;306:18;;;326:22;;;303:46;300:2;;;352:18;;:::i;:::-;388:2;381:22;436;;;421:6;-1:-1:-1;421:6:1;473:16;;;470:25;-1:-1:-1;467:2:1;;;508:1;505;498:12;467:2;558:6;553:3;546:4;538:6;534:17;521:44;613:1;606:4;597:6;589;585:19;581:30;574:41;;;90:531;;;;;:::o;626:175::-;696:20;;-1:-1:-1;;;;;745:31:1;;735:42;;725:2;;791:1;788;781:12;806:162;873:20;;929:13;;922:21;912:32;;902:2;;958:1;955;948:12;973:198;;1085:2;1073:9;1064:7;1060:23;1056:32;1053:2;;;1106:6;1098;1091:22;1053:2;1134:31;1155:9;1134:31;:::i;1176:274::-;;;1305:2;1293:9;1284:7;1280:23;1276:32;1273:2;;;1326:6;1318;1311:22;1273:2;1354:31;1375:9;1354:31;:::i;:::-;1344:41;;1404:40;1440:2;1429:9;1425:18;1404:40;:::i;:::-;1394:50;;1263:187;;;;;:::o;1455:342::-;;;;1601:2;1589:9;1580:7;1576:23;1572:32;1569:2;;;1622:6;1614;1607:22;1569:2;1650:31;1671:9;1650:31;:::i;:::-;1640:41;;1700:40;1736:2;1725:9;1721:18;1700:40;:::i;:::-;1690:50;;1787:2;1776:9;1772:18;1759:32;1749:42;;1559:238;;;;;:::o;1802:702::-;;;;;1974:3;1962:9;1953:7;1949:23;1945:33;1942:2;;;1996:6;1988;1981:22;1942:2;2024:31;2045:9;2024:31;:::i;:::-;2014:41;;2074:40;2110:2;2099:9;2095:18;2074:40;:::i;:::-;2064:50;;2161:2;2150:9;2146:18;2133:32;2123:42;;2216:2;2205:9;2201:18;2188:32;2243:18;2235:6;2232:30;2229:2;;;2280:6;2272;2265:22;2229:2;2308:22;;2361:4;2353:13;;2349:27;-1:-1:-1;2339:2:1;;2395:6;2387;2380:22;2339:2;2423:75;2490:7;2485:2;2472:16;2467:2;2463;2459:11;2423:75;:::i;:::-;2413:85;;;1932:572;;;;;;;:::o;2509:268::-;;;2635:2;2623:9;2614:7;2610:23;2606:32;2603:2;;;2656:6;2648;2641:22;2603:2;2684:31;2705:9;2684:31;:::i;:::-;2674:41;;2734:37;2767:2;2756:9;2752:18;2734:37;:::i;2782:266::-;;;2911:2;2899:9;2890:7;2886:23;2882:32;2879:2;;;2932:6;2924;2917:22;2879:2;2960:31;2981:9;2960:31;:::i;:::-;2950:41;3038:2;3023:18;;;;3010:32;;-1:-1:-1;;;2869:179:1:o;3053:666::-;;;3200:2;3188:9;3179:7;3175:23;3171:32;3168:2;;;3221:6;3213;3206:22;3168:2;3266:9;3253:23;3295:18;3336:2;3328:6;3325:14;3322:2;;;3357:6;3349;3342:22;3322:2;3400:6;3389:9;3385:22;3375:32;;3445:7;3438:4;3434:2;3430:13;3426:27;3416:2;;3472:6;3464;3457:22;3416:2;3517;3504:16;3543:2;3535:6;3532:14;3529:2;;;3564:6;3556;3549:22;3529:2;3623:7;3618:2;3612;3604:6;3600:15;3596:2;3592:24;3588:33;3585:46;3582:2;;;3649:6;3641;3634:22;3582:2;3685;3677:11;;;;;3707:6;;-1:-1:-1;3158:561:1;;-1:-1:-1;;;;3158:561:1:o;3724:192::-;;3833:2;3821:9;3812:7;3808:23;3804:32;3801:2;;;3854:6;3846;3839:22;3801:2;3882:28;3900:9;3882:28;:::i;3921:257::-;;4032:2;4020:9;4011:7;4007:23;4003:32;4000:2;;;4053:6;4045;4038:22;4000:2;4097:9;4084:23;4116:32;4142:5;4116:32;:::i;4183:261::-;;4305:2;4293:9;4284:7;4280:23;4276:32;4273:2;;;4326:6;4318;4311:22;4273:2;4363:9;4357:16;4382:32;4408:5;4382:32;:::i;4449:482::-;;4571:2;4559:9;4550:7;4546:23;4542:32;4539:2;;;4592:6;4584;4577:22;4539:2;4637:9;4624:23;4670:18;4662:6;4659:30;4656:2;;;4707:6;4699;4692:22;4656:2;4735:22;;4788:4;4780:13;;4776:27;-1:-1:-1;4766:2:1;;4822:6;4814;4807:22;4766:2;4850:75;4917:7;4912:2;4899:16;4894:2;4890;4886:11;4850:75;:::i;4936:190::-;;5048:2;5036:9;5027:7;5023:23;5019:32;5016:2;;;5069:6;5061;5054:22;5016:2;-1:-1:-1;5097:23:1;;5006:120;-1:-1:-1;5006:120:1:o;5131:266::-;;;5260:2;5248:9;5239:7;5235:23;5231:32;5228:2;;;5281:6;5273;5266:22;5228:2;5322:9;5309:23;5299:33;;5351:40;5387:2;5376:9;5372:18;5351:40;:::i;5402:259::-;;5483:5;5477:12;5510:6;5505:3;5498:19;5526:63;5582:6;5575:4;5570:3;5566:14;5559:4;5552:5;5548:16;5526:63;:::i;:::-;5643:2;5622:15;-1:-1:-1;;5618:29:1;5609:39;;;;5650:4;5605:50;;5453:208;-1:-1:-1;;5453:208:1:o;5666:1532::-;;5928:6;5922:13;5954:4;5967:51;6011:6;6006:3;6001:2;5993:6;5989:15;5967:51;:::i;:::-;6081:13;;6040:16;;;;6103:55;6081:13;6040:16;6125:15;;;6103:55;:::i;:::-;6249:13;;6180:20;;;6220:3;;6326:1;6311:17;;6347:1;6383:18;;;;6410:2;;6488:4;6478:8;6474:19;6462:31;;6410:2;6551;6541:8;6538:16;6518:18;6515:40;6512:2;;;-1:-1:-1;;;6578:33:1;;6634:4;6631:1;6624:15;6664:4;6585:3;6652:17;6512:2;6695:18;6722:110;;;;6846:1;6841:332;;;;6688:485;;6722:110;-1:-1:-1;;6757:24:1;;6743:39;;6802:20;;;;-1:-1:-1;6722:110:1;;6841:332;6877:39;6909:6;6877:39;:::i;:::-;6938:3;6954:169;6968:8;6965:1;6962:15;6954:169;;;7050:14;;7035:13;;;7028:37;7093:16;;;;6985:10;;6954:169;;;6958:3;;7154:8;7147:5;7143:20;7136:27;;6688:485;-1:-1:-1;7189:3:1;;5898:1300;-1:-1:-1;;;;;;;;;;;5898:1300:1:o;7203:203::-;-1:-1:-1;;;;;7367:32:1;;;;7349:51;;7337:2;7322:18;;7304:102::o;7411:490::-;-1:-1:-1;;;;;7680:15:1;;;7662:34;;7732:15;;7727:2;7712:18;;7705:43;7779:2;7764:18;;7757:34;;;7827:3;7822:2;7807:18;;7800:31;;;7411:490;;7848:47;;7875:19;;7867:6;7848:47;:::i;:::-;7840:55;7614:287;-1:-1:-1;;;;;;7614:287:1:o;7906:187::-;8071:14;;8064:22;8046:41;;8034:2;8019:18;;8001:92::o;8098:221::-;;8247:2;8236:9;8229:21;8267:46;8309:2;8298:9;8294:18;8286:6;8267:46;:::i;8324:348::-;8526:2;8508:21;;;8565:2;8545:18;;;8538:30;8604:26;8599:2;8584:18;;8577:54;8663:2;8648:18;;8498:174::o;8677:407::-;8879:2;8861:21;;;8918:2;8898:18;;;8891:30;8957:34;8952:2;8937:18;;8930:62;-1:-1:-1;;;9023:2:1;9008:18;;9001:41;9074:3;9059:19;;8851:233::o;9089:414::-;9291:2;9273:21;;;9330:2;9310:18;;;9303:30;9369:34;9364:2;9349:18;;9342:62;-1:-1:-1;;;9435:2:1;9420:18;;9413:48;9493:3;9478:19;;9263:240::o;9508:402::-;9710:2;9692:21;;;9749:2;9729:18;;;9722:30;9788:34;9783:2;9768:18;;9761:62;-1:-1:-1;;;9854:2:1;9839:18;;9832:36;9900:3;9885:19;;9682:228::o;9915:411::-;10117:2;10099:21;;;10156:2;10136:18;;;10129:30;10195:34;10190:2;10175:18;;10168:62;-1:-1:-1;;;10261:2:1;10246:18;;10239:45;10316:3;10301:19;;10089:237::o;10331:352::-;10533:2;10515:21;;;10572:2;10552:18;;;10545:30;10611;10606:2;10591:18;;10584:58;10674:2;10659:18;;10505:178::o;10688:356::-;10890:2;10872:21;;;10909:18;;;10902:30;10968:34;10963:2;10948:18;;10941:62;11035:2;11020:18;;10862:182::o;11049:402::-;11251:2;11233:21;;;11290:2;11270:18;;;11263:30;11329:34;11324:2;11309:18;;11302:62;-1:-1:-1;;;11395:2:1;11380:18;;11373:36;11441:3;11426:19;;11223:228::o;11456:399::-;11658:2;11640:21;;;11697:2;11677:18;;;11670:30;11736:34;11731:2;11716:18;;11709:62;-1:-1:-1;;;11802:2:1;11787:18;;11780:33;11845:3;11830:19;;11630:225::o;11860:401::-;12062:2;12044:21;;;12101:2;12081:18;;;12074:30;12140:34;12135:2;12120:18;;12113:62;-1:-1:-1;;;12206:2:1;12191:18;;12184:35;12251:3;12236:19;;12034:227::o;12266:353::-;12468:2;12450:21;;;12507:2;12487:18;;;12480:30;12546:31;12541:2;12526:18;;12519:59;12610:2;12595:18;;12440:179::o;12624:400::-;12826:2;12808:21;;;12865:2;12845:18;;;12838:30;12904:34;12899:2;12884:18;;12877:62;-1:-1:-1;;;12970:2:1;12955:18;;12948:34;13014:3;12999:19;;12798:226::o;13029:349::-;13231:2;13213:21;;;13270:2;13250:18;;;13243:30;13309:27;13304:2;13289:18;;13282:55;13369:2;13354:18;;13203:175::o;13383:408::-;13585:2;13567:21;;;13624:2;13604:18;;;13597:30;13663:34;13658:2;13643:18;;13636:62;-1:-1:-1;;;13729:2:1;13714:18;;13707:42;13781:3;13766:19;;13557:234::o;13796:402::-;13998:2;13980:21;;;14037:2;14017:18;;;14010:30;14076:34;14071:2;14056:18;;14049:62;-1:-1:-1;;;14142:2:1;14127:18;;14120:36;14188:3;14173:19;;13970:228::o;14203:420::-;14405:2;14387:21;;;14444:2;14424:18;;;14417:30;14483:34;14478:2;14463:18;;14456:62;14554:26;14549:2;14534:18;;14527:54;14613:3;14598:19;;14377:246::o;14628:406::-;14830:2;14812:21;;;14869:2;14849:18;;;14842:30;14908:34;14903:2;14888:18;;14881:62;-1:-1:-1;;;14974:2:1;14959:18;;14952:40;15024:3;15009:19;;14802:232::o;15039:405::-;15241:2;15223:21;;;15280:2;15260:18;;;15253:30;15319:34;15314:2;15299:18;;15292:62;-1:-1:-1;;;15385:2:1;15370:18;;15363:39;15434:3;15419:19;;15213:231::o;15449:348::-;15651:2;15633:21;;;15690:2;15670:18;;;15663:30;15729:26;15724:2;15709:18;;15702:54;15788:2;15773:18;;15623:174::o;15802:348::-;16004:2;15986:21;;;16043:2;16023:18;;;16016:30;16082:26;16077:2;16062:18;;16055:54;16141:2;16126:18;;15976:174::o;16155:398::-;16357:2;16339:21;;;16396:2;16376:18;;;16369:30;16435:34;16430:2;16415:18;;16408:62;-1:-1:-1;;;16501:2:1;16486:18;;16479:32;16543:3;16528:19;;16329:224::o;16558:356::-;16760:2;16742:21;;;16779:18;;;16772:30;16838:34;16833:2;16818:18;;16811:62;16905:2;16890:18;;16732:182::o;16919:408::-;17121:2;17103:21;;;17160:2;17140:18;;;17133:30;17199:34;17194:2;17179:18;;17172:62;-1:-1:-1;;;17265:2:1;17250:18;;17243:42;17317:3;17302:19;;17093:234::o;17332:400::-;17534:2;17516:21;;;17573:2;17553:18;;;17546:30;17612:34;17607:2;17592:18;;17585:62;-1:-1:-1;;;17678:2:1;17663:18;;17656:34;17722:3;17707:19;;17506:226::o;17737:356::-;17939:2;17921:21;;;17958:18;;;17951:30;18017:34;18012:2;17997:18;;17990:62;18084:2;18069:18;;17911:182::o;18098:405::-;18300:2;18282:21;;;18339:2;18319:18;;;18312:30;18378:34;18373:2;18358:18;;18351:62;-1:-1:-1;;;18444:2:1;18429:18;;18422:39;18493:3;18478:19;;18272:231::o;18508:352::-;18710:2;18692:21;;;18749:2;18729:18;;;18722:30;18788;18783:2;18768:18;;18761:58;18851:2;18836:18;;18682:178::o;18865:350::-;19067:2;19049:21;;;19106:2;19086:18;;;19079:30;19145:28;19140:2;19125:18;;19118:56;19206:2;19191:18;;19039:176::o;19220:397::-;19422:2;19404:21;;;19461:2;19441:18;;;19434:30;19500:34;19495:2;19480:18;;19473:62;-1:-1:-1;;;19566:2:1;19551:18;;19544:31;19607:3;19592:19;;19394:223::o;19622:397::-;19824:2;19806:21;;;19863:2;19843:18;;;19836:30;19902:34;19897:2;19882:18;;19875:62;-1:-1:-1;;;19968:2:1;19953:18;;19946:31;20009:3;19994:19;;19796:223::o;20024:413::-;20226:2;20208:21;;;20265:2;20245:18;;;20238:30;20304:34;20299:2;20284:18;;20277:62;-1:-1:-1;;;20370:2:1;20355:18;;20348:47;20427:3;20412:19;;20198:239::o;20442:408::-;20644:2;20626:21;;;20683:2;20663:18;;;20656:30;20722:34;20717:2;20702:18;;20695:62;-1:-1:-1;;;20788:2:1;20773:18;;20766:42;20840:3;20825:19;;20616:234::o;20855:347::-;21057:2;21039:21;;;21096:2;21076:18;;;21069:30;21135:25;21130:2;21115:18;;21108:53;21193:2;21178:18;;21029:173::o;21207:408::-;21409:2;21391:21;;;21448:2;21428:18;;;21421:30;21487:34;21482:2;21467:18;;21460:62;-1:-1:-1;;;21553:2:1;21538:18;;21531:42;21605:3;21590:19;;21381:234::o;21620:343::-;21822:2;21804:21;;;21861:2;21841:18;;;21834:30;-1:-1:-1;;;21895:2:1;21880:18;;21873:49;21954:2;21939:18;;21794:169::o;21968:177::-;22114:25;;;22102:2;22087:18;;22069:76::o;22150:129::-;;22218:17;;;22268:4;22252:21;;;22208:71::o;22284:128::-;;22355:1;22351:6;22348:1;22345:13;22342:2;;;22361:18;;:::i;:::-;-1:-1:-1;22397:9:1;;22332:80::o;22417:120::-;;22483:1;22473:2;;22488:18;;:::i;:::-;-1:-1:-1;22522:9:1;;22463:74::o;22542:168::-;;22648:1;22644;22640:6;22636:14;22633:1;22630:21;22625:1;22618:9;22611:17;22607:45;22604:2;;;22655:18;;:::i;:::-;-1:-1:-1;22695:9:1;;22594:116::o;22715:125::-;;22783:1;22780;22777:8;22774:2;;;22788:18;;:::i;:::-;-1:-1:-1;22825:9:1;;22764:76::o;22845:258::-;22917:1;22927:113;22941:6;22938:1;22935:13;22927:113;;;23017:11;;;23011:18;22998:11;;;22991:39;22963:2;22956:10;22927:113;;;23058:6;23055:1;23052:13;23049:2;;;-1:-1:-1;;23093:1:1;23075:16;;23068:27;22898:205::o;23108:136::-;;23175:5;23165:2;;23184:18;;:::i;:::-;-1:-1:-1;;;23220:18:1;;23155:89::o;23249:380::-;23334:1;23324:12;;23381:1;23371:12;;;23392:2;;23446:4;23438:6;23434:17;23424:27;;23392:2;23499;23491:6;23488:14;23468:18;23465:38;23462:2;;;23545:10;23540:3;23536:20;23533:1;23526:31;23580:4;23577:1;23570:15;23608:4;23605:1;23598:15;23462:2;;23304:325;;;:::o;23634:135::-;;-1:-1:-1;;23694:17:1;;23691:2;;;23714:18;;:::i;:::-;-1:-1:-1;23761:1:1;23750:13;;23681:88::o;23774:112::-;;23832:1;23822:2;;23837:18;;:::i;:::-;-1:-1:-1;23871:9:1;;23812:74::o;23891:127::-;23952:10;23947:3;23943:20;23940:1;23933:31;23983:4;23980:1;23973:15;24007:4;24004:1;23997:15;24023:127;24084:10;24079:3;24075:20;24072:1;24065:31;24115:4;24112:1;24105:15;24139:4;24136:1;24129:15;24155:127;24216:10;24211:3;24207:20;24204:1;24197:31;24247:4;24244:1;24237:15;24271:4;24268:1;24261:15;24287:133;-1:-1:-1;;;;;;24363:32:1;;24353:43;;24343:2;;24410:1;24407;24400:12
Swarm Source
ipfs://4174c556b97cd4bc59c497a418585193c9af8b47dfe4918d3e62401adcc916d3
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.