ERC-721
Overview
Max Total Supply
621 DNGIEZ
Holders
230
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
2 DNGIEZLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Dongiez
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-12 */ // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.0 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts v4.4.0 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts v4.4.0 (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.0 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts v4.4.0 (utils/Address.sol) pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.0 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.0 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.0 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol // OpenZeppelin Contracts v4.4.0 (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: @openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol // OpenZeppelin Contracts v4.4.0 (token/ERC721/extensions/ERC721URIStorage.sol) pragma solidity ^0.8.0; /** * @dev ERC721 token with storage based token URI management. */ abstract contract ERC721URIStorage is ERC721 { using Strings for uint256; // Optional mapping for token URIs mapping(uint256 => string) private _tokenURIs; /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721URIStorage: URI query for nonexistent token"); string memory _tokenURI = _tokenURIs[tokenId]; string memory base = _baseURI(); // If there is no base URI, return the token URI. if (bytes(base).length == 0) { return _tokenURI; } // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked). if (bytes(_tokenURI).length > 0) { return string(abi.encodePacked(base, _tokenURI)); } return super.tokenURI(tokenId); } /** * @dev Sets `_tokenURI` as the tokenURI of `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual { require(_exists(tokenId), "ERC721URIStorage: URI set of nonexistent token"); _tokenURIs[tokenId] = _tokenURI; } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual override { super._burn(tokenId); if (bytes(_tokenURIs[tokenId]).length != 0) { delete _tokenURIs[tokenId]; } } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.0 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/Dongiez.sol pragma solidity ^0.8.10; contract Dongiez is ERC721URIStorage, Ownable { event MintDongiez( address indexed minter, uint256 startsWith, uint256 quantity ); bool public mintStarted; bool public mintWhitelistStarted; uint256 public totalDongiez; string public baseURI; uint256 public totalCount = 9000; // Total supply uint256 public whitelistMintLimit = 900; // 900 Hard cap uint256 public batchLimit = 0; // 3 free during WL and 5 during PS uint256 public price = 50000000000000000; // 0.05 ETH IERC721 public doodleKongz; constructor( string memory _name, string memory _symbol, string memory _initialBaseURI, IERC721 _doodleKongzAddress ) ERC721(_name, _symbol) { baseURI = _initialBaseURI; doodleKongz = _doodleKongzAddress; } function totalSupply() public view virtual returns (uint256) { return totalDongiez; } function _baseURI() internal view virtual override returns (string memory) { return baseURI; } function setBaseURI(string memory _newURI) public onlyOwner { baseURI = _newURI; } function setTokenURI(uint256 _tokenId, string memory _tokenURI) public onlyOwner { _setTokenURI(_tokenId, _tokenURI); } function toggleWhitelistSale(bool _toggle) public onlyOwner { mintWhitelistStarted = _toggle; batchLimit = 3; } function toggleMintSale(bool _toggle) public onlyOwner { mintStarted = _toggle; batchLimit = 5; } function setDoodleKongzAddress(IERC721 _doodleKongzAddress) public onlyOwner { doodleKongz = _doodleKongzAddress; } function decreaseTotalSupply(uint256 _total) public onlyOwner { require(_total <= totalCount, "Increase supply not allowed"); require(_total >= totalDongiez, "Must be above total minted"); totalCount = _total; } function mintDongiezWhitelisted(uint256 _quantity) public { require(!mintStarted, "Public minting has started"); require(mintWhitelistStarted, "Whitelist mint disabled"); uint256 doodleKongzBalance = doodleKongz.balanceOf(_msgSender()); require(doodleKongzBalance > 0, "Must own at least 1 DNKZ"); require( _quantity > 0 && _quantity <= batchLimit, "Invalid quantity supplied" ); require( totalDongiez + _quantity <= totalCount, "Mint will surpass supply" ); require( totalDongiez + _quantity <= whitelistMintLimit, "Whitelist sale has ended" ); uint256 dongiezBalance = balanceOf(_msgSender()); require(dongiezBalance + _quantity <= 3, "Max 3 DNGIEZ Per Address"); emit MintDongiez(_msgSender(), totalDongiez + 1, _quantity); for (uint256 i = 0; i < _quantity; i++) { _mint(_msgSender(), 1 + totalDongiez++); } } function mintDongiez(uint256 _quantity) public payable { require(mintStarted, "Public minting has not started"); require( _quantity > 0 && _quantity <= batchLimit, "Invalid quantity supplied" ); require( totalDongiez + _quantity <= totalCount, "Mint will surpass supply" ); require(msg.value >= _quantity * price, "Not enough ETH to mint"); payable(owner()).transfer(msg.value); emit MintDongiez(_msgSender(), totalDongiez + 1, _quantity); for (uint256 i = 0; i < _quantity; i++) { _mint(_msgSender(), 1 + totalDongiez++); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initialBaseURI","type":"string"},{"internalType":"contract IERC721","name":"_doodleKongzAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"startsWith","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"MintDongiez","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"batchLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_total","type":"uint256"}],"name":"decreaseTotalSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"doodleKongz","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"mintDongiez","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"mintDongiezWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintWhitelistStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"_newURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC721","name":"_doodleKongzAddress","type":"address"}],"name":"setDoodleKongzAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"name":"setTokenURI","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":"bool","name":"_toggle","type":"bool"}],"name":"toggleMintSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_toggle","type":"bool"}],"name":"toggleWhitelistSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDongiez","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052612328600a55610384600b556000600c5566b1a2bc2ec50000600d553480156200002d57600080fd5b5060405162004bc338038062004bc38339818101604052810190620000539190620004a1565b838381600090805190602001906200006d929190620001db565b50806001908051906020019062000086929190620001db565b505050620000a96200009d6200010d60201b60201c565b6200011560201b60201c565b8160099080519060200190620000c1929190620001db565b5080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050620005d5565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001e9906200059f565b90600052602060002090601f0160209004810192826200020d576000855562000259565b82601f106200022857805160ff191683800117855562000259565b8280016001018555821562000259579182015b82811115620002585782518255916020019190600101906200023b565b5b5090506200026891906200026c565b5090565b5b80821115620002875760008160009055506001016200026d565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002f482620002a9565b810181811067ffffffffffffffff82111715620003165762000315620002ba565b5b80604052505050565b60006200032b6200028b565b9050620003398282620002e9565b919050565b600067ffffffffffffffff8211156200035c576200035b620002ba565b5b6200036782620002a9565b9050602081019050919050565b60005b838110156200039457808201518184015260208101905062000377565b83811115620003a4576000848401525b50505050565b6000620003c1620003bb846200033e565b6200031f565b905082815260208101848484011115620003e057620003df620002a4565b5b620003ed84828562000374565b509392505050565b600082601f8301126200040d576200040c6200029f565b5b81516200041f848260208601620003aa565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004558262000428565b9050919050565b6000620004698262000448565b9050919050565b6200047b816200045c565b81146200048757600080fd5b50565b6000815190506200049b8162000470565b92915050565b60008060008060808587031215620004be57620004bd62000295565b5b600085015167ffffffffffffffff811115620004df57620004de6200029a565b5b620004ed87828801620003f5565b945050602085015167ffffffffffffffff8111156200051157620005106200029a565b5b6200051f87828801620003f5565b935050604085015167ffffffffffffffff8111156200054357620005426200029a565b5b6200055187828801620003f5565b925050606062000564878288016200048a565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005b857607f821691505b60208210811415620005cf57620005ce62000570565b5b50919050565b6145de80620005e56000396000f3fe6080604052600436106101f95760003560e01c80636c0360eb1161010d578063a22cb465116100a0578063c87b56dd1161006f578063c87b56dd146106ea578063ddd1783a14610727578063e985e9c514610752578063f2fde38b1461078f578063fea3441b146107b8576101f9565b8063a22cb46514610644578063a9722cf31461066d578063b88d4fde14610698578063bbdfc47e146106c1576101f9565b80637907b22b116100dc5780637907b22b146105985780638da5cb5b146105c357806395d89b41146105ee578063a035b1fe14610619576101f9565b80636c0360eb146104f05780636e1145111461051b57806370a0823114610544578063715018a614610581576101f9565b8063383b435811610190578063527f511e1161015f578063527f511e1461041c57806355f804b31461043857806359a5544b146104615780635c5401901461048a5780636352211e146104b3576101f9565b8063383b43581461037457806342842e0e1461039f578063474740b1146103c857806349ebc2ef146103f3576101f9565b8063162094c4116101cc578063162094c4146102cc57806318160ddd146102f557806323b872dd1461032057806334eafb1114610349576101f9565b806301ffc9a7146101fe57806306fdde031461023b578063081812fc14610266578063095ea7b3146102a3575b600080fd5b34801561020a57600080fd5b5061022560048036038101906102209190612b7e565b6107e3565b6040516102329190612bc6565b60405180910390f35b34801561024757600080fd5b506102506108c5565b60405161025d9190612c7a565b60405180910390f35b34801561027257600080fd5b5061028d60048036038101906102889190612cd2565b610957565b60405161029a9190612d40565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c59190612d87565b6109dc565b005b3480156102d857600080fd5b506102f360048036038101906102ee9190612efc565b610af4565b005b34801561030157600080fd5b5061030a610b7e565b6040516103179190612f67565b60405180910390f35b34801561032c57600080fd5b5061034760048036038101906103429190612f82565b610b88565b005b34801561035557600080fd5b5061035e610be8565b60405161036b9190612f67565b60405180910390f35b34801561038057600080fd5b50610389610bee565b6040516103969190613034565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190612f82565b610c14565b005b3480156103d457600080fd5b506103dd610c34565b6040516103ea9190612f67565b60405180910390f35b3480156103ff57600080fd5b5061041a6004803603810190610415919061307b565b610c3a565b005b61043660048036038101906104319190612cd2565b610cdb565b005b34801561044457600080fd5b5061045f600480360381019061045a91906130a8565b610f25565b005b34801561046d57600080fd5b506104886004803603810190610483919061312f565b610fbb565b005b34801561049657600080fd5b506104b160048036038101906104ac919061307b565b61107b565b005b3480156104bf57600080fd5b506104da60048036038101906104d59190612cd2565b61111c565b6040516104e79190612d40565b60405180910390f35b3480156104fc57600080fd5b506105056111ce565b6040516105129190612c7a565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d9190612cd2565b61125c565b005b34801561055057600080fd5b5061056b6004803603810190610566919061315c565b61136c565b6040516105789190612f67565b60405180910390f35b34801561058d57600080fd5b50610596611424565b005b3480156105a457600080fd5b506105ad6114ac565b6040516105ba9190612bc6565b60405180910390f35b3480156105cf57600080fd5b506105d86114bf565b6040516105e59190612d40565b60405180910390f35b3480156105fa57600080fd5b506106036114e9565b6040516106109190612c7a565b60405180910390f35b34801561062557600080fd5b5061062e61157b565b60405161063b9190612f67565b60405180910390f35b34801561065057600080fd5b5061066b60048036038101906106669190613189565b611581565b005b34801561067957600080fd5b50610682611597565b60405161068f9190612bc6565b60405180910390f35b3480156106a457600080fd5b506106bf60048036038101906106ba919061326a565b6115aa565b005b3480156106cd57600080fd5b506106e860048036038101906106e39190612cd2565b61160c565b005b3480156106f657600080fd5b50610711600480360381019061070c9190612cd2565b6119a9565b60405161071e9190612c7a565b60405180910390f35b34801561073357600080fd5b5061073c611afb565b6040516107499190612f67565b60405180910390f35b34801561075e57600080fd5b50610779600480360381019061077491906132ed565b611b01565b6040516107869190612bc6565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b1919061315c565b611b95565b005b3480156107c457600080fd5b506107cd611c8d565b6040516107da9190612f67565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108ae57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108be57506108bd82611c93565b5b9050919050565b6060600080546108d49061335c565b80601f01602080910402602001604051908101604052809291908181526020018280546109009061335c565b801561094d5780601f106109225761010080835404028352916020019161094d565b820191906000526020600020905b81548152906001019060200180831161093057829003601f168201915b5050505050905090565b600061096282611cfd565b6109a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099890613400565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109e78261111c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4f90613492565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a77611d69565b73ffffffffffffffffffffffffffffffffffffffff161480610aa65750610aa581610aa0611d69565b611b01565b5b610ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adc90613524565b60405180910390fd5b610aef8383611d71565b505050565b610afc611d69565b73ffffffffffffffffffffffffffffffffffffffff16610b1a6114bf565b73ffffffffffffffffffffffffffffffffffffffff1614610b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6790613590565b60405180910390fd5b610b7a8282611e2a565b5050565b6000600854905090565b610b99610b93611d69565b82611e9e565b610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf90613622565b60405180910390fd5b610be3838383611f7c565b505050565b600a5481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c2f838383604051806020016040528060008152506115aa565b505050565b600c5481565b610c42611d69565b73ffffffffffffffffffffffffffffffffffffffff16610c606114bf565b73ffffffffffffffffffffffffffffffffffffffff1614610cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cad90613590565b60405180910390fd5b80600760146101000a81548160ff0219169083151502179055506005600c8190555050565b600760149054906101000a900460ff16610d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d219061368e565b60405180910390fd5b600081118015610d3c5750600c548111155b610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d72906136fa565b60405180910390fd5b600a5481600854610d8c9190613749565b1115610dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc4906137eb565b60405180910390fd5b600d5481610ddb919061380b565b341015610e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e14906138b1565b60405180910390fd5b610e256114bf565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610e6a573d6000803e3d6000fd5b50610e73611d69565b73ffffffffffffffffffffffffffffffffffffffff167f24e540e557859ba61370e70b6d8b213f649a98ef0ef9a65c9adf84265d4373de6001600854610eb99190613749565b83604051610ec89291906138d1565b60405180910390a260005b81811015610f2157610f0e610ee6611d69565b60086000815480929190610ef9906138fa565b919050556001610f099190613749565b6121d8565b8080610f19906138fa565b915050610ed3565b5050565b610f2d611d69565b73ffffffffffffffffffffffffffffffffffffffff16610f4b6114bf565b73ffffffffffffffffffffffffffffffffffffffff1614610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9890613590565b60405180910390fd5b8060099080519060200190610fb7929190612a6f565b5050565b610fc3611d69565b73ffffffffffffffffffffffffffffffffffffffff16610fe16114bf565b73ffffffffffffffffffffffffffffffffffffffff1614611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90613590565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611083611d69565b73ffffffffffffffffffffffffffffffffffffffff166110a16114bf565b73ffffffffffffffffffffffffffffffffffffffff16146110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90613590565b60405180910390fd5b80600760156101000a81548160ff0219169083151502179055506003600c8190555050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bc906139b5565b60405180910390fd5b80915050919050565b600980546111db9061335c565b80601f01602080910402602001604051908101604052809291908181526020018280546112079061335c565b80156112545780601f1061122957610100808354040283529160200191611254565b820191906000526020600020905b81548152906001019060200180831161123757829003601f168201915b505050505081565b611264611d69565b73ffffffffffffffffffffffffffffffffffffffff166112826114bf565b73ffffffffffffffffffffffffffffffffffffffff16146112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf90613590565b60405180910390fd5b600a5481111561131d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131490613a21565b60405180910390fd5b600854811015611362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135990613a8d565b60405180910390fd5b80600a8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d490613b1f565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61142c611d69565b73ffffffffffffffffffffffffffffffffffffffff1661144a6114bf565b73ffffffffffffffffffffffffffffffffffffffff16146114a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149790613590565b60405180910390fd5b6114aa60006123a6565b565b600760159054906101000a900460ff1681565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546114f89061335c565b80601f01602080910402602001604051908101604052809291908181526020018280546115249061335c565b80156115715780601f1061154657610100808354040283529160200191611571565b820191906000526020600020905b81548152906001019060200180831161155457829003601f168201915b5050505050905090565b600d5481565b61159361158c611d69565b838361246c565b5050565b600760149054906101000a900460ff1681565b6115bb6115b5611d69565b83611e9e565b6115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f190613622565b60405180910390fd5b611606848484846125d9565b50505050565b600760149054906101000a900460ff161561165c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165390613b8b565b60405180910390fd5b600760159054906101000a900460ff166116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a290613bf7565b60405180910390fd5b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082316116f3611d69565b6040518263ffffffff1660e01b815260040161170f9190612d40565b602060405180830381865afa15801561172c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117509190613c2c565b905060008111611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c90613ca5565b60405180910390fd5b6000821180156117a75750600c548211155b6117e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dd906136fa565b60405180910390fd5b600a54826008546117f79190613749565b1115611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f906137eb565b60405180910390fd5b600b54826008546118499190613749565b111561188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188190613d11565b60405180910390fd5b600061189c611897611d69565b61136c565b9050600383826118ac9190613749565b11156118ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e490613d7d565b60405180910390fd5b6118f5611d69565b73ffffffffffffffffffffffffffffffffffffffff167f24e540e557859ba61370e70b6d8b213f649a98ef0ef9a65c9adf84265d4373de600160085461193b9190613749565b8560405161194a9291906138d1565b60405180910390a260005b838110156119a357611990611968611d69565b6008600081548092919061197b906138fa565b91905055600161198b9190613749565b6121d8565b808061199b906138fa565b915050611955565b50505050565b60606119b482611cfd565b6119f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ea90613e0f565b60405180910390fd5b6000600660008481526020019081526020016000208054611a139061335c565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3f9061335c565b8015611a8c5780601f10611a6157610100808354040283529160200191611a8c565b820191906000526020600020905b815481529060010190602001808311611a6f57829003601f168201915b505050505090506000611a9d612635565b9050600081511415611ab3578192505050611af6565b600082511115611ae8578082604051602001611ad0929190613e6b565b60405160208183030381529060405292505050611af6565b611af1846126c7565b925050505b919050565b600b5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611b9d611d69565b73ffffffffffffffffffffffffffffffffffffffff16611bbb6114bf565b73ffffffffffffffffffffffffffffffffffffffff1614611c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0890613590565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7890613f01565b60405180910390fd5b611c8a816123a6565b50565b60085481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611de48361111c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b611e3382611cfd565b611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6990613f93565b60405180910390fd5b80600660008481526020019081526020016000209080519060200190611e99929190612a6f565b505050565b6000611ea982611cfd565b611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf90614025565b60405180910390fd5b6000611ef38361111c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f6257508373ffffffffffffffffffffffffffffffffffffffff16611f4a84610957565b73ffffffffffffffffffffffffffffffffffffffff16145b80611f735750611f728185611b01565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611f9c8261111c565b73ffffffffffffffffffffffffffffffffffffffff1614611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe9906140b7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205990614149565b60405180910390fd5b61206d83838361276e565b612078600082611d71565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120c89190614169565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461211f9190613749565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f906141e9565b60405180910390fd5b61225181611cfd565b15612291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228890614255565b60405180910390fd5b61229d6000838361276e565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122ed9190613749565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d2906142c1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516125cc9190612bc6565b60405180910390a3505050565b6125e4848484611f7c565b6125f084848484612773565b61262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262690614353565b60405180910390fd5b50505050565b6060600980546126449061335c565b80601f01602080910402602001604051908101604052809291908181526020018280546126709061335c565b80156126bd5780601f10612692576101008083540402835291602001916126bd565b820191906000526020600020905b8154815290600101906020018083116126a057829003601f168201915b5050505050905090565b60606126d282611cfd565b612711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612708906143e5565b60405180910390fd5b600061271b612635565b9050600081511161273b5760405180602001604052806000815250612766565b80612745846128fb565b604051602001612756929190613e6b565b6040516020818303038152906040525b915050919050565b505050565b60006127948473ffffffffffffffffffffffffffffffffffffffff16612a5c565b156128ee578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026127bd611d69565b8786866040518563ffffffff1660e01b81526004016127df949392919061445a565b6020604051808303816000875af192505050801561281b57506040513d601f19601f8201168201806040525081019061281891906144bb565b60015b61289e573d806000811461284b576040519150601f19603f3d011682016040523d82523d6000602084013e612850565b606091505b50600081511415612896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288d90614353565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506128f3565b600190505b949350505050565b60606000821415612943576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612a57565b600082905060005b6000821461297557808061295e906138fa565b915050600a8261296e9190614517565b915061294b565b60008167ffffffffffffffff81111561299157612990612dd1565b5b6040519080825280601f01601f1916602001820160405280156129c35781602001600182028036833780820191505090505b5090505b60008514612a50576001826129dc9190614169565b9150600a856129eb9190614548565b60306129f79190613749565b60f81b818381518110612a0d57612a0c614579565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612a499190614517565b94506129c7565b8093505050505b919050565b600080823b905060008111915050919050565b828054612a7b9061335c565b90600052602060002090601f016020900481019282612a9d5760008555612ae4565b82601f10612ab657805160ff1916838001178555612ae4565b82800160010185558215612ae4579182015b82811115612ae3578251825591602001919060010190612ac8565b5b509050612af19190612af5565b5090565b5b80821115612b0e576000816000905550600101612af6565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612b5b81612b26565b8114612b6657600080fd5b50565b600081359050612b7881612b52565b92915050565b600060208284031215612b9457612b93612b1c565b5b6000612ba284828501612b69565b91505092915050565b60008115159050919050565b612bc081612bab565b82525050565b6000602082019050612bdb6000830184612bb7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c1b578082015181840152602081019050612c00565b83811115612c2a576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c4c82612be1565b612c568185612bec565b9350612c66818560208601612bfd565b612c6f81612c30565b840191505092915050565b60006020820190508181036000830152612c948184612c41565b905092915050565b6000819050919050565b612caf81612c9c565b8114612cba57600080fd5b50565b600081359050612ccc81612ca6565b92915050565b600060208284031215612ce857612ce7612b1c565b5b6000612cf684828501612cbd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d2a82612cff565b9050919050565b612d3a81612d1f565b82525050565b6000602082019050612d556000830184612d31565b92915050565b612d6481612d1f565b8114612d6f57600080fd5b50565b600081359050612d8181612d5b565b92915050565b60008060408385031215612d9e57612d9d612b1c565b5b6000612dac85828601612d72565b9250506020612dbd85828601612cbd565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e0982612c30565b810181811067ffffffffffffffff82111715612e2857612e27612dd1565b5b80604052505050565b6000612e3b612b12565b9050612e478282612e00565b919050565b600067ffffffffffffffff821115612e6757612e66612dd1565b5b612e7082612c30565b9050602081019050919050565b82818337600083830152505050565b6000612e9f612e9a84612e4c565b612e31565b905082815260208101848484011115612ebb57612eba612dcc565b5b612ec6848285612e7d565b509392505050565b600082601f830112612ee357612ee2612dc7565b5b8135612ef3848260208601612e8c565b91505092915050565b60008060408385031215612f1357612f12612b1c565b5b6000612f2185828601612cbd565b925050602083013567ffffffffffffffff811115612f4257612f41612b21565b5b612f4e85828601612ece565b9150509250929050565b612f6181612c9c565b82525050565b6000602082019050612f7c6000830184612f58565b92915050565b600080600060608486031215612f9b57612f9a612b1c565b5b6000612fa986828701612d72565b9350506020612fba86828701612d72565b9250506040612fcb86828701612cbd565b9150509250925092565b6000819050919050565b6000612ffa612ff5612ff084612cff565b612fd5565b612cff565b9050919050565b600061300c82612fdf565b9050919050565b600061301e82613001565b9050919050565b61302e81613013565b82525050565b60006020820190506130496000830184613025565b92915050565b61305881612bab565b811461306357600080fd5b50565b6000813590506130758161304f565b92915050565b60006020828403121561309157613090612b1c565b5b600061309f84828501613066565b91505092915050565b6000602082840312156130be576130bd612b1c565b5b600082013567ffffffffffffffff8111156130dc576130db612b21565b5b6130e884828501612ece565b91505092915050565b60006130fc82612d1f565b9050919050565b61310c816130f1565b811461311757600080fd5b50565b60008135905061312981613103565b92915050565b60006020828403121561314557613144612b1c565b5b60006131538482850161311a565b91505092915050565b60006020828403121561317257613171612b1c565b5b600061318084828501612d72565b91505092915050565b600080604083850312156131a05761319f612b1c565b5b60006131ae85828601612d72565b92505060206131bf85828601613066565b9150509250929050565b600067ffffffffffffffff8211156131e4576131e3612dd1565b5b6131ed82612c30565b9050602081019050919050565b600061320d613208846131c9565b612e31565b90508281526020810184848401111561322957613228612dcc565b5b613234848285612e7d565b509392505050565b600082601f83011261325157613250612dc7565b5b81356132618482602086016131fa565b91505092915050565b6000806000806080858703121561328457613283612b1c565b5b600061329287828801612d72565b94505060206132a387828801612d72565b93505060406132b487828801612cbd565b925050606085013567ffffffffffffffff8111156132d5576132d4612b21565b5b6132e18782880161323c565b91505092959194509250565b6000806040838503121561330457613303612b1c565b5b600061331285828601612d72565b925050602061332385828601612d72565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061337457607f821691505b602082108114156133885761338761332d565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006133ea602c83612bec565b91506133f58261338e565b604082019050919050565b60006020820190508181036000830152613419816133dd565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061347c602183612bec565b915061348782613420565b604082019050919050565b600060208201905081810360008301526134ab8161346f565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b600061350e603883612bec565b9150613519826134b2565b604082019050919050565b6000602082019050818103600083015261353d81613501565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061357a602083612bec565b915061358582613544565b602082019050919050565b600060208201905081810360008301526135a98161356d565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b600061360c603183612bec565b9150613617826135b0565b604082019050919050565b6000602082019050818103600083015261363b816135ff565b9050919050565b7f5075626c6963206d696e74696e6720686173206e6f7420737461727465640000600082015250565b6000613678601e83612bec565b915061368382613642565b602082019050919050565b600060208201905081810360008301526136a78161366b565b9050919050565b7f496e76616c6964207175616e7469747920737570706c69656400000000000000600082015250565b60006136e4601983612bec565b91506136ef826136ae565b602082019050919050565b60006020820190508181036000830152613713816136d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061375482612c9c565b915061375f83612c9c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156137945761379361371a565b5b828201905092915050565b7f4d696e742077696c6c207375727061737320737570706c790000000000000000600082015250565b60006137d5601883612bec565b91506137e08261379f565b602082019050919050565b60006020820190508181036000830152613804816137c8565b9050919050565b600061381682612c9c565b915061382183612c9c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561385a5761385961371a565b5b828202905092915050565b7f4e6f7420656e6f7567682045544820746f206d696e7400000000000000000000600082015250565b600061389b601683612bec565b91506138a682613865565b602082019050919050565b600060208201905081810360008301526138ca8161388e565b9050919050565b60006040820190506138e66000830185612f58565b6138f36020830184612f58565b9392505050565b600061390582612c9c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156139385761393761371a565b5b600182019050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b600061399f602983612bec565b91506139aa82613943565b604082019050919050565b600060208201905081810360008301526139ce81613992565b9050919050565b7f496e63726561736520737570706c79206e6f7420616c6c6f7765640000000000600082015250565b6000613a0b601b83612bec565b9150613a16826139d5565b602082019050919050565b60006020820190508181036000830152613a3a816139fe565b9050919050565b7f4d7573742062652061626f766520746f74616c206d696e746564000000000000600082015250565b6000613a77601a83612bec565b9150613a8282613a41565b602082019050919050565b60006020820190508181036000830152613aa681613a6a565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613b09602a83612bec565b9150613b1482613aad565b604082019050919050565b60006020820190508181036000830152613b3881613afc565b9050919050565b7f5075626c6963206d696e74696e67206861732073746172746564000000000000600082015250565b6000613b75601a83612bec565b9150613b8082613b3f565b602082019050919050565b60006020820190508181036000830152613ba481613b68565b9050919050565b7f57686974656c697374206d696e742064697361626c6564000000000000000000600082015250565b6000613be1601783612bec565b9150613bec82613bab565b602082019050919050565b60006020820190508181036000830152613c1081613bd4565b9050919050565b600081519050613c2681612ca6565b92915050565b600060208284031215613c4257613c41612b1c565b5b6000613c5084828501613c17565b91505092915050565b7f4d757374206f776e206174206c65617374203120444e4b5a0000000000000000600082015250565b6000613c8f601883612bec565b9150613c9a82613c59565b602082019050919050565b60006020820190508181036000830152613cbe81613c82565b9050919050565b7f57686974656c6973742073616c652068617320656e6465640000000000000000600082015250565b6000613cfb601883612bec565b9150613d0682613cc5565b602082019050919050565b60006020820190508181036000830152613d2a81613cee565b9050919050565b7f4d6178203320444e4749455a2050657220416464726573730000000000000000600082015250565b6000613d67601883612bec565b9150613d7282613d31565b602082019050919050565b60006020820190508181036000830152613d9681613d5a565b9050919050565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b6000613df9603183612bec565b9150613e0482613d9d565b604082019050919050565b60006020820190508181036000830152613e2881613dec565b9050919050565b600081905092915050565b6000613e4582612be1565b613e4f8185613e2f565b9350613e5f818560208601612bfd565b80840191505092915050565b6000613e778285613e3a565b9150613e838284613e3a565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613eeb602683612bec565b9150613ef682613e8f565b604082019050919050565b60006020820190508181036000830152613f1a81613ede565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000613f7d602e83612bec565b9150613f8882613f21565b604082019050919050565b60006020820190508181036000830152613fac81613f70565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061400f602c83612bec565b915061401a82613fb3565b604082019050919050565b6000602082019050818103600083015261403e81614002565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b60006140a1602983612bec565b91506140ac82614045565b604082019050919050565b600060208201905081810360008301526140d081614094565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614133602483612bec565b915061413e826140d7565b604082019050919050565b6000602082019050818103600083015261416281614126565b9050919050565b600061417482612c9c565b915061417f83612c9c565b9250828210156141925761419161371a565b5b828203905092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006141d3602083612bec565b91506141de8261419d565b602082019050919050565b60006020820190508181036000830152614202816141c6565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061423f601c83612bec565b915061424a82614209565b602082019050919050565b6000602082019050818103600083015261426e81614232565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006142ab601983612bec565b91506142b682614275565b602082019050919050565b600060208201905081810360008301526142da8161429e565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061433d603283612bec565b9150614348826142e1565b604082019050919050565b6000602082019050818103600083015261436c81614330565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006143cf602f83612bec565b91506143da82614373565b604082019050919050565b600060208201905081810360008301526143fe816143c2565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061442c82614405565b6144368185614410565b9350614446818560208601612bfd565b61444f81612c30565b840191505092915050565b600060808201905061446f6000830187612d31565b61447c6020830186612d31565b6144896040830185612f58565b818103606083015261449b8184614421565b905095945050505050565b6000815190506144b581612b52565b92915050565b6000602082840312156144d1576144d0612b1c565b5b60006144df848285016144a6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061452282612c9c565b915061452d83612c9c565b92508261453d5761453c6144e8565b5b828204905092915050565b600061455382612c9c565b915061455e83612c9c565b92508261456e5761456d6144e8565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122073a6c2e5e5529be8ab6037a3df88d02c898a00b9c8b57cbae42e81a30e14010764736f6c634300080a0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000e45693dbe1f93815265adf4d4555d8a9100ceb760000000000000000000000000000000000000000000000000000000000000014446f6f646c65204b6f6e677a20446f6e6769657a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000006444e4749455a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d5456394b33634248485a5a3278464c354d557844326936386e5576353547385a4d79566d7867324c517a75322f00000000000000000000
Deployed Bytecode
0x6080604052600436106101f95760003560e01c80636c0360eb1161010d578063a22cb465116100a0578063c87b56dd1161006f578063c87b56dd146106ea578063ddd1783a14610727578063e985e9c514610752578063f2fde38b1461078f578063fea3441b146107b8576101f9565b8063a22cb46514610644578063a9722cf31461066d578063b88d4fde14610698578063bbdfc47e146106c1576101f9565b80637907b22b116100dc5780637907b22b146105985780638da5cb5b146105c357806395d89b41146105ee578063a035b1fe14610619576101f9565b80636c0360eb146104f05780636e1145111461051b57806370a0823114610544578063715018a614610581576101f9565b8063383b435811610190578063527f511e1161015f578063527f511e1461041c57806355f804b31461043857806359a5544b146104615780635c5401901461048a5780636352211e146104b3576101f9565b8063383b43581461037457806342842e0e1461039f578063474740b1146103c857806349ebc2ef146103f3576101f9565b8063162094c4116101cc578063162094c4146102cc57806318160ddd146102f557806323b872dd1461032057806334eafb1114610349576101f9565b806301ffc9a7146101fe57806306fdde031461023b578063081812fc14610266578063095ea7b3146102a3575b600080fd5b34801561020a57600080fd5b5061022560048036038101906102209190612b7e565b6107e3565b6040516102329190612bc6565b60405180910390f35b34801561024757600080fd5b506102506108c5565b60405161025d9190612c7a565b60405180910390f35b34801561027257600080fd5b5061028d60048036038101906102889190612cd2565b610957565b60405161029a9190612d40565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c59190612d87565b6109dc565b005b3480156102d857600080fd5b506102f360048036038101906102ee9190612efc565b610af4565b005b34801561030157600080fd5b5061030a610b7e565b6040516103179190612f67565b60405180910390f35b34801561032c57600080fd5b5061034760048036038101906103429190612f82565b610b88565b005b34801561035557600080fd5b5061035e610be8565b60405161036b9190612f67565b60405180910390f35b34801561038057600080fd5b50610389610bee565b6040516103969190613034565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190612f82565b610c14565b005b3480156103d457600080fd5b506103dd610c34565b6040516103ea9190612f67565b60405180910390f35b3480156103ff57600080fd5b5061041a6004803603810190610415919061307b565b610c3a565b005b61043660048036038101906104319190612cd2565b610cdb565b005b34801561044457600080fd5b5061045f600480360381019061045a91906130a8565b610f25565b005b34801561046d57600080fd5b506104886004803603810190610483919061312f565b610fbb565b005b34801561049657600080fd5b506104b160048036038101906104ac919061307b565b61107b565b005b3480156104bf57600080fd5b506104da60048036038101906104d59190612cd2565b61111c565b6040516104e79190612d40565b60405180910390f35b3480156104fc57600080fd5b506105056111ce565b6040516105129190612c7a565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d9190612cd2565b61125c565b005b34801561055057600080fd5b5061056b6004803603810190610566919061315c565b61136c565b6040516105789190612f67565b60405180910390f35b34801561058d57600080fd5b50610596611424565b005b3480156105a457600080fd5b506105ad6114ac565b6040516105ba9190612bc6565b60405180910390f35b3480156105cf57600080fd5b506105d86114bf565b6040516105e59190612d40565b60405180910390f35b3480156105fa57600080fd5b506106036114e9565b6040516106109190612c7a565b60405180910390f35b34801561062557600080fd5b5061062e61157b565b60405161063b9190612f67565b60405180910390f35b34801561065057600080fd5b5061066b60048036038101906106669190613189565b611581565b005b34801561067957600080fd5b50610682611597565b60405161068f9190612bc6565b60405180910390f35b3480156106a457600080fd5b506106bf60048036038101906106ba919061326a565b6115aa565b005b3480156106cd57600080fd5b506106e860048036038101906106e39190612cd2565b61160c565b005b3480156106f657600080fd5b50610711600480360381019061070c9190612cd2565b6119a9565b60405161071e9190612c7a565b60405180910390f35b34801561073357600080fd5b5061073c611afb565b6040516107499190612f67565b60405180910390f35b34801561075e57600080fd5b50610779600480360381019061077491906132ed565b611b01565b6040516107869190612bc6565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b1919061315c565b611b95565b005b3480156107c457600080fd5b506107cd611c8d565b6040516107da9190612f67565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108ae57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108be57506108bd82611c93565b5b9050919050565b6060600080546108d49061335c565b80601f01602080910402602001604051908101604052809291908181526020018280546109009061335c565b801561094d5780601f106109225761010080835404028352916020019161094d565b820191906000526020600020905b81548152906001019060200180831161093057829003601f168201915b5050505050905090565b600061096282611cfd565b6109a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099890613400565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109e78261111c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4f90613492565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a77611d69565b73ffffffffffffffffffffffffffffffffffffffff161480610aa65750610aa581610aa0611d69565b611b01565b5b610ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adc90613524565b60405180910390fd5b610aef8383611d71565b505050565b610afc611d69565b73ffffffffffffffffffffffffffffffffffffffff16610b1a6114bf565b73ffffffffffffffffffffffffffffffffffffffff1614610b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6790613590565b60405180910390fd5b610b7a8282611e2a565b5050565b6000600854905090565b610b99610b93611d69565b82611e9e565b610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf90613622565b60405180910390fd5b610be3838383611f7c565b505050565b600a5481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c2f838383604051806020016040528060008152506115aa565b505050565b600c5481565b610c42611d69565b73ffffffffffffffffffffffffffffffffffffffff16610c606114bf565b73ffffffffffffffffffffffffffffffffffffffff1614610cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cad90613590565b60405180910390fd5b80600760146101000a81548160ff0219169083151502179055506005600c8190555050565b600760149054906101000a900460ff16610d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d219061368e565b60405180910390fd5b600081118015610d3c5750600c548111155b610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d72906136fa565b60405180910390fd5b600a5481600854610d8c9190613749565b1115610dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc4906137eb565b60405180910390fd5b600d5481610ddb919061380b565b341015610e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e14906138b1565b60405180910390fd5b610e256114bf565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610e6a573d6000803e3d6000fd5b50610e73611d69565b73ffffffffffffffffffffffffffffffffffffffff167f24e540e557859ba61370e70b6d8b213f649a98ef0ef9a65c9adf84265d4373de6001600854610eb99190613749565b83604051610ec89291906138d1565b60405180910390a260005b81811015610f2157610f0e610ee6611d69565b60086000815480929190610ef9906138fa565b919050556001610f099190613749565b6121d8565b8080610f19906138fa565b915050610ed3565b5050565b610f2d611d69565b73ffffffffffffffffffffffffffffffffffffffff16610f4b6114bf565b73ffffffffffffffffffffffffffffffffffffffff1614610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9890613590565b60405180910390fd5b8060099080519060200190610fb7929190612a6f565b5050565b610fc3611d69565b73ffffffffffffffffffffffffffffffffffffffff16610fe16114bf565b73ffffffffffffffffffffffffffffffffffffffff1614611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90613590565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611083611d69565b73ffffffffffffffffffffffffffffffffffffffff166110a16114bf565b73ffffffffffffffffffffffffffffffffffffffff16146110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90613590565b60405180910390fd5b80600760156101000a81548160ff0219169083151502179055506003600c8190555050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bc906139b5565b60405180910390fd5b80915050919050565b600980546111db9061335c565b80601f01602080910402602001604051908101604052809291908181526020018280546112079061335c565b80156112545780601f1061122957610100808354040283529160200191611254565b820191906000526020600020905b81548152906001019060200180831161123757829003601f168201915b505050505081565b611264611d69565b73ffffffffffffffffffffffffffffffffffffffff166112826114bf565b73ffffffffffffffffffffffffffffffffffffffff16146112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf90613590565b60405180910390fd5b600a5481111561131d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131490613a21565b60405180910390fd5b600854811015611362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135990613a8d565b60405180910390fd5b80600a8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d490613b1f565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61142c611d69565b73ffffffffffffffffffffffffffffffffffffffff1661144a6114bf565b73ffffffffffffffffffffffffffffffffffffffff16146114a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149790613590565b60405180910390fd5b6114aa60006123a6565b565b600760159054906101000a900460ff1681565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546114f89061335c565b80601f01602080910402602001604051908101604052809291908181526020018280546115249061335c565b80156115715780601f1061154657610100808354040283529160200191611571565b820191906000526020600020905b81548152906001019060200180831161155457829003601f168201915b5050505050905090565b600d5481565b61159361158c611d69565b838361246c565b5050565b600760149054906101000a900460ff1681565b6115bb6115b5611d69565b83611e9e565b6115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f190613622565b60405180910390fd5b611606848484846125d9565b50505050565b600760149054906101000a900460ff161561165c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165390613b8b565b60405180910390fd5b600760159054906101000a900460ff166116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a290613bf7565b60405180910390fd5b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082316116f3611d69565b6040518263ffffffff1660e01b815260040161170f9190612d40565b602060405180830381865afa15801561172c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117509190613c2c565b905060008111611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c90613ca5565b60405180910390fd5b6000821180156117a75750600c548211155b6117e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dd906136fa565b60405180910390fd5b600a54826008546117f79190613749565b1115611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f906137eb565b60405180910390fd5b600b54826008546118499190613749565b111561188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188190613d11565b60405180910390fd5b600061189c611897611d69565b61136c565b9050600383826118ac9190613749565b11156118ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e490613d7d565b60405180910390fd5b6118f5611d69565b73ffffffffffffffffffffffffffffffffffffffff167f24e540e557859ba61370e70b6d8b213f649a98ef0ef9a65c9adf84265d4373de600160085461193b9190613749565b8560405161194a9291906138d1565b60405180910390a260005b838110156119a357611990611968611d69565b6008600081548092919061197b906138fa565b91905055600161198b9190613749565b6121d8565b808061199b906138fa565b915050611955565b50505050565b60606119b482611cfd565b6119f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ea90613e0f565b60405180910390fd5b6000600660008481526020019081526020016000208054611a139061335c565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3f9061335c565b8015611a8c5780601f10611a6157610100808354040283529160200191611a8c565b820191906000526020600020905b815481529060010190602001808311611a6f57829003601f168201915b505050505090506000611a9d612635565b9050600081511415611ab3578192505050611af6565b600082511115611ae8578082604051602001611ad0929190613e6b565b60405160208183030381529060405292505050611af6565b611af1846126c7565b925050505b919050565b600b5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611b9d611d69565b73ffffffffffffffffffffffffffffffffffffffff16611bbb6114bf565b73ffffffffffffffffffffffffffffffffffffffff1614611c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0890613590565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7890613f01565b60405180910390fd5b611c8a816123a6565b50565b60085481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611de48361111c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b611e3382611cfd565b611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6990613f93565b60405180910390fd5b80600660008481526020019081526020016000209080519060200190611e99929190612a6f565b505050565b6000611ea982611cfd565b611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf90614025565b60405180910390fd5b6000611ef38361111c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f6257508373ffffffffffffffffffffffffffffffffffffffff16611f4a84610957565b73ffffffffffffffffffffffffffffffffffffffff16145b80611f735750611f728185611b01565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611f9c8261111c565b73ffffffffffffffffffffffffffffffffffffffff1614611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe9906140b7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205990614149565b60405180910390fd5b61206d83838361276e565b612078600082611d71565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120c89190614169565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461211f9190613749565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f906141e9565b60405180910390fd5b61225181611cfd565b15612291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228890614255565b60405180910390fd5b61229d6000838361276e565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122ed9190613749565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d2906142c1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516125cc9190612bc6565b60405180910390a3505050565b6125e4848484611f7c565b6125f084848484612773565b61262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262690614353565b60405180910390fd5b50505050565b6060600980546126449061335c565b80601f01602080910402602001604051908101604052809291908181526020018280546126709061335c565b80156126bd5780601f10612692576101008083540402835291602001916126bd565b820191906000526020600020905b8154815290600101906020018083116126a057829003601f168201915b5050505050905090565b60606126d282611cfd565b612711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612708906143e5565b60405180910390fd5b600061271b612635565b9050600081511161273b5760405180602001604052806000815250612766565b80612745846128fb565b604051602001612756929190613e6b565b6040516020818303038152906040525b915050919050565b505050565b60006127948473ffffffffffffffffffffffffffffffffffffffff16612a5c565b156128ee578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026127bd611d69565b8786866040518563ffffffff1660e01b81526004016127df949392919061445a565b6020604051808303816000875af192505050801561281b57506040513d601f19601f8201168201806040525081019061281891906144bb565b60015b61289e573d806000811461284b576040519150601f19603f3d011682016040523d82523d6000602084013e612850565b606091505b50600081511415612896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288d90614353565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506128f3565b600190505b949350505050565b60606000821415612943576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612a57565b600082905060005b6000821461297557808061295e906138fa565b915050600a8261296e9190614517565b915061294b565b60008167ffffffffffffffff81111561299157612990612dd1565b5b6040519080825280601f01601f1916602001820160405280156129c35781602001600182028036833780820191505090505b5090505b60008514612a50576001826129dc9190614169565b9150600a856129eb9190614548565b60306129f79190613749565b60f81b818381518110612a0d57612a0c614579565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612a499190614517565b94506129c7565b8093505050505b919050565b600080823b905060008111915050919050565b828054612a7b9061335c565b90600052602060002090601f016020900481019282612a9d5760008555612ae4565b82601f10612ab657805160ff1916838001178555612ae4565b82800160010185558215612ae4579182015b82811115612ae3578251825591602001919060010190612ac8565b5b509050612af19190612af5565b5090565b5b80821115612b0e576000816000905550600101612af6565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612b5b81612b26565b8114612b6657600080fd5b50565b600081359050612b7881612b52565b92915050565b600060208284031215612b9457612b93612b1c565b5b6000612ba284828501612b69565b91505092915050565b60008115159050919050565b612bc081612bab565b82525050565b6000602082019050612bdb6000830184612bb7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c1b578082015181840152602081019050612c00565b83811115612c2a576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c4c82612be1565b612c568185612bec565b9350612c66818560208601612bfd565b612c6f81612c30565b840191505092915050565b60006020820190508181036000830152612c948184612c41565b905092915050565b6000819050919050565b612caf81612c9c565b8114612cba57600080fd5b50565b600081359050612ccc81612ca6565b92915050565b600060208284031215612ce857612ce7612b1c565b5b6000612cf684828501612cbd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d2a82612cff565b9050919050565b612d3a81612d1f565b82525050565b6000602082019050612d556000830184612d31565b92915050565b612d6481612d1f565b8114612d6f57600080fd5b50565b600081359050612d8181612d5b565b92915050565b60008060408385031215612d9e57612d9d612b1c565b5b6000612dac85828601612d72565b9250506020612dbd85828601612cbd565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e0982612c30565b810181811067ffffffffffffffff82111715612e2857612e27612dd1565b5b80604052505050565b6000612e3b612b12565b9050612e478282612e00565b919050565b600067ffffffffffffffff821115612e6757612e66612dd1565b5b612e7082612c30565b9050602081019050919050565b82818337600083830152505050565b6000612e9f612e9a84612e4c565b612e31565b905082815260208101848484011115612ebb57612eba612dcc565b5b612ec6848285612e7d565b509392505050565b600082601f830112612ee357612ee2612dc7565b5b8135612ef3848260208601612e8c565b91505092915050565b60008060408385031215612f1357612f12612b1c565b5b6000612f2185828601612cbd565b925050602083013567ffffffffffffffff811115612f4257612f41612b21565b5b612f4e85828601612ece565b9150509250929050565b612f6181612c9c565b82525050565b6000602082019050612f7c6000830184612f58565b92915050565b600080600060608486031215612f9b57612f9a612b1c565b5b6000612fa986828701612d72565b9350506020612fba86828701612d72565b9250506040612fcb86828701612cbd565b9150509250925092565b6000819050919050565b6000612ffa612ff5612ff084612cff565b612fd5565b612cff565b9050919050565b600061300c82612fdf565b9050919050565b600061301e82613001565b9050919050565b61302e81613013565b82525050565b60006020820190506130496000830184613025565b92915050565b61305881612bab565b811461306357600080fd5b50565b6000813590506130758161304f565b92915050565b60006020828403121561309157613090612b1c565b5b600061309f84828501613066565b91505092915050565b6000602082840312156130be576130bd612b1c565b5b600082013567ffffffffffffffff8111156130dc576130db612b21565b5b6130e884828501612ece565b91505092915050565b60006130fc82612d1f565b9050919050565b61310c816130f1565b811461311757600080fd5b50565b60008135905061312981613103565b92915050565b60006020828403121561314557613144612b1c565b5b60006131538482850161311a565b91505092915050565b60006020828403121561317257613171612b1c565b5b600061318084828501612d72565b91505092915050565b600080604083850312156131a05761319f612b1c565b5b60006131ae85828601612d72565b92505060206131bf85828601613066565b9150509250929050565b600067ffffffffffffffff8211156131e4576131e3612dd1565b5b6131ed82612c30565b9050602081019050919050565b600061320d613208846131c9565b612e31565b90508281526020810184848401111561322957613228612dcc565b5b613234848285612e7d565b509392505050565b600082601f83011261325157613250612dc7565b5b81356132618482602086016131fa565b91505092915050565b6000806000806080858703121561328457613283612b1c565b5b600061329287828801612d72565b94505060206132a387828801612d72565b93505060406132b487828801612cbd565b925050606085013567ffffffffffffffff8111156132d5576132d4612b21565b5b6132e18782880161323c565b91505092959194509250565b6000806040838503121561330457613303612b1c565b5b600061331285828601612d72565b925050602061332385828601612d72565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061337457607f821691505b602082108114156133885761338761332d565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006133ea602c83612bec565b91506133f58261338e565b604082019050919050565b60006020820190508181036000830152613419816133dd565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061347c602183612bec565b915061348782613420565b604082019050919050565b600060208201905081810360008301526134ab8161346f565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b600061350e603883612bec565b9150613519826134b2565b604082019050919050565b6000602082019050818103600083015261353d81613501565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061357a602083612bec565b915061358582613544565b602082019050919050565b600060208201905081810360008301526135a98161356d565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b600061360c603183612bec565b9150613617826135b0565b604082019050919050565b6000602082019050818103600083015261363b816135ff565b9050919050565b7f5075626c6963206d696e74696e6720686173206e6f7420737461727465640000600082015250565b6000613678601e83612bec565b915061368382613642565b602082019050919050565b600060208201905081810360008301526136a78161366b565b9050919050565b7f496e76616c6964207175616e7469747920737570706c69656400000000000000600082015250565b60006136e4601983612bec565b91506136ef826136ae565b602082019050919050565b60006020820190508181036000830152613713816136d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061375482612c9c565b915061375f83612c9c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156137945761379361371a565b5b828201905092915050565b7f4d696e742077696c6c207375727061737320737570706c790000000000000000600082015250565b60006137d5601883612bec565b91506137e08261379f565b602082019050919050565b60006020820190508181036000830152613804816137c8565b9050919050565b600061381682612c9c565b915061382183612c9c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561385a5761385961371a565b5b828202905092915050565b7f4e6f7420656e6f7567682045544820746f206d696e7400000000000000000000600082015250565b600061389b601683612bec565b91506138a682613865565b602082019050919050565b600060208201905081810360008301526138ca8161388e565b9050919050565b60006040820190506138e66000830185612f58565b6138f36020830184612f58565b9392505050565b600061390582612c9c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156139385761393761371a565b5b600182019050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b600061399f602983612bec565b91506139aa82613943565b604082019050919050565b600060208201905081810360008301526139ce81613992565b9050919050565b7f496e63726561736520737570706c79206e6f7420616c6c6f7765640000000000600082015250565b6000613a0b601b83612bec565b9150613a16826139d5565b602082019050919050565b60006020820190508181036000830152613a3a816139fe565b9050919050565b7f4d7573742062652061626f766520746f74616c206d696e746564000000000000600082015250565b6000613a77601a83612bec565b9150613a8282613a41565b602082019050919050565b60006020820190508181036000830152613aa681613a6a565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613b09602a83612bec565b9150613b1482613aad565b604082019050919050565b60006020820190508181036000830152613b3881613afc565b9050919050565b7f5075626c6963206d696e74696e67206861732073746172746564000000000000600082015250565b6000613b75601a83612bec565b9150613b8082613b3f565b602082019050919050565b60006020820190508181036000830152613ba481613b68565b9050919050565b7f57686974656c697374206d696e742064697361626c6564000000000000000000600082015250565b6000613be1601783612bec565b9150613bec82613bab565b602082019050919050565b60006020820190508181036000830152613c1081613bd4565b9050919050565b600081519050613c2681612ca6565b92915050565b600060208284031215613c4257613c41612b1c565b5b6000613c5084828501613c17565b91505092915050565b7f4d757374206f776e206174206c65617374203120444e4b5a0000000000000000600082015250565b6000613c8f601883612bec565b9150613c9a82613c59565b602082019050919050565b60006020820190508181036000830152613cbe81613c82565b9050919050565b7f57686974656c6973742073616c652068617320656e6465640000000000000000600082015250565b6000613cfb601883612bec565b9150613d0682613cc5565b602082019050919050565b60006020820190508181036000830152613d2a81613cee565b9050919050565b7f4d6178203320444e4749455a2050657220416464726573730000000000000000600082015250565b6000613d67601883612bec565b9150613d7282613d31565b602082019050919050565b60006020820190508181036000830152613d9681613d5a565b9050919050565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b6000613df9603183612bec565b9150613e0482613d9d565b604082019050919050565b60006020820190508181036000830152613e2881613dec565b9050919050565b600081905092915050565b6000613e4582612be1565b613e4f8185613e2f565b9350613e5f818560208601612bfd565b80840191505092915050565b6000613e778285613e3a565b9150613e838284613e3a565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613eeb602683612bec565b9150613ef682613e8f565b604082019050919050565b60006020820190508181036000830152613f1a81613ede565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000613f7d602e83612bec565b9150613f8882613f21565b604082019050919050565b60006020820190508181036000830152613fac81613f70565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061400f602c83612bec565b915061401a82613fb3565b604082019050919050565b6000602082019050818103600083015261403e81614002565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b60006140a1602983612bec565b91506140ac82614045565b604082019050919050565b600060208201905081810360008301526140d081614094565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614133602483612bec565b915061413e826140d7565b604082019050919050565b6000602082019050818103600083015261416281614126565b9050919050565b600061417482612c9c565b915061417f83612c9c565b9250828210156141925761419161371a565b5b828203905092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006141d3602083612bec565b91506141de8261419d565b602082019050919050565b60006020820190508181036000830152614202816141c6565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061423f601c83612bec565b915061424a82614209565b602082019050919050565b6000602082019050818103600083015261426e81614232565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006142ab601983612bec565b91506142b682614275565b602082019050919050565b600060208201905081810360008301526142da8161429e565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061433d603283612bec565b9150614348826142e1565b604082019050919050565b6000602082019050818103600083015261436c81614330565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006143cf602f83612bec565b91506143da82614373565b604082019050919050565b600060208201905081810360008301526143fe816143c2565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061442c82614405565b6144368185614410565b9350614446818560208601612bfd565b61444f81612c30565b840191505092915050565b600060808201905061446f6000830187612d31565b61447c6020830186612d31565b6144896040830185612f58565b818103606083015261449b8184614421565b905095945050505050565b6000815190506144b581612b52565b92915050565b6000602082840312156144d1576144d0612b1c565b5b60006144df848285016144a6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061452282612c9c565b915061452d83612c9c565b92508261453d5761453c6144e8565b5b828204905092915050565b600061455382612c9c565b915061455e83612c9c565b92508261456e5761456d6144e8565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122073a6c2e5e5529be8ab6037a3df88d02c898a00b9c8b57cbae42e81a30e14010764736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000e45693dbe1f93815265adf4d4555d8a9100ceb760000000000000000000000000000000000000000000000000000000000000014446f6f646c65204b6f6e677a20446f6e6769657a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000006444e4749455a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d5456394b33634248485a5a3278464c354d557844326936386e5576353547385a4d79566d7867324c517a75322f00000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Doodle Kongz Dongiez
Arg [1] : _symbol (string): DNGIEZ
Arg [2] : _initialBaseURI (string): ipfs://QmTV9K3cBHHZZ2xFL5MUxD2i68nUv55G8ZMyVmxg2LQzu2/
Arg [3] : _doodleKongzAddress (address): 0xe45693DbE1f93815265AdF4d4555d8a9100ceb76
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 000000000000000000000000e45693dbe1f93815265adf4d4555d8a9100ceb76
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [5] : 446f6f646c65204b6f6e677a20446f6e6769657a000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [7] : 444e4749455a0000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [9] : 697066733a2f2f516d5456394b33634248485a5a3278464c354d557844326936
Arg [10] : 386e5576353547385a4d79566d7867324c517a75322f00000000000000000000
Deployed Bytecode Sourcemap
38233:3786:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21194:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22139:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23698:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23221:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39433:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39106:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24448:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38543:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38793:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24858:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38660:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39739:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41330:686;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39329:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39867:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39597:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21833:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38513:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40027:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21563:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37348:103;;;;;;;;;;;;;:::i;:::-;;38438:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36697:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22308:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38732:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23991:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38408:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25114:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40278:1044;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34143:679;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38598:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24217:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37606:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38479:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21194:305;21296:4;21348:25;21333:40;;;:11;:40;;;;:105;;;;21405:33;21390:48;;;:11;:48;;;;21333:105;:158;;;;21455:36;21479:11;21455:23;:36::i;:::-;21333:158;21313:178;;21194:305;;;:::o;22139:100::-;22193:13;22226:5;22219:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22139:100;:::o;23698:221::-;23774:7;23802:16;23810:7;23802;:16::i;:::-;23794:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23887:15;:24;23903:7;23887:24;;;;;;;;;;;;;;;;;;;;;23880:31;;23698:221;;;:::o;23221:411::-;23302:13;23318:23;23333:7;23318:14;:23::i;:::-;23302:39;;23366:5;23360:11;;:2;:11;;;;23352:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;23460:5;23444:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;23469:37;23486:5;23493:12;:10;:12::i;:::-;23469:16;:37::i;:::-;23444:62;23422:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;23603:21;23612:2;23616:7;23603:8;:21::i;:::-;23291:341;23221:411;;:::o;39433:156::-;36928:12;:10;:12::i;:::-;36917:23;;:7;:5;:7::i;:::-;:23;;;36909:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39548:33:::1;39561:8;39571:9;39548:12;:33::i;:::-;39433:156:::0;;:::o;39106:99::-;39158:7;39185:12;;39178:19;;39106:99;:::o;24448:339::-;24643:41;24662:12;:10;:12::i;:::-;24676:7;24643:18;:41::i;:::-;24635:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24751:28;24761:4;24767:2;24771:7;24751:9;:28::i;:::-;24448:339;;;:::o;38543:32::-;;;;:::o;38793:26::-;;;;;;;;;;;;;:::o;24858:185::-;24996:39;25013:4;25019:2;25023:7;24996:39;;;;;;;;;;;;:16;:39::i;:::-;24858:185;;;:::o;38660:29::-;;;;:::o;39739:120::-;36928:12;:10;:12::i;:::-;36917:23;;:7;:5;:7::i;:::-;:23;;;36909:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39819:7:::1;39805:11;;:21;;;;;;;;;;;;;;;;;;39850:1;39837:10;:14;;;;39739:120:::0;:::o;41330:686::-;41404:11;;;;;;;;;;;41396:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;41495:1;41483:9;:13;:40;;;;;41513:10;;41500:9;:23;;41483:40;41461:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;41637:10;;41624:9;41609:12;;:24;;;;:::i;:::-;:38;;41587:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;41743:5;;41731:9;:17;;;;:::i;:::-;41718:9;:30;;41710:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;41794:7;:5;:7::i;:::-;41786:25;;:36;41812:9;41786:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41850:12;:10;:12::i;:::-;41838:54;;;41879:1;41864:12;;:16;;;;:::i;:::-;41882:9;41838:54;;;;;;;:::i;:::-;;;;;;;;41908:9;41903:106;41927:9;41923:1;:13;41903:106;;;41958:39;41964:12;:10;:12::i;:::-;41982;;:14;;;;;;;;;:::i;:::-;;;;;41978:1;:18;;;;:::i;:::-;41958:5;:39::i;:::-;41938:3;;;;;:::i;:::-;;;;41903:106;;;;41330:686;:::o;39329:96::-;36928:12;:10;:12::i;:::-;36917:23;;:7;:5;:7::i;:::-;:23;;;36909:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39410:7:::1;39400;:17;;;;;;;;;;;;:::i;:::-;;39329:96:::0;:::o;39867:152::-;36928:12;:10;:12::i;:::-;36917:23;;:7;:5;:7::i;:::-;:23;;;36909:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39992:19:::1;39978:11;;:33;;;;;;;;;;;;;;;;;;39867:152:::0;:::o;39597:134::-;36928:12;:10;:12::i;:::-;36917:23;;:7;:5;:7::i;:::-;:23;;;36909:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39691:7:::1;39668:20;;:30;;;;;;;;;;;;;;;;;;39722:1;39709:10;:14;;;;39597:134:::0;:::o;21833:239::-;21905:7;21925:13;21941:7;:16;21949:7;21941:16;;;;;;;;;;;;;;;;;;;;;21925:32;;21993:1;21976:19;;:5;:19;;;;21968:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22059:5;22052:12;;;21833:239;;;:::o;38513:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;40027:243::-;36928:12;:10;:12::i;:::-;36917:23;;:7;:5;:7::i;:::-;:23;;;36909:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;40118:10:::1;;40108:6;:20;;40100:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;40189:12;;40179:6;:22;;40171:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;40256:6;40243:10;:19;;;;40027:243:::0;:::o;21563:208::-;21635:7;21680:1;21663:19;;:5;:19;;;;21655:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;21747:9;:16;21757:5;21747:16;;;;;;;;;;;;;;;;21740:23;;21563:208;;;:::o;37348:103::-;36928:12;:10;:12::i;:::-;36917:23;;:7;:5;:7::i;:::-;:23;;;36909:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37413:30:::1;37440:1;37413:18;:30::i;:::-;37348:103::o:0;38438:32::-;;;;;;;;;;;;;:::o;36697:87::-;36743:7;36770:6;;;;;;;;;;;36763:13;;36697:87;:::o;22308:104::-;22364:13;22397:7;22390:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22308:104;:::o;38732:40::-;;;;:::o;23991:155::-;24086:52;24105:12;:10;:12::i;:::-;24119:8;24129;24086:18;:52::i;:::-;23991:155;;:::o;38408:23::-;;;;;;;;;;;;;:::o;25114:328::-;25289:41;25308:12;:10;:12::i;:::-;25322:7;25289:18;:41::i;:::-;25281:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;25395:39;25409:4;25415:2;25419:7;25428:5;25395:13;:39::i;:::-;25114:328;;;;:::o;40278:1044::-;40356:11;;;;;;;;;;;40355:12;40347:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;40417:20;;;;;;;;;;;40409:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;40476:26;40505:11;;;;;;;;;;;:21;;;40527:12;:10;:12::i;:::-;40505:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40476:64;;40580:1;40559:18;:22;40551:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;40655:1;40643:9;:13;:40;;;;;40673:10;;40660:9;:23;;40643:40;40621:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;40797:10;;40784:9;40769:12;;:24;;;;:::i;:::-;:38;;40747:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;40920:18;;40907:9;40892:12;;:24;;;;:::i;:::-;:46;;40870:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;41001:22;41026:23;41036:12;:10;:12::i;:::-;41026:9;:23::i;:::-;41001:48;;41098:1;41085:9;41068:14;:26;;;;:::i;:::-;:31;;41060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41156:12;:10;:12::i;:::-;41144:54;;;41185:1;41170:12;;:16;;;;:::i;:::-;41188:9;41144:54;;;;;;;:::i;:::-;;;;;;;;41214:9;41209:106;41233:9;41229:1;:13;41209:106;;;41264:39;41270:12;:10;:12::i;:::-;41288;;:14;;;;;;;;;:::i;:::-;;;;;41284:1;:18;;;;:::i;:::-;41264:5;:39::i;:::-;41244:3;;;;;:::i;:::-;;;;41209:106;;;;40336:986;;40278:1044;:::o;34143:679::-;34216:13;34250:16;34258:7;34250;:16::i;:::-;34242:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;34333:23;34359:10;:19;34370:7;34359:19;;;;;;;;;;;34333:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34389:18;34410:10;:8;:10::i;:::-;34389:31;;34518:1;34502:4;34496:18;:23;34492:72;;;34543:9;34536:16;;;;;;34492:72;34694:1;34674:9;34668:23;:27;34664:108;;;34743:4;34749:9;34726:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;34712:48;;;;;;34664:108;34791:23;34806:7;34791:14;:23::i;:::-;34784:30;;;;34143:679;;;;:::o;38598:39::-;;;;:::o;24217:164::-;24314:4;24338:18;:25;24357:5;24338:25;;;;;;;;;;;;;;;:35;24364:8;24338:35;;;;;;;;;;;;;;;;;;;;;;;;;24331:42;;24217:164;;;;:::o;37606:201::-;36928:12;:10;:12::i;:::-;36917:23;;:7;:5;:7::i;:::-;:23;;;36909:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37715:1:::1;37695:22;;:8;:22;;;;37687:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;37771:28;37790:8;37771:18;:28::i;:::-;37606:201:::0;:::o;38479:27::-;;;;:::o;19640:157::-;19725:4;19764:25;19749:40;;;:11;:40;;;;19742:47;;19640:157;;;:::o;26952:127::-;27017:4;27069:1;27041:30;;:7;:16;27049:7;27041:16;;;;;;;;;;;;;;;;;;;;;:30;;;;27034:37;;26952:127;;;:::o;16441:98::-;16494:7;16521:10;16514:17;;16441:98;:::o;30934:174::-;31036:2;31009:15;:24;31025:7;31009:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;31092:7;31088:2;31054:46;;31063:23;31078:7;31063:14;:23::i;:::-;31054:46;;;;;;;;;;;;30934:174;;:::o;34978:217::-;35078:16;35086:7;35078;:16::i;:::-;35070:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;35178:9;35156:10;:19;35167:7;35156:19;;;;;;;;;;;:31;;;;;;;;;;;;:::i;:::-;;34978:217;;:::o;27246:348::-;27339:4;27364:16;27372:7;27364;:16::i;:::-;27356:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27440:13;27456:23;27471:7;27456:14;:23::i;:::-;27440:39;;27509:5;27498:16;;:7;:16;;;:51;;;;27542:7;27518:31;;:20;27530:7;27518:11;:20::i;:::-;:31;;;27498:51;:87;;;;27553:32;27570:5;27577:7;27553:16;:32::i;:::-;27498:87;27490:96;;;27246:348;;;;:::o;30238:578::-;30397:4;30370:31;;:23;30385:7;30370:14;:23::i;:::-;:31;;;30362:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;30480:1;30466:16;;:2;:16;;;;30458:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30536:39;30557:4;30563:2;30567:7;30536:20;:39::i;:::-;30640:29;30657:1;30661:7;30640:8;:29::i;:::-;30701:1;30682:9;:15;30692:4;30682:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;30730:1;30713:9;:13;30723:2;30713:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;30761:2;30742:7;:16;30750:7;30742:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;30800:7;30796:2;30781:27;;30790:4;30781:27;;;;;;;;;;;;30238:578;;;:::o;28930:382::-;29024:1;29010:16;;:2;:16;;;;29002:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;29083:16;29091:7;29083;:16::i;:::-;29082:17;29074:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;29145:45;29174:1;29178:2;29182:7;29145:20;:45::i;:::-;29220:1;29203:9;:13;29213:2;29203:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;29251:2;29232:7;:16;29240:7;29232:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;29296:7;29292:2;29271:33;;29288:1;29271:33;;;;;;;;;;;;28930:382;;:::o;37967:191::-;38041:16;38060:6;;;;;;;;;;;38041:25;;38086:8;38077:6;;:17;;;;;;;;;;;;;;;;;;38141:8;38110:40;;38131:8;38110:40;;;;;;;;;;;;38030:128;37967:191;:::o;31250:315::-;31405:8;31396:17;;:5;:17;;;;31388:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;31492:8;31454:18;:25;31473:5;31454:25;;;;;;;;;;;;;;;:35;31480:8;31454:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;31538:8;31516:41;;31531:5;31516:41;;;31548:8;31516:41;;;;;;:::i;:::-;;;;;;;;31250:315;;;:::o;26324:::-;26481:28;26491:4;26497:2;26501:7;26481:9;:28::i;:::-;26528:48;26551:4;26557:2;26561:7;26570:5;26528:22;:48::i;:::-;26520:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;26324:315;;;;:::o;39213:108::-;39273:13;39306:7;39299:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39213:108;:::o;22483:334::-;22556:13;22590:16;22598:7;22590;:16::i;:::-;22582:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;22671:21;22695:10;:8;:10::i;:::-;22671:34;;22747:1;22729:7;22723:21;:25;:86;;;;;;;;;;;;;;;;;22775:7;22784:18;:7;:16;:18::i;:::-;22758:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22723:86;22716:93;;;22483:334;;;:::o;33501:126::-;;;;:::o;32130:799::-;32285:4;32306:15;:2;:13;;;:15::i;:::-;32302:620;;;32358:2;32342:36;;;32379:12;:10;:12::i;:::-;32393:4;32399:7;32408:5;32342:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;32338:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32601:1;32584:6;:13;:18;32580:272;;;32627:60;;;;;;;;;;:::i;:::-;;;;;;;;32580:272;32802:6;32796:13;32787:6;32783:2;32779:15;32772:38;32338:529;32475:41;;;32465:51;;;:6;:51;;;;32458:58;;;;;32302:620;32906:4;32899:11;;32130:799;;;;;;;:::o;17018:723::-;17074:13;17304:1;17295:5;:10;17291:53;;;17322:10;;;;;;;;;;;;;;;;;;;;;17291:53;17354:12;17369:5;17354:20;;17385:14;17410:78;17425:1;17417:4;:9;17410:78;;17443:8;;;;;:::i;:::-;;;;17474:2;17466:10;;;;;:::i;:::-;;;17410:78;;;17498:19;17530:6;17520:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17498:39;;17548:154;17564:1;17555:5;:10;17548:154;;17592:1;17582:11;;;;;:::i;:::-;;;17659:2;17651:5;:10;;;;:::i;:::-;17638:2;:24;;;;:::i;:::-;17625:39;;17608:6;17615;17608:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;17688:2;17679:11;;;;;:::i;:::-;;;17548:154;;;17726:6;17712:21;;;;;17018:723;;;;:::o;8433:387::-;8493:4;8701:12;8768:7;8756:20;8748:28;;8811:1;8804:4;:8;8797:15;;;8433:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:117::-;5047:1;5044;5037:12;5061:117;5170:1;5167;5160:12;5184:180;5232:77;5229:1;5222:88;5329:4;5326:1;5319:15;5353:4;5350:1;5343:15;5370:281;5453:27;5475:4;5453:27;:::i;:::-;5445:6;5441:40;5583:6;5571:10;5568:22;5547:18;5535:10;5532:34;5529:62;5526:88;;;5594:18;;:::i;:::-;5526:88;5634:10;5630:2;5623:22;5413:238;5370:281;;:::o;5657:129::-;5691:6;5718:20;;:::i;:::-;5708:30;;5747:33;5775:4;5767:6;5747:33;:::i;:::-;5657:129;;;:::o;5792:308::-;5854:4;5944:18;5936:6;5933:30;5930:56;;;5966:18;;:::i;:::-;5930:56;6004:29;6026:6;6004:29;:::i;:::-;5996:37;;6088:4;6082;6078:15;6070:23;;5792:308;;;:::o;6106:154::-;6190:6;6185:3;6180;6167:30;6252:1;6243:6;6238:3;6234:16;6227:27;6106:154;;;:::o;6266:412::-;6344:5;6369:66;6385:49;6427:6;6385:49;:::i;:::-;6369:66;:::i;:::-;6360:75;;6458:6;6451:5;6444:21;6496:4;6489:5;6485:16;6534:3;6525:6;6520:3;6516:16;6513:25;6510:112;;;6541:79;;:::i;:::-;6510:112;6631:41;6665:6;6660:3;6655;6631:41;:::i;:::-;6350:328;6266:412;;;;;:::o;6698:340::-;6754:5;6803:3;6796:4;6788:6;6784:17;6780:27;6770:122;;6811:79;;:::i;:::-;6770:122;6928:6;6915:20;6953:79;7028:3;7020:6;7013:4;7005:6;7001:17;6953:79;:::i;:::-;6944:88;;6760:278;6698:340;;;;:::o;7044:654::-;7122:6;7130;7179:2;7167:9;7158:7;7154:23;7150:32;7147:119;;;7185:79;;:::i;:::-;7147:119;7305:1;7330:53;7375:7;7366:6;7355:9;7351:22;7330:53;:::i;:::-;7320:63;;7276:117;7460:2;7449:9;7445:18;7432:32;7491:18;7483:6;7480:30;7477:117;;;7513:79;;:::i;:::-;7477:117;7618:63;7673:7;7664:6;7653:9;7649:22;7618:63;:::i;:::-;7608:73;;7403:288;7044:654;;;;;:::o;7704:118::-;7791:24;7809:5;7791:24;:::i;:::-;7786:3;7779:37;7704:118;;:::o;7828:222::-;7921:4;7959:2;7948:9;7944:18;7936:26;;7972:71;8040:1;8029:9;8025:17;8016:6;7972:71;:::i;:::-;7828:222;;;;:::o;8056:619::-;8133:6;8141;8149;8198:2;8186:9;8177:7;8173:23;8169:32;8166:119;;;8204:79;;:::i;:::-;8166:119;8324:1;8349:53;8394:7;8385:6;8374:9;8370:22;8349:53;:::i;:::-;8339:63;;8295:117;8451:2;8477:53;8522:7;8513:6;8502:9;8498:22;8477:53;:::i;:::-;8467:63;;8422:118;8579:2;8605:53;8650:7;8641:6;8630:9;8626:22;8605:53;:::i;:::-;8595:63;;8550:118;8056:619;;;;;:::o;8681:60::-;8709:3;8730:5;8723:12;;8681:60;;;:::o;8747:142::-;8797:9;8830:53;8848:34;8857:24;8875:5;8857:24;:::i;:::-;8848:34;:::i;:::-;8830:53;:::i;:::-;8817:66;;8747:142;;;:::o;8895:126::-;8945:9;8978:37;9009:5;8978:37;:::i;:::-;8965:50;;8895:126;;;:::o;9027:141::-;9092:9;9125:37;9156:5;9125:37;:::i;:::-;9112:50;;9027:141;;;:::o;9174:161::-;9276:52;9322:5;9276:52;:::i;:::-;9271:3;9264:65;9174:161;;:::o;9341:252::-;9449:4;9487:2;9476:9;9472:18;9464:26;;9500:86;9583:1;9572:9;9568:17;9559:6;9500:86;:::i;:::-;9341:252;;;;:::o;9599:116::-;9669:21;9684:5;9669:21;:::i;:::-;9662:5;9659:32;9649:60;;9705:1;9702;9695:12;9649:60;9599:116;:::o;9721:133::-;9764:5;9802:6;9789:20;9780:29;;9818:30;9842:5;9818:30;:::i;:::-;9721:133;;;;:::o;9860:323::-;9916:6;9965:2;9953:9;9944:7;9940:23;9936:32;9933:119;;;9971:79;;:::i;:::-;9933:119;10091:1;10116:50;10158:7;10149:6;10138:9;10134:22;10116:50;:::i;:::-;10106:60;;10062:114;9860:323;;;;:::o;10189:509::-;10258:6;10307:2;10295:9;10286:7;10282:23;10278:32;10275:119;;;10313:79;;:::i;:::-;10275:119;10461:1;10450:9;10446:17;10433:31;10491:18;10483:6;10480:30;10477:117;;;10513:79;;:::i;:::-;10477:117;10618:63;10673:7;10664:6;10653:9;10649:22;10618:63;:::i;:::-;10608:73;;10404:287;10189:509;;;;:::o;10704:111::-;10756:7;10785:24;10803:5;10785:24;:::i;:::-;10774:35;;10704:111;;;:::o;10821:152::-;10909:39;10942:5;10909:39;:::i;:::-;10902:5;10899:50;10889:78;;10963:1;10960;10953:12;10889:78;10821:152;:::o;10979:169::-;11040:5;11078:6;11065:20;11056:29;;11094:48;11136:5;11094:48;:::i;:::-;10979:169;;;;:::o;11154:359::-;11228:6;11277:2;11265:9;11256:7;11252:23;11248:32;11245:119;;;11283:79;;:::i;:::-;11245:119;11403:1;11428:68;11488:7;11479:6;11468:9;11464:22;11428:68;:::i;:::-;11418:78;;11374:132;11154:359;;;;:::o;11519:329::-;11578:6;11627:2;11615:9;11606:7;11602:23;11598:32;11595:119;;;11633:79;;:::i;:::-;11595:119;11753:1;11778:53;11823:7;11814:6;11803:9;11799:22;11778:53;:::i;:::-;11768:63;;11724:117;11519:329;;;;:::o;11854:468::-;11919:6;11927;11976:2;11964:9;11955:7;11951:23;11947:32;11944:119;;;11982:79;;:::i;:::-;11944:119;12102:1;12127:53;12172:7;12163:6;12152:9;12148:22;12127:53;:::i;:::-;12117:63;;12073:117;12229:2;12255:50;12297:7;12288:6;12277:9;12273:22;12255:50;:::i;:::-;12245:60;;12200:115;11854:468;;;;;:::o;12328:307::-;12389:4;12479:18;12471:6;12468:30;12465:56;;;12501:18;;:::i;:::-;12465:56;12539:29;12561:6;12539:29;:::i;:::-;12531:37;;12623:4;12617;12613:15;12605:23;;12328:307;;;:::o;12641:410::-;12718:5;12743:65;12759:48;12800:6;12759:48;:::i;:::-;12743:65;:::i;:::-;12734:74;;12831:6;12824:5;12817:21;12869:4;12862:5;12858:16;12907:3;12898:6;12893:3;12889:16;12886:25;12883:112;;;12914:79;;:::i;:::-;12883:112;13004:41;13038:6;13033:3;13028;13004:41;:::i;:::-;12724:327;12641:410;;;;;:::o;13070:338::-;13125:5;13174:3;13167:4;13159:6;13155:17;13151:27;13141:122;;13182:79;;:::i;:::-;13141:122;13299:6;13286:20;13324:78;13398:3;13390:6;13383:4;13375:6;13371:17;13324:78;:::i;:::-;13315:87;;13131:277;13070:338;;;;:::o;13414:943::-;13509:6;13517;13525;13533;13582:3;13570:9;13561:7;13557:23;13553:33;13550:120;;;13589:79;;:::i;:::-;13550:120;13709:1;13734:53;13779:7;13770:6;13759:9;13755:22;13734:53;:::i;:::-;13724:63;;13680:117;13836:2;13862:53;13907:7;13898:6;13887:9;13883:22;13862:53;:::i;:::-;13852:63;;13807:118;13964:2;13990:53;14035:7;14026:6;14015:9;14011:22;13990:53;:::i;:::-;13980:63;;13935:118;14120:2;14109:9;14105:18;14092:32;14151:18;14143:6;14140:30;14137:117;;;14173:79;;:::i;:::-;14137:117;14278:62;14332:7;14323:6;14312:9;14308:22;14278:62;:::i;:::-;14268:72;;14063:287;13414:943;;;;;;;:::o;14363:474::-;14431:6;14439;14488:2;14476:9;14467:7;14463:23;14459:32;14456:119;;;14494:79;;:::i;:::-;14456:119;14614:1;14639:53;14684:7;14675:6;14664:9;14660:22;14639:53;:::i;:::-;14629:63;;14585:117;14741:2;14767:53;14812:7;14803:6;14792:9;14788:22;14767:53;:::i;:::-;14757:63;;14712:118;14363:474;;;;;:::o;14843:180::-;14891:77;14888:1;14881:88;14988:4;14985:1;14978:15;15012:4;15009:1;15002:15;15029:320;15073:6;15110:1;15104:4;15100:12;15090:22;;15157:1;15151:4;15147:12;15178:18;15168:81;;15234:4;15226:6;15222:17;15212:27;;15168:81;15296:2;15288:6;15285:14;15265:18;15262:38;15259:84;;;15315:18;;:::i;:::-;15259:84;15080:269;15029:320;;;:::o;15355:231::-;15495:34;15491:1;15483:6;15479:14;15472:58;15564:14;15559:2;15551:6;15547:15;15540:39;15355:231;:::o;15592:366::-;15734:3;15755:67;15819:2;15814:3;15755:67;:::i;:::-;15748:74;;15831:93;15920:3;15831:93;:::i;:::-;15949:2;15944:3;15940:12;15933:19;;15592:366;;;:::o;15964:419::-;16130:4;16168:2;16157:9;16153:18;16145:26;;16217:9;16211:4;16207:20;16203:1;16192:9;16188:17;16181:47;16245:131;16371:4;16245:131;:::i;:::-;16237:139;;15964:419;;;:::o;16389:220::-;16529:34;16525:1;16517:6;16513:14;16506:58;16598:3;16593:2;16585:6;16581:15;16574:28;16389:220;:::o;16615:366::-;16757:3;16778:67;16842:2;16837:3;16778:67;:::i;:::-;16771:74;;16854:93;16943:3;16854:93;:::i;:::-;16972:2;16967:3;16963:12;16956:19;;16615:366;;;:::o;16987:419::-;17153:4;17191:2;17180:9;17176:18;17168:26;;17240:9;17234:4;17230:20;17226:1;17215:9;17211:17;17204:47;17268:131;17394:4;17268:131;:::i;:::-;17260:139;;16987:419;;;:::o;17412:243::-;17552:34;17548:1;17540:6;17536:14;17529:58;17621:26;17616:2;17608:6;17604:15;17597:51;17412:243;:::o;17661:366::-;17803:3;17824:67;17888:2;17883:3;17824:67;:::i;:::-;17817:74;;17900:93;17989:3;17900:93;:::i;:::-;18018:2;18013:3;18009:12;18002:19;;17661:366;;;:::o;18033:419::-;18199:4;18237:2;18226:9;18222:18;18214:26;;18286:9;18280:4;18276:20;18272:1;18261:9;18257:17;18250:47;18314:131;18440:4;18314:131;:::i;:::-;18306:139;;18033:419;;;:::o;18458:182::-;18598:34;18594:1;18586:6;18582:14;18575:58;18458:182;:::o;18646:366::-;18788:3;18809:67;18873:2;18868:3;18809:67;:::i;:::-;18802:74;;18885:93;18974:3;18885:93;:::i;:::-;19003:2;18998:3;18994:12;18987:19;;18646:366;;;:::o;19018:419::-;19184:4;19222:2;19211:9;19207:18;19199:26;;19271:9;19265:4;19261:20;19257:1;19246:9;19242:17;19235:47;19299:131;19425:4;19299:131;:::i;:::-;19291:139;;19018:419;;;:::o;19443:236::-;19583:34;19579:1;19571:6;19567:14;19560:58;19652:19;19647:2;19639:6;19635:15;19628:44;19443:236;:::o;19685:366::-;19827:3;19848:67;19912:2;19907:3;19848:67;:::i;:::-;19841:74;;19924:93;20013:3;19924:93;:::i;:::-;20042:2;20037:3;20033:12;20026:19;;19685:366;;;:::o;20057:419::-;20223:4;20261:2;20250:9;20246:18;20238:26;;20310:9;20304:4;20300:20;20296:1;20285:9;20281:17;20274:47;20338:131;20464:4;20338:131;:::i;:::-;20330:139;;20057:419;;;:::o;20482:180::-;20622:32;20618:1;20610:6;20606:14;20599:56;20482:180;:::o;20668:366::-;20810:3;20831:67;20895:2;20890:3;20831:67;:::i;:::-;20824:74;;20907:93;20996:3;20907:93;:::i;:::-;21025:2;21020:3;21016:12;21009:19;;20668:366;;;:::o;21040:419::-;21206:4;21244:2;21233:9;21229:18;21221:26;;21293:9;21287:4;21283:20;21279:1;21268:9;21264:17;21257:47;21321:131;21447:4;21321:131;:::i;:::-;21313:139;;21040:419;;;:::o;21465:175::-;21605:27;21601:1;21593:6;21589:14;21582:51;21465:175;:::o;21646:366::-;21788:3;21809:67;21873:2;21868:3;21809:67;:::i;:::-;21802:74;;21885:93;21974:3;21885:93;:::i;:::-;22003:2;21998:3;21994:12;21987:19;;21646:366;;;:::o;22018:419::-;22184:4;22222:2;22211:9;22207:18;22199:26;;22271:9;22265:4;22261:20;22257:1;22246:9;22242:17;22235:47;22299:131;22425:4;22299:131;:::i;:::-;22291:139;;22018:419;;;:::o;22443:180::-;22491:77;22488:1;22481:88;22588:4;22585:1;22578:15;22612:4;22609:1;22602:15;22629:305;22669:3;22688:20;22706:1;22688:20;:::i;:::-;22683:25;;22722:20;22740:1;22722:20;:::i;:::-;22717:25;;22876:1;22808:66;22804:74;22801:1;22798:81;22795:107;;;22882:18;;:::i;:::-;22795:107;22926:1;22923;22919:9;22912:16;;22629:305;;;;:::o;22940:174::-;23080:26;23076:1;23068:6;23064:14;23057:50;22940:174;:::o;23120:366::-;23262:3;23283:67;23347:2;23342:3;23283:67;:::i;:::-;23276:74;;23359:93;23448:3;23359:93;:::i;:::-;23477:2;23472:3;23468:12;23461:19;;23120:366;;;:::o;23492:419::-;23658:4;23696:2;23685:9;23681:18;23673:26;;23745:9;23739:4;23735:20;23731:1;23720:9;23716:17;23709:47;23773:131;23899:4;23773:131;:::i;:::-;23765:139;;23492:419;;;:::o;23917:348::-;23957:7;23980:20;23998:1;23980:20;:::i;:::-;23975:25;;24014:20;24032:1;24014:20;:::i;:::-;24009:25;;24202:1;24134:66;24130:74;24127:1;24124:81;24119:1;24112:9;24105:17;24101:105;24098:131;;;24209:18;;:::i;:::-;24098:131;24257:1;24254;24250:9;24239:20;;23917:348;;;;:::o;24271:172::-;24411:24;24407:1;24399:6;24395:14;24388:48;24271:172;:::o;24449:366::-;24591:3;24612:67;24676:2;24671:3;24612:67;:::i;:::-;24605:74;;24688:93;24777:3;24688:93;:::i;:::-;24806:2;24801:3;24797:12;24790:19;;24449:366;;;:::o;24821:419::-;24987:4;25025:2;25014:9;25010:18;25002:26;;25074:9;25068:4;25064:20;25060:1;25049:9;25045:17;25038:47;25102:131;25228:4;25102:131;:::i;:::-;25094:139;;24821:419;;;:::o;25246:332::-;25367:4;25405:2;25394:9;25390:18;25382:26;;25418:71;25486:1;25475:9;25471:17;25462:6;25418:71;:::i;:::-;25499:72;25567:2;25556:9;25552:18;25543:6;25499:72;:::i;:::-;25246:332;;;;;:::o;25584:233::-;25623:3;25646:24;25664:5;25646:24;:::i;:::-;25637:33;;25692:66;25685:5;25682:77;25679:103;;;25762:18;;:::i;:::-;25679:103;25809:1;25802:5;25798:13;25791:20;;25584:233;;;:::o;25823:228::-;25963:34;25959:1;25951:6;25947:14;25940:58;26032:11;26027:2;26019:6;26015:15;26008:36;25823:228;:::o;26057:366::-;26199:3;26220:67;26284:2;26279:3;26220:67;:::i;:::-;26213:74;;26296:93;26385:3;26296:93;:::i;:::-;26414:2;26409:3;26405:12;26398:19;;26057:366;;;:::o;26429:419::-;26595:4;26633:2;26622:9;26618:18;26610:26;;26682:9;26676:4;26672:20;26668:1;26657:9;26653:17;26646:47;26710:131;26836:4;26710:131;:::i;:::-;26702:139;;26429:419;;;:::o;26854:177::-;26994:29;26990:1;26982:6;26978:14;26971:53;26854:177;:::o;27037:366::-;27179:3;27200:67;27264:2;27259:3;27200:67;:::i;:::-;27193:74;;27276:93;27365:3;27276:93;:::i;:::-;27394:2;27389:3;27385:12;27378:19;;27037:366;;;:::o;27409:419::-;27575:4;27613:2;27602:9;27598:18;27590:26;;27662:9;27656:4;27652:20;27648:1;27637:9;27633:17;27626:47;27690:131;27816:4;27690:131;:::i;:::-;27682:139;;27409:419;;;:::o;27834:176::-;27974:28;27970:1;27962:6;27958:14;27951:52;27834:176;:::o;28016:366::-;28158:3;28179:67;28243:2;28238:3;28179:67;:::i;:::-;28172:74;;28255:93;28344:3;28255:93;:::i;:::-;28373:2;28368:3;28364:12;28357:19;;28016:366;;;:::o;28388:419::-;28554:4;28592:2;28581:9;28577:18;28569:26;;28641:9;28635:4;28631:20;28627:1;28616:9;28612:17;28605:47;28669:131;28795:4;28669:131;:::i;:::-;28661:139;;28388:419;;;:::o;28813:229::-;28953:34;28949:1;28941:6;28937:14;28930:58;29022:12;29017:2;29009:6;29005:15;28998:37;28813:229;:::o;29048:366::-;29190:3;29211:67;29275:2;29270:3;29211:67;:::i;:::-;29204:74;;29287:93;29376:3;29287:93;:::i;:::-;29405:2;29400:3;29396:12;29389:19;;29048:366;;;:::o;29420:419::-;29586:4;29624:2;29613:9;29609:18;29601:26;;29673:9;29667:4;29663:20;29659:1;29648:9;29644:17;29637:47;29701:131;29827:4;29701:131;:::i;:::-;29693:139;;29420:419;;;:::o;29845:176::-;29985:28;29981:1;29973:6;29969:14;29962:52;29845:176;:::o;30027:366::-;30169:3;30190:67;30254:2;30249:3;30190:67;:::i;:::-;30183:74;;30266:93;30355:3;30266:93;:::i;:::-;30384:2;30379:3;30375:12;30368:19;;30027:366;;;:::o;30399:419::-;30565:4;30603:2;30592:9;30588:18;30580:26;;30652:9;30646:4;30642:20;30638:1;30627:9;30623:17;30616:47;30680:131;30806:4;30680:131;:::i;:::-;30672:139;;30399:419;;;:::o;30824:173::-;30964:25;30960:1;30952:6;30948:14;30941:49;30824:173;:::o;31003:366::-;31145:3;31166:67;31230:2;31225:3;31166:67;:::i;:::-;31159:74;;31242:93;31331:3;31242:93;:::i;:::-;31360:2;31355:3;31351:12;31344:19;;31003:366;;;:::o;31375:419::-;31541:4;31579:2;31568:9;31564:18;31556:26;;31628:9;31622:4;31618:20;31614:1;31603:9;31599:17;31592:47;31656:131;31782:4;31656:131;:::i;:::-;31648:139;;31375:419;;;:::o;31800:143::-;31857:5;31888:6;31882:13;31873:22;;31904:33;31931:5;31904:33;:::i;:::-;31800:143;;;;:::o;31949:351::-;32019:6;32068:2;32056:9;32047:7;32043:23;32039:32;32036:119;;;32074:79;;:::i;:::-;32036:119;32194:1;32219:64;32275:7;32266:6;32255:9;32251:22;32219:64;:::i;:::-;32209:74;;32165:128;31949:351;;;;:::o;32306:174::-;32446:26;32442:1;32434:6;32430:14;32423:50;32306:174;:::o;32486:366::-;32628:3;32649:67;32713:2;32708:3;32649:67;:::i;:::-;32642:74;;32725:93;32814:3;32725:93;:::i;:::-;32843:2;32838:3;32834:12;32827:19;;32486:366;;;:::o;32858:419::-;33024:4;33062:2;33051:9;33047:18;33039:26;;33111:9;33105:4;33101:20;33097:1;33086:9;33082:17;33075:47;33139:131;33265:4;33139:131;:::i;:::-;33131:139;;32858:419;;;:::o;33283:174::-;33423:26;33419:1;33411:6;33407:14;33400:50;33283:174;:::o;33463:366::-;33605:3;33626:67;33690:2;33685:3;33626:67;:::i;:::-;33619:74;;33702:93;33791:3;33702:93;:::i;:::-;33820:2;33815:3;33811:12;33804:19;;33463:366;;;:::o;33835:419::-;34001:4;34039:2;34028:9;34024:18;34016:26;;34088:9;34082:4;34078:20;34074:1;34063:9;34059:17;34052:47;34116:131;34242:4;34116:131;:::i;:::-;34108:139;;33835:419;;;:::o;34260:174::-;34400:26;34396:1;34388:6;34384:14;34377:50;34260:174;:::o;34440:366::-;34582:3;34603:67;34667:2;34662:3;34603:67;:::i;:::-;34596:74;;34679:93;34768:3;34679:93;:::i;:::-;34797:2;34792:3;34788:12;34781:19;;34440:366;;;:::o;34812:419::-;34978:4;35016:2;35005:9;35001:18;34993:26;;35065:9;35059:4;35055:20;35051:1;35040:9;35036:17;35029:47;35093:131;35219:4;35093:131;:::i;:::-;35085:139;;34812:419;;;:::o;35237:236::-;35377:34;35373:1;35365:6;35361:14;35354:58;35446:19;35441:2;35433:6;35429:15;35422:44;35237:236;:::o;35479:366::-;35621:3;35642:67;35706:2;35701:3;35642:67;:::i;:::-;35635:74;;35718:93;35807:3;35718:93;:::i;:::-;35836:2;35831:3;35827:12;35820:19;;35479:366;;;:::o;35851:419::-;36017:4;36055:2;36044:9;36040:18;36032:26;;36104:9;36098:4;36094:20;36090:1;36079:9;36075:17;36068:47;36132:131;36258:4;36132:131;:::i;:::-;36124:139;;35851:419;;;:::o;36276:148::-;36378:11;36415:3;36400:18;;36276:148;;;;:::o;36430:377::-;36536:3;36564:39;36597:5;36564:39;:::i;:::-;36619:89;36701:6;36696:3;36619:89;:::i;:::-;36612:96;;36717:52;36762:6;36757:3;36750:4;36743:5;36739:16;36717:52;:::i;:::-;36794:6;36789:3;36785:16;36778:23;;36540:267;36430:377;;;;:::o;36813:435::-;36993:3;37015:95;37106:3;37097:6;37015:95;:::i;:::-;37008:102;;37127:95;37218:3;37209:6;37127:95;:::i;:::-;37120:102;;37239:3;37232:10;;36813:435;;;;;:::o;37254:225::-;37394:34;37390:1;37382:6;37378:14;37371:58;37463:8;37458:2;37450:6;37446:15;37439:33;37254:225;:::o;37485:366::-;37627:3;37648:67;37712:2;37707:3;37648:67;:::i;:::-;37641:74;;37724:93;37813:3;37724:93;:::i;:::-;37842:2;37837:3;37833:12;37826:19;;37485:366;;;:::o;37857:419::-;38023:4;38061:2;38050:9;38046:18;38038:26;;38110:9;38104:4;38100:20;38096:1;38085:9;38081:17;38074:47;38138:131;38264:4;38138:131;:::i;:::-;38130:139;;37857:419;;;:::o;38282:233::-;38422:34;38418:1;38410:6;38406:14;38399:58;38491:16;38486:2;38478:6;38474:15;38467:41;38282:233;:::o;38521:366::-;38663:3;38684:67;38748:2;38743:3;38684:67;:::i;:::-;38677:74;;38760:93;38849:3;38760:93;:::i;:::-;38878:2;38873:3;38869:12;38862:19;;38521:366;;;:::o;38893:419::-;39059:4;39097:2;39086:9;39082:18;39074:26;;39146:9;39140:4;39136:20;39132:1;39121:9;39117:17;39110:47;39174:131;39300:4;39174:131;:::i;:::-;39166:139;;38893:419;;;:::o;39318:231::-;39458:34;39454:1;39446:6;39442:14;39435:58;39527:14;39522:2;39514:6;39510:15;39503:39;39318:231;:::o;39555:366::-;39697:3;39718:67;39782:2;39777:3;39718:67;:::i;:::-;39711:74;;39794:93;39883:3;39794:93;:::i;:::-;39912:2;39907:3;39903:12;39896:19;;39555:366;;;:::o;39927:419::-;40093:4;40131:2;40120:9;40116:18;40108:26;;40180:9;40174:4;40170:20;40166:1;40155:9;40151:17;40144:47;40208:131;40334:4;40208:131;:::i;:::-;40200:139;;39927:419;;;:::o;40352:228::-;40492:34;40488:1;40480:6;40476:14;40469:58;40561:11;40556:2;40548:6;40544:15;40537:36;40352:228;:::o;40586:366::-;40728:3;40749:67;40813:2;40808:3;40749:67;:::i;:::-;40742:74;;40825:93;40914:3;40825:93;:::i;:::-;40943:2;40938:3;40934:12;40927:19;;40586:366;;;:::o;40958:419::-;41124:4;41162:2;41151:9;41147:18;41139:26;;41211:9;41205:4;41201:20;41197:1;41186:9;41182:17;41175:47;41239:131;41365:4;41239:131;:::i;:::-;41231:139;;40958:419;;;:::o;41383:223::-;41523:34;41519:1;41511:6;41507:14;41500:58;41592:6;41587:2;41579:6;41575:15;41568:31;41383:223;:::o;41612:366::-;41754:3;41775:67;41839:2;41834:3;41775:67;:::i;:::-;41768:74;;41851:93;41940:3;41851:93;:::i;:::-;41969:2;41964:3;41960:12;41953:19;;41612:366;;;:::o;41984:419::-;42150:4;42188:2;42177:9;42173:18;42165:26;;42237:9;42231:4;42227:20;42223:1;42212:9;42208:17;42201:47;42265:131;42391:4;42265:131;:::i;:::-;42257:139;;41984:419;;;:::o;42409:191::-;42449:4;42469:20;42487:1;42469:20;:::i;:::-;42464:25;;42503:20;42521:1;42503:20;:::i;:::-;42498:25;;42542:1;42539;42536:8;42533:34;;;42547:18;;:::i;:::-;42533:34;42592:1;42589;42585:9;42577:17;;42409:191;;;;:::o;42606:182::-;42746:34;42742:1;42734:6;42730:14;42723:58;42606:182;:::o;42794:366::-;42936:3;42957:67;43021:2;43016:3;42957:67;:::i;:::-;42950:74;;43033:93;43122:3;43033:93;:::i;:::-;43151:2;43146:3;43142:12;43135:19;;42794:366;;;:::o;43166:419::-;43332:4;43370:2;43359:9;43355:18;43347:26;;43419:9;43413:4;43409:20;43405:1;43394:9;43390:17;43383:47;43447:131;43573:4;43447:131;:::i;:::-;43439:139;;43166:419;;;:::o;43591:178::-;43731:30;43727:1;43719:6;43715:14;43708:54;43591:178;:::o;43775:366::-;43917:3;43938:67;44002:2;43997:3;43938:67;:::i;:::-;43931:74;;44014:93;44103:3;44014:93;:::i;:::-;44132:2;44127:3;44123:12;44116:19;;43775:366;;;:::o;44147:419::-;44313:4;44351:2;44340:9;44336:18;44328:26;;44400:9;44394:4;44390:20;44386:1;44375:9;44371:17;44364:47;44428:131;44554:4;44428:131;:::i;:::-;44420:139;;44147:419;;;:::o;44572:175::-;44712:27;44708:1;44700:6;44696:14;44689:51;44572:175;:::o;44753:366::-;44895:3;44916:67;44980:2;44975:3;44916:67;:::i;:::-;44909:74;;44992:93;45081:3;44992:93;:::i;:::-;45110:2;45105:3;45101:12;45094:19;;44753:366;;;:::o;45125:419::-;45291:4;45329:2;45318:9;45314:18;45306:26;;45378:9;45372:4;45368:20;45364:1;45353:9;45349:17;45342:47;45406:131;45532:4;45406:131;:::i;:::-;45398:139;;45125:419;;;:::o;45550:237::-;45690:34;45686:1;45678:6;45674:14;45667:58;45759:20;45754:2;45746:6;45742:15;45735:45;45550:237;:::o;45793:366::-;45935:3;45956:67;46020:2;46015:3;45956:67;:::i;:::-;45949:74;;46032:93;46121:3;46032:93;:::i;:::-;46150:2;46145:3;46141:12;46134:19;;45793:366;;;:::o;46165:419::-;46331:4;46369:2;46358:9;46354:18;46346:26;;46418:9;46412:4;46408:20;46404:1;46393:9;46389:17;46382:47;46446:131;46572:4;46446:131;:::i;:::-;46438:139;;46165:419;;;:::o;46590:234::-;46730:34;46726:1;46718:6;46714:14;46707:58;46799:17;46794:2;46786:6;46782:15;46775:42;46590:234;:::o;46830:366::-;46972:3;46993:67;47057:2;47052:3;46993:67;:::i;:::-;46986:74;;47069:93;47158:3;47069:93;:::i;:::-;47187:2;47182:3;47178:12;47171:19;;46830:366;;;:::o;47202:419::-;47368:4;47406:2;47395:9;47391:18;47383:26;;47455:9;47449:4;47445:20;47441:1;47430:9;47426:17;47419:47;47483:131;47609:4;47483:131;:::i;:::-;47475:139;;47202:419;;;:::o;47627:98::-;47678:6;47712:5;47706:12;47696:22;;47627:98;;;:::o;47731:168::-;47814:11;47848:6;47843:3;47836:19;47888:4;47883:3;47879:14;47864:29;;47731:168;;;;:::o;47905:360::-;47991:3;48019:38;48051:5;48019:38;:::i;:::-;48073:70;48136:6;48131:3;48073:70;:::i;:::-;48066:77;;48152:52;48197:6;48192:3;48185:4;48178:5;48174:16;48152:52;:::i;:::-;48229:29;48251:6;48229:29;:::i;:::-;48224:3;48220:39;48213:46;;47995:270;47905:360;;;;:::o;48271:640::-;48466:4;48504:3;48493:9;48489:19;48481:27;;48518:71;48586:1;48575:9;48571:17;48562:6;48518:71;:::i;:::-;48599:72;48667:2;48656:9;48652:18;48643:6;48599:72;:::i;:::-;48681;48749:2;48738:9;48734:18;48725:6;48681:72;:::i;:::-;48800:9;48794:4;48790:20;48785:2;48774:9;48770:18;48763:48;48828:76;48899:4;48890:6;48828:76;:::i;:::-;48820:84;;48271:640;;;;;;;:::o;48917:141::-;48973:5;49004:6;48998:13;48989:22;;49020:32;49046:5;49020:32;:::i;:::-;48917:141;;;;:::o;49064:349::-;49133:6;49182:2;49170:9;49161:7;49157:23;49153:32;49150:119;;;49188:79;;:::i;:::-;49150:119;49308:1;49333:63;49388:7;49379:6;49368:9;49364:22;49333:63;:::i;:::-;49323:73;;49279:127;49064:349;;;;:::o;49419:180::-;49467:77;49464:1;49457:88;49564:4;49561:1;49554:15;49588:4;49585:1;49578:15;49605:185;49645:1;49662:20;49680:1;49662:20;:::i;:::-;49657:25;;49696:20;49714:1;49696:20;:::i;:::-;49691:25;;49735:1;49725:35;;49740:18;;:::i;:::-;49725:35;49782:1;49779;49775:9;49770:14;;49605:185;;;;:::o;49796:176::-;49828:1;49845:20;49863:1;49845:20;:::i;:::-;49840:25;;49879:20;49897:1;49879:20;:::i;:::-;49874:25;;49918:1;49908:35;;49923:18;;:::i;:::-;49908:35;49964:1;49961;49957:9;49952:14;;49796:176;;;;:::o;49978:180::-;50026:77;50023:1;50016:88;50123:4;50120:1;50113:15;50147:4;50144:1;50137:15
Swarm Source
ipfs://73a6c2e5e5529be8ab6037a3df88d02c898a00b9c8b57cbae42e81a30e140107
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.