ERC-721
Overview
Max Total Supply
664 MECHADUCK
Holders
368
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 MECHADUCKLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
MECHADUCK
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts/token/ERC721/ERC721.sol";import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";import "@openzeppelin/contracts/security/Pausable.sol";import "@openzeppelin/contracts/access/AccessControl.sol";import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol";import "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol";import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";import "@openzeppelin/contracts/utils/Counters.sol";import "@openzeppelin/contracts/utils/Strings.sol";contract MECHADUCK is ERC721, EIP712, ERC721Enumerable, Pausable, AccessControl, ERC721Burnable {using Counters for Counters.Counter;using Strings for uint256;Counters.Counter private _tokenCounter;bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");string private constant BASE_URI = "https://ipfs.madworld.io/mechaduck/";ERC721 public constant FIRST_GEN_TOKEN = ERC721(0x71E7AFA8B3AB8e83011ce7bBBDCD76Ccd7cb0660);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)pragma solidity ^0.8.0;/*** @dev String operations.*/library Strings {bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";/*** @dev Converts a `uint256` to its ASCII `string` decimal representation.*/function toString(uint256 value) internal pure returns (string memory) {// Inspired by OraclizeAPI's implementation - MIT licence// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.solif (value == 0) {return "0";}uint256 temp = value;uint256 digits;while (temp != 0) {digits++;temp /= 10;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)pragma solidity ^0.8.0;/*** @title Counters* @author Matt Condon (@shrugs)* @dev Provides counters that can only be incremented, decremented or reset. 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/4637uint256 _value; // default: 0}function current(Counter storage counter) internal view returns (uint256) {return counter._value;}function increment(Counter storage counter) internal {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol)pragma solidity ^0.8.0;/*** @dev These functions deal with verification of Merkle Trees proofs.** The proofs can be generated using the JavaScript library* https://github.com/miguelmota/merkletreejs[merkletreejs].* Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.** See `test/utils/cryptography/MerkleProof.test.js` for some examples.*/library MerkleProof {/*** @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree* defined by `root`. For this, a `proof` must be provided, containing* sibling hashes on the branch from the leaf to the root of the tree. Each* pair of leaves and each pair of pre-images are assumed to be sorted.*/function verify(bytes32[] memory proof,bytes32 root,bytes32 leaf) internal pure returns (bool) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/ECDSA.sol)pragma solidity ^0.8.0;import "../Strings.sol";/*** @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.** These functions can be used to verify that a message was signed by the holder* of the private keys of a given address.*/library ECDSA {enum RecoverError {NoError,InvalidSignature,InvalidSignatureLength,InvalidSignatureS,InvalidSignatureV}function _throwError(RecoverError error) private pure {if (error == RecoverError.NoError) {return; // no error: do nothing} else if (error == RecoverError.InvalidSignature) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/cryptography/draft-EIP712.sol)pragma solidity ^0.8.0;import "./ECDSA.sol";/*** @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.** The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,* thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding* they need in their contracts using a combination of `abi.encode` and `keccak256`.** This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding* scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA* ({_hashTypedDataV4}).** The implementation of the domain separator was designed to be as efficient as possible while still properly updating* the chain id to protect against replay attacks on an eventual fork of the chain.** NOTE: This contract implements the version of the encoding known as "v4", as implemented by the JSON RPC method* https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].** _Available since v3.4._*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Burnable.sol)pragma solidity ^0.8.0;import "../ERC721.sol";import "../../../utils/Context.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-lengthrequire(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721Burnable: caller is not owner nor approved");_burn(tokenId);}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControl.sol)pragma solidity ^0.8.0;import "./IAccessControl.sol";import "../utils/Context.sol";import "../utils/Strings.sol";import "../utils/introspection/ERC165.sol";/*** @dev Contract module that allows children to implement role-based access* control mechanisms. This is a lightweight version that doesn't allow enumerating role* members except through off-chain means by accessing the contract event logs. Some* applications may benefit from on-chain enumerability, for those cases see* {AccessControlEnumerable}.** Roles are referred to by their `bytes32` identifier. These should be exposed* in the external API and be unique. The best way to achieve this is by* using `public constant` hash digests:** ```* bytes32 public constant MY_ROLE = keccak256("MY_ROLE");* ```** Roles can be used to represent a set of permissions. To restrict access to a
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (security/Pausable.sol)pragma solidity ^0.8.0;import "../utils/Context.sol";/*** @dev Contract module which allows children to implement an emergency stop* mechanism that can be triggered by an authorized account.** This module is used through inheritance. It will make available the* modifiers `whenNotPaused` and `whenPaused`, which can be applied to* the functions of your contract. Note that they will not be pausable by* simply including this module, only once the modifiers are put in place.*/abstract contract Pausable is Context {/*** @dev Emitted when the pause is triggered by `account`.*/event Paused(address account);/*** @dev Emitted when the pause is lifted by `account`.*/event Unpaused(address account);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol)pragma solidity ^0.8.0;import "../ERC721.sol";import "./IERC721Enumerable.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 IDsmapping(address => mapping(uint256 => uint256)) private _ownedTokens;// Mapping from token ID to index of the owner tokens listmapping(uint256 => uint256) private _ownedTokensIndex;// Array with all token ids, used for enumerationuint256[] private _allTokens;// Mapping from token id to position in the allTokens arraymapping(uint256 => uint256) private _allTokensIndex;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol)pragma solidity ^0.8.0;import "./IERC721.sol";import "./IERC721Receiver.sol";import "./extensions/IERC721Metadata.sol";import "../../utils/Address.sol";import "../../utils/Context.sol";import "../../utils/Strings.sol";import "../../utils/introspection/ERC165.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 Context, ERC165, IERC721, IERC721Metadata {using Address for address;using Strings for uint256;// Token namestring private _name;// Token symbol
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/ERC20.sol)pragma solidity ^0.8.0;import "./IERC20.sol";import "./extensions/IERC20Metadata.sol";import "../../utils/Context.sol";/*** @dev Implementation of the {IERC20} interface.** This implementation is agnostic to the way tokens are created. This means* that a supply mechanism has to be added in a derived contract using {_mint}.* For a generic mechanism see {ERC20PresetMinterPauser}.** TIP: For a detailed writeup see our guide* https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How* to implement supply mechanisms].** We have followed general OpenZeppelin Contracts guidelines: functions revert* instead returning `false` on failure. This behavior is nonetheless* conventional and does not conflict with the expectations of ERC20* applications.** Additionally, an {Approval} event is emitted on calls to {transferFrom}.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)pragma solidity ^0.8.0;import "../IERC721.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);/*** @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.
123456789101112131415161718192021222324// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)pragma solidity ^0.8.0;/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract Context {function _msgSender() internal view virtual returns (address) {return msg.sender;}function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)pragma solidity ^0.8.0;import "./IERC165.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) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)pragma solidity ^0.8.1;/*** @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* ====*
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)pragma solidity ^0.8.0;import "../IERC721.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);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)pragma solidity ^0.8.0;/*** @title ERC721 token receiver interface* @dev Interface for any contract that wants to support safeTransfers* from ERC721 asset contracts.*/interface IERC721Receiver {/*** @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}* by `operator` from `from`, this function is called.** It must return its Solidity selector to confirm the token transfer.* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.** The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.*/function onERC721Received(address operator,address from,uint256 tokenId,bytes calldata data) external returns (bytes4);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)pragma solidity ^0.8.0;import "../../utils/introspection/IERC165.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);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)pragma solidity ^0.8.0;import "../IERC20.sol";/*** @dev Interface for the optional metadata functions from the ERC20 standard.** _Available since v4.1._*/interface IERC20Metadata is IERC20 {/*** @dev Returns the name of the token.*/function name() external view returns (string memory);/*** @dev Returns the symbol of the token.*/function symbol() external view returns (string memory);/*** @dev Returns the decimals places of the token.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)pragma solidity ^0.8.0;/*** @dev Interface of the ERC20 standard as defined in the EIP.*/interface IERC20 {/*** @dev Returns the amount of tokens in existence.*/function totalSupply() external view returns (uint256);/*** @dev Returns the amount of tokens owned by `account`.*/function balanceOf(address account) external view returns (uint256);/*** @dev Moves `amount` tokens from the caller's account to `to`.** Returns a boolean value indicating whether the operation succeeded.** Emits a {Transfer} event.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)pragma solidity ^0.8.0;/*** @dev External interface of AccessControl declared to support ERC165 detection.*/interface IAccessControl {/*** @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`** `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite* {RoleAdminChanged} not being emitted signaling this.** _Available since v3.1._*/event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);/*** @dev Emitted when `account` is granted `role`.** `sender` is the account that originated the contract call, an admin role* bearer except when using {AccessControl-_setupRole}.*/event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)pragma solidity ^0.8.0;/*** @dev Interface of the ERC165 standard, as defined in the* https://eips.ethereum.org/EIPS/eip-165[EIP].** Implementers can declare support of contract interfaces, which can then be* queried by others ({ERC165Checker}).** For an implementation, see {ERC165}.*/interface IERC165 {/*** @dev Returns true if this contract implements the interface defined by* `interfaceId`. See the corresponding* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]* to learn more about how these ids are created.** This function call must use less than 30 000 gas.*/function supportsInterface(bytes4 interfaceId) external view returns (bool);}
123456789101112131415161718{"optimizer": {"enabled": false,"runs": 200},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"]}}}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FIRST_GEN_TOKEN","outputs":[{"internalType":"contract ERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INIT_TOKEN_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RARE_PROOF_ROOT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"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":[{"components":[{"internalType":"uint256","name":"price","type":"uint256"},{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bool","name":"isLegendary","type":"bool"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"internalType":"struct MECHADUCK.Duck[]","name":"ducks","type":"tuple[]"}],"internalType":"struct MECHADUCK.Purchase","name":"data","type":"tuple"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"buy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duckId","type":"uint256"}],"name":"getMintCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"_root","type":"uint256"}],"name":"setRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6101406040527f478c46387efe3c9745d79886703ec5e1d978dfe6d42556a0dd388424a917e62b60001b600d553480156200003957600080fd5b506040518060400160405280600981526020017f4d454348414455434b00000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f4d454348414455434b00000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f4d454348414455434b000000000000000000000000000000000000000000000081525081600090805190602001906200012a9291906200047c565b508060019080519060200190620001439291906200047c565b50505060008280519060200120905060008280519060200120905060007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90508260e081815250508161010081815250504660a08181525050620001af818484620002db60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080610120818152505050505050506000600a60006101000a81548160ff0219169083151502179055506200022b6000801b336200031760201b60201c565b6200025d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a336200031760201b60201c565b6200028f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336200031760201b60201c565b620002d57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a673d3a94f0630329ab9096826cc96f203a6709e17446200031760201b60201c565b62000669565b60008383834630604051602001620002f89594939291906200055f565b6040516020818303038152906040528051906020012090509392505050565b6200032982826200040960201b60201c565b62000405576001600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003aa6200047460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b8280546200048a9062000604565b90600052602060002090601f016020900481019282620004ae5760008555620004fa565b82601f10620004c957805160ff1916838001178555620004fa565b82800160010185558215620004fa579182015b82811115620004f9578251825591602001919060010190620004dc565b5b5090506200050991906200050d565b5090565b5b80821115620005285760008160009055506001016200050e565b5090565b6200053781620005bc565b82525050565b6200054881620005d0565b82525050565b6200055981620005fa565b82525050565b600060a0820190506200057660008301886200053d565b6200058560208301876200053d565b6200059460408301866200053d565b620005a360608301856200054e565b620005b260808301846200052c565b9695505050505050565b6000620005c982620005da565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200061d57607f821691505b602082108114156200063457620006336200063a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60805160a05160c05160601c60e0516101005161012051615222620006aa6000396000505060005050600050506000505060005050600050506152226000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c8063572de73211610130578063a22cb465116100b8578063db09a3f51161007c578063db09a3f514610650578063e63ab1e914610680578063e8a3d4851461069e578063e985e9c5146106bc578063f2f5a7e5146106ec57610227565b8063a22cb465146105ae578063b88d4fde146105ca578063c87b56dd146105e6578063d539139314610616578063d547741f1461063457610227565b80638456cb59116100ff5780638456cb591461051a57806391d148541461052457806395d89b4114610554578063a089d04f14610572578063a217fddf1461059057610227565b8063572de7321461047e5780635c975abb1461049c5780636352211e146104ba57806370a08231146104ea57610227565b80632f2ff15d116101b357806340d097c31161018257806340d097c3146103de57806342842e0e146103fa57806342966c68146104165780634f6ccce7146104325780635568d86e1461046257610227565b80632f2ff15d1461036c5780632f745c591461038857806336568abe146103b85780633f4ba83a146103d457610227565b8063095ea7b3116101fa578063095ea7b3146102c857806316fa58a1146102e457806318160ddd1461030257806323b872dd14610320578063248a9ca31461033c57610227565b806301ffc9a71461022c578063027752401461025c57806306fdde031461027a578063081812fc14610298575b600080fd5b610246600480360381019061024191906137bc565b610708565b6040516102539190613fbc565b60405180910390f35b61026461071a565b60405161027191906143d5565b60405180910390f35b61028261071f565b60405161028f91906140b3565b60405180910390f35b6102b260048036038101906102ad9190613899565b6107b1565b6040516102bf9190613f55565b60405180910390f35b6102e260048036038101906102dd919061370f565b610836565b005b6102ec61094e565b6040516102f991906143d5565b60405180910390f35b61030a61095a565b60405161031791906143d5565b60405180910390f35b61033a600480360381019061033591906135f9565b610967565b005b6103566004803603810190610351919061374f565b6109c7565b6040516103639190613fd7565b60405180910390f35b6103866004803603810190610381919061377c565b6109e7565b005b6103a2600480360381019061039d919061370f565b610a10565b6040516103af91906143d5565b60405180910390f35b6103d260048036038101906103cd919061377c565b610ab5565b005b6103dc610b38565b005b6103f860048036038101906103f3919061355f565b610b75565b005b610414600480360381019061040f91906135f9565b610bb4565b005b610430600480360381019061042b9190613899565b610bd4565b005b61044c60048036038101906104479190613899565b610c30565b60405161045991906143d5565b60405180910390f35b61047c60048036038101906104779190613816565b610ca1565b005b610486611210565b6040516104939190613fd7565b60405180910390f35b6104a4611216565b6040516104b19190613fbc565b60405180910390f35b6104d460048036038101906104cf9190613899565b61122d565b6040516104e19190613f55565b60405180910390f35b61050460048036038101906104ff919061355f565b6112df565b60405161051191906143d5565b60405180910390f35b610522611397565b005b61053e6004803603810190610539919061377c565b6113d4565b60405161054b9190613fbc565b60405180910390f35b61055c61143f565b60405161056991906140b3565b60405180910390f35b61057a6114d1565b6040516105879190614098565b60405180910390f35b6105986114e9565b6040516105a59190613fd7565b60405180910390f35b6105c860048036038101906105c391906136cf565b6114f0565b005b6105e460048036038101906105df919061364c565b611506565b005b61060060048036038101906105fb9190613899565b611568565b60405161060d91906140b3565b60405180910390f35b61061e6115fb565b60405161062b9190613fd7565b60405180910390f35b61064e6004803603810190610649919061377c565b61161f565b005b61066a60048036038101906106659190613899565b611648565b60405161067791906143d5565b60405180910390f35b610688611770565b6040516106959190613fd7565b60405180910390f35b6106a6611794565b6040516106b391906140b3565b60405180910390f35b6106d660048036038101906106d191906135b9565b6117d3565b6040516106e39190613fbc565b60405180910390f35b61070660048036038101906107019190613899565b611867565b005b6000610713826118a7565b9050919050565b600181565b60606000805461072e90614795565b80601f016020809104026020016040519081016040528092919081815260200182805461075a90614795565b80156107a75780601f1061077c576101008083540402835291602001916107a7565b820191906000526020600020905b81548152906001019060200180831161078a57829003601f168201915b5050505050905090565b60006107bc82611921565b6107fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f2906142b5565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108418261122d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a990614315565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108d161198d565b73ffffffffffffffffffffffffffffffffffffffff16148061090057506108ff816108fa61198d565b6117d3565b5b61093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093690614215565b60405180910390fd5b6109498383611995565b505050565b6701634694b3077f4181565b6000600880549050905090565b61097861097261198d565b82611a4e565b6109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae90614355565b60405180910390fd5b6109c2838383611b2c565b505050565b6000600b6000838152602001908152602001600020600101549050919050565b6109f0826109c7565b610a01816109fc61198d565b611d93565b610a0b8383611e30565b505050565b6000610a1b836112df565b8210610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5390614115565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610abd61198d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b21906143b5565b60405180910390fd5b610b348282611f11565b5050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b6a81610b6561198d565b611d93565b610b72611ff3565b50565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610ba781610ba261198d565b611d93565b610bb082612095565b5050565b610bcf83838360405180602001604052806000815250611506565b505050565b610be5610bdf61198d565b82611a4e565b610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b90614395565b60405180910390fd5b610c2d816120ce565b50565b6000610c3a61095a565b8210610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7290614375565b60405180910390fd5b60088281548110610c8f57610c8e614942565b5b90600052602060002001549050919050565b610ca9611216565b15610ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce0906141f5565b60405180910390fd5b6002848060200190610cfb91906143f0565b905014610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3490614335565b60405180910390fd5b60007f110e325ae79444bac762d6ce1659ccdaf6855a0645c8d74601fb2c8ffce45427338660000135878060200190610d7691906143f0565b6000818110610d8857610d87614942565b5b9050602002810190610d9a9190614453565b60000135888060200190610dae91906143f0565b6001818110610dc057610dbf614942565b5b9050602002810190610dd29190614453565b6000013546604051602001610dec96959493929190613ff2565b604051602081830303815290604052805190602001209050600081604051602001610e179190613e74565b604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051610e549493929190614053565b6020604051602081039080840390855afa158015610e76573d6000803e3d6000fd5b505050602060405103519050610eac7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826113d4565b610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee290614275565b60405180910390fd5b60005b878060200190610efe91906143f0565b90508110156111fd576000888060200190610f1991906143f0565b83818110610f2a57610f29614942565b5b9050602002810190610f3c9190614453565b610f45906146f2565b905060008160000151604051602001610f5e9190613f3a565b604051602081830303815290604052805190602001209050610f878260400151600d54836121eb565b610f948360000151612202565b604051602001610fa49190613ebc565b60405160208183030381529060405290610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb91906140b3565b60405180910390fd5b503373ffffffffffffffffffffffffffffffffffffffff167371e7afa8b3ab8e83011ce7bbbdcd76ccd7cb066073ffffffffffffffffffffffffffffffffffffffff16636352211e84600001516040518263ffffffff1660e01b815260040161105d91906143d5565b60206040518083038186803b15801561107557600080fd5b505afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061358c565b73ffffffffffffffffffffffffffffffffffffffff16146110d18360000151612202565b6040516020016110e19190613f18565b60405160208183030381529060405290611131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112891906140b3565b60405180910390fd5b506001600e600084600001518152602001908152602001600020541061115a8360000151612202565b60405160200161116a9190613e9a565b604051602081830303815290604052906111ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b191906140b3565b60405180910390fd5b50600e60008360000151815260200190815260200160002060008154809291906111e3906147f8565b9190505550505080806111f5906147f8565b915050610eee565b5061120733612095565b50505050505050565b600d5481565b6000600a60009054906101000a900460ff16905090565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90614255565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134790614235565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6113c9816113c461198d565b611d93565b6113d1612363565b50565b6000600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606001805461144e90614795565b80601f016020809104026020016040519081016040528092919081815260200182805461147a90614795565b80156114c75780601f1061149c576101008083540402835291602001916114c7565b820191906000526020600020905b8154815290600101906020018083116114aa57829003601f168201915b5050505050905090565b7371e7afa8b3ab8e83011ce7bbbdcd76ccd7cb066081565b6000801b81565b6115026114fb61198d565b8383612406565b5050565b61151761151161198d565b83611a4e565b611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d90614355565b60405180910390fd5b61156284848484612573565b50505050565b606061157382611921565b6115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a9906142f5565b60405180910390fd5b6040518060600160405280602381526020016151ca602391396115d483612202565b6040516020016115e5929190613e2e565b6040516020818303038152906040529050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b611628826109c7565b6116398161163461198d565b611d93565b6116438383611f11565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff167371e7afa8b3ab8e83011ce7bbbdcd76ccd7cb066073ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b81526004016116ae91906143d5565b60206040518083038186803b1580156116c657600080fd5b505afa1580156116da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fe919061358c565b73ffffffffffffffffffffffffffffffffffffffff161415611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c906142d5565b60405180910390fd5b600e6000838152602001908152602001600020549050919050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60606040518060600160405280602381526020016151ca602391396040516020016117bf9190613e52565b604051602081830303815290604052905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66118998161189461198d565b611d93565b8160001b600d819055505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061191a5750611919826125cf565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a088361122d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611a5982611921565b611a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8f906141d5565b60405180910390fd5b6000611aa38361122d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b1257508373ffffffffffffffffffffffffffffffffffffffff16611afa846107b1565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b235750611b2281856117d3565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b4c8261122d565b73ffffffffffffffffffffffffffffffffffffffff1614611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9990614155565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0990614195565b60405180910390fd5b611c1d838383612649565b611c28600082611995565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c789190614621565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ccf9190614540565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611d8e8383836126a1565b505050565b611d9d82826113d4565b611e2c57611dc28173ffffffffffffffffffffffffffffffffffffffff1660146126a6565b611dd08360001c60206126a6565b604051602001611de1929190613ede565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2391906140b3565b60405180910390fd5b5050565b611e3a82826113d4565b611f0d576001600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611eb261198d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b611f1b82826113d4565b15611fef576000600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611f9461198d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b611ffb611216565b61203a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612031906140f5565b60405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61207e61198d565b60405161208b9190613f55565b60405180910390a1565b60006120a1600c6128e2565b6701634694b3077f416120b49190614540565b90506120c0600c6128f0565b6120ca8282612906565b5050565b60006120d98261122d565b90506120e781600084612649565b6120f2600083611995565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121429190614621565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46121e7816000846126a1565b5050565b6000826121f88584612924565b1490509392505050565b6060600082141561224a576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061235e565b600082905060005b6000821461227c578080612265906147f8565b915050600a826122759190614596565b9150612252565b60008167ffffffffffffffff81111561229857612297614971565b5b6040519080825280601f01601f1916602001820160405280156122ca5781602001600182028036833780820191505090505b5090505b60008514612357576001826122e39190614621565b9150600a856122f29190614855565b60306122fe9190614540565b60f81b81838151811061231457612313614942565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856123509190614596565b94506122ce565b8093505050505b919050565b61236b611216565b156123ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a2906141f5565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123ef61198d565b6040516123fc9190613f55565b60405180910390a1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246c906141b5565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516125669190613fbc565b60405180910390a3505050565b61257e848484611b2c565b61258a84848484612999565b6125c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c090614135565b60405180910390fd5b50505050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612642575061264182612b30565b5b9050919050565b612651611216565b15612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688906141f5565b60405180910390fd5b61269c838383612c12565b505050565b505050565b6060600060028360026126b991906145c7565b6126c39190614540565b67ffffffffffffffff8111156126dc576126db614971565b5b6040519080825280601f01601f19166020018201604052801561270e5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061274657612745614942565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106127aa576127a9614942565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026127ea91906145c7565b6127f49190614540565b90505b6001811115612894577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061283657612835614942565b5b1a60f81b82828151811061284d5761284c614942565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061288d9061476b565b90506127f7565b50600084146128d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cf906140d5565b60405180910390fd5b8091505092915050565b600081600001549050919050565b6001816000016000828254019250508190555050565b612920828260405180602001604052806000815250612d26565b5050565b60008082905060005b845181101561298e57600085828151811061294b5761294a614942565b5b6020026020010151905080831161296d576129668382612d81565b925061297a565b6129778184612d81565b92505b508080612986906147f8565b91505061292d565b508091505092915050565b60006129ba8473ffffffffffffffffffffffffffffffffffffffff16612d98565b15612b23578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026129e361198d565b8786866040518563ffffffff1660e01b8152600401612a059493929190613f70565b602060405180830381600087803b158015612a1f57600080fd5b505af1925050508015612a5057506040513d601f19601f82011682018060405250810190612a4d91906137e9565b60015b612ad3573d8060008114612a80576040519150601f19603f3d011682016040523d82523d6000602084013e612a85565b606091505b50600081511415612acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac290614135565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612b28565b600190505b949350505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612bfb57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612c0b5750612c0a82612dbb565b5b9050919050565b612c1d838383612e25565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c6057612c5b81612e2a565b612c9f565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612c9e57612c9d8382612e73565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ce257612cdd81612fe0565b612d21565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612d2057612d1f82826130b1565b5b5b505050565b612d308383613130565b612d3d6000848484612999565b612d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7390614135565b60405180910390fd5b505050565b600082600052816020526040600020905092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612e80846112df565b612e8a9190614621565b9050600060076000848152602001908152602001600020549050818114612f6f576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050612ff49190614621565b905060006009600084815260200190815260200160002054905060006008838154811061302457613023614942565b5b90600052602060002001549050806008838154811061304657613045614942565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061309557613094614913565b5b6001900381819060005260206000200160009055905550505050565b60006130bc836112df565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156131a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319790614295565b60405180910390fd5b6131a981611921565b156131e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e090614175565b60405180910390fd5b6131f560008383612649565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132459190614540565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613306600083836126a1565b5050565b600061331d613318846144a0565b61447b565b905080838252602082019050828560208602820111156133405761333f6149be565b5b60005b8581101561337057816133568882613429565b845260208401935060208301925050600181019050613343565b5050509392505050565b600061338d613388846144cc565b61447b565b9050828152602081018484840111156133a9576133a86149c8565b5b6133b4848285614729565b509392505050565b6000813590506133cb8161513f565b92915050565b6000815190506133e08161513f565b92915050565b600082601f8301126133fb576133fa6149a0565b5b813561340b84826020860161330a565b91505092915050565b60008135905061342381615156565b92915050565b6000813590506134388161516d565b92915050565b60008135905061344d81615184565b92915050565b60008151905061346281615184565b92915050565b600082601f83011261347d5761347c6149a0565b5b813561348d84826020860161337a565b91505092915050565b6000606082840312156134ac576134ab6149af565b5b6134b6606061447b565b905060006134c684828501613535565b60008301525060206134da84828501613414565b602083015250604082013567ffffffffffffffff8111156134fe576134fd6149b9565b5b61350a848285016133e6565b60408301525092915050565b60006040828403121561352c5761352b6149aa565b5b81905092915050565b6000813590506135448161519b565b92915050565b600081359050613559816151b2565b92915050565b600060208284031215613575576135746149d2565b5b6000613583848285016133bc565b91505092915050565b6000602082840312156135a2576135a16149d2565b5b60006135b0848285016133d1565b91505092915050565b600080604083850312156135d0576135cf6149d2565b5b60006135de858286016133bc565b92505060206135ef858286016133bc565b9150509250929050565b600080600060608486031215613612576136116149d2565b5b6000613620868287016133bc565b9350506020613631868287016133bc565b925050604061364286828701613535565b9150509250925092565b60008060008060808587031215613666576136656149d2565b5b6000613674878288016133bc565b9450506020613685878288016133bc565b935050604061369687828801613535565b925050606085013567ffffffffffffffff8111156136b7576136b66149cd565b5b6136c387828801613468565b91505092959194509250565b600080604083850312156136e6576136e56149d2565b5b60006136f4858286016133bc565b925050602061370585828601613414565b9150509250929050565b60008060408385031215613726576137256149d2565b5b6000613734858286016133bc565b925050602061374585828601613535565b9150509250929050565b600060208284031215613765576137646149d2565b5b600061377384828501613429565b91505092915050565b60008060408385031215613793576137926149d2565b5b60006137a185828601613429565b92505060206137b2858286016133bc565b9150509250929050565b6000602082840312156137d2576137d16149d2565b5b60006137e08482850161343e565b91505092915050565b6000602082840312156137ff576137fe6149d2565b5b600061380d84828501613453565b91505092915050565b600080600080608085870312156138305761382f6149d2565b5b600085013567ffffffffffffffff81111561384e5761384d6149cd565b5b61385a87828801613516565b945050602061386b8782880161354a565b935050604061387c87828801613429565b925050606061388d87828801613429565b91505092959194509250565b6000602082840312156138af576138ae6149d2565b5b60006138bd84828501613535565b91505092915050565b6138cf81614655565b82525050565b6138de81614667565b82525050565b6138ed81614673565b82525050565b6139046138ff82614673565b614841565b82525050565b6000613915826144fd565b61391f8185614513565b935061392f818560208601614738565b613938816149d7565b840191505092915050565b61394c816146e0565b82525050565b600061395d82614508565b6139678185614524565b9350613977818560208601614738565b613980816149d7565b840191505092915050565b600061399682614508565b6139a08185614535565b93506139b0818560208601614738565b80840191505092915050565b60006139c9602083614524565b91506139d4826149e8565b602082019050919050565b60006139ec601483614524565b91506139f782614a11565b602082019050919050565b6000613a0f601c83614535565b9150613a1a82614a3a565b601c82019050919050565b6000613a32602b83614524565b9150613a3d82614a63565b604082019050919050565b6000613a55603283614524565b9150613a6082614ab2565b604082019050919050565b6000613a78602583614524565b9150613a8382614b01565b604082019050919050565b6000613a9b601c83614524565b9150613aa682614b50565b602082019050919050565b6000613abe602483614524565b9150613ac982614b79565b604082019050919050565b6000613ae1601983614524565b9150613aec82614bc8565b602082019050919050565b6000613b04601783614535565b9150613b0f82614bf1565b601782019050919050565b6000613b27602c83614524565b9150613b3282614c1a565b604082019050919050565b6000613b4a601083614524565b9150613b5582614c69565b602082019050919050565b6000613b6d603883614524565b9150613b7882614c92565b604082019050919050565b6000613b90602a83614524565b9150613b9b82614ce1565b604082019050919050565b6000613bb3602983614524565b9150613bbe82614d30565b604082019050919050565b6000613bd6601983614524565b9150613be182614d7f565b602082019050919050565b6000613bf9602083614524565b9150613c0482614da8565b602082019050919050565b6000613c1c601483614535565b9150613c2782614dd1565b601482019050919050565b6000613c3f602c83614524565b9150613c4a82614dfa565b604082019050919050565b6000613c62601483614524565b9150613c6d82614e49565b602082019050919050565b6000613c85602f83614524565b9150613c9082614e72565b604082019050919050565b6000613ca8602183614524565b9150613cb382614ec1565b604082019050919050565b6000613ccb602a83614524565b9150613cd682614f10565b604082019050919050565b6000613cee603183614524565b9150613cf982614f5f565b604082019050919050565b6000613d11602c83614524565b9150613d1c82614fae565b604082019050919050565b6000613d34601783614535565b9150613d3f82614ffd565b601782019050919050565b6000613d57602083614535565b9150613d6282615026565b602082019050919050565b6000613d7a603083614524565b9150613d858261504f565b604082019050919050565b6000613d9d600d83614535565b9150613da88261509e565b600d82019050919050565b6000613dc0601183614535565b9150613dcb826150c7565b601182019050919050565b6000613de3602f83614524565b9150613dee826150f0565b604082019050919050565b613e02816146c9565b82525050565b613e19613e14826146c9565b61484b565b82525050565b613e28816146d3565b82525050565b6000613e3a828561398b565b9150613e46828461398b565b91508190509392505050565b6000613e5e828461398b565b9150613e6982613d90565b915081905092915050565b6000613e7f82613a02565b9150613e8b82846138f3565b60208201915081905092915050565b6000613ea582613af7565b9150613eb1828461398b565b915081905092915050565b6000613ec782613c0f565b9150613ed3828461398b565b915081905092915050565b6000613ee982613d27565b9150613ef5828561398b565b9150613f0082613db3565b9150613f0c828461398b565b91508190509392505050565b6000613f2382613d4a565b9150613f2f828461398b565b915081905092915050565b6000613f468284613e08565b60208201915081905092915050565b6000602082019050613f6a60008301846138c6565b92915050565b6000608082019050613f8560008301876138c6565b613f9260208301866138c6565b613f9f6040830185613df9565b8181036060830152613fb1818461390a565b905095945050505050565b6000602082019050613fd160008301846138d5565b92915050565b6000602082019050613fec60008301846138e4565b92915050565b600060c08201905061400760008301896138e4565b61401460208301886138c6565b6140216040830187613df9565b61402e6060830186613df9565b61403b6080830185613df9565b61404860a0830184613df9565b979650505050505050565b600060808201905061406860008301876138e4565b6140756020830186613e1f565b61408260408301856138e4565b61408f60608301846138e4565b95945050505050565b60006020820190506140ad6000830184613943565b92915050565b600060208201905081810360008301526140cd8184613952565b905092915050565b600060208201905081810360008301526140ee816139bc565b9050919050565b6000602082019050818103600083015261410e816139df565b9050919050565b6000602082019050818103600083015261412e81613a25565b9050919050565b6000602082019050818103600083015261414e81613a48565b9050919050565b6000602082019050818103600083015261416e81613a6b565b9050919050565b6000602082019050818103600083015261418e81613a8e565b9050919050565b600060208201905081810360008301526141ae81613ab1565b9050919050565b600060208201905081810360008301526141ce81613ad4565b9050919050565b600060208201905081810360008301526141ee81613b1a565b9050919050565b6000602082019050818103600083015261420e81613b3d565b9050919050565b6000602082019050818103600083015261422e81613b60565b9050919050565b6000602082019050818103600083015261424e81613b83565b9050919050565b6000602082019050818103600083015261426e81613ba6565b9050919050565b6000602082019050818103600083015261428e81613bc9565b9050919050565b600060208201905081810360008301526142ae81613bec565b9050919050565b600060208201905081810360008301526142ce81613c32565b9050919050565b600060208201905081810360008301526142ee81613c55565b9050919050565b6000602082019050818103600083015261430e81613c78565b9050919050565b6000602082019050818103600083015261432e81613c9b565b9050919050565b6000602082019050818103600083015261434e81613cbe565b9050919050565b6000602082019050818103600083015261436e81613ce1565b9050919050565b6000602082019050818103600083015261438e81613d04565b9050919050565b600060208201905081810360008301526143ae81613d6d565b9050919050565b600060208201905081810360008301526143ce81613dd6565b9050919050565b60006020820190506143ea6000830184613df9565b92915050565b6000808335600160200384360303811261440d5761440c6149b4565b5b80840192508235915067ffffffffffffffff82111561442f5761442e6149a5565b5b60208301925060208202360383131561444b5761444a6149c3565b5b509250929050565b60008235600160600383360303811261446f5761446e6149b4565b5b80830191505092915050565b6000614485614496565b905061449182826147c7565b919050565b6000604051905090565b600067ffffffffffffffff8211156144bb576144ba614971565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156144e7576144e6614971565b5b6144f0826149d7565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061454b826146c9565b9150614556836146c9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561458b5761458a614886565b5b828201905092915050565b60006145a1826146c9565b91506145ac836146c9565b9250826145bc576145bb6148b5565b5b828204905092915050565b60006145d2826146c9565b91506145dd836146c9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561461657614615614886565b5b828202905092915050565b600061462c826146c9565b9150614637836146c9565b92508282101561464a57614649614886565b5b828203905092915050565b6000614660826146a9565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006146eb82614705565b9050919050565b60006146fe3683613496565b9050919050565b600061471082614717565b9050919050565b6000614722826146a9565b9050919050565b82818337600083830152505050565b60005b8381101561475657808201518184015260208101905061473b565b83811115614765576000848401525b50505050565b6000614776826146c9565b9150600082141561478a57614789614886565b5b600182039050919050565b600060028204905060018216806147ad57607f821691505b602082108114156147c1576147c06148e4565b5b50919050565b6147d0826149d7565b810181811067ffffffffffffffff821117156147ef576147ee614971565b5b80604052505050565b6000614803826146c9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561483657614835614886565b5b600182019050919050565b6000819050919050565b6000819050919050565b6000614860826146c9565b915061486b836146c9565b92508261487b5761487a6148b5565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4d454348414455434b3a205265616368204c696d697420000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4d454348414455434b3a20496e76616c6964207369676e657200000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f424455434b494e47533a204e6f74205261726520000000000000000000000000600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4d454348414455434b3a20546f6b656e20343034000000000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d454348414455434b3a204174206c656173742074776f206475636b7320617260008201527f6520726571756972656400000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f4d454348414455434b3a20496e76616c6964204f776e6572206f66204e465420600082015250565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b7f6d657461646174612e6a736f6e00000000000000000000000000000000000000600082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b61514881614655565b811461515357600080fd5b50565b61515f81614667565b811461516a57600080fd5b50565b61517681614673565b811461518157600080fd5b50565b61518d8161467d565b811461519857600080fd5b50565b6151a4816146c9565b81146151af57600080fd5b50565b6151bb816146d3565b81146151c657600080fd5b5056fe68747470733a2f2f697066732e6d6164776f726c642e696f2f6d656368616475636b2fa264697066735822122089071facc2f40b2fb53c32cacd1b16ff3e2e5b9872cf3fde32deef1e8053f75064736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102275760003560e01c8063572de73211610130578063a22cb465116100b8578063db09a3f51161007c578063db09a3f514610650578063e63ab1e914610680578063e8a3d4851461069e578063e985e9c5146106bc578063f2f5a7e5146106ec57610227565b8063a22cb465146105ae578063b88d4fde146105ca578063c87b56dd146105e6578063d539139314610616578063d547741f1461063457610227565b80638456cb59116100ff5780638456cb591461051a57806391d148541461052457806395d89b4114610554578063a089d04f14610572578063a217fddf1461059057610227565b8063572de7321461047e5780635c975abb1461049c5780636352211e146104ba57806370a08231146104ea57610227565b80632f2ff15d116101b357806340d097c31161018257806340d097c3146103de57806342842e0e146103fa57806342966c68146104165780634f6ccce7146104325780635568d86e1461046257610227565b80632f2ff15d1461036c5780632f745c591461038857806336568abe146103b85780633f4ba83a146103d457610227565b8063095ea7b3116101fa578063095ea7b3146102c857806316fa58a1146102e457806318160ddd1461030257806323b872dd14610320578063248a9ca31461033c57610227565b806301ffc9a71461022c578063027752401461025c57806306fdde031461027a578063081812fc14610298575b600080fd5b610246600480360381019061024191906137bc565b610708565b6040516102539190613fbc565b60405180910390f35b61026461071a565b60405161027191906143d5565b60405180910390f35b61028261071f565b60405161028f91906140b3565b60405180910390f35b6102b260048036038101906102ad9190613899565b6107b1565b6040516102bf9190613f55565b60405180910390f35b6102e260048036038101906102dd919061370f565b610836565b005b6102ec61094e565b6040516102f991906143d5565b60405180910390f35b61030a61095a565b60405161031791906143d5565b60405180910390f35b61033a600480360381019061033591906135f9565b610967565b005b6103566004803603810190610351919061374f565b6109c7565b6040516103639190613fd7565b60405180910390f35b6103866004803603810190610381919061377c565b6109e7565b005b6103a2600480360381019061039d919061370f565b610a10565b6040516103af91906143d5565b60405180910390f35b6103d260048036038101906103cd919061377c565b610ab5565b005b6103dc610b38565b005b6103f860048036038101906103f3919061355f565b610b75565b005b610414600480360381019061040f91906135f9565b610bb4565b005b610430600480360381019061042b9190613899565b610bd4565b005b61044c60048036038101906104479190613899565b610c30565b60405161045991906143d5565b60405180910390f35b61047c60048036038101906104779190613816565b610ca1565b005b610486611210565b6040516104939190613fd7565b60405180910390f35b6104a4611216565b6040516104b19190613fbc565b60405180910390f35b6104d460048036038101906104cf9190613899565b61122d565b6040516104e19190613f55565b60405180910390f35b61050460048036038101906104ff919061355f565b6112df565b60405161051191906143d5565b60405180910390f35b610522611397565b005b61053e6004803603810190610539919061377c565b6113d4565b60405161054b9190613fbc565b60405180910390f35b61055c61143f565b60405161056991906140b3565b60405180910390f35b61057a6114d1565b6040516105879190614098565b60405180910390f35b6105986114e9565b6040516105a59190613fd7565b60405180910390f35b6105c860048036038101906105c391906136cf565b6114f0565b005b6105e460048036038101906105df919061364c565b611506565b005b61060060048036038101906105fb9190613899565b611568565b60405161060d91906140b3565b60405180910390f35b61061e6115fb565b60405161062b9190613fd7565b60405180910390f35b61064e6004803603810190610649919061377c565b61161f565b005b61066a60048036038101906106659190613899565b611648565b60405161067791906143d5565b60405180910390f35b610688611770565b6040516106959190613fd7565b60405180910390f35b6106a6611794565b6040516106b391906140b3565b60405180910390f35b6106d660048036038101906106d191906135b9565b6117d3565b6040516106e39190613fbc565b60405180910390f35b61070660048036038101906107019190613899565b611867565b005b6000610713826118a7565b9050919050565b600181565b60606000805461072e90614795565b80601f016020809104026020016040519081016040528092919081815260200182805461075a90614795565b80156107a75780601f1061077c576101008083540402835291602001916107a7565b820191906000526020600020905b81548152906001019060200180831161078a57829003601f168201915b5050505050905090565b60006107bc82611921565b6107fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f2906142b5565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108418261122d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a990614315565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108d161198d565b73ffffffffffffffffffffffffffffffffffffffff16148061090057506108ff816108fa61198d565b6117d3565b5b61093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093690614215565b60405180910390fd5b6109498383611995565b505050565b6701634694b3077f4181565b6000600880549050905090565b61097861097261198d565b82611a4e565b6109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae90614355565b60405180910390fd5b6109c2838383611b2c565b505050565b6000600b6000838152602001908152602001600020600101549050919050565b6109f0826109c7565b610a01816109fc61198d565b611d93565b610a0b8383611e30565b505050565b6000610a1b836112df565b8210610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5390614115565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610abd61198d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b21906143b5565b60405180910390fd5b610b348282611f11565b5050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b6a81610b6561198d565b611d93565b610b72611ff3565b50565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610ba781610ba261198d565b611d93565b610bb082612095565b5050565b610bcf83838360405180602001604052806000815250611506565b505050565b610be5610bdf61198d565b82611a4e565b610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b90614395565b60405180910390fd5b610c2d816120ce565b50565b6000610c3a61095a565b8210610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7290614375565b60405180910390fd5b60088281548110610c8f57610c8e614942565b5b90600052602060002001549050919050565b610ca9611216565b15610ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce0906141f5565b60405180910390fd5b6002848060200190610cfb91906143f0565b905014610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3490614335565b60405180910390fd5b60007f110e325ae79444bac762d6ce1659ccdaf6855a0645c8d74601fb2c8ffce45427338660000135878060200190610d7691906143f0565b6000818110610d8857610d87614942565b5b9050602002810190610d9a9190614453565b60000135888060200190610dae91906143f0565b6001818110610dc057610dbf614942565b5b9050602002810190610dd29190614453565b6000013546604051602001610dec96959493929190613ff2565b604051602081830303815290604052805190602001209050600081604051602001610e179190613e74565b604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051610e549493929190614053565b6020604051602081039080840390855afa158015610e76573d6000803e3d6000fd5b505050602060405103519050610eac7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826113d4565b610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee290614275565b60405180910390fd5b60005b878060200190610efe91906143f0565b90508110156111fd576000888060200190610f1991906143f0565b83818110610f2a57610f29614942565b5b9050602002810190610f3c9190614453565b610f45906146f2565b905060008160000151604051602001610f5e9190613f3a565b604051602081830303815290604052805190602001209050610f878260400151600d54836121eb565b610f948360000151612202565b604051602001610fa49190613ebc565b60405160208183030381529060405290610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb91906140b3565b60405180910390fd5b503373ffffffffffffffffffffffffffffffffffffffff167371e7afa8b3ab8e83011ce7bbbdcd76ccd7cb066073ffffffffffffffffffffffffffffffffffffffff16636352211e84600001516040518263ffffffff1660e01b815260040161105d91906143d5565b60206040518083038186803b15801561107557600080fd5b505afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061358c565b73ffffffffffffffffffffffffffffffffffffffff16146110d18360000151612202565b6040516020016110e19190613f18565b60405160208183030381529060405290611131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112891906140b3565b60405180910390fd5b506001600e600084600001518152602001908152602001600020541061115a8360000151612202565b60405160200161116a9190613e9a565b604051602081830303815290604052906111ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b191906140b3565b60405180910390fd5b50600e60008360000151815260200190815260200160002060008154809291906111e3906147f8565b9190505550505080806111f5906147f8565b915050610eee565b5061120733612095565b50505050505050565b600d5481565b6000600a60009054906101000a900460ff16905090565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90614255565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134790614235565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6113c9816113c461198d565b611d93565b6113d1612363565b50565b6000600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606001805461144e90614795565b80601f016020809104026020016040519081016040528092919081815260200182805461147a90614795565b80156114c75780601f1061149c576101008083540402835291602001916114c7565b820191906000526020600020905b8154815290600101906020018083116114aa57829003601f168201915b5050505050905090565b7371e7afa8b3ab8e83011ce7bbbdcd76ccd7cb066081565b6000801b81565b6115026114fb61198d565b8383612406565b5050565b61151761151161198d565b83611a4e565b611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d90614355565b60405180910390fd5b61156284848484612573565b50505050565b606061157382611921565b6115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a9906142f5565b60405180910390fd5b6040518060600160405280602381526020016151ca602391396115d483612202565b6040516020016115e5929190613e2e565b6040516020818303038152906040529050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b611628826109c7565b6116398161163461198d565b611d93565b6116438383611f11565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff167371e7afa8b3ab8e83011ce7bbbdcd76ccd7cb066073ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b81526004016116ae91906143d5565b60206040518083038186803b1580156116c657600080fd5b505afa1580156116da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fe919061358c565b73ffffffffffffffffffffffffffffffffffffffff161415611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c906142d5565b60405180910390fd5b600e6000838152602001908152602001600020549050919050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60606040518060600160405280602381526020016151ca602391396040516020016117bf9190613e52565b604051602081830303815290604052905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66118998161189461198d565b611d93565b8160001b600d819055505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061191a5750611919826125cf565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a088361122d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611a5982611921565b611a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8f906141d5565b60405180910390fd5b6000611aa38361122d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b1257508373ffffffffffffffffffffffffffffffffffffffff16611afa846107b1565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b235750611b2281856117d3565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b4c8261122d565b73ffffffffffffffffffffffffffffffffffffffff1614611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9990614155565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0990614195565b60405180910390fd5b611c1d838383612649565b611c28600082611995565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c789190614621565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ccf9190614540565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611d8e8383836126a1565b505050565b611d9d82826113d4565b611e2c57611dc28173ffffffffffffffffffffffffffffffffffffffff1660146126a6565b611dd08360001c60206126a6565b604051602001611de1929190613ede565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2391906140b3565b60405180910390fd5b5050565b611e3a82826113d4565b611f0d576001600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611eb261198d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b611f1b82826113d4565b15611fef576000600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611f9461198d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b611ffb611216565b61203a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612031906140f5565b60405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61207e61198d565b60405161208b9190613f55565b60405180910390a1565b60006120a1600c6128e2565b6701634694b3077f416120b49190614540565b90506120c0600c6128f0565b6120ca8282612906565b5050565b60006120d98261122d565b90506120e781600084612649565b6120f2600083611995565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121429190614621565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46121e7816000846126a1565b5050565b6000826121f88584612924565b1490509392505050565b6060600082141561224a576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061235e565b600082905060005b6000821461227c578080612265906147f8565b915050600a826122759190614596565b9150612252565b60008167ffffffffffffffff81111561229857612297614971565b5b6040519080825280601f01601f1916602001820160405280156122ca5781602001600182028036833780820191505090505b5090505b60008514612357576001826122e39190614621565b9150600a856122f29190614855565b60306122fe9190614540565b60f81b81838151811061231457612313614942565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856123509190614596565b94506122ce565b8093505050505b919050565b61236b611216565b156123ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a2906141f5565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123ef61198d565b6040516123fc9190613f55565b60405180910390a1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246c906141b5565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516125669190613fbc565b60405180910390a3505050565b61257e848484611b2c565b61258a84848484612999565b6125c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c090614135565b60405180910390fd5b50505050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612642575061264182612b30565b5b9050919050565b612651611216565b15612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688906141f5565b60405180910390fd5b61269c838383612c12565b505050565b505050565b6060600060028360026126b991906145c7565b6126c39190614540565b67ffffffffffffffff8111156126dc576126db614971565b5b6040519080825280601f01601f19166020018201604052801561270e5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061274657612745614942565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106127aa576127a9614942565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026127ea91906145c7565b6127f49190614540565b90505b6001811115612894577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061283657612835614942565b5b1a60f81b82828151811061284d5761284c614942565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061288d9061476b565b90506127f7565b50600084146128d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cf906140d5565b60405180910390fd5b8091505092915050565b600081600001549050919050565b6001816000016000828254019250508190555050565b612920828260405180602001604052806000815250612d26565b5050565b60008082905060005b845181101561298e57600085828151811061294b5761294a614942565b5b6020026020010151905080831161296d576129668382612d81565b925061297a565b6129778184612d81565b92505b508080612986906147f8565b91505061292d565b508091505092915050565b60006129ba8473ffffffffffffffffffffffffffffffffffffffff16612d98565b15612b23578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026129e361198d565b8786866040518563ffffffff1660e01b8152600401612a059493929190613f70565b602060405180830381600087803b158015612a1f57600080fd5b505af1925050508015612a5057506040513d601f19601f82011682018060405250810190612a4d91906137e9565b60015b612ad3573d8060008114612a80576040519150601f19603f3d011682016040523d82523d6000602084013e612a85565b606091505b50600081511415612acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac290614135565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612b28565b600190505b949350505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612bfb57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612c0b5750612c0a82612dbb565b5b9050919050565b612c1d838383612e25565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c6057612c5b81612e2a565b612c9f565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612c9e57612c9d8382612e73565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ce257612cdd81612fe0565b612d21565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612d2057612d1f82826130b1565b5b5b505050565b612d308383613130565b612d3d6000848484612999565b612d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7390614135565b60405180910390fd5b505050565b600082600052816020526040600020905092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612e80846112df565b612e8a9190614621565b9050600060076000848152602001908152602001600020549050818114612f6f576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050612ff49190614621565b905060006009600084815260200190815260200160002054905060006008838154811061302457613023614942565b5b90600052602060002001549050806008838154811061304657613045614942565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061309557613094614913565b5b6001900381819060005260206000200160009055905550505050565b60006130bc836112df565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156131a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319790614295565b60405180910390fd5b6131a981611921565b156131e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e090614175565b60405180910390fd5b6131f560008383612649565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132459190614540565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613306600083836126a1565b5050565b600061331d613318846144a0565b61447b565b905080838252602082019050828560208602820111156133405761333f6149be565b5b60005b8581101561337057816133568882613429565b845260208401935060208301925050600181019050613343565b5050509392505050565b600061338d613388846144cc565b61447b565b9050828152602081018484840111156133a9576133a86149c8565b5b6133b4848285614729565b509392505050565b6000813590506133cb8161513f565b92915050565b6000815190506133e08161513f565b92915050565b600082601f8301126133fb576133fa6149a0565b5b813561340b84826020860161330a565b91505092915050565b60008135905061342381615156565b92915050565b6000813590506134388161516d565b92915050565b60008135905061344d81615184565b92915050565b60008151905061346281615184565b92915050565b600082601f83011261347d5761347c6149a0565b5b813561348d84826020860161337a565b91505092915050565b6000606082840312156134ac576134ab6149af565b5b6134b6606061447b565b905060006134c684828501613535565b60008301525060206134da84828501613414565b602083015250604082013567ffffffffffffffff8111156134fe576134fd6149b9565b5b61350a848285016133e6565b60408301525092915050565b60006040828403121561352c5761352b6149aa565b5b81905092915050565b6000813590506135448161519b565b92915050565b600081359050613559816151b2565b92915050565b600060208284031215613575576135746149d2565b5b6000613583848285016133bc565b91505092915050565b6000602082840312156135a2576135a16149d2565b5b60006135b0848285016133d1565b91505092915050565b600080604083850312156135d0576135cf6149d2565b5b60006135de858286016133bc565b92505060206135ef858286016133bc565b9150509250929050565b600080600060608486031215613612576136116149d2565b5b6000613620868287016133bc565b9350506020613631868287016133bc565b925050604061364286828701613535565b9150509250925092565b60008060008060808587031215613666576136656149d2565b5b6000613674878288016133bc565b9450506020613685878288016133bc565b935050604061369687828801613535565b925050606085013567ffffffffffffffff8111156136b7576136b66149cd565b5b6136c387828801613468565b91505092959194509250565b600080604083850312156136e6576136e56149d2565b5b60006136f4858286016133bc565b925050602061370585828601613414565b9150509250929050565b60008060408385031215613726576137256149d2565b5b6000613734858286016133bc565b925050602061374585828601613535565b9150509250929050565b600060208284031215613765576137646149d2565b5b600061377384828501613429565b91505092915050565b60008060408385031215613793576137926149d2565b5b60006137a185828601613429565b92505060206137b2858286016133bc565b9150509250929050565b6000602082840312156137d2576137d16149d2565b5b60006137e08482850161343e565b91505092915050565b6000602082840312156137ff576137fe6149d2565b5b600061380d84828501613453565b91505092915050565b600080600080608085870312156138305761382f6149d2565b5b600085013567ffffffffffffffff81111561384e5761384d6149cd565b5b61385a87828801613516565b945050602061386b8782880161354a565b935050604061387c87828801613429565b925050606061388d87828801613429565b91505092959194509250565b6000602082840312156138af576138ae6149d2565b5b60006138bd84828501613535565b91505092915050565b6138cf81614655565b82525050565b6138de81614667565b82525050565b6138ed81614673565b82525050565b6139046138ff82614673565b614841565b82525050565b6000613915826144fd565b61391f8185614513565b935061392f818560208601614738565b613938816149d7565b840191505092915050565b61394c816146e0565b82525050565b600061395d82614508565b6139678185614524565b9350613977818560208601614738565b613980816149d7565b840191505092915050565b600061399682614508565b6139a08185614535565b93506139b0818560208601614738565b80840191505092915050565b60006139c9602083614524565b91506139d4826149e8565b602082019050919050565b60006139ec601483614524565b91506139f782614a11565b602082019050919050565b6000613a0f601c83614535565b9150613a1a82614a3a565b601c82019050919050565b6000613a32602b83614524565b9150613a3d82614a63565b604082019050919050565b6000613a55603283614524565b9150613a6082614ab2565b604082019050919050565b6000613a78602583614524565b9150613a8382614b01565b604082019050919050565b6000613a9b601c83614524565b9150613aa682614b50565b602082019050919050565b6000613abe602483614524565b9150613ac982614b79565b604082019050919050565b6000613ae1601983614524565b9150613aec82614bc8565b602082019050919050565b6000613b04601783614535565b9150613b0f82614bf1565b601782019050919050565b6000613b27602c83614524565b9150613b3282614c1a565b604082019050919050565b6000613b4a601083614524565b9150613b5582614c69565b602082019050919050565b6000613b6d603883614524565b9150613b7882614c92565b604082019050919050565b6000613b90602a83614524565b9150613b9b82614ce1565b604082019050919050565b6000613bb3602983614524565b9150613bbe82614d30565b604082019050919050565b6000613bd6601983614524565b9150613be182614d7f565b602082019050919050565b6000613bf9602083614524565b9150613c0482614da8565b602082019050919050565b6000613c1c601483614535565b9150613c2782614dd1565b601482019050919050565b6000613c3f602c83614524565b9150613c4a82614dfa565b604082019050919050565b6000613c62601483614524565b9150613c6d82614e49565b602082019050919050565b6000613c85602f83614524565b9150613c9082614e72565b604082019050919050565b6000613ca8602183614524565b9150613cb382614ec1565b604082019050919050565b6000613ccb602a83614524565b9150613cd682614f10565b604082019050919050565b6000613cee603183614524565b9150613cf982614f5f565b604082019050919050565b6000613d11602c83614524565b9150613d1c82614fae565b604082019050919050565b6000613d34601783614535565b9150613d3f82614ffd565b601782019050919050565b6000613d57602083614535565b9150613d6282615026565b602082019050919050565b6000613d7a603083614524565b9150613d858261504f565b604082019050919050565b6000613d9d600d83614535565b9150613da88261509e565b600d82019050919050565b6000613dc0601183614535565b9150613dcb826150c7565b601182019050919050565b6000613de3602f83614524565b9150613dee826150f0565b604082019050919050565b613e02816146c9565b82525050565b613e19613e14826146c9565b61484b565b82525050565b613e28816146d3565b82525050565b6000613e3a828561398b565b9150613e46828461398b565b91508190509392505050565b6000613e5e828461398b565b9150613e6982613d90565b915081905092915050565b6000613e7f82613a02565b9150613e8b82846138f3565b60208201915081905092915050565b6000613ea582613af7565b9150613eb1828461398b565b915081905092915050565b6000613ec782613c0f565b9150613ed3828461398b565b915081905092915050565b6000613ee982613d27565b9150613ef5828561398b565b9150613f0082613db3565b9150613f0c828461398b565b91508190509392505050565b6000613f2382613d4a565b9150613f2f828461398b565b915081905092915050565b6000613f468284613e08565b60208201915081905092915050565b6000602082019050613f6a60008301846138c6565b92915050565b6000608082019050613f8560008301876138c6565b613f9260208301866138c6565b613f9f6040830185613df9565b8181036060830152613fb1818461390a565b905095945050505050565b6000602082019050613fd160008301846138d5565b92915050565b6000602082019050613fec60008301846138e4565b92915050565b600060c08201905061400760008301896138e4565b61401460208301886138c6565b6140216040830187613df9565b61402e6060830186613df9565b61403b6080830185613df9565b61404860a0830184613df9565b979650505050505050565b600060808201905061406860008301876138e4565b6140756020830186613e1f565b61408260408301856138e4565b61408f60608301846138e4565b95945050505050565b60006020820190506140ad6000830184613943565b92915050565b600060208201905081810360008301526140cd8184613952565b905092915050565b600060208201905081810360008301526140ee816139bc565b9050919050565b6000602082019050818103600083015261410e816139df565b9050919050565b6000602082019050818103600083015261412e81613a25565b9050919050565b6000602082019050818103600083015261414e81613a48565b9050919050565b6000602082019050818103600083015261416e81613a6b565b9050919050565b6000602082019050818103600083015261418e81613a8e565b9050919050565b600060208201905081810360008301526141ae81613ab1565b9050919050565b600060208201905081810360008301526141ce81613ad4565b9050919050565b600060208201905081810360008301526141ee81613b1a565b9050919050565b6000602082019050818103600083015261420e81613b3d565b9050919050565b6000602082019050818103600083015261422e81613b60565b9050919050565b6000602082019050818103600083015261424e81613b83565b9050919050565b6000602082019050818103600083015261426e81613ba6565b9050919050565b6000602082019050818103600083015261428e81613bc9565b9050919050565b600060208201905081810360008301526142ae81613bec565b9050919050565b600060208201905081810360008301526142ce81613c32565b9050919050565b600060208201905081810360008301526142ee81613c55565b9050919050565b6000602082019050818103600083015261430e81613c78565b9050919050565b6000602082019050818103600083015261432e81613c9b565b9050919050565b6000602082019050818103600083015261434e81613cbe565b9050919050565b6000602082019050818103600083015261436e81613ce1565b9050919050565b6000602082019050818103600083015261438e81613d04565b9050919050565b600060208201905081810360008301526143ae81613d6d565b9050919050565b600060208201905081810360008301526143ce81613dd6565b9050919050565b60006020820190506143ea6000830184613df9565b92915050565b6000808335600160200384360303811261440d5761440c6149b4565b5b80840192508235915067ffffffffffffffff82111561442f5761442e6149a5565b5b60208301925060208202360383131561444b5761444a6149c3565b5b509250929050565b60008235600160600383360303811261446f5761446e6149b4565b5b80830191505092915050565b6000614485614496565b905061449182826147c7565b919050565b6000604051905090565b600067ffffffffffffffff8211156144bb576144ba614971565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156144e7576144e6614971565b5b6144f0826149d7565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061454b826146c9565b9150614556836146c9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561458b5761458a614886565b5b828201905092915050565b60006145a1826146c9565b91506145ac836146c9565b9250826145bc576145bb6148b5565b5b828204905092915050565b60006145d2826146c9565b91506145dd836146c9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561461657614615614886565b5b828202905092915050565b600061462c826146c9565b9150614637836146c9565b92508282101561464a57614649614886565b5b828203905092915050565b6000614660826146a9565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006146eb82614705565b9050919050565b60006146fe3683613496565b9050919050565b600061471082614717565b9050919050565b6000614722826146a9565b9050919050565b82818337600083830152505050565b60005b8381101561475657808201518184015260208101905061473b565b83811115614765576000848401525b50505050565b6000614776826146c9565b9150600082141561478a57614789614886565b5b600182039050919050565b600060028204905060018216806147ad57607f821691505b602082108114156147c1576147c06148e4565b5b50919050565b6147d0826149d7565b810181811067ffffffffffffffff821117156147ef576147ee614971565b5b80604052505050565b6000614803826146c9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561483657614835614886565b5b600182019050919050565b6000819050919050565b6000819050919050565b6000614860826146c9565b915061486b836146c9565b92508261487b5761487a6148b5565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4d454348414455434b3a205265616368204c696d697420000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4d454348414455434b3a20496e76616c6964207369676e657200000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f424455434b494e47533a204e6f74205261726520000000000000000000000000600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4d454348414455434b3a20546f6b656e20343034000000000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d454348414455434b3a204174206c656173742074776f206475636b7320617260008201527f6520726571756972656400000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f4d454348414455434b3a20496e76616c6964204f776e6572206f66204e465420600082015250565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b7f6d657461646174612e6a736f6e00000000000000000000000000000000000000600082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b61514881614655565b811461515357600080fd5b50565b61515f81614667565b811461516a57600080fd5b50565b61517681614673565b811461518157600080fd5b50565b61518d8161467d565b811461519857600080fd5b50565b6151a4816146c9565b81146151af57600080fd5b50565b6151bb816146d3565b81146151c657600080fd5b5056fe68747470733a2f2f697066732e6d6164776f726c642e696f2f6d656368616475636b2fa264697066735822122089071facc2f40b2fb53c32cacd1b16ff3e2e5b9872cf3fde32deef1e8053f75064736f6c63430008070033
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.