ERC-721
NFT
Overview
Max Total Supply
671 ROME
Holders
183
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 ROMELoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
NiftyBuilderInstance
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-05-21 */ // File: contracts/api/BuilderMasterAPI.sol abstract contract BuilderMasterAPI { function getContractId(uint tokenId) public view virtual returns (uint); function getNiftyTypeId(uint tokenId) public view virtual returns (uint); function getSpecificNiftyNum(uint tokenId) public view virtual returns (uint); function encodeTokenId(uint contractId, uint niftyType, uint specificNiftyNum) public view virtual returns (uint); function strConcat(string memory _a, string memory _b) public view virtual returns (string memory); function uint2str(uint _i) public view virtual returns (string memory _uintAsString); } // File: contracts/interface/IERC165.sol /** * @title IERC165 * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md */ interface IERC165 { /** * @notice Query if a contract implements an interface * @param interfaceId The interface identifier, as specified in ERC-165 * @dev Interface identification is specified in ERC-165. This function * uses less than 30,000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: contracts/interface/IERC721.sol /** * @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: contracts/interface/IERC721Receiver.sol /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4); } // File: contracts/interface/IERC721Metadata.sol /** * @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: contracts/util/Address.sol /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: contracts/util/Context.sol /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: contracts/util/Strings.sol /** * @dev String operations. */ library Strings { bytes16 private constant alphabet = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = alphabet[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: contracts/ERC165.sol /** * @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: contracts/api/NiftyRegistryAPI.sol abstract contract NiftyRegistryAPI { function isValidNiftySender(address sending_key) public view virtual returns (bool); function isOwner(address owner_key) public view virtual returns (bool); } // File: contracts/NiftyEntity.sol contract NiftyEntity { // 0xCA9fC51835DBB525BB6E6ebfcc67b8bE1b08BDfA address public immutable masterBuilderContract; // 0x33F8cb717384A96C2a5de7964d0c7c1a10777660 address immutable niftyRegistryContract; modifier onlyValidSender() { NiftyRegistryAPI nftg_registry = NiftyRegistryAPI(niftyRegistryContract); bool is_valid = nftg_registry.isValidNiftySender(msg.sender); require(is_valid, "NiftyEntity: Invalid msg.sender"); _; } constructor(address _masterBuilderContract, address _niftyRegistryContract) { masterBuilderContract = _masterBuilderContract; niftyRegistryContract = _niftyRegistryContract; } } // File: contracts/ERC721.sol /** * @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 NiftyEntity, Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Optional mapping for token URIs mapping(uint256 => string) private _tokenURIs; //Optional mapping for IPFS link to canonical image file mapping(uint256 => string) private _tokenIPFSHashes; mapping(uint256 => string) private _niftyTypeName; // Optional mapping for IPFS link to canonical image file by Nifty type mapping(uint256 => string) private _niftyTypeIPFSHashes; mapping(uint256 => string) private _tokenName; // 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_, address masterBuilderContract_, address niftyRegistryContract_) NiftyEntity(masterBuilderContract_, niftyRegistryContract_) { _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 Returns an URI for a given token ID. * Throws if the token ID does not exist. May return an empty string. * @param tokenId uint256 ID of the token to query */ function tokenURI(uint256 tokenId) external view override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); BuilderMasterAPI bm = BuilderMasterAPI(masterBuilderContract); string memory tokenIdStr = Strings.toString(tokenId); string memory tokenURIStr = bm.strConcat(_baseURI(), tokenIdStr); return tokenURIStr; } /** * @dev Returns an IPFS hash for a given token ID. * Throws if the token ID does not exist. May return an empty string. * @param tokenId uint256 ID of the token to query */ function tokenIPFSHash(uint256 tokenId) external view virtual returns (string memory) {} /** * @dev Returns the Name for a given token ID. * Throws if the token ID does not exist. May return an empty string. * @param tokenId uint256 ID of the token to query */ function tokenName(uint256 tokenId) external view returns (string memory) { require(_exists(tokenId), "ERC721Metadata: Name query for nonexistent token"); BuilderMasterAPI bm = BuilderMasterAPI(masterBuilderContract); uint nifty_type = bm.getNiftyTypeId(tokenId); return _niftyTypeName[nifty_type]; } /** * @dev Internal function to set the token URI for a given token. * Reverts if the token ID does not exist. * @param tokenId uint256 ID of the token to set its URI * @param uri string URI to assign */ function _setTokenURI(uint256 tokenId, string memory uri) internal { require(_exists(tokenId), "ERC721Metadata: URI set of nonexistent token"); _tokenURIs[tokenId] = uri; } /** * @dev Internal function to set the token IPFS hash for a nifty type. * @param nifty_type uint256 ID component of the token to set its IPFS hash * @param ipfs_hash string IPFS link to assign */ function _setTokenIPFSHashNiftyType(uint256 nifty_type, string memory ipfs_hash) internal { require(bytes(_niftyTypeIPFSHashes[nifty_type]).length == 0, "ERC721Metadata: IPFS hash already set"); _niftyTypeIPFSHashes[nifty_type] = ipfs_hash; } /** * @dev Internal function to set the name for a nifty type. * @param nifty_type uint256 of nifty type name to be set * @param nifty_type_name name of nifty type */ function _setNiftyTypeName(uint256 nifty_type, string memory nifty_type_name) internal { _niftyTypeName[nifty_type] = nifty_type_name; } /** * @dev Base URI for computing {tokenURI}. Empty by default, can be overriden * in child contracts. */ function _baseURI() internal view virtual returns (string memory) {} /** * @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 { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom(address from, address to, uint256 tokenId) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual { _mint(to, tokenId); require(_checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer(address from, address to, uint256 tokenId) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { // solhint-disable-next-line no-inline-assembly assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` 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: contracts/util/Counters.sol /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } } // File: contracts/ERC721Burnable.sol /** * @title ERC721 Burnable Token * @dev ERC721 Token that can be irreversibly burned (destroyed). */ abstract contract ERC721Burnable is Context, ERC721 { /** * @dev Burns `tokenId`. See {ERC721-_burn}. * * Requirements: * * - The caller must own `tokenId` or be an approved operator. */ function burn(uint256 tokenId) public virtual { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721Burnable: caller is not owner nor approved"); _burn(tokenId); } } // File: contracts/interface/IERC721Enumerable.sol /** * @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: contracts/ERC721Enumerable.sol /** * @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/api/DateTimeAPI.sol /** * Abstract contract for interfacing with the DateTime contract. */ abstract contract DateTimeAPI { function isLeapYear(uint16 year) public view virtual returns (bool); function getYear(uint timestamp) public view virtual returns (uint16); function getMonth(uint timestamp) public view virtual returns (uint8); function getDay(uint timestamp) public view virtual returns (uint8); function getHour(uint timestamp) public view virtual returns (uint8); function getMinute(uint timestamp) public view virtual returns (uint8); function getSecond(uint timestamp) public view virtual returns (uint8); function getWeekday(uint timestamp) public view virtual returns (uint8); function toTimestamp(uint16 year, uint8 month, uint8 day) public view virtual returns (uint timestamp); function toTimestamp(uint16 year, uint8 month, uint8 day, uint8 hour) public view virtual returns (uint timestamp); function toTimestamp(uint16 year, uint8 month, uint8 day, uint8 hour, uint8 minute) public view virtual returns (uint timestamp); function toTimestamp(uint16 year, uint8 month, uint8 day, uint8 hour, uint8 minute, uint8 second) public view virtual returns (uint timestamp); } // File: contracts/NiftyBuilderInstance.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; contract NiftyBuilderInstance is ERC721, ERC721Burnable, ERC721Enumerable { using Counters for Counters.Counter; string private _baseTokenURI; string public creator; string[12] artifact = ["QmQdb77jfHZSwk8dGpN3mqx8q4N7EUNytiAgEkXrMPbMVw", //State 1 "QmS3kaQnxb28vcXQg35PrGarJKkSysttZdNLdZp3JquttQ", //State 2 "QmX8beRtZAsed6naFWqddKejV33NoXotqZoGTuDaV5SHqN", //State 3 "QmQvsAMYzJm8kGQ7YNF5ziWUb6hr7vqdmkrn1qEPDykYi4", //State 4 "QmZwHt9ZhCgVMqpcFDhwKSA3higVYQXzyaPqh2BPjjXJXU", //State 5 "Qmd2MNfgzPYXGMS1ZgdsiWuAkriRRx15pfRXU7ZVK22jce", //State 6 "QmWcYzNdUYbMzrM7bGgTZXVE4GBm7v4dQneKb9fxgjMdAX", //State 7 "QmaXX7VuBY1dCeK78TTGEvYLTF76sf6fnzK7TJSni4PHxj", //State 8 "QmaqeJnzF2cAdfDrYRAw6VwzNn9dY9bKTyUuTHg1gUSQY7", //State 9 "QmSZquD6yGy5QvsJnygXUnWKrsKJvk942L8nzs6YZFKbxY", //State 10 "QmYtdrfPd3jAWWpjkd24NzLGqH5TDsHNvB8Qtqu6xnBcJF", //State 11 "QmesagGNeyjDvJ2N5oc8ykBiwsiE7gdk9vnfjjAe3ipjx4"];//State 12 address private dateTimeContract; uint immutable public id; uint immutable public countType; uint immutable private niftyType; mapping (uint => uint) public _numNiftyPermitted; mapping (uint => Counters.Counter) public _numNiftyMinted; event NiftyCreated(address new_owner, uint _niftyType, uint _tokenId); event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed fromAddress, address indexed toAddress); constructor(address _dateTimeContract, address _masterBuilderContract, address _niftyRegistryContract) ERC721("Eroding and Reforming Bust of Rome (One Year) by Daniel Arsham", "ROME", _masterBuilderContract, _niftyRegistryContract) { id = 1; niftyType = 1; countType = 1; creator = "Daniel Arsham"; dateTimeContract = _dateTimeContract; _setNiftyTypeName(1, "Eroding and Reforming Bust of Rome (One Year) by Daniel Arsham"); _setBaseURIParent("https://api.niftygateway.com/danielarsham/"); } /** * Configurable address for DateTime. */ function setDateTimeContract(address _dateTimeContract) onlyValidSender public { dateTimeContract = _dateTimeContract; } function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override(ERC721, ERC721Enumerable) { super._beforeTokenTransfer(from, to, tokenId); } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, ERC721Enumerable) returns (bool) { return super.supportsInterface(interfaceId); } function _setBaseURIParent(string memory newBaseURI) internal { _baseTokenURI = newBaseURI; } function _baseURI() internal view virtual override returns (string memory) { return _baseTokenURI; } /** * This functions as the inverse of closeContract(). */ function setNumNiftyPermitted(uint256 num_nifty_permitted) onlyValidSender public { require(_numNiftyPermitted[niftyType] == 0, "NiftyBuilderInstance: Permitted number already set for this NFT"); require(num_nifty_permitted < 9999 && num_nifty_permitted != 0, "NiftyBuilderInstance: Illegal argument"); _numNiftyPermitted[niftyType] = num_nifty_permitted; } /** * Allow owner to change nifty name. */ function setNiftyName(string memory nifty_name) onlyValidSender public { _setNiftyTypeName(niftyType, nifty_name); } function isGiftNiftyPermitted() internal view returns (bool) { if (_numNiftyMinted[niftyType].current() >= _numNiftyPermitted[niftyType]) { return false; } return true; } function giftNifty(address collector_address) onlyValidSender public { require(isGiftNiftyPermitted() == true, "NiftyBuilderInstance: Nifty sold out!"); BuilderMasterAPI bm = BuilderMasterAPI(masterBuilderContract); _numNiftyMinted[niftyType].increment(); uint specificTokenId = _numNiftyMinted[niftyType].current(); uint tokenId = bm.encodeTokenId(id, niftyType, specificTokenId); _mint(collector_address, tokenId); emit NiftyCreated(collector_address, niftyType, tokenId); } /** * Loop through array and create nifties. */ function massMintNFTs(address collector_address, uint num_to_mint) onlyValidSender public { BuilderMasterAPI bm = BuilderMasterAPI(masterBuilderContract); uint specificTokenId00 = _numNiftyMinted[niftyType].current() + 1; uint tokenId00 = bm.encodeTokenId(id, niftyType, specificTokenId00); for (uint i = 0; i < num_to_mint; i++) { giftNifty(collector_address); } uint specificTokenId01 = _numNiftyMinted[niftyType].current(); uint tokenId01 = bm.encodeTokenId(id, niftyType, specificTokenId01); emit ConsecutiveTransfer(tokenId00, tokenId01, address(0), collector_address); } function tokenIPFSHash(uint256 tokenId) external view override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: IPFS hash query for nonexistent token"); DateTimeAPI dateTime = DateTimeAPI(dateTimeContract); uint value = dateTime.getMonth(block.timestamp); if (value == 1) { return artifact[0]; } if (value == 2) { return artifact[1]; } if (value == 3) { return artifact[2]; } if (value == 4) { return artifact[3]; } if (value == 5) { return artifact[4]; } if (value == 6) { return artifact[5]; } if (value == 7) { return artifact[6]; } if (value == 8) { return artifact[7]; } if (value == 9) { return artifact[8]; } if (value == 10) { return artifact[9]; } if (value == 11) { return artifact[10]; } return artifact[11]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_dateTimeContract","type":"address"},{"internalType":"address","name":"_masterBuilderContract","type":"address"},{"internalType":"address","name":"_niftyRegistryContract","type":"address"}],"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":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"new_owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_niftyType","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"NiftyCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_numNiftyMinted","outputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_numNiftyPermitted","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":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"countType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creator","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"collector_address","type":"address"}],"name":"giftNifty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"id","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"collector_address","type":"address"},{"internalType":"uint256","name":"num_to_mint","type":"uint256"}],"name":"massMintNFTs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"masterBuilderContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":"address","name":"_dateTimeContract","type":"address"}],"name":"setDateTimeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"nifty_name","type":"string"}],"name":"setNiftyName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num_nifty_permitted","type":"uint256"}],"name":"setNumNiftyPermitted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenIPFSHash","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenName","outputs":[{"internalType":"string","name":"","type":"string"}],"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"}]
Contract Creation Code
6101206040526040518061018001604052806040518060600160405280602e815260200162005ec8602e913981526020016040518060600160405280602e815260200162005d4c602e913981526020016040518060600160405280602e815260200162005c66602e913981526020016040518060600160405280602e815260200162005cf0602e913981526020016040518060600160405280602e815260200162005cc2602e913981526020016040518060600160405280602e815260200162005c94602e913981526020016040518060600160405280602e815260200162005d1e602e913981526020016040518060600160405280602e815260200162005e9a602e913981526020016040518060600160405280602e815260200162005e00602e913981526020016040518060600160405280602e815260200162005dd2602e913981526020016040518060600160405280602e815260200162005da4602e913981526020016040518060600160405280602e815260200162005e6c602e9139815250601190600c6200019592919062000417565b50348015620001a357600080fd5b5060405162005ef638038062005ef68339818101604052810190620001c99190620005a6565b6040518060600160405280603e815260200162005e2e603e91396040518060400160405280600481526020017f524f4d4500000000000000000000000000000000000000000000000000000000815250838381818173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505050508360009080519060200190620002a592919062000471565b508260019080519060200190620002be92919062000471565b5050505050600160c0818152505060016101008181525050600160e081815250506040518060400160405280600d81526020017f44616e69656c2041727368616d00000000000000000000000000000000000000815250601090805190602001906200032c92919062000471565b5082601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200039a60016040518060600160405280603e815260200162005e2e603e9139620003cd60201b60201c565b620003c46040518060600160405280602a815260200162005d7a602a9139620003fb60201b60201c565b505050620006af565b80600460008481526020019081526020016000209080519060200190620003f692919062000471565b505050565b80600f90805190602001906200041392919062000471565b5050565b82600c81019282156200045e579160200282015b828111156200045d5782518290805190602001906200044c92919062000471565b50916020019190600101906200042b565b5b5090506200046d919062000502565b5090565b8280546200047f9062000630565b90600052602060002090601f016020900481019282620004a35760008555620004ef565b82601f10620004be57805160ff1916838001178555620004ef565b82800160010185558215620004ef579182015b82811115620004ee578251825591602001919060010190620004d1565b5b509050620004fe91906200052a565b5090565b5b808211156200052657600081816200051c919062000549565b5060010162000503565b5090565b5b80821115620005455760008160009055506001016200052b565b5090565b508054620005579062000630565b6000825580601f106200056b57506200058c565b601f0160209004906000526020600020908101906200058b91906200052a565b5b50565b600081519050620005a08162000695565b92915050565b600080600060608486031215620005bc57600080fd5b6000620005cc868287016200058f565b9350506020620005df868287016200058f565b9250506040620005f2868287016200058f565b9150509250925092565b6000620006098262000610565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200064957607f821691505b6020821081141562000660576200065f62000666565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620006a081620005fc565b8114620006ac57600080fd5b50565b60805160601c60a05160601c60c05160e051610100516154cb6200079b60003960008181610a1801528181610a9701528181610b5a01528181610bcf01528181610dd801528181610e9e01528181610fcb0152818161191601528181611953015281816119c801528181611a8601528181612fd7015261300e0152600061139d015260008181610a7601528181610bae015281816115ec01526119a70152600081816108f801528181610ce201528181610ed80152818161161201526117ac0152600081816109ea015281816112c1015281816118ec01528181611b13015261274201526154cb6000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806363b7e17311610104578063afe9ecee116100a2578063d371663011610071578063d371663014610565578063e725f87714610595578063e9437537146105c5578063e985e9c5146105f5576101da565b8063afe9ecee146104e1578063b88d4fde146104fd578063bc0687da14610519578063c87b56dd14610535576101da565b806372ba8c09116100de57806372ba8c091461045957806395d89b4114610489578063a22cb465146104a7578063af640d0f146104c3576101da565b806363b7e173146103ed57806370a082311461040b57806371d2cecb1461043b576101da565b80631b605aa31161017c57806342842e0e1161014b57806342842e0e1461035557806342966c68146103715780634f6ccce71461038d5780636352211e146103bd576101da565b80631b605aa3146102d15780631e469316146102ed57806323b872dd146103095780632f745c5914610325576101da565b8063081812fc116101b8578063081812fc1461024b578063095ea7b31461027b57806315b9f3e01461029757806318160ddd146102b3576101da565b806301ffc9a7146101df57806302d05d3f1461020f57806306fdde031461022d575b600080fd5b6101f960048036038101906101f49190614063565b610625565b6040516102069190614614565b60405180910390f35b610217610637565b604051610224919061462f565b60405180910390f35b6102356106c5565b604051610242919061462f565b60405180910390f35b61026560048036038101906102609190614137565b610757565b6040516102729190614576565b60405180910390f35b61029560048036038101906102909190613ffe565b6107dc565b005b6102b160048036038101906102ac9190613ffe565b6108f4565b005b6102bb610cd1565b6040516102c89190614968565b60405180910390f35b6102eb60048036038101906102e69190614137565b610cde565b005b610307600480360381019061030291906140b5565b610ed4565b005b610323600480360381019061031e9190613ef8565b610ff5565b005b61033f600480360381019061033a9190613ffe565b611055565b60405161034c9190614968565b60405180910390f35b61036f600480360381019061036a9190613ef8565b6110fa565b005b61038b60048036038101906103869190614137565b61111a565b005b6103a760048036038101906103a29190614137565b611176565b6040516103b49190614968565b60405180910390f35b6103d760048036038101906103d29190614137565b61120d565b6040516103e49190614576565b60405180910390f35b6103f56112bf565b6040516104029190614576565b60405180910390f35b61042560048036038101906104209190613e93565b6112e3565b6040516104329190614968565b60405180910390f35b61044361139b565b6040516104509190614968565b60405180910390f35b610473600480360381019061046e9190614137565b6113bf565b6040516104809190614968565b60405180910390f35b6104916113d7565b60405161049e919061462f565b60405180910390f35b6104c160048036038101906104bc9190613fc2565b611469565b005b6104cb6115ea565b6040516104d89190614968565b60405180910390f35b6104fb60048036038101906104f69190613e93565b61160e565b005b61051760048036038101906105129190613f47565b611746565b005b610533600480360381019061052e9190613e93565b6117a8565b005b61054f600480360381019061054a9190614137565b611ac5565b60405161055c919061462f565b60405180910390f35b61057f600480360381019061057a9190614137565b611be7565b60405161058c919061462f565b60405180910390f35b6105af60048036038101906105aa9190614137565b6126f4565b6040516105bc919061462f565b60405180910390f35b6105df60048036038101906105da9190614137565b612895565b6040516105ec9190614968565b60405180910390f35b61060f600480360381019061060a9190613ebc565b6128b3565b60405161061c9190614614565b60405180910390f35b600061063082612947565b9050919050565b6010805461064490614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461067090614bf7565b80156106bd5780601f10610692576101008083540402835291602001916106bd565b820191906000526020600020905b8154815290600101906020018083116106a057829003601f168201915b505050505081565b6060600080546106d490614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461070090614bf7565b801561074d5780601f106107225761010080835404028352916020019161074d565b820191906000526020600020905b81548152906001019060200180831161073057829003601f168201915b5050505050905090565b6000610762826129c1565b6107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079890614808565b60405180910390fd5b6009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006107e78261120d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f906148a8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610877612a2d565b73ffffffffffffffffffffffffffffffffffffffff1614806108a657506108a5816108a0612a2d565b6128b3565b5b6108e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dc90614788565b60405180910390fd5b6108ef8383612a35565b505050565b60007f0000000000000000000000000000000000000000000000000000000000000000905060008173ffffffffffffffffffffffffffffffffffffffff1663e37ce6fa336040518263ffffffff1660e01b81526004016109549190614576565b60206040518083038186803b15801561096c57600080fd5b505afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a4919061403a565b9050806109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90614888565b60405180910390fd5b60007f0000000000000000000000000000000000000000000000000000000000000000905060006001610a4a601f60007f00000000000000000000000000000000000000000000000000000000000000008152602001908152602001600020612aee565b610a549190614a79565b905060008273ffffffffffffffffffffffffffffffffffffffff1663959c45b77f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000856040518463ffffffff1660e01b8152600401610ad593929190614983565b60206040518083038186803b158015610aed57600080fd5b505afa158015610b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b259190614160565b905060005b86811015610b4e57610b3b886117a8565b8080610b4690614c5a565b915050610b2a565b506000610b8c601f60007f00000000000000000000000000000000000000000000000000000000000000008152602001908152602001600020612aee565b905060008473ffffffffffffffffffffffffffffffffffffffff1663959c45b77f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000856040518463ffffffff1660e01b8152600401610c0d93929190614983565b60206040518083038186803b158015610c2557600080fd5b505afa158015610c39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5d9190614160565b90508873ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16847fdeaa91b6123d068f5821d0fb0678463d1a8a6079fe8af5de3ce5e896dcf9133d84604051610cbe9190614968565b60405180910390a4505050505050505050565b6000600d80549050905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905060008173ffffffffffffffffffffffffffffffffffffffff1663e37ce6fa336040518263ffffffff1660e01b8152600401610d3e9190614576565b60206040518083038186803b158015610d5657600080fd5b505afa158015610d6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8e919061403a565b905080610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc790614888565b60405180910390fd5b6000601e60007f000000000000000000000000000000000000000000000000000000000000000081526020019081526020016000205414610e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3d906146e8565b60405180910390fd5b61270f83108015610e58575060008314155b610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e90614908565b60405180910390fd5b82601e60007f0000000000000000000000000000000000000000000000000000000000000000815260200190815260200160002081905550505050565b60007f0000000000000000000000000000000000000000000000000000000000000000905060008173ffffffffffffffffffffffffffffffffffffffff1663e37ce6fa336040518263ffffffff1660e01b8152600401610f349190614576565b60206040518083038186803b158015610f4c57600080fd5b505afa158015610f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f84919061403a565b905080610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd90614888565b60405180910390fd5b610ff07f000000000000000000000000000000000000000000000000000000000000000084612afc565b505050565b611006611000612a2d565b82612b28565b611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c906148c8565b60405180910390fd5b611050838383612c06565b505050565b6000611060836112e3565b82106110a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611098906146a8565b60405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61111583838360405180602001604052806000815250611746565b505050565b61112b611125612a2d565b82612b28565b61116a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116190614928565b60405180910390fd5b61117381612e62565b50565b6000611180610cd1565b82106111c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b8906148e8565b60405180910390fd5b600d82815481106111fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b6000806007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad906147c8565b60405180910390fd5b80915050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134b906147a8565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601e6020528060005260406000206000915090505481565b6060600180546113e690614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461141290614bf7565b801561145f5780601f106114345761010080835404028352916020019161145f565b820191906000526020600020905b81548152906001019060200180831161144257829003601f168201915b5050505050905090565b611471612a2d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d690614748565b60405180910390fd5b80600a60006114ec612a2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611599612a2d565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115de9190614614565b60405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f0000000000000000000000000000000000000000000000000000000000000000905060008173ffffffffffffffffffffffffffffffffffffffff1663e37ce6fa336040518263ffffffff1660e01b815260040161166e9190614576565b60206040518083038186803b15801561168657600080fd5b505afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be919061403a565b905080611700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f790614888565b60405180910390fd5b82601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b611757611751612a2d565b83612b28565b611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d906148c8565b60405180910390fd5b6117a284848484612f73565b50505050565b60007f0000000000000000000000000000000000000000000000000000000000000000905060008173ffffffffffffffffffffffffffffffffffffffff1663e37ce6fa336040518263ffffffff1660e01b81526004016118089190614576565b60206040518083038186803b15801561182057600080fd5b505afa158015611834573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611858919061403a565b90508061189a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189190614888565b60405180910390fd5b600115156118a6612fcf565b1515146118e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118df90614868565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000009050611948601f60007f00000000000000000000000000000000000000000000000000000000000000008152602001908152602001600020613056565b6000611985601f60007f00000000000000000000000000000000000000000000000000000000000000008152602001908152602001600020612aee565b905060008273ffffffffffffffffffffffffffffffffffffffff1663959c45b77f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000856040518463ffffffff1660e01b8152600401611a0693929190614983565b60206040518083038186803b158015611a1e57600080fd5b505afa158015611a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a569190614160565b9050611a62868261306c565b7fce98476f2a1c16f3466ad65b59759356e098b8f100a498ebb025280fcc6759f6867f000000000000000000000000000000000000000000000000000000000000000083604051611ab5939291906145dd565b60405180910390a1505050505050565b6060611ad0826129c1565b611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0690614848565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000090506000611b3f8461323a565b905060008273ffffffffffffffffffffffffffffffffffffffff1663ff74927b611b676133e7565b846040518363ffffffff1660e01b8152600401611b85929190614651565b60006040518083038186803b158015611b9d57600080fd5b505afa158015611bb1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611bda91906140f6565b9050809350505050919050565b6060611bf2826129c1565b611c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2890614688565b60405180910390fd5b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663a324ad24426040518263ffffffff1660e01b8152600401611c939190614968565b60206040518083038186803b158015611cab57600080fd5b505afa158015611cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce39190614189565b60ff1690506001811415611dbf5760116000600c8110611d2c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b018054611d3890614bf7565b80601f0160208091040260200160405190810160405280929190818152602001828054611d6490614bf7565b8015611db15780601f10611d8657610100808354040283529160200191611db1565b820191906000526020600020905b815481529060010190602001808311611d9457829003601f168201915b5050505050925050506126ef565b6002811415611e965760116001600c8110611e03577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b018054611e0f90614bf7565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3b90614bf7565b8015611e885780601f10611e5d57610100808354040283529160200191611e88565b820191906000526020600020905b815481529060010190602001808311611e6b57829003601f168201915b5050505050925050506126ef565b6003811415611f6d5760116002600c8110611eda577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b018054611ee690614bf7565b80601f0160208091040260200160405190810160405280929190818152602001828054611f1290614bf7565b8015611f5f5780601f10611f3457610100808354040283529160200191611f5f565b820191906000526020600020905b815481529060010190602001808311611f4257829003601f168201915b5050505050925050506126ef565b60048114156120445760116003600c8110611fb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b018054611fbd90614bf7565b80601f0160208091040260200160405190810160405280929190818152602001828054611fe990614bf7565b80156120365780601f1061200b57610100808354040283529160200191612036565b820191906000526020600020905b81548152906001019060200180831161201957829003601f168201915b5050505050925050506126ef565b600581141561211b5760116004600c8110612088577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01805461209490614bf7565b80601f01602080910402602001604051908101604052809291908181526020018280546120c090614bf7565b801561210d5780601f106120e25761010080835404028352916020019161210d565b820191906000526020600020905b8154815290600101906020018083116120f057829003601f168201915b5050505050925050506126ef565b60068114156121f25760116005600c811061215f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01805461216b90614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461219790614bf7565b80156121e45780601f106121b9576101008083540402835291602001916121e4565b820191906000526020600020905b8154815290600101906020018083116121c757829003601f168201915b5050505050925050506126ef565b60078114156122c95760116006600c8110612236577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01805461224290614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461226e90614bf7565b80156122bb5780601f10612290576101008083540402835291602001916122bb565b820191906000526020600020905b81548152906001019060200180831161229e57829003601f168201915b5050505050925050506126ef565b60088114156123a05760116007600c811061230d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01805461231990614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461234590614bf7565b80156123925780601f1061236757610100808354040283529160200191612392565b820191906000526020600020905b81548152906001019060200180831161237557829003601f168201915b5050505050925050506126ef565b60098114156124775760116008600c81106123e4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0180546123f090614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461241c90614bf7565b80156124695780601f1061243e57610100808354040283529160200191612469565b820191906000526020600020905b81548152906001019060200180831161244c57829003601f168201915b5050505050925050506126ef565b600a81141561254e5760116009600c81106124bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0180546124c790614bf7565b80601f01602080910402602001604051908101604052809291908181526020018280546124f390614bf7565b80156125405780601f1061251557610100808354040283529160200191612540565b820191906000526020600020905b81548152906001019060200180831161252357829003601f168201915b5050505050925050506126ef565b600b811415612625576011600a600c8110612592577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01805461259e90614bf7565b80601f01602080910402602001604051908101604052809291908181526020018280546125ca90614bf7565b80156126175780601f106125ec57610100808354040283529160200191612617565b820191906000526020600020905b8154815290600101906020018083116125fa57829003601f168201915b5050505050925050506126ef565b6011600b600c8110612660577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01805461266c90614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461269890614bf7565b80156126e55780601f106126ba576101008083540402835291602001916126e5565b820191906000526020600020905b8154815290600101906020018083116126c857829003601f168201915b5050505050925050505b919050565b60606126ff826129c1565b61273e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273590614948565b60405180910390fd5b60007f0000000000000000000000000000000000000000000000000000000000000000905060008173ffffffffffffffffffffffffffffffffffffffff1663a9d659c2856040518263ffffffff1660e01b815260040161279e9190614968565b60206040518083038186803b1580156127b657600080fd5b505afa1580156127ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ee9190614160565b905060046000828152602001908152602001600020805461280e90614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461283a90614bf7565b80156128875780601f1061285c57610100808354040283529160200191612887565b820191906000526020600020905b81548152906001019060200180831161286a57829003601f168201915b505050505092505050919050565b601f6020528060005260406000206000915090508060000154905081565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806129ba57506129b982613479565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612aa88361120d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b80600460008481526020019081526020016000209080519060200190612b23929190613c10565b505050565b6000612b33826129c1565b612b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6990614768565b60405180910390fd5b6000612b7d8361120d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612bec57508373ffffffffffffffffffffffffffffffffffffffff16612bd484610757565b73ffffffffffffffffffffffffffffffffffffffff16145b80612bfd5750612bfc81856128b3565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612c268261120d565b73ffffffffffffffffffffffffffffffffffffffff1614612c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7390614828565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce390614728565b60405180910390fd5b612cf783838361355b565b612d02600082612a35565b6001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d529190614b00565b925050819055506001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612da99190614a79565b92505081905550816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000612e6d8261120d565b9050612e7b8160008461355b565b612e86600083612a35565b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ed69190614b00565b925050819055506007600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b612f7e848484612c06565b612f8a8484848461356b565b612fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc0906146c8565b60405180910390fd5b50505050565b6000601e60007f0000000000000000000000000000000000000000000000000000000000000000815260200190815260200160002054613040601f60007f00000000000000000000000000000000000000000000000000000000000000008152602001908152602001600020612aee565b1061304e5760009050613053565b600190505b90565b6001816000016000828254019250508190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d3906147e8565b60405180910390fd5b6130e5816129c1565b15613125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311c90614708565b60405180910390fd5b6131316000838361355b565b6001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131819190614a79565b92505081905550816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60606000821415613282576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506133e2565b600082905060005b600082146132b457808061329d90614c5a565b915050600a826132ad9190614acf565b915061328a565b60008167ffffffffffffffff8111156132f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156133285781602001600182028036833780820191505090505b5090505b600085146133db576001826133419190614b00565b9150600a856133509190614ca3565b603061335c9190614a79565b60f81b818381518110613398577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856133d49190614acf565b945061332c565b8093505050505b919050565b6060600f80546133f690614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461342290614bf7565b801561346f5780601f106134445761010080835404028352916020019161346f565b820191906000526020600020905b81548152906001019060200180831161345257829003601f168201915b5050505050905090565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061354457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80613554575061355382613702565b5b9050919050565b61356683838361376c565b505050565b600061358c8473ffffffffffffffffffffffffffffffffffffffff16613880565b156136f5578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026135b5612a2d565b8786866040518563ffffffff1660e01b81526004016135d79493929190614591565b602060405180830381600087803b1580156135f157600080fd5b505af192505050801561362257506040513d601f19601f8201168201806040525081019061361f919061408c565b60015b6136a5573d8060008114613652576040519150601f19603f3d011682016040523d82523d6000602084013e613657565b606091505b5060008151141561369d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613694906146c8565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506136fa565b600190505b949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b613777838383613893565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137ba576137b581613898565b6137f9565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146137f8576137f783826138e1565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561383c5761383781613a4e565b61387b565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461387a576138798282613b91565b5b5b505050565b600080823b905060008111915050919050565b505050565b600d80549050600e600083815260200190815260200160002081905550600d81908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016138ee846112e3565b6138f89190614b00565b90506000600c60008481526020019081526020016000205490508181146139dd576000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000208190555081600c600083815260200190815260200160002081905550505b600c600084815260200190815260200160002060009055600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600d80549050613a629190614b00565b90506000600e60008481526020019081526020016000205490506000600d8381548110613ab8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080600d8381548110613b00577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600e600083815260200190815260200160002081905550600e600085815260200190815260200160002060009055600d805480613b75577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000613b9c836112e3565b905081600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555080600c600084815260200190815260200160002081905550505050565b828054613c1c90614bf7565b90600052602060002090601f016020900481019282613c3e5760008555613c85565b82601f10613c5757805160ff1916838001178555613c85565b82800160010185558215613c85579182015b82811115613c84578251825591602001919060010190613c69565b5b509050613c929190613c96565b5090565b5b80821115613caf576000816000905550600101613c97565b5090565b6000613cc6613cc1846149df565b6149ba565b905082815260208101848484011115613cde57600080fd5b613ce9848285614bb5565b509392505050565b6000613d04613cff84614a10565b6149ba565b905082815260208101848484011115613d1c57600080fd5b613d27848285614bb5565b509392505050565b6000613d42613d3d84614a10565b6149ba565b905082815260208101848484011115613d5a57600080fd5b613d65848285614bc4565b509392505050565b600081359050613d7c81615422565b92915050565b600081359050613d9181615439565b92915050565b600081519050613da681615439565b92915050565b600081359050613dbb81615450565b92915050565b600081519050613dd081615450565b92915050565b600082601f830112613de757600080fd5b8135613df7848260208601613cb3565b91505092915050565b600082601f830112613e1157600080fd5b8135613e21848260208601613cf1565b91505092915050565b600082601f830112613e3b57600080fd5b8151613e4b848260208601613d2f565b91505092915050565b600081359050613e6381615467565b92915050565b600081519050613e7881615467565b92915050565b600081519050613e8d8161547e565b92915050565b600060208284031215613ea557600080fd5b6000613eb384828501613d6d565b91505092915050565b60008060408385031215613ecf57600080fd5b6000613edd85828601613d6d565b9250506020613eee85828601613d6d565b9150509250929050565b600080600060608486031215613f0d57600080fd5b6000613f1b86828701613d6d565b9350506020613f2c86828701613d6d565b9250506040613f3d86828701613e54565b9150509250925092565b60008060008060808587031215613f5d57600080fd5b6000613f6b87828801613d6d565b9450506020613f7c87828801613d6d565b9350506040613f8d87828801613e54565b925050606085013567ffffffffffffffff811115613faa57600080fd5b613fb687828801613dd6565b91505092959194509250565b60008060408385031215613fd557600080fd5b6000613fe385828601613d6d565b9250506020613ff485828601613d82565b9150509250929050565b6000806040838503121561401157600080fd5b600061401f85828601613d6d565b925050602061403085828601613e54565b9150509250929050565b60006020828403121561404c57600080fd5b600061405a84828501613d97565b91505092915050565b60006020828403121561407557600080fd5b600061408384828501613dac565b91505092915050565b60006020828403121561409e57600080fd5b60006140ac84828501613dc1565b91505092915050565b6000602082840312156140c757600080fd5b600082013567ffffffffffffffff8111156140e157600080fd5b6140ed84828501613e00565b91505092915050565b60006020828403121561410857600080fd5b600082015167ffffffffffffffff81111561412257600080fd5b61412e84828501613e2a565b91505092915050565b60006020828403121561414957600080fd5b600061415784828501613e54565b91505092915050565b60006020828403121561417257600080fd5b600061418084828501613e69565b91505092915050565b60006020828403121561419b57600080fd5b60006141a984828501613e7e565b91505092915050565b6141bb81614b34565b82525050565b6141ca81614b46565b82525050565b60006141db82614a41565b6141e58185614a57565b93506141f5818560208601614bc4565b6141fe81614d90565b840191505092915050565b600061421482614a4c565b61421e8185614a68565b935061422e818560208601614bc4565b61423781614d90565b840191505092915050565b600061424f603583614a68565b915061425a82614da1565b604082019050919050565b6000614272602b83614a68565b915061427d82614df0565b604082019050919050565b6000614295603283614a68565b91506142a082614e3f565b604082019050919050565b60006142b8603f83614a68565b91506142c382614e8e565b604082019050919050565b60006142db601c83614a68565b91506142e682614edd565b602082019050919050565b60006142fe602483614a68565b915061430982614f06565b604082019050919050565b6000614321601983614a68565b915061432c82614f55565b602082019050919050565b6000614344602c83614a68565b915061434f82614f7e565b604082019050919050565b6000614367603883614a68565b915061437282614fcd565b604082019050919050565b600061438a602a83614a68565b91506143958261501c565b604082019050919050565b60006143ad602983614a68565b91506143b88261506b565b604082019050919050565b60006143d0602083614a68565b91506143db826150ba565b602082019050919050565b60006143f3602c83614a68565b91506143fe826150e3565b604082019050919050565b6000614416602983614a68565b915061442182615132565b604082019050919050565b6000614439602f83614a68565b915061444482615181565b604082019050919050565b600061445c602583614a68565b9150614467826151d0565b604082019050919050565b600061447f601f83614a68565b915061448a8261521f565b602082019050919050565b60006144a2602183614a68565b91506144ad82615248565b604082019050919050565b60006144c5603183614a68565b91506144d082615297565b604082019050919050565b60006144e8602c83614a68565b91506144f3826152e6565b604082019050919050565b600061450b602683614a68565b915061451682615335565b604082019050919050565b600061452e603083614a68565b915061453982615384565b604082019050919050565b6000614551603083614a68565b915061455c826153d3565b604082019050919050565b61457081614b9e565b82525050565b600060208201905061458b60008301846141b2565b92915050565b60006080820190506145a660008301876141b2565b6145b360208301866141b2565b6145c06040830185614567565b81810360608301526145d281846141d0565b905095945050505050565b60006060820190506145f260008301866141b2565b6145ff6020830185614567565b61460c6040830184614567565b949350505050565b600060208201905061462960008301846141c1565b92915050565b600060208201905081810360008301526146498184614209565b905092915050565b6000604082019050818103600083015261466b8185614209565b9050818103602083015261467f8184614209565b90509392505050565b600060208201905081810360008301526146a181614242565b9050919050565b600060208201905081810360008301526146c181614265565b9050919050565b600060208201905081810360008301526146e181614288565b9050919050565b60006020820190508181036000830152614701816142ab565b9050919050565b60006020820190508181036000830152614721816142ce565b9050919050565b60006020820190508181036000830152614741816142f1565b9050919050565b6000602082019050818103600083015261476181614314565b9050919050565b6000602082019050818103600083015261478181614337565b9050919050565b600060208201905081810360008301526147a18161435a565b9050919050565b600060208201905081810360008301526147c18161437d565b9050919050565b600060208201905081810360008301526147e1816143a0565b9050919050565b60006020820190508181036000830152614801816143c3565b9050919050565b60006020820190508181036000830152614821816143e6565b9050919050565b6000602082019050818103600083015261484181614409565b9050919050565b600060208201905081810360008301526148618161442c565b9050919050565b600060208201905081810360008301526148818161444f565b9050919050565b600060208201905081810360008301526148a181614472565b9050919050565b600060208201905081810360008301526148c181614495565b9050919050565b600060208201905081810360008301526148e1816144b8565b9050919050565b60006020820190508181036000830152614901816144db565b9050919050565b60006020820190508181036000830152614921816144fe565b9050919050565b6000602082019050818103600083015261494181614521565b9050919050565b6000602082019050818103600083015261496181614544565b9050919050565b600060208201905061497d6000830184614567565b92915050565b60006060820190506149986000830186614567565b6149a56020830185614567565b6149b26040830184614567565b949350505050565b60006149c46149d5565b90506149d08282614c29565b919050565b6000604051905090565b600067ffffffffffffffff8211156149fa576149f9614d61565b5b614a0382614d90565b9050602081019050919050565b600067ffffffffffffffff821115614a2b57614a2a614d61565b5b614a3482614d90565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614a8482614b9e565b9150614a8f83614b9e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ac457614ac3614cd4565b5b828201905092915050565b6000614ada82614b9e565b9150614ae583614b9e565b925082614af557614af4614d03565b5b828204905092915050565b6000614b0b82614b9e565b9150614b1683614b9e565b925082821015614b2957614b28614cd4565b5b828203905092915050565b6000614b3f82614b7e565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015614be2578082015181840152602081019050614bc7565b83811115614bf1576000848401525b50505050565b60006002820490506001821680614c0f57607f821691505b60208210811415614c2357614c22614d32565b5b50919050565b614c3282614d90565b810181811067ffffffffffffffff82111715614c5157614c50614d61565b5b80604052505050565b6000614c6582614b9e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c9857614c97614cd4565b5b600182019050919050565b6000614cae82614b9e565b9150614cb983614b9e565b925082614cc957614cc8614d03565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732314d657461646174613a204950465320686173682071756572792060008201527f666f72206e6f6e6578697374656e7420746f6b656e0000000000000000000000602082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4e696674794275696c646572496e7374616e63653a205065726d69747465642060008201527f6e756d62657220616c72656164792073657420666f722074686973204e465400602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4e696674794275696c646572496e7374616e63653a204e6966747920736f6c6460008201527f206f757421000000000000000000000000000000000000000000000000000000602082015250565b7f4e69667479456e746974793a20496e76616c6964206d73672e73656e64657200600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4e696674794275696c646572496e7374616e63653a20496c6c6567616c20617260008201527f67756d656e740000000000000000000000000000000000000000000000000000602082015250565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a204e616d6520717565727920666f72206e60008201527f6f6e6578697374656e7420746f6b656e00000000000000000000000000000000602082015250565b61542b81614b34565b811461543657600080fd5b50565b61544281614b46565b811461544d57600080fd5b50565b61545981614b52565b811461546457600080fd5b50565b61547081614b9e565b811461547b57600080fd5b50565b61548781614ba8565b811461549257600080fd5b5056fea2646970667358221220a74007f159071abf495fd79e9a0a69b90beb1a8244c7977d4bdd243ccc0e5ad864736f6c63430008040033516d5838626552745a41736564366e6146577164644b656a5633334e6f586f74715a6f475475446156355348714e516d64324d4e66677a505958474d53315a676473695775416b726952527831357066525855375a564b32326a6365516d5a774874395a684367564d717063464468774b534133686967565951587a79615071683242506a6a584a5855516d517673414d597a4a6d386b475137594e46357a69575562366872377671646d6b726e3171455044796b596934516d5763597a4e645559624d7a724d37624767545a5856453447426d37763464516e654b62396678676a4d644158516d53336b61516e786232387663585167333550724761724a4b6b53797374745a644e4c645a70334a717574745168747470733a2f2f6170692e6e69667479676174657761792e636f6d2f64616e69656c61727368616d2f516d59746472665064336a415757706a6b6432344e7a4c47714835544473484e7642385174717536786e42634a46516d535a71754436794779355176734a6e796758556e574b72734b4a766b3934324c386e7a7336595a464b627859516d6171654a6e7a4632634164664472595241773656777a4e6e39645939624b547955755448673167555351593745726f64696e6720616e64205265666f726d696e672042757374206f6620526f6d6520284f6e652059656172292062792044616e69656c2041727368616d516d65736167474e65796a44764a324e356f6338796b4269777369453767646b39766e666a6a41653369706a7834516d6158583756754259316443654b37385454474576594c54463736736636666e7a4b37544a536e69345048786a516d51646237376a66485a53776b386447704e336d71783871344e3745554e7974694167456b58724d50624d56770000000000000000000000001a6184cd4c5bea62b0116de7962ee7315b7bcbce0000000000000000000000006efb06cf568253a53c7511bd3c31ab28becb01920000000000000000000000006e53130ddff21e3bc963ee902005223b9a202106
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101da5760003560e01c806363b7e17311610104578063afe9ecee116100a2578063d371663011610071578063d371663014610565578063e725f87714610595578063e9437537146105c5578063e985e9c5146105f5576101da565b8063afe9ecee146104e1578063b88d4fde146104fd578063bc0687da14610519578063c87b56dd14610535576101da565b806372ba8c09116100de57806372ba8c091461045957806395d89b4114610489578063a22cb465146104a7578063af640d0f146104c3576101da565b806363b7e173146103ed57806370a082311461040b57806371d2cecb1461043b576101da565b80631b605aa31161017c57806342842e0e1161014b57806342842e0e1461035557806342966c68146103715780634f6ccce71461038d5780636352211e146103bd576101da565b80631b605aa3146102d15780631e469316146102ed57806323b872dd146103095780632f745c5914610325576101da565b8063081812fc116101b8578063081812fc1461024b578063095ea7b31461027b57806315b9f3e01461029757806318160ddd146102b3576101da565b806301ffc9a7146101df57806302d05d3f1461020f57806306fdde031461022d575b600080fd5b6101f960048036038101906101f49190614063565b610625565b6040516102069190614614565b60405180910390f35b610217610637565b604051610224919061462f565b60405180910390f35b6102356106c5565b604051610242919061462f565b60405180910390f35b61026560048036038101906102609190614137565b610757565b6040516102729190614576565b60405180910390f35b61029560048036038101906102909190613ffe565b6107dc565b005b6102b160048036038101906102ac9190613ffe565b6108f4565b005b6102bb610cd1565b6040516102c89190614968565b60405180910390f35b6102eb60048036038101906102e69190614137565b610cde565b005b610307600480360381019061030291906140b5565b610ed4565b005b610323600480360381019061031e9190613ef8565b610ff5565b005b61033f600480360381019061033a9190613ffe565b611055565b60405161034c9190614968565b60405180910390f35b61036f600480360381019061036a9190613ef8565b6110fa565b005b61038b60048036038101906103869190614137565b61111a565b005b6103a760048036038101906103a29190614137565b611176565b6040516103b49190614968565b60405180910390f35b6103d760048036038101906103d29190614137565b61120d565b6040516103e49190614576565b60405180910390f35b6103f56112bf565b6040516104029190614576565b60405180910390f35b61042560048036038101906104209190613e93565b6112e3565b6040516104329190614968565b60405180910390f35b61044361139b565b6040516104509190614968565b60405180910390f35b610473600480360381019061046e9190614137565b6113bf565b6040516104809190614968565b60405180910390f35b6104916113d7565b60405161049e919061462f565b60405180910390f35b6104c160048036038101906104bc9190613fc2565b611469565b005b6104cb6115ea565b6040516104d89190614968565b60405180910390f35b6104fb60048036038101906104f69190613e93565b61160e565b005b61051760048036038101906105129190613f47565b611746565b005b610533600480360381019061052e9190613e93565b6117a8565b005b61054f600480360381019061054a9190614137565b611ac5565b60405161055c919061462f565b60405180910390f35b61057f600480360381019061057a9190614137565b611be7565b60405161058c919061462f565b60405180910390f35b6105af60048036038101906105aa9190614137565b6126f4565b6040516105bc919061462f565b60405180910390f35b6105df60048036038101906105da9190614137565b612895565b6040516105ec9190614968565b60405180910390f35b61060f600480360381019061060a9190613ebc565b6128b3565b60405161061c9190614614565b60405180910390f35b600061063082612947565b9050919050565b6010805461064490614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461067090614bf7565b80156106bd5780601f10610692576101008083540402835291602001916106bd565b820191906000526020600020905b8154815290600101906020018083116106a057829003601f168201915b505050505081565b6060600080546106d490614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461070090614bf7565b801561074d5780601f106107225761010080835404028352916020019161074d565b820191906000526020600020905b81548152906001019060200180831161073057829003601f168201915b5050505050905090565b6000610762826129c1565b6107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079890614808565b60405180910390fd5b6009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006107e78261120d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f906148a8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610877612a2d565b73ffffffffffffffffffffffffffffffffffffffff1614806108a657506108a5816108a0612a2d565b6128b3565b5b6108e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dc90614788565b60405180910390fd5b6108ef8383612a35565b505050565b60007f0000000000000000000000006e53130ddff21e3bc963ee902005223b9a202106905060008173ffffffffffffffffffffffffffffffffffffffff1663e37ce6fa336040518263ffffffff1660e01b81526004016109549190614576565b60206040518083038186803b15801561096c57600080fd5b505afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a4919061403a565b9050806109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90614888565b60405180910390fd5b60007f0000000000000000000000006efb06cf568253a53c7511bd3c31ab28becb0192905060006001610a4a601f60007f00000000000000000000000000000000000000000000000000000000000000018152602001908152602001600020612aee565b610a549190614a79565b905060008273ffffffffffffffffffffffffffffffffffffffff1663959c45b77f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000000000000000000000000000000000000000000001856040518463ffffffff1660e01b8152600401610ad593929190614983565b60206040518083038186803b158015610aed57600080fd5b505afa158015610b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b259190614160565b905060005b86811015610b4e57610b3b886117a8565b8080610b4690614c5a565b915050610b2a565b506000610b8c601f60007f00000000000000000000000000000000000000000000000000000000000000018152602001908152602001600020612aee565b905060008473ffffffffffffffffffffffffffffffffffffffff1663959c45b77f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000000000000000000000000000000000000000000001856040518463ffffffff1660e01b8152600401610c0d93929190614983565b60206040518083038186803b158015610c2557600080fd5b505afa158015610c39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5d9190614160565b90508873ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16847fdeaa91b6123d068f5821d0fb0678463d1a8a6079fe8af5de3ce5e896dcf9133d84604051610cbe9190614968565b60405180910390a4505050505050505050565b6000600d80549050905090565b60007f0000000000000000000000006e53130ddff21e3bc963ee902005223b9a202106905060008173ffffffffffffffffffffffffffffffffffffffff1663e37ce6fa336040518263ffffffff1660e01b8152600401610d3e9190614576565b60206040518083038186803b158015610d5657600080fd5b505afa158015610d6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8e919061403a565b905080610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc790614888565b60405180910390fd5b6000601e60007f000000000000000000000000000000000000000000000000000000000000000181526020019081526020016000205414610e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3d906146e8565b60405180910390fd5b61270f83108015610e58575060008314155b610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e90614908565b60405180910390fd5b82601e60007f0000000000000000000000000000000000000000000000000000000000000001815260200190815260200160002081905550505050565b60007f0000000000000000000000006e53130ddff21e3bc963ee902005223b9a202106905060008173ffffffffffffffffffffffffffffffffffffffff1663e37ce6fa336040518263ffffffff1660e01b8152600401610f349190614576565b60206040518083038186803b158015610f4c57600080fd5b505afa158015610f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f84919061403a565b905080610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd90614888565b60405180910390fd5b610ff07f000000000000000000000000000000000000000000000000000000000000000184612afc565b505050565b611006611000612a2d565b82612b28565b611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c906148c8565b60405180910390fd5b611050838383612c06565b505050565b6000611060836112e3565b82106110a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611098906146a8565b60405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61111583838360405180602001604052806000815250611746565b505050565b61112b611125612a2d565b82612b28565b61116a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116190614928565b60405180910390fd5b61117381612e62565b50565b6000611180610cd1565b82106111c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b8906148e8565b60405180910390fd5b600d82815481106111fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b6000806007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad906147c8565b60405180910390fd5b80915050919050565b7f0000000000000000000000006efb06cf568253a53c7511bd3c31ab28becb019281565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134b906147a8565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000181565b601e6020528060005260406000206000915090505481565b6060600180546113e690614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461141290614bf7565b801561145f5780601f106114345761010080835404028352916020019161145f565b820191906000526020600020905b81548152906001019060200180831161144257829003601f168201915b5050505050905090565b611471612a2d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d690614748565b60405180910390fd5b80600a60006114ec612a2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611599612a2d565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115de9190614614565b60405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000181565b60007f0000000000000000000000006e53130ddff21e3bc963ee902005223b9a202106905060008173ffffffffffffffffffffffffffffffffffffffff1663e37ce6fa336040518263ffffffff1660e01b815260040161166e9190614576565b60206040518083038186803b15801561168657600080fd5b505afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be919061403a565b905080611700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f790614888565b60405180910390fd5b82601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b611757611751612a2d565b83612b28565b611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d906148c8565b60405180910390fd5b6117a284848484612f73565b50505050565b60007f0000000000000000000000006e53130ddff21e3bc963ee902005223b9a202106905060008173ffffffffffffffffffffffffffffffffffffffff1663e37ce6fa336040518263ffffffff1660e01b81526004016118089190614576565b60206040518083038186803b15801561182057600080fd5b505afa158015611834573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611858919061403a565b90508061189a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189190614888565b60405180910390fd5b600115156118a6612fcf565b1515146118e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118df90614868565b60405180910390fd5b60007f0000000000000000000000006efb06cf568253a53c7511bd3c31ab28becb01929050611948601f60007f00000000000000000000000000000000000000000000000000000000000000018152602001908152602001600020613056565b6000611985601f60007f00000000000000000000000000000000000000000000000000000000000000018152602001908152602001600020612aee565b905060008273ffffffffffffffffffffffffffffffffffffffff1663959c45b77f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000000000000000000000000000000000000000000001856040518463ffffffff1660e01b8152600401611a0693929190614983565b60206040518083038186803b158015611a1e57600080fd5b505afa158015611a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a569190614160565b9050611a62868261306c565b7fce98476f2a1c16f3466ad65b59759356e098b8f100a498ebb025280fcc6759f6867f000000000000000000000000000000000000000000000000000000000000000183604051611ab5939291906145dd565b60405180910390a1505050505050565b6060611ad0826129c1565b611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0690614848565b60405180910390fd5b60007f0000000000000000000000006efb06cf568253a53c7511bd3c31ab28becb019290506000611b3f8461323a565b905060008273ffffffffffffffffffffffffffffffffffffffff1663ff74927b611b676133e7565b846040518363ffffffff1660e01b8152600401611b85929190614651565b60006040518083038186803b158015611b9d57600080fd5b505afa158015611bb1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611bda91906140f6565b9050809350505050919050565b6060611bf2826129c1565b611c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2890614688565b60405180910390fd5b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663a324ad24426040518263ffffffff1660e01b8152600401611c939190614968565b60206040518083038186803b158015611cab57600080fd5b505afa158015611cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce39190614189565b60ff1690506001811415611dbf5760116000600c8110611d2c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b018054611d3890614bf7565b80601f0160208091040260200160405190810160405280929190818152602001828054611d6490614bf7565b8015611db15780601f10611d8657610100808354040283529160200191611db1565b820191906000526020600020905b815481529060010190602001808311611d9457829003601f168201915b5050505050925050506126ef565b6002811415611e965760116001600c8110611e03577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b018054611e0f90614bf7565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3b90614bf7565b8015611e885780601f10611e5d57610100808354040283529160200191611e88565b820191906000526020600020905b815481529060010190602001808311611e6b57829003601f168201915b5050505050925050506126ef565b6003811415611f6d5760116002600c8110611eda577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b018054611ee690614bf7565b80601f0160208091040260200160405190810160405280929190818152602001828054611f1290614bf7565b8015611f5f5780601f10611f3457610100808354040283529160200191611f5f565b820191906000526020600020905b815481529060010190602001808311611f4257829003601f168201915b5050505050925050506126ef565b60048114156120445760116003600c8110611fb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b018054611fbd90614bf7565b80601f0160208091040260200160405190810160405280929190818152602001828054611fe990614bf7565b80156120365780601f1061200b57610100808354040283529160200191612036565b820191906000526020600020905b81548152906001019060200180831161201957829003601f168201915b5050505050925050506126ef565b600581141561211b5760116004600c8110612088577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01805461209490614bf7565b80601f01602080910402602001604051908101604052809291908181526020018280546120c090614bf7565b801561210d5780601f106120e25761010080835404028352916020019161210d565b820191906000526020600020905b8154815290600101906020018083116120f057829003601f168201915b5050505050925050506126ef565b60068114156121f25760116005600c811061215f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01805461216b90614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461219790614bf7565b80156121e45780601f106121b9576101008083540402835291602001916121e4565b820191906000526020600020905b8154815290600101906020018083116121c757829003601f168201915b5050505050925050506126ef565b60078114156122c95760116006600c8110612236577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01805461224290614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461226e90614bf7565b80156122bb5780601f10612290576101008083540402835291602001916122bb565b820191906000526020600020905b81548152906001019060200180831161229e57829003601f168201915b5050505050925050506126ef565b60088114156123a05760116007600c811061230d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01805461231990614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461234590614bf7565b80156123925780601f1061236757610100808354040283529160200191612392565b820191906000526020600020905b81548152906001019060200180831161237557829003601f168201915b5050505050925050506126ef565b60098114156124775760116008600c81106123e4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0180546123f090614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461241c90614bf7565b80156124695780601f1061243e57610100808354040283529160200191612469565b820191906000526020600020905b81548152906001019060200180831161244c57829003601f168201915b5050505050925050506126ef565b600a81141561254e5760116009600c81106124bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0180546124c790614bf7565b80601f01602080910402602001604051908101604052809291908181526020018280546124f390614bf7565b80156125405780601f1061251557610100808354040283529160200191612540565b820191906000526020600020905b81548152906001019060200180831161252357829003601f168201915b5050505050925050506126ef565b600b811415612625576011600a600c8110612592577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01805461259e90614bf7565b80601f01602080910402602001604051908101604052809291908181526020018280546125ca90614bf7565b80156126175780601f106125ec57610100808354040283529160200191612617565b820191906000526020600020905b8154815290600101906020018083116125fa57829003601f168201915b5050505050925050506126ef565b6011600b600c8110612660577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01805461266c90614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461269890614bf7565b80156126e55780601f106126ba576101008083540402835291602001916126e5565b820191906000526020600020905b8154815290600101906020018083116126c857829003601f168201915b5050505050925050505b919050565b60606126ff826129c1565b61273e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273590614948565b60405180910390fd5b60007f0000000000000000000000006efb06cf568253a53c7511bd3c31ab28becb0192905060008173ffffffffffffffffffffffffffffffffffffffff1663a9d659c2856040518263ffffffff1660e01b815260040161279e9190614968565b60206040518083038186803b1580156127b657600080fd5b505afa1580156127ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ee9190614160565b905060046000828152602001908152602001600020805461280e90614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461283a90614bf7565b80156128875780601f1061285c57610100808354040283529160200191612887565b820191906000526020600020905b81548152906001019060200180831161286a57829003601f168201915b505050505092505050919050565b601f6020528060005260406000206000915090508060000154905081565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806129ba57506129b982613479565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612aa88361120d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b80600460008481526020019081526020016000209080519060200190612b23929190613c10565b505050565b6000612b33826129c1565b612b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6990614768565b60405180910390fd5b6000612b7d8361120d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612bec57508373ffffffffffffffffffffffffffffffffffffffff16612bd484610757565b73ffffffffffffffffffffffffffffffffffffffff16145b80612bfd5750612bfc81856128b3565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612c268261120d565b73ffffffffffffffffffffffffffffffffffffffff1614612c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7390614828565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce390614728565b60405180910390fd5b612cf783838361355b565b612d02600082612a35565b6001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d529190614b00565b925050819055506001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612da99190614a79565b92505081905550816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000612e6d8261120d565b9050612e7b8160008461355b565b612e86600083612a35565b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ed69190614b00565b925050819055506007600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b612f7e848484612c06565b612f8a8484848461356b565b612fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc0906146c8565b60405180910390fd5b50505050565b6000601e60007f0000000000000000000000000000000000000000000000000000000000000001815260200190815260200160002054613040601f60007f00000000000000000000000000000000000000000000000000000000000000018152602001908152602001600020612aee565b1061304e5760009050613053565b600190505b90565b6001816000016000828254019250508190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d3906147e8565b60405180910390fd5b6130e5816129c1565b15613125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311c90614708565b60405180910390fd5b6131316000838361355b565b6001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131819190614a79565b92505081905550816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60606000821415613282576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506133e2565b600082905060005b600082146132b457808061329d90614c5a565b915050600a826132ad9190614acf565b915061328a565b60008167ffffffffffffffff8111156132f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156133285781602001600182028036833780820191505090505b5090505b600085146133db576001826133419190614b00565b9150600a856133509190614ca3565b603061335c9190614a79565b60f81b818381518110613398577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856133d49190614acf565b945061332c565b8093505050505b919050565b6060600f80546133f690614bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461342290614bf7565b801561346f5780601f106134445761010080835404028352916020019161346f565b820191906000526020600020905b81548152906001019060200180831161345257829003601f168201915b5050505050905090565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061354457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80613554575061355382613702565b5b9050919050565b61356683838361376c565b505050565b600061358c8473ffffffffffffffffffffffffffffffffffffffff16613880565b156136f5578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026135b5612a2d565b8786866040518563ffffffff1660e01b81526004016135d79493929190614591565b602060405180830381600087803b1580156135f157600080fd5b505af192505050801561362257506040513d601f19601f8201168201806040525081019061361f919061408c565b60015b6136a5573d8060008114613652576040519150601f19603f3d011682016040523d82523d6000602084013e613657565b606091505b5060008151141561369d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613694906146c8565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506136fa565b600190505b949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b613777838383613893565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137ba576137b581613898565b6137f9565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146137f8576137f783826138e1565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561383c5761383781613a4e565b61387b565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461387a576138798282613b91565b5b5b505050565b600080823b905060008111915050919050565b505050565b600d80549050600e600083815260200190815260200160002081905550600d81908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016138ee846112e3565b6138f89190614b00565b90506000600c60008481526020019081526020016000205490508181146139dd576000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000208190555081600c600083815260200190815260200160002081905550505b600c600084815260200190815260200160002060009055600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600d80549050613a629190614b00565b90506000600e60008481526020019081526020016000205490506000600d8381548110613ab8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080600d8381548110613b00577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600e600083815260200190815260200160002081905550600e600085815260200190815260200160002060009055600d805480613b75577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000613b9c836112e3565b905081600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555080600c600084815260200190815260200160002081905550505050565b828054613c1c90614bf7565b90600052602060002090601f016020900481019282613c3e5760008555613c85565b82601f10613c5757805160ff1916838001178555613c85565b82800160010185558215613c85579182015b82811115613c84578251825591602001919060010190613c69565b5b509050613c929190613c96565b5090565b5b80821115613caf576000816000905550600101613c97565b5090565b6000613cc6613cc1846149df565b6149ba565b905082815260208101848484011115613cde57600080fd5b613ce9848285614bb5565b509392505050565b6000613d04613cff84614a10565b6149ba565b905082815260208101848484011115613d1c57600080fd5b613d27848285614bb5565b509392505050565b6000613d42613d3d84614a10565b6149ba565b905082815260208101848484011115613d5a57600080fd5b613d65848285614bc4565b509392505050565b600081359050613d7c81615422565b92915050565b600081359050613d9181615439565b92915050565b600081519050613da681615439565b92915050565b600081359050613dbb81615450565b92915050565b600081519050613dd081615450565b92915050565b600082601f830112613de757600080fd5b8135613df7848260208601613cb3565b91505092915050565b600082601f830112613e1157600080fd5b8135613e21848260208601613cf1565b91505092915050565b600082601f830112613e3b57600080fd5b8151613e4b848260208601613d2f565b91505092915050565b600081359050613e6381615467565b92915050565b600081519050613e7881615467565b92915050565b600081519050613e8d8161547e565b92915050565b600060208284031215613ea557600080fd5b6000613eb384828501613d6d565b91505092915050565b60008060408385031215613ecf57600080fd5b6000613edd85828601613d6d565b9250506020613eee85828601613d6d565b9150509250929050565b600080600060608486031215613f0d57600080fd5b6000613f1b86828701613d6d565b9350506020613f2c86828701613d6d565b9250506040613f3d86828701613e54565b9150509250925092565b60008060008060808587031215613f5d57600080fd5b6000613f6b87828801613d6d565b9450506020613f7c87828801613d6d565b9350506040613f8d87828801613e54565b925050606085013567ffffffffffffffff811115613faa57600080fd5b613fb687828801613dd6565b91505092959194509250565b60008060408385031215613fd557600080fd5b6000613fe385828601613d6d565b9250506020613ff485828601613d82565b9150509250929050565b6000806040838503121561401157600080fd5b600061401f85828601613d6d565b925050602061403085828601613e54565b9150509250929050565b60006020828403121561404c57600080fd5b600061405a84828501613d97565b91505092915050565b60006020828403121561407557600080fd5b600061408384828501613dac565b91505092915050565b60006020828403121561409e57600080fd5b60006140ac84828501613dc1565b91505092915050565b6000602082840312156140c757600080fd5b600082013567ffffffffffffffff8111156140e157600080fd5b6140ed84828501613e00565b91505092915050565b60006020828403121561410857600080fd5b600082015167ffffffffffffffff81111561412257600080fd5b61412e84828501613e2a565b91505092915050565b60006020828403121561414957600080fd5b600061415784828501613e54565b91505092915050565b60006020828403121561417257600080fd5b600061418084828501613e69565b91505092915050565b60006020828403121561419b57600080fd5b60006141a984828501613e7e565b91505092915050565b6141bb81614b34565b82525050565b6141ca81614b46565b82525050565b60006141db82614a41565b6141e58185614a57565b93506141f5818560208601614bc4565b6141fe81614d90565b840191505092915050565b600061421482614a4c565b61421e8185614a68565b935061422e818560208601614bc4565b61423781614d90565b840191505092915050565b600061424f603583614a68565b915061425a82614da1565b604082019050919050565b6000614272602b83614a68565b915061427d82614df0565b604082019050919050565b6000614295603283614a68565b91506142a082614e3f565b604082019050919050565b60006142b8603f83614a68565b91506142c382614e8e565b604082019050919050565b60006142db601c83614a68565b91506142e682614edd565b602082019050919050565b60006142fe602483614a68565b915061430982614f06565b604082019050919050565b6000614321601983614a68565b915061432c82614f55565b602082019050919050565b6000614344602c83614a68565b915061434f82614f7e565b604082019050919050565b6000614367603883614a68565b915061437282614fcd565b604082019050919050565b600061438a602a83614a68565b91506143958261501c565b604082019050919050565b60006143ad602983614a68565b91506143b88261506b565b604082019050919050565b60006143d0602083614a68565b91506143db826150ba565b602082019050919050565b60006143f3602c83614a68565b91506143fe826150e3565b604082019050919050565b6000614416602983614a68565b915061442182615132565b604082019050919050565b6000614439602f83614a68565b915061444482615181565b604082019050919050565b600061445c602583614a68565b9150614467826151d0565b604082019050919050565b600061447f601f83614a68565b915061448a8261521f565b602082019050919050565b60006144a2602183614a68565b91506144ad82615248565b604082019050919050565b60006144c5603183614a68565b91506144d082615297565b604082019050919050565b60006144e8602c83614a68565b91506144f3826152e6565b604082019050919050565b600061450b602683614a68565b915061451682615335565b604082019050919050565b600061452e603083614a68565b915061453982615384565b604082019050919050565b6000614551603083614a68565b915061455c826153d3565b604082019050919050565b61457081614b9e565b82525050565b600060208201905061458b60008301846141b2565b92915050565b60006080820190506145a660008301876141b2565b6145b360208301866141b2565b6145c06040830185614567565b81810360608301526145d281846141d0565b905095945050505050565b60006060820190506145f260008301866141b2565b6145ff6020830185614567565b61460c6040830184614567565b949350505050565b600060208201905061462960008301846141c1565b92915050565b600060208201905081810360008301526146498184614209565b905092915050565b6000604082019050818103600083015261466b8185614209565b9050818103602083015261467f8184614209565b90509392505050565b600060208201905081810360008301526146a181614242565b9050919050565b600060208201905081810360008301526146c181614265565b9050919050565b600060208201905081810360008301526146e181614288565b9050919050565b60006020820190508181036000830152614701816142ab565b9050919050565b60006020820190508181036000830152614721816142ce565b9050919050565b60006020820190508181036000830152614741816142f1565b9050919050565b6000602082019050818103600083015261476181614314565b9050919050565b6000602082019050818103600083015261478181614337565b9050919050565b600060208201905081810360008301526147a18161435a565b9050919050565b600060208201905081810360008301526147c18161437d565b9050919050565b600060208201905081810360008301526147e1816143a0565b9050919050565b60006020820190508181036000830152614801816143c3565b9050919050565b60006020820190508181036000830152614821816143e6565b9050919050565b6000602082019050818103600083015261484181614409565b9050919050565b600060208201905081810360008301526148618161442c565b9050919050565b600060208201905081810360008301526148818161444f565b9050919050565b600060208201905081810360008301526148a181614472565b9050919050565b600060208201905081810360008301526148c181614495565b9050919050565b600060208201905081810360008301526148e1816144b8565b9050919050565b60006020820190508181036000830152614901816144db565b9050919050565b60006020820190508181036000830152614921816144fe565b9050919050565b6000602082019050818103600083015261494181614521565b9050919050565b6000602082019050818103600083015261496181614544565b9050919050565b600060208201905061497d6000830184614567565b92915050565b60006060820190506149986000830186614567565b6149a56020830185614567565b6149b26040830184614567565b949350505050565b60006149c46149d5565b90506149d08282614c29565b919050565b6000604051905090565b600067ffffffffffffffff8211156149fa576149f9614d61565b5b614a0382614d90565b9050602081019050919050565b600067ffffffffffffffff821115614a2b57614a2a614d61565b5b614a3482614d90565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614a8482614b9e565b9150614a8f83614b9e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ac457614ac3614cd4565b5b828201905092915050565b6000614ada82614b9e565b9150614ae583614b9e565b925082614af557614af4614d03565b5b828204905092915050565b6000614b0b82614b9e565b9150614b1683614b9e565b925082821015614b2957614b28614cd4565b5b828203905092915050565b6000614b3f82614b7e565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015614be2578082015181840152602081019050614bc7565b83811115614bf1576000848401525b50505050565b60006002820490506001821680614c0f57607f821691505b60208210811415614c2357614c22614d32565b5b50919050565b614c3282614d90565b810181811067ffffffffffffffff82111715614c5157614c50614d61565b5b80604052505050565b6000614c6582614b9e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c9857614c97614cd4565b5b600182019050919050565b6000614cae82614b9e565b9150614cb983614b9e565b925082614cc957614cc8614d03565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732314d657461646174613a204950465320686173682071756572792060008201527f666f72206e6f6e6578697374656e7420746f6b656e0000000000000000000000602082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4e696674794275696c646572496e7374616e63653a205065726d69747465642060008201527f6e756d62657220616c72656164792073657420666f722074686973204e465400602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4e696674794275696c646572496e7374616e63653a204e6966747920736f6c6460008201527f206f757421000000000000000000000000000000000000000000000000000000602082015250565b7f4e69667479456e746974793a20496e76616c6964206d73672e73656e64657200600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4e696674794275696c646572496e7374616e63653a20496c6c6567616c20617260008201527f67756d656e740000000000000000000000000000000000000000000000000000602082015250565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a204e616d6520717565727920666f72206e60008201527f6f6e6578697374656e7420746f6b656e00000000000000000000000000000000602082015250565b61542b81614b34565b811461543657600080fd5b50565b61544281614b46565b811461544d57600080fd5b50565b61545981614b52565b811461546457600080fd5b50565b61547081614b9e565b811461547b57600080fd5b50565b61548781614ba8565b811461549257600080fd5b5056fea2646970667358221220a74007f159071abf495fd79e9a0a69b90beb1a8244c7977d4bdd243ccc0e5ad864736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001a6184cd4c5bea62b0116de7962ee7315b7bcbce0000000000000000000000006efb06cf568253a53c7511bd3c31ab28becb01920000000000000000000000006e53130ddff21e3bc963ee902005223b9a202106
-----Decoded View---------------
Arg [0] : _dateTimeContract (address): 0x1a6184CD4C5Bea62B0116de7962EE7315B7bcBce
Arg [1] : _masterBuilderContract (address): 0x6EFB06cF568253a53C7511BD3c31AB28BecB0192
Arg [2] : _niftyRegistryContract (address): 0x6e53130dDfF21E3BC963Ee902005223b9A202106
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000001a6184cd4c5bea62b0116de7962ee7315b7bcbce
Arg [1] : 0000000000000000000000006efb06cf568253a53c7511bd3c31ab28becb0192
Arg [2] : 0000000000000000000000006e53130ddff21e3bc963ee902005223b9a202106
Deployed Bytecode Sourcemap
47422:6761:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50400:179;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47582:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23054:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26830:221;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26367:397;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52358:679;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40549:113;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50900:389;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51357:130;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27720:305;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40217:256;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28096:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37855:245;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40739:233;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22748:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19554:46;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22478:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48746:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48825:48;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23223:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27123:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;48715:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49997:134;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28318:285;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51722:563;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23534:416;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53045:1133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24460:341;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48880:57;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27489:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50400:179;50511:4;50535:36;50559:11;50535:23;:36::i;:::-;50528:43;;50400:179;;;:::o;47582:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23054:100::-;23108:13;23141:5;23134:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23054:100;:::o;26830:221::-;26906:7;26934:16;26942:7;26934;:16::i;:::-;26926:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27019:15;:24;27035:7;27019:24;;;;;;;;;;;;;;;;;;;;;27012:31;;26830:221;;;:::o;26367:397::-;26448:13;26464:23;26479:7;26464:14;:23::i;:::-;26448:39;;26512:5;26506:11;;:2;:11;;;;26498:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;26592:5;26576:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;26601:37;26618:5;26625:12;:10;:12::i;:::-;26601:16;:37::i;:::-;26576:62;26568:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;26735:21;26744:2;26748:7;26735:8;:21::i;:::-;26367:397;;;:::o;52358:679::-;19752:30;19802:21;19752:72;;19835:13;19851;:32;;;19884:10;19851:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19835:60;;19914:8;19906:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;52459:19:::1;52498:21;52459:61;;52533:22;52597:1;52558:36;:15;:26;52574:9;52558:26;;;;;;;;;;;:34;:36::i;:::-;:40;;;;:::i;:::-;52533:65;;52609:14;52626:2;:16;;;52643:2;52647:9;52658:17;52626:50;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;52609:67;;52694:6;52689:94;52710:11;52706:1;:15;52689:94;;;52743:28;52753:17;52743:9;:28::i;:::-;52723:3;;;;;:::i;:::-;;;;52689:94;;;;52795:22;52820:36;:15;:26;52836:9;52820:26;;;;;;;;;;;:34;:36::i;:::-;52795:61;;52867:14;52884:2;:16;;;52901:2;52905:9;52916:17;52884:50;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;52867:67;;53010:17;52956:72;;53006:1;52956:72;;52976:9;52956:72;52987:9;52956:72;;;;;;:::i;:::-;;;;;;;;19969:1;;;;;52358:679:::0;;;;:::o;40549:113::-;40610:7;40637:10;:17;;;;40630:24;;40549:113;:::o;50900:389::-;19752:30;19802:21;19752:72;;19835:13;19851;:32;;;19884:10;19851:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19835:60;;19914:8;19906:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;51034:1:::1;51001:18;:29;51020:9;51001:29;;;;;;;;;;;;:34;50993:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;51144:4;51122:19;:26;:54;;;;;51175:1;51152:19;:24;;51122:54;51114:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;51262:19;51230:18;:29;51249:9;51230:29;;;;;;;;;;;:51;;;;50900:389:::0;;;:::o;51357:130::-;19752:30;19802:21;19752:72;;19835:13;19851;:32;;;19884:10;19851:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19835:60;;19914:8;19906:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;51439:40:::1;51457:9;51468:10;51439:17;:40::i;:::-;51357:130:::0;;;:::o;27720:305::-;27881:41;27900:12;:10;:12::i;:::-;27914:7;27881:18;:41::i;:::-;27873:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;27989:28;27999:4;28005:2;28009:7;27989:9;:28::i;:::-;27720:305;;;:::o;40217:256::-;40314:7;40350:23;40367:5;40350:16;:23::i;:::-;40342:5;:31;40334:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;40439:12;:19;40452:5;40439:19;;;;;;;;;;;;;;;:26;40459:5;40439:26;;;;;;;;;;;;40432:33;;40217:256;;;;:::o;28096:151::-;28200:39;28217:4;28223:2;28227:7;28200:39;;;;;;;;;;;;:16;:39::i;:::-;28096:151;;;:::o;37855:245::-;37973:41;37992:12;:10;:12::i;:::-;38006:7;37973:18;:41::i;:::-;37965:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;38078:14;38084:7;38078:5;:14::i;:::-;37855:245;:::o;40739:233::-;40814:7;40850:30;:28;:30::i;:::-;40842:5;:38;40834:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;40947:10;40958:5;40947:17;;;;;;;;;;;;;;;;;;;;;;;;40940:24;;40739:233;;;:::o;22748:239::-;22820:7;22840:13;22856:7;:16;22864:7;22856:16;;;;;;;;;;;;;;;;;;;;;22840:32;;22908:1;22891:19;;:5;:19;;;;22883:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22974:5;22967:12;;;22748:239;;;:::o;19554:46::-;;;:::o;22478:208::-;22550:7;22595:1;22578:19;;:5;:19;;;;22570:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;22662:9;:16;22672:5;22662:16;;;;;;;;;;;;;;;;22655:23;;22478:208;;;:::o;48746:31::-;;;:::o;48825:48::-;;;;;;;;;;;;;;;;;:::o;23223:104::-;23279:13;23312:7;23305:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23223:104;:::o;27123:295::-;27238:12;:10;:12::i;:::-;27226:24;;:8;:24;;;;27218:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;27338:8;27293:18;:32;27312:12;:10;:12::i;:::-;27293:32;;;;;;;;;;;;;;;:42;27326:8;27293:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;27391:8;27362:48;;27377:12;:10;:12::i;:::-;27362:48;;;27401:8;27362:48;;;;;;:::i;:::-;;;;;;;;27123:295;;:::o;48715:24::-;;;:::o;49997:134::-;19752:30;19802:21;19752:72;;19835:13;19851;:32;;;19884:10;19851:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19835:60;;19914:8;19906:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;50106:17:::1;50087:16;;:36;;;;;;;;;;;;;;;;;;49997:134:::0;;;:::o;28318:285::-;28450:41;28469:12;:10;:12::i;:::-;28483:7;28450:18;:41::i;:::-;28442:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;28556:39;28570:4;28576:2;28580:7;28589:5;28556:13;:39::i;:::-;28318:285;;;;:::o;51722:563::-;19752:30;19802:21;19752:72;;19835:13;19851;:32;;;19884:10;19851:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19835:60;;19914:8;19906:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;51836:4:::1;51810:30;;:22;:20;:22::i;:::-;:30;;;51802:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;51895:19;51934:21;51895:61;;51967:38;:15;:26;51983:9;51967:26;;;;;;;;;;;:36;:38::i;:::-;52025:20;52048:36;:15;:26;52064:9;52048:26;;;;;;;;;;;:34;:36::i;:::-;52025:59;;52095:12;52110:2;:16;;;52127:2;52131:9;52142:15;52110:48;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;52095:63;;52175:33;52181:17;52200:7;52175:5;:33::i;:::-;52226:51;52239:17;52258:9;52269:7;52226:51;;;;;;;;:::i;:::-;;;;;;;;19969:1;;;51722:563:::0;;;:::o;23534:416::-;23601:13;23635:16;23643:7;23635;:16::i;:::-;23627:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;23714:19;23753:21;23714:61;;23786:24;23813:25;23830:7;23813:16;:25::i;:::-;23786:52;;23849:25;23877:2;:12;;;23890:10;:8;:10::i;:::-;23902;23877:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23849:64;;23931:11;23924:18;;;;;23534:416;;;:::o;53045:1133::-;53117:13;53151:16;53159:7;53151;:16::i;:::-;53143:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;53238:20;53273:16;;;;;;;;;;;53238:52;;53307:10;53320:8;:17;;;53338:15;53320:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;53307:47;;;;53380:1;53371:5;:10;53367:61;;;53405:8;53414:1;53405:11;;;;;;;;;;;;;;;;53398:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53367:61;53451:1;53442:5;:10;53438:61;;;53476:8;53485:1;53476:11;;;;;;;;;;;;;;;;53469:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53438:61;53522:1;53513:5;:10;53509:61;;;53547:8;53556:1;53547:11;;;;;;;;;;;;;;;;53540:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53509:61;53593:1;53584:5;:10;53580:61;;;53618:8;53627:1;53618:11;;;;;;;;;;;;;;;;53611:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53580:61;53664:1;53655:5;:10;53651:61;;;53689:8;53698:1;53689:11;;;;;;;;;;;;;;;;53682:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53651:61;53735:1;53726:5;:10;53722:61;;;53760:8;53769:1;53760:11;;;;;;;;;;;;;;;;53753:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53722:61;53806:1;53797:5;:10;53793:61;;;53831:8;53840:1;53831:11;;;;;;;;;;;;;;;;53824:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53793:61;53877:1;53868:5;:10;53864:61;;;53902:8;53911:1;53902:11;;;;;;;;;;;;;;;;53895:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53864:61;53948:1;53939:5;:10;53935:61;;;53973:8;53982:1;53973:11;;;;;;;;;;;;;;;;53966:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53935:61;54019:2;54010:5;:11;54006:62;;;54045:8;54054:1;54045:11;;;;;;;;;;;;;;;;54038:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54006:62;54091:2;54082:5;:11;54078:63;;;54117:8;54126:2;54117:12;;;;;;;;;;;;;;;;54110:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54078:63;54158:8;54167:2;54158:12;;;;;;;;;;;;;;;;54151:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53045:1133;;;;:::o;24460:341::-;24519:13;24553:16;24561:7;24553;:16::i;:::-;24545:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;24633:19;24672:21;24633:61;;24705:15;24723:2;:17;;;24741:7;24723:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24705:44;;24767:14;:26;24782:10;24767:26;;;;;;;;;;;24760:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24460:341;;;:::o;48880:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;27489:164::-;27586:4;27610:18;:25;27629:5;27610:25;;;;;;;;;;;;;;;:35;27636:8;27610:35;;;;;;;;;;;;;;;;;;;;;;;;;27603:42;;27489:164;;;;:::o;39896:237::-;39998:4;40037:35;40022:50;;;:11;:50;;;;:103;;;;40089:36;40113:11;40089:23;:36::i;:::-;40022:103;40015:110;;39896:237;;;:::o;30070:127::-;30135:4;30187:1;30159:30;;:7;:16;30167:7;30159:16;;;;;;;;;;;;;;;;;;;;;:30;;;;30152:37;;30070:127;;;:::o;15916:98::-;15969:7;15996:10;15989:17;;15916:98;:::o;33947:174::-;34049:2;34022:15;:24;34038:7;34022:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;34105:7;34101:2;34067:46;;34076:23;34091:7;34076:14;:23::i;:::-;34067:46;;;;;;;;;;;;33947:174;;:::o;36972:114::-;37037:7;37064;:14;;;37057:21;;36972:114;;;:::o;25950:150::-;26077:15;26048:14;:26;26063:10;26048:26;;;;;;;;;;;:44;;;;;;;;;;;;:::i;:::-;;25950:150;;:::o;30364:348::-;30457:4;30482:16;30490:7;30482;:16::i;:::-;30474:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;30558:13;30574:23;30589:7;30574:14;:23::i;:::-;30558:39;;30627:5;30616:16;;:7;:16;;;:51;;;;30660:7;30636:31;;:20;30648:7;30636:11;:20::i;:::-;:31;;;30616:51;:87;;;;30671:32;30688:5;30695:7;30671:16;:32::i;:::-;30616:87;30608:96;;;30364:348;;;;:::o;33285:544::-;33410:4;33383:31;;:23;33398:7;33383:14;:23::i;:::-;:31;;;33375:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;33493:1;33479:16;;:2;:16;;;;33471:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;33549:39;33570:4;33576:2;33580:7;33549:20;:39::i;:::-;33653:29;33670:1;33674:7;33653:8;:29::i;:::-;33714:1;33695:9;:15;33705:4;33695:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;33743:1;33726:9;:13;33736:2;33726:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;33774:2;33755:7;:16;33763:7;33755:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;33813:7;33809:2;33794:27;;33803:4;33794:27;;;;;;;;;;;;33285:544;;;:::o;32588:360::-;32648:13;32664:23;32679:7;32664:14;:23::i;:::-;32648:39;;32700:48;32721:5;32736:1;32740:7;32700:20;:48::i;:::-;32789:29;32806:1;32810:7;32789:8;:29::i;:::-;32851:1;32831:9;:16;32841:5;32831:16;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;32870:7;:16;32878:7;32870:16;;;;;;;;;;;;32863:23;;;;;;;;;;;32932:7;32928:1;32904:36;;32913:5;32904:36;;;;;;;;;;;;32588:360;;:::o;29485:272::-;29599:28;29609:4;29615:2;29619:7;29599:9;:28::i;:::-;29646:48;29669:4;29675:2;29679:7;29688:5;29646:22;:48::i;:::-;29638:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;29485:272;;;;:::o;51499:215::-;51554:4;51615:18;:29;51634:9;51615:29;;;;;;;;;;;;51575:36;:15;:26;51591:9;51575:26;;;;;;;;;;;:34;:36::i;:::-;:69;51571:114;;51668:5;51661:12;;;;51571:114;51702:4;51695:11;;51499:215;;:::o;37094:127::-;37201:1;37183:7;:14;;;:19;;;;;;;;;;;37094:127;:::o;31977:382::-;32071:1;32057:16;;:2;:16;;;;32049:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;32130:16;32138:7;32130;:16::i;:::-;32129:17;32121:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;32192:45;32221:1;32225:2;32229:7;32192:20;:45::i;:::-;32267:1;32250:9;:13;32260:2;32250:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;32298:2;32279:7;:16;32287:7;32279:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;32343:7;32339:2;32318:33;;32335:1;32318:33;;;;;;;;;;;;31977:382;;:::o;16525:723::-;16581:13;16811:1;16802:5;:10;16798:53;;;16829:10;;;;;;;;;;;;;;;;;;;;;16798:53;16861:12;16876:5;16861:20;;16892:14;16917:78;16932:1;16924:4;:9;16917:78;;16950:8;;;;;:::i;:::-;;;;16981:2;16973:10;;;;;:::i;:::-;;;16917:78;;;17005:19;17037:6;17027:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17005:39;;17055:154;17071:1;17062:5;:10;17055:154;;17099:1;17089:11;;;;;:::i;:::-;;;17166:2;17158:5;:10;;;;:::i;:::-;17145:2;:24;;;;:::i;:::-;17132:39;;17115:6;17122;17115:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;17195:2;17186:11;;;;;:::i;:::-;;;17055:154;;;17233:6;17219:21;;;;;16525:723;;;;:::o;50702:114::-;50762:13;50795;50788:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50702:114;:::o;22122:292::-;22224:4;22263:25;22248:40;;;:11;:40;;;;:105;;;;22320:33;22305:48;;;:11;:48;;;;22248:105;:158;;;;22370:36;22394:11;22370:23;:36::i;:::-;22248:158;22241:165;;22122:292;;;:::o;50139:189::-;50275:45;50302:4;50308:2;50312:7;50275:26;:45::i;:::-;50139:189;;;:::o;34686:843::-;34807:4;34833:15;:2;:13;;;:15::i;:::-;34829:693;;;34885:2;34869:36;;;34906:12;:10;:12::i;:::-;34920:4;34926:7;34935:5;34869:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;34865:602;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35132:1;35115:6;:13;:18;35111:341;;;35158:60;;;;;;;;;;:::i;:::-;;;;;;;;35111:341;35402:6;35396:13;35387:6;35383:2;35379:15;35372:38;34865:602;35002:45;;;34992:55;;;:6;:55;;;;34985:62;;;;;34829:693;35506:4;35499:11;;34686:843;;;;;;;:::o;19013:157::-;19098:4;19137:25;19122:40;;;:11;:40;;;;19115:47;;19013:157;;;:::o;41585:555::-;41695:45;41722:4;41728:2;41732:7;41695:26;:45::i;:::-;41773:1;41757:18;;:4;:18;;;41753:187;;;41792:40;41824:7;41792:31;:40::i;:::-;41753:187;;;41862:2;41854:10;;:4;:10;;;41850:90;;41881:47;41914:4;41920:7;41881:32;:47::i;:::-;41850:90;41753:187;41968:1;41954:16;;:2;:16;;;41950:183;;;41987:45;42024:7;41987:36;:45::i;:::-;41950:183;;;42060:4;42054:10;;:2;:10;;;42050:83;;42081:40;42109:2;42113:7;42081:27;:40::i;:::-;42050:83;41950:183;41585:555;;;:::o;8079:422::-;8139:4;8347:12;8458:7;8446:20;8438:28;;8492:1;8485:4;:8;8478:15;;;8079:422;;;:::o;36101:93::-;;;;:::o;42863:164::-;42967:10;:17;;;;42940:15;:24;42956:7;42940:24;;;;;;;;;;;:44;;;;42995:10;43011:7;42995:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42863:164;:::o;43654:988::-;43920:22;43970:1;43945:22;43962:4;43945:16;:22::i;:::-;:26;;;;:::i;:::-;43920:51;;43982:18;44003:17;:26;44021:7;44003:26;;;;;;;;;;;;43982:47;;44150:14;44136:10;:28;44132:328;;44181:19;44203:12;:18;44216:4;44203:18;;;;;;;;;;;;;;;:34;44222:14;44203:34;;;;;;;;;;;;44181:56;;44287:11;44254:12;:18;44267:4;44254:18;;;;;;;;;;;;;;;:30;44273:10;44254:30;;;;;;;;;;;:44;;;;44404:10;44371:17;:30;44389:11;44371:30;;;;;;;;;;;:43;;;;44132:328;;44556:17;:26;44574:7;44556:26;;;;;;;;;;;44549:33;;;44600:12;:18;44613:4;44600:18;;;;;;;;;;;;;;;:34;44619:14;44600:34;;;;;;;;;;;44593:41;;;43654:988;;;;:::o;44937:1079::-;45190:22;45235:1;45215:10;:17;;;;:21;;;;:::i;:::-;45190:46;;45247:18;45268:15;:24;45284:7;45268:24;;;;;;;;;;;;45247:45;;45619:19;45641:10;45652:14;45641:26;;;;;;;;;;;;;;;;;;;;;;;;45619:48;;45705:11;45680:10;45691;45680:22;;;;;;;;;;;;;;;;;;;;;;;:36;;;;45816:10;45785:15;:28;45801:11;45785:28;;;;;;;;;;;:41;;;;45957:15;:24;45973:7;45957:24;;;;;;;;;;;45950:31;;;45992:10;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44937:1079;;;;:::o;42441:221::-;42526:14;42543:20;42560:2;42543:16;:20::i;:::-;42526:37;;42601:7;42574:12;:16;42587:2;42574:16;;;;;;;;;;;;;;;:24;42591:6;42574:24;;;;;;;;;;;:34;;;;42648:6;42619:17;:26;42637:7;42619:26;;;;;;;;;;;:35;;;;42441:221;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:343:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:2;;;290:1;287;280:12;249:2;303:41;337:6;332:3;327;303:41;:::i;:::-;90:260;;;;;;:::o;356:345::-;434:5;459:66;475:49;517:6;475:49;:::i;:::-;459:66;:::i;:::-;450:75;;548:6;541:5;534:21;586:4;579:5;575:16;624:3;615:6;610:3;606:16;603:25;600:2;;;641:1;638;631:12;600:2;654:41;688:6;683:3;678;654:41;:::i;:::-;440:261;;;;;;:::o;707:354::-;796:5;821:66;837:49;879:6;837:49;:::i;:::-;821:66;:::i;:::-;812:75;;910:6;903:5;896:21;948:4;941:5;937:16;986:3;977:6;972:3;968:16;965:25;962:2;;;1003:1;1000;993:12;962:2;1016:39;1048:6;1043:3;1038;1016:39;:::i;:::-;802:259;;;;;;:::o;1067:139::-;1113:5;1151:6;1138:20;1129:29;;1167:33;1194:5;1167:33;:::i;:::-;1119:87;;;;:::o;1212:133::-;1255:5;1293:6;1280:20;1271:29;;1309:30;1333:5;1309:30;:::i;:::-;1261:84;;;;:::o;1351:137::-;1405:5;1436:6;1430:13;1421:22;;1452:30;1476:5;1452:30;:::i;:::-;1411:77;;;;:::o;1494:137::-;1539:5;1577:6;1564:20;1555:29;;1593:32;1619:5;1593:32;:::i;:::-;1545:86;;;;:::o;1637:141::-;1693:5;1724:6;1718:13;1709:22;;1740:32;1766:5;1740:32;:::i;:::-;1699:79;;;;:::o;1797:271::-;1852:5;1901:3;1894:4;1886:6;1882:17;1878:27;1868:2;;1919:1;1916;1909:12;1868:2;1959:6;1946:20;1984:78;2058:3;2050:6;2043:4;2035:6;2031:17;1984:78;:::i;:::-;1975:87;;1858:210;;;;;:::o;2088:273::-;2144:5;2193:3;2186:4;2178:6;2174:17;2170:27;2160:2;;2211:1;2208;2201:12;2160:2;2251:6;2238:20;2276:79;2351:3;2343:6;2336:4;2328:6;2324:17;2276:79;:::i;:::-;2267:88;;2150:211;;;;;:::o;2381:288::-;2448:5;2497:3;2490:4;2482:6;2478:17;2474:27;2464:2;;2515:1;2512;2505:12;2464:2;2548:6;2542:13;2573:90;2659:3;2651:6;2644:4;2636:6;2632:17;2573:90;:::i;:::-;2564:99;;2454:215;;;;;:::o;2675:139::-;2721:5;2759:6;2746:20;2737:29;;2775:33;2802:5;2775:33;:::i;:::-;2727:87;;;;:::o;2820:143::-;2877:5;2908:6;2902:13;2893:22;;2924:33;2951:5;2924:33;:::i;:::-;2883:80;;;;:::o;2969:139::-;3024:5;3055:6;3049:13;3040:22;;3071:31;3096:5;3071:31;:::i;:::-;3030:78;;;;:::o;3114:262::-;3173:6;3222:2;3210:9;3201:7;3197:23;3193:32;3190:2;;;3238:1;3235;3228:12;3190:2;3281:1;3306:53;3351:7;3342:6;3331:9;3327:22;3306:53;:::i;:::-;3296:63;;3252:117;3180:196;;;;:::o;3382:407::-;3450:6;3458;3507:2;3495:9;3486:7;3482:23;3478:32;3475:2;;;3523:1;3520;3513:12;3475:2;3566:1;3591:53;3636:7;3627:6;3616:9;3612:22;3591:53;:::i;:::-;3581:63;;3537:117;3693:2;3719:53;3764:7;3755:6;3744:9;3740:22;3719:53;:::i;:::-;3709:63;;3664:118;3465:324;;;;;:::o;3795:552::-;3872:6;3880;3888;3937:2;3925:9;3916:7;3912:23;3908:32;3905:2;;;3953:1;3950;3943:12;3905:2;3996:1;4021:53;4066:7;4057:6;4046:9;4042:22;4021:53;:::i;:::-;4011:63;;3967:117;4123:2;4149:53;4194:7;4185:6;4174:9;4170:22;4149:53;:::i;:::-;4139:63;;4094:118;4251:2;4277:53;4322:7;4313:6;4302:9;4298:22;4277:53;:::i;:::-;4267:63;;4222:118;3895:452;;;;;:::o;4353:809::-;4448:6;4456;4464;4472;4521:3;4509:9;4500:7;4496:23;4492:33;4489:2;;;4538:1;4535;4528:12;4489:2;4581:1;4606:53;4651:7;4642:6;4631:9;4627:22;4606:53;:::i;:::-;4596:63;;4552:117;4708:2;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4679:118;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4992:2;4981:9;4977:18;4964:32;5023:18;5015:6;5012:30;5009:2;;;5055:1;5052;5045:12;5009:2;5083:62;5137:7;5128:6;5117:9;5113:22;5083:62;:::i;:::-;5073:72;;4935:220;4479:683;;;;;;;:::o;5168:401::-;5233:6;5241;5290:2;5278:9;5269:7;5265:23;5261:32;5258:2;;;5306:1;5303;5296:12;5258:2;5349:1;5374:53;5419:7;5410:6;5399:9;5395:22;5374:53;:::i;:::-;5364:63;;5320:117;5476:2;5502:50;5544:7;5535:6;5524:9;5520:22;5502:50;:::i;:::-;5492:60;;5447:115;5248:321;;;;;:::o;5575:407::-;5643:6;5651;5700:2;5688:9;5679:7;5675:23;5671:32;5668:2;;;5716:1;5713;5706:12;5668:2;5759:1;5784:53;5829:7;5820:6;5809:9;5805:22;5784:53;:::i;:::-;5774:63;;5730:117;5886:2;5912:53;5957:7;5948:6;5937:9;5933:22;5912:53;:::i;:::-;5902:63;;5857:118;5658:324;;;;;:::o;5988:278::-;6055:6;6104:2;6092:9;6083:7;6079:23;6075:32;6072:2;;;6120:1;6117;6110:12;6072:2;6163:1;6188:61;6241:7;6232:6;6221:9;6217:22;6188:61;:::i;:::-;6178:71;;6134:125;6062:204;;;;:::o;6272:260::-;6330:6;6379:2;6367:9;6358:7;6354:23;6350:32;6347:2;;;6395:1;6392;6385:12;6347:2;6438:1;6463:52;6507:7;6498:6;6487:9;6483:22;6463:52;:::i;:::-;6453:62;;6409:116;6337:195;;;;:::o;6538:282::-;6607:6;6656:2;6644:9;6635:7;6631:23;6627:32;6624:2;;;6672:1;6669;6662:12;6624:2;6715:1;6740:63;6795:7;6786:6;6775:9;6771:22;6740:63;:::i;:::-;6730:73;;6686:127;6614:206;;;;:::o;6826:375::-;6895:6;6944:2;6932:9;6923:7;6919:23;6915:32;6912:2;;;6960:1;6957;6950:12;6912:2;7031:1;7020:9;7016:17;7003:31;7061:18;7053:6;7050:30;7047:2;;;7093:1;7090;7083:12;7047:2;7121:63;7176:7;7167:6;7156:9;7152:22;7121:63;:::i;:::-;7111:73;;6974:220;6902:299;;;;:::o;7207:390::-;7287:6;7336:2;7324:9;7315:7;7311:23;7307:32;7304:2;;;7352:1;7349;7342:12;7304:2;7416:1;7405:9;7401:17;7395:24;7446:18;7438:6;7435:30;7432:2;;;7478:1;7475;7468:12;7432:2;7506:74;7572:7;7563:6;7552:9;7548:22;7506:74;:::i;:::-;7496:84;;7366:224;7294:303;;;;:::o;7603:262::-;7662:6;7711:2;7699:9;7690:7;7686:23;7682:32;7679:2;;;7727:1;7724;7717:12;7679:2;7770:1;7795:53;7840:7;7831:6;7820:9;7816:22;7795:53;:::i;:::-;7785:63;;7741:117;7669:196;;;;:::o;7871:284::-;7941:6;7990:2;7978:9;7969:7;7965:23;7961:32;7958:2;;;8006:1;8003;7996:12;7958:2;8049:1;8074:64;8130:7;8121:6;8110:9;8106:22;8074:64;:::i;:::-;8064:74;;8020:128;7948:207;;;;:::o;8161:280::-;8229:6;8278:2;8266:9;8257:7;8253:23;8249:32;8246:2;;;8294:1;8291;8284:12;8246:2;8337:1;8362:62;8416:7;8407:6;8396:9;8392:22;8362:62;:::i;:::-;8352:72;;8308:126;8236:205;;;;:::o;8447:118::-;8534:24;8552:5;8534:24;:::i;:::-;8529:3;8522:37;8512:53;;:::o;8571:109::-;8652:21;8667:5;8652:21;:::i;:::-;8647:3;8640:34;8630:50;;:::o;8686:360::-;8772:3;8800:38;8832:5;8800:38;:::i;:::-;8854:70;8917:6;8912:3;8854:70;:::i;:::-;8847:77;;8933:52;8978:6;8973:3;8966:4;8959:5;8955:16;8933:52;:::i;:::-;9010:29;9032:6;9010:29;:::i;:::-;9005:3;9001:39;8994:46;;8776:270;;;;;:::o;9052:364::-;9140:3;9168:39;9201:5;9168:39;:::i;:::-;9223:71;9287:6;9282:3;9223:71;:::i;:::-;9216:78;;9303:52;9348:6;9343:3;9336:4;9329:5;9325:16;9303:52;:::i;:::-;9380:29;9402:6;9380:29;:::i;:::-;9375:3;9371:39;9364:46;;9144:272;;;;;:::o;9422:366::-;9564:3;9585:67;9649:2;9644:3;9585:67;:::i;:::-;9578:74;;9661:93;9750:3;9661:93;:::i;:::-;9779:2;9774:3;9770:12;9763:19;;9568:220;;;:::o;9794:366::-;9936:3;9957:67;10021:2;10016:3;9957:67;:::i;:::-;9950:74;;10033:93;10122:3;10033:93;:::i;:::-;10151:2;10146:3;10142:12;10135:19;;9940:220;;;:::o;10166:366::-;10308:3;10329:67;10393:2;10388:3;10329:67;:::i;:::-;10322:74;;10405:93;10494:3;10405:93;:::i;:::-;10523:2;10518:3;10514:12;10507:19;;10312:220;;;:::o;10538:366::-;10680:3;10701:67;10765:2;10760:3;10701:67;:::i;:::-;10694:74;;10777:93;10866:3;10777:93;:::i;:::-;10895:2;10890:3;10886:12;10879:19;;10684:220;;;:::o;10910:366::-;11052:3;11073:67;11137:2;11132:3;11073:67;:::i;:::-;11066:74;;11149:93;11238:3;11149:93;:::i;:::-;11267:2;11262:3;11258:12;11251:19;;11056:220;;;:::o;11282:366::-;11424:3;11445:67;11509:2;11504:3;11445:67;:::i;:::-;11438:74;;11521:93;11610:3;11521:93;:::i;:::-;11639:2;11634:3;11630:12;11623:19;;11428:220;;;:::o;11654:366::-;11796:3;11817:67;11881:2;11876:3;11817:67;:::i;:::-;11810:74;;11893:93;11982:3;11893:93;:::i;:::-;12011:2;12006:3;12002:12;11995:19;;11800:220;;;:::o;12026:366::-;12168:3;12189:67;12253:2;12248:3;12189:67;:::i;:::-;12182:74;;12265:93;12354:3;12265:93;:::i;:::-;12383:2;12378:3;12374:12;12367:19;;12172:220;;;:::o;12398:366::-;12540:3;12561:67;12625:2;12620:3;12561:67;:::i;:::-;12554:74;;12637:93;12726:3;12637:93;:::i;:::-;12755:2;12750:3;12746:12;12739:19;;12544:220;;;:::o;12770:366::-;12912:3;12933:67;12997:2;12992:3;12933:67;:::i;:::-;12926:74;;13009:93;13098:3;13009:93;:::i;:::-;13127:2;13122:3;13118:12;13111:19;;12916:220;;;:::o;13142:366::-;13284:3;13305:67;13369:2;13364:3;13305:67;:::i;:::-;13298:74;;13381:93;13470:3;13381:93;:::i;:::-;13499:2;13494:3;13490:12;13483:19;;13288:220;;;:::o;13514:366::-;13656:3;13677:67;13741:2;13736:3;13677:67;:::i;:::-;13670:74;;13753:93;13842:3;13753:93;:::i;:::-;13871:2;13866:3;13862:12;13855:19;;13660:220;;;:::o;13886:366::-;14028:3;14049:67;14113:2;14108:3;14049:67;:::i;:::-;14042:74;;14125:93;14214:3;14125:93;:::i;:::-;14243:2;14238:3;14234:12;14227:19;;14032:220;;;:::o;14258:366::-;14400:3;14421:67;14485:2;14480:3;14421:67;:::i;:::-;14414:74;;14497:93;14586:3;14497:93;:::i;:::-;14615:2;14610:3;14606:12;14599:19;;14404:220;;;:::o;14630:366::-;14772:3;14793:67;14857:2;14852:3;14793:67;:::i;:::-;14786:74;;14869:93;14958:3;14869:93;:::i;:::-;14987:2;14982:3;14978:12;14971:19;;14776:220;;;:::o;15002:366::-;15144:3;15165:67;15229:2;15224:3;15165:67;:::i;:::-;15158:74;;15241:93;15330:3;15241:93;:::i;:::-;15359:2;15354:3;15350:12;15343:19;;15148:220;;;:::o;15374:366::-;15516:3;15537:67;15601:2;15596:3;15537:67;:::i;:::-;15530:74;;15613:93;15702:3;15613:93;:::i;:::-;15731:2;15726:3;15722:12;15715:19;;15520:220;;;:::o;15746:366::-;15888:3;15909:67;15973:2;15968:3;15909:67;:::i;:::-;15902:74;;15985:93;16074:3;15985:93;:::i;:::-;16103:2;16098:3;16094:12;16087:19;;15892:220;;;:::o;16118:366::-;16260:3;16281:67;16345:2;16340:3;16281:67;:::i;:::-;16274:74;;16357:93;16446:3;16357:93;:::i;:::-;16475:2;16470:3;16466:12;16459:19;;16264:220;;;:::o;16490:366::-;16632:3;16653:67;16717:2;16712:3;16653:67;:::i;:::-;16646:74;;16729:93;16818:3;16729:93;:::i;:::-;16847:2;16842:3;16838:12;16831:19;;16636:220;;;:::o;16862:366::-;17004:3;17025:67;17089:2;17084:3;17025:67;:::i;:::-;17018:74;;17101:93;17190:3;17101:93;:::i;:::-;17219:2;17214:3;17210:12;17203:19;;17008:220;;;:::o;17234:366::-;17376:3;17397:67;17461:2;17456:3;17397:67;:::i;:::-;17390:74;;17473:93;17562:3;17473:93;:::i;:::-;17591:2;17586:3;17582:12;17575:19;;17380:220;;;:::o;17606:366::-;17748:3;17769:67;17833:2;17828:3;17769:67;:::i;:::-;17762:74;;17845:93;17934:3;17845:93;:::i;:::-;17963:2;17958:3;17954:12;17947:19;;17752:220;;;:::o;17978:118::-;18065:24;18083:5;18065:24;:::i;:::-;18060:3;18053:37;18043:53;;:::o;18102:222::-;18195:4;18233:2;18222:9;18218:18;18210:26;;18246:71;18314:1;18303:9;18299:17;18290:6;18246:71;:::i;:::-;18200:124;;;;:::o;18330:640::-;18525:4;18563:3;18552:9;18548:19;18540:27;;18577:71;18645:1;18634:9;18630:17;18621:6;18577:71;:::i;:::-;18658:72;18726:2;18715:9;18711:18;18702:6;18658:72;:::i;:::-;18740;18808:2;18797:9;18793:18;18784:6;18740:72;:::i;:::-;18859:9;18853:4;18849:20;18844:2;18833:9;18829:18;18822:48;18887:76;18958:4;18949:6;18887:76;:::i;:::-;18879:84;;18530:440;;;;;;;:::o;18976:442::-;19125:4;19163:2;19152:9;19148:18;19140:26;;19176:71;19244:1;19233:9;19229:17;19220:6;19176:71;:::i;:::-;19257:72;19325:2;19314:9;19310:18;19301:6;19257:72;:::i;:::-;19339;19407:2;19396:9;19392:18;19383:6;19339:72;:::i;:::-;19130:288;;;;;;:::o;19424:210::-;19511:4;19549:2;19538:9;19534:18;19526:26;;19562:65;19624:1;19613:9;19609:17;19600:6;19562:65;:::i;:::-;19516:118;;;;:::o;19640:313::-;19753:4;19791:2;19780:9;19776:18;19768:26;;19840:9;19834:4;19830:20;19826:1;19815:9;19811:17;19804:47;19868:78;19941:4;19932:6;19868:78;:::i;:::-;19860:86;;19758:195;;;;:::o;19959:514::-;20120:4;20158:2;20147:9;20143:18;20135:26;;20207:9;20201:4;20197:20;20193:1;20182:9;20178:17;20171:47;20235:78;20308:4;20299:6;20235:78;:::i;:::-;20227:86;;20360:9;20354:4;20350:20;20345:2;20334:9;20330:18;20323:48;20388:78;20461:4;20452:6;20388:78;:::i;:::-;20380:86;;20125:348;;;;;:::o;20479:419::-;20645:4;20683:2;20672:9;20668:18;20660:26;;20732:9;20726:4;20722:20;20718:1;20707:9;20703:17;20696:47;20760:131;20886:4;20760:131;:::i;:::-;20752:139;;20650:248;;;:::o;20904:419::-;21070:4;21108:2;21097:9;21093:18;21085:26;;21157:9;21151:4;21147:20;21143:1;21132:9;21128:17;21121:47;21185:131;21311:4;21185:131;:::i;:::-;21177:139;;21075:248;;;:::o;21329:419::-;21495:4;21533:2;21522:9;21518:18;21510:26;;21582:9;21576:4;21572:20;21568:1;21557:9;21553:17;21546:47;21610:131;21736:4;21610:131;:::i;:::-;21602:139;;21500:248;;;:::o;21754:419::-;21920:4;21958:2;21947:9;21943:18;21935:26;;22007:9;22001:4;21997:20;21993:1;21982:9;21978:17;21971:47;22035:131;22161:4;22035:131;:::i;:::-;22027:139;;21925:248;;;:::o;22179:419::-;22345:4;22383:2;22372:9;22368:18;22360:26;;22432:9;22426:4;22422:20;22418:1;22407:9;22403:17;22396:47;22460:131;22586:4;22460:131;:::i;:::-;22452:139;;22350:248;;;:::o;22604:419::-;22770:4;22808:2;22797:9;22793:18;22785:26;;22857:9;22851:4;22847:20;22843:1;22832:9;22828:17;22821:47;22885:131;23011:4;22885:131;:::i;:::-;22877:139;;22775:248;;;:::o;23029:419::-;23195:4;23233:2;23222:9;23218:18;23210:26;;23282:9;23276:4;23272:20;23268:1;23257:9;23253:17;23246:47;23310:131;23436:4;23310:131;:::i;:::-;23302:139;;23200:248;;;:::o;23454:419::-;23620:4;23658:2;23647:9;23643:18;23635:26;;23707:9;23701:4;23697:20;23693:1;23682:9;23678:17;23671:47;23735:131;23861:4;23735:131;:::i;:::-;23727:139;;23625:248;;;:::o;23879:419::-;24045:4;24083:2;24072:9;24068:18;24060:26;;24132:9;24126:4;24122:20;24118:1;24107:9;24103:17;24096:47;24160:131;24286:4;24160:131;:::i;:::-;24152:139;;24050:248;;;:::o;24304:419::-;24470:4;24508:2;24497:9;24493:18;24485:26;;24557:9;24551:4;24547:20;24543:1;24532:9;24528:17;24521:47;24585:131;24711:4;24585:131;:::i;:::-;24577:139;;24475:248;;;:::o;24729:419::-;24895:4;24933:2;24922:9;24918:18;24910:26;;24982:9;24976:4;24972:20;24968:1;24957:9;24953:17;24946:47;25010:131;25136:4;25010:131;:::i;:::-;25002:139;;24900:248;;;:::o;25154:419::-;25320:4;25358:2;25347:9;25343:18;25335:26;;25407:9;25401:4;25397:20;25393:1;25382:9;25378:17;25371:47;25435:131;25561:4;25435:131;:::i;:::-;25427:139;;25325:248;;;:::o;25579:419::-;25745:4;25783:2;25772:9;25768:18;25760:26;;25832:9;25826:4;25822:20;25818:1;25807:9;25803:17;25796:47;25860:131;25986:4;25860:131;:::i;:::-;25852:139;;25750:248;;;:::o;26004:419::-;26170:4;26208:2;26197:9;26193:18;26185:26;;26257:9;26251:4;26247:20;26243:1;26232:9;26228:17;26221:47;26285:131;26411:4;26285:131;:::i;:::-;26277:139;;26175:248;;;:::o;26429:419::-;26595:4;26633:2;26622:9;26618:18;26610:26;;26682:9;26676:4;26672:20;26668:1;26657:9;26653:17;26646:47;26710:131;26836:4;26710:131;:::i;:::-;26702:139;;26600:248;;;:::o;26854:419::-;27020:4;27058:2;27047:9;27043:18;27035:26;;27107:9;27101:4;27097:20;27093:1;27082:9;27078:17;27071:47;27135:131;27261:4;27135:131;:::i;:::-;27127:139;;27025:248;;;:::o;27279:419::-;27445:4;27483:2;27472:9;27468:18;27460:26;;27532:9;27526:4;27522:20;27518:1;27507:9;27503:17;27496:47;27560:131;27686:4;27560:131;:::i;:::-;27552:139;;27450:248;;;:::o;27704:419::-;27870:4;27908:2;27897:9;27893:18;27885:26;;27957:9;27951:4;27947:20;27943:1;27932:9;27928:17;27921:47;27985:131;28111:4;27985:131;:::i;:::-;27977:139;;27875:248;;;:::o;28129:419::-;28295:4;28333:2;28322:9;28318:18;28310:26;;28382:9;28376:4;28372:20;28368:1;28357:9;28353:17;28346:47;28410:131;28536:4;28410:131;:::i;:::-;28402:139;;28300:248;;;:::o;28554:419::-;28720:4;28758:2;28747:9;28743:18;28735:26;;28807:9;28801:4;28797:20;28793:1;28782:9;28778:17;28771:47;28835:131;28961:4;28835:131;:::i;:::-;28827:139;;28725:248;;;:::o;28979:419::-;29145:4;29183:2;29172:9;29168:18;29160:26;;29232:9;29226:4;29222:20;29218:1;29207:9;29203:17;29196:47;29260:131;29386:4;29260:131;:::i;:::-;29252:139;;29150:248;;;:::o;29404:419::-;29570:4;29608:2;29597:9;29593:18;29585:26;;29657:9;29651:4;29647:20;29643:1;29632:9;29628:17;29621:47;29685:131;29811:4;29685:131;:::i;:::-;29677:139;;29575:248;;;:::o;29829:419::-;29995:4;30033:2;30022:9;30018:18;30010:26;;30082:9;30076:4;30072:20;30068:1;30057:9;30053:17;30046:47;30110:131;30236:4;30110:131;:::i;:::-;30102:139;;30000:248;;;:::o;30254:222::-;30347:4;30385:2;30374:9;30370:18;30362:26;;30398:71;30466:1;30455:9;30451:17;30442:6;30398:71;:::i;:::-;30352:124;;;;:::o;30482:442::-;30631:4;30669:2;30658:9;30654:18;30646:26;;30682:71;30750:1;30739:9;30735:17;30726:6;30682:71;:::i;:::-;30763:72;30831:2;30820:9;30816:18;30807:6;30763:72;:::i;:::-;30845;30913:2;30902:9;30898:18;30889:6;30845:72;:::i;:::-;30636:288;;;;;;:::o;30930:129::-;30964:6;30991:20;;:::i;:::-;30981:30;;31020:33;31048:4;31040:6;31020:33;:::i;:::-;30971:88;;;:::o;31065:75::-;31098:6;31131:2;31125:9;31115:19;;31105:35;:::o;31146:307::-;31207:4;31297:18;31289:6;31286:30;31283:2;;;31319:18;;:::i;:::-;31283:2;31357:29;31379:6;31357:29;:::i;:::-;31349:37;;31441:4;31435;31431:15;31423:23;;31212:241;;;:::o;31459:308::-;31521:4;31611:18;31603:6;31600:30;31597:2;;;31633:18;;:::i;:::-;31597:2;31671:29;31693:6;31671:29;:::i;:::-;31663:37;;31755:4;31749;31745:15;31737:23;;31526:241;;;:::o;31773:98::-;31824:6;31858:5;31852:12;31842:22;;31831:40;;;:::o;31877:99::-;31929:6;31963:5;31957:12;31947:22;;31936:40;;;:::o;31982:168::-;32065:11;32099:6;32094:3;32087:19;32139:4;32134:3;32130:14;32115:29;;32077:73;;;;:::o;32156:169::-;32240:11;32274:6;32269:3;32262:19;32314:4;32309:3;32305:14;32290:29;;32252:73;;;;:::o;32331:305::-;32371:3;32390:20;32408:1;32390:20;:::i;:::-;32385:25;;32424:20;32442:1;32424:20;:::i;:::-;32419:25;;32578:1;32510:66;32506:74;32503:1;32500:81;32497:2;;;32584:18;;:::i;:::-;32497:2;32628:1;32625;32621:9;32614:16;;32375:261;;;;:::o;32642:185::-;32682:1;32699:20;32717:1;32699:20;:::i;:::-;32694:25;;32733:20;32751:1;32733:20;:::i;:::-;32728:25;;32772:1;32762:2;;32777:18;;:::i;:::-;32762:2;32819:1;32816;32812:9;32807:14;;32684:143;;;;:::o;32833:191::-;32873:4;32893:20;32911:1;32893:20;:::i;:::-;32888:25;;32927:20;32945:1;32927:20;:::i;:::-;32922:25;;32966:1;32963;32960:8;32957:2;;;32971:18;;:::i;:::-;32957:2;33016:1;33013;33009:9;33001:17;;32878:146;;;;:::o;33030:96::-;33067:7;33096:24;33114:5;33096:24;:::i;:::-;33085:35;;33075:51;;;:::o;33132:90::-;33166:7;33209:5;33202:13;33195:21;33184:32;;33174:48;;;:::o;33228:149::-;33264:7;33304:66;33297:5;33293:78;33282:89;;33272:105;;;:::o;33383:126::-;33420:7;33460:42;33453:5;33449:54;33438:65;;33428:81;;;:::o;33515:77::-;33552:7;33581:5;33570:16;;33560:32;;;:::o;33598:86::-;33633:7;33673:4;33666:5;33662:16;33651:27;;33641:43;;;:::o;33690:154::-;33774:6;33769:3;33764;33751:30;33836:1;33827:6;33822:3;33818:16;33811:27;33741:103;;;:::o;33850:307::-;33918:1;33928:113;33942:6;33939:1;33936:13;33928:113;;;34027:1;34022:3;34018:11;34012:18;34008:1;34003:3;33999:11;33992:39;33964:2;33961:1;33957:10;33952:15;;33928:113;;;34059:6;34056:1;34053:13;34050:2;;;34139:1;34130:6;34125:3;34121:16;34114:27;34050:2;33899:258;;;;:::o;34163:320::-;34207:6;34244:1;34238:4;34234:12;34224:22;;34291:1;34285:4;34281:12;34312:18;34302:2;;34368:4;34360:6;34356:17;34346:27;;34302:2;34430;34422:6;34419:14;34399:18;34396:38;34393:2;;;34449:18;;:::i;:::-;34393:2;34214:269;;;;:::o;34489:281::-;34572:27;34594:4;34572:27;:::i;:::-;34564:6;34560:40;34702:6;34690:10;34687:22;34666:18;34654:10;34651:34;34648:62;34645:2;;;34713:18;;:::i;:::-;34645:2;34753:10;34749:2;34742:22;34532:238;;;:::o;34776:233::-;34815:3;34838:24;34856:5;34838:24;:::i;:::-;34829:33;;34884:66;34877:5;34874:77;34871:2;;;34954:18;;:::i;:::-;34871:2;35001:1;34994:5;34990:13;34983:20;;34819:190;;;:::o;35015:176::-;35047:1;35064:20;35082:1;35064:20;:::i;:::-;35059:25;;35098:20;35116:1;35098:20;:::i;:::-;35093:25;;35137:1;35127:2;;35142:18;;:::i;:::-;35127:2;35183:1;35180;35176:9;35171:14;;35049:142;;;;:::o;35197:180::-;35245:77;35242:1;35235:88;35342:4;35339:1;35332:15;35366:4;35363:1;35356:15;35383:180;35431:77;35428:1;35421:88;35528:4;35525:1;35518:15;35552:4;35549:1;35542:15;35569:180;35617:77;35614:1;35607:88;35714:4;35711:1;35704:15;35738:4;35735:1;35728:15;35755:180;35803:77;35800:1;35793:88;35900:4;35897:1;35890:15;35924:4;35921:1;35914:15;35941:102;35982:6;36033:2;36029:7;36024:2;36017:5;36013:14;36009:28;35999:38;;35989:54;;;:::o;36049:240::-;36189:34;36185:1;36177:6;36173:14;36166:58;36258:23;36253:2;36245:6;36241:15;36234:48;36155:134;:::o;36295:230::-;36435:34;36431:1;36423:6;36419:14;36412:58;36504:13;36499:2;36491:6;36487:15;36480:38;36401:124;:::o;36531:237::-;36671:34;36667:1;36659:6;36655:14;36648:58;36740:20;36735:2;36727:6;36723:15;36716:45;36637:131;:::o;36774:250::-;36914:34;36910:1;36902:6;36898:14;36891:58;36983:33;36978:2;36970:6;36966:15;36959:58;36880:144;:::o;37030:178::-;37170:30;37166:1;37158:6;37154:14;37147:54;37136:72;:::o;37214:223::-;37354:34;37350:1;37342:6;37338:14;37331:58;37423:6;37418:2;37410:6;37406:15;37399:31;37320:117;:::o;37443:175::-;37583:27;37579:1;37571:6;37567:14;37560:51;37549:69;:::o;37624:231::-;37764:34;37760:1;37752:6;37748:14;37741:58;37833:14;37828:2;37820:6;37816:15;37809:39;37730:125;:::o;37861:243::-;38001:34;37997:1;37989:6;37985:14;37978:58;38070:26;38065:2;38057:6;38053:15;38046:51;37967:137;:::o;38110:229::-;38250:34;38246:1;38238:6;38234:14;38227:58;38319:12;38314:2;38306:6;38302:15;38295:37;38216:123;:::o;38345:228::-;38485:34;38481:1;38473:6;38469:14;38462:58;38554:11;38549:2;38541:6;38537:15;38530:36;38451:122;:::o;38579:182::-;38719:34;38715:1;38707:6;38703:14;38696:58;38685:76;:::o;38767:231::-;38907:34;38903:1;38895:6;38891:14;38884:58;38976:14;38971:2;38963:6;38959:15;38952:39;38873:125;:::o;39004:228::-;39144:34;39140:1;39132:6;39128:14;39121:58;39213:11;39208:2;39200:6;39196:15;39189:36;39110:122;:::o;39238:234::-;39378:34;39374:1;39366:6;39362:14;39355:58;39447:17;39442:2;39434:6;39430:15;39423:42;39344:128;:::o;39478:224::-;39618:34;39614:1;39606:6;39602:14;39595:58;39687:7;39682:2;39674:6;39670:15;39663:32;39584:118;:::o;39708:181::-;39848:33;39844:1;39836:6;39832:14;39825:57;39814:75;:::o;39895:220::-;40035:34;40031:1;40023:6;40019:14;40012:58;40104:3;40099:2;40091:6;40087:15;40080:28;40001:114;:::o;40121:236::-;40261:34;40257:1;40249:6;40245:14;40238:58;40330:19;40325:2;40317:6;40313:15;40306:44;40227:130;:::o;40363:231::-;40503:34;40499:1;40491:6;40487:14;40480:58;40572:14;40567:2;40559:6;40555:15;40548:39;40469:125;:::o;40600:225::-;40740:34;40736:1;40728:6;40724:14;40717:58;40809:8;40804:2;40796:6;40792:15;40785:33;40706:119;:::o;40831:235::-;40971:34;40967:1;40959:6;40955:14;40948:58;41040:18;41035:2;41027:6;41023:15;41016:43;40937:129;:::o;41072:235::-;41212:34;41208:1;41200:6;41196:14;41189:58;41281:18;41276:2;41268:6;41264:15;41257:43;41178:129;:::o;41313:122::-;41386:24;41404:5;41386:24;:::i;:::-;41379:5;41376:35;41366:2;;41425:1;41422;41415:12;41366:2;41356:79;:::o;41441:116::-;41511:21;41526:5;41511:21;:::i;:::-;41504:5;41501:32;41491:2;;41547:1;41544;41537:12;41491:2;41481:76;:::o;41563:120::-;41635:23;41652:5;41635:23;:::i;:::-;41628:5;41625:34;41615:2;;41673:1;41670;41663:12;41615:2;41605:78;:::o;41689:122::-;41762:24;41780:5;41762:24;:::i;:::-;41755:5;41752:35;41742:2;;41801:1;41798;41791:12;41742:2;41732:79;:::o;41817:118::-;41888:22;41904:5;41888:22;:::i;:::-;41881:5;41878:33;41868:2;;41925:1;41922;41915:12;41868:2;41858:77;:::o
Swarm Source
ipfs://a74007f159071abf495fd79e9a0a69b90beb1a8244c7977d4bdd243ccc0e5ad8
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.