Contract Overview
Balance:
0 FTM
FTM Value:
$0.00
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0xdacbb2eaf464f56545e90387817b90bab8b77dbe6cf855ab91d033ede906eded | Set Approval For... | 59152409 | 54 days 8 hrs ago | 0xd23f8378c4eb5a8707b300b3b159eae59079698b | IN | 0x08537ec5335aef23946b0a3bf0c3150b2af1d9f1 | 0 FTM | 0.013510325321 | |
0xbbf52cbe4586e0a54730f1d54dfde05bad531c78c481ad9313c8040e22f7ce17 | Mint | 59152322 | 54 days 8 hrs ago | 0xd23f8378c4eb5a8707b300b3b159eae59079698b | IN | 0x08537ec5335aef23946b0a3bf0c3150b2af1d9f1 | 0 FTM | 0.072653535017 | |
0xda8f85776d18a07d710937d983beee36a6307dcf1120c9dab81269a80134b0a4 | Transfer Ownersh... | 59098510 | 55 days ago | 0x10e642e61fc8646327df18e922facfcd2168a8bb | IN | 0x08537ec5335aef23946b0a3bf0c3150b2af1d9f1 | 0 FTM | 0.005632760984 | |
0xa2f56508391862af8dad66892555645dc82568cec4ef4d66e73b7cb0d02fca70 | 0x60806040 | 59027715 | 55 days 23 hrs ago | 0x10e642e61fc8646327df18e922facfcd2168a8bb | IN | Create: Hounds | 0 FTM | 0.156244739346 |
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0xa2f56508391862af8dad66892555645dc82568cec4ef4d66e73b7cb0d02fca70 | 59027715 | 55 days 23 hrs ago | 0x10e642e61fc8646327df18e922facfcd2168a8bb | Contract Creation | 0 FTM |
[ Download CSV Export ]
Contract Source Code Verified (Exact Match)
Contract Name:
Hounds
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at FtmScan.com on 2023-04-04 */ /** *Submitted for verification at Etherscan.io on 2022-08-04 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.10; // File: @openzeppelin/contracts/utils/introspection/IERC165.sol /** * @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 /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/utils/Strings.sol /** * @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/Address.sol /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/utils/Context.sol /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol) /** * @dev Interface for the NFT Royalty Standard. * * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal * support for royalty payments across all NFT marketplaces and ecosystem participants. * * _Available since v4.5._ */ interface IERC2981 is IERC165 { /** * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of * exchange. The royalty amount is denominated and should be paid in that same unit of exchange. */ function royaltyInfo(uint256 tokenId, uint256 salePrice) external view returns (address receiver, uint256 royaltyAmount); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is 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 { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: @openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } } // OpenZeppelin Contracts (last updated v4.7.0) (token/common/ERC2981.sol) /** * @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information. * * Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for * specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. * * Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the * fee is specified in basis points by default. * * IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See * https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to * voluntarily pay royalties together with sales, but note that this standard is not yet widely supported. * * _Available since v4.5._ */ abstract contract ERC2981 is IERC2981, ERC165 { struct RoyaltyInfo { address receiver; uint96 royaltyFraction; } RoyaltyInfo private _defaultRoyaltyInfo; mapping(uint256 => RoyaltyInfo) private _tokenRoyaltyInfo; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC165) returns (bool) { return interfaceId == type(IERC2981).interfaceId || super.supportsInterface(interfaceId); } /** * @inheritdoc IERC2981 */ function royaltyInfo(uint256 _tokenId, uint256 _salePrice) public view virtual override returns (address, uint256) { RoyaltyInfo memory royalty = _tokenRoyaltyInfo[_tokenId]; if (royalty.receiver == address(0)) { royalty = _defaultRoyaltyInfo; } uint256 royaltyAmount = (_salePrice * royalty.royaltyFraction) / _feeDenominator(); return (royalty.receiver, royaltyAmount); } /** * @dev The denominator with which to interpret the fee set in {_setTokenRoyalty} and {_setDefaultRoyalty} as a * fraction of the sale price. Defaults to 10000 so fees are expressed in basis points, but may be customized by an * override. */ function _feeDenominator() internal pure virtual returns (uint96) { return 10000; } /** * @dev Sets the royalty information that all ids in this contract will default to. * * Requirements: * * - `receiver` cannot be the zero address. * - `feeNumerator` cannot be greater than the fee denominator. */ function _setDefaultRoyalty(address receiver, uint96 feeNumerator) internal virtual { require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice"); require(receiver != address(0), "ERC2981: invalid receiver"); _defaultRoyaltyInfo = RoyaltyInfo(receiver, feeNumerator); } /** * @dev Removes default royalty information. */ function _deleteDefaultRoyalty() internal virtual { delete _defaultRoyaltyInfo; } /** * @dev Sets the royalty information for a specific token id, overriding the global default. * * Requirements: * * - `receiver` cannot be the zero address. * - `feeNumerator` cannot be greater than the fee denominator. */ function _setTokenRoyalty( uint256 tokenId, address receiver, uint96 feeNumerator ) internal virtual { require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice"); require(receiver != address(0), "ERC2981: Invalid parameters"); _tokenRoyaltyInfo[tokenId] = RoyaltyInfo(receiver, feeNumerator); } /** * @dev Resets royalty information for the token id back to the global default. */ function _resetTokenRoyalty(uint256 tokenId) internal virtual { delete _tokenRoyaltyInfo[tokenId]; } } // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/ERC721Royalty.sol) /** * @dev Extension of ERC721 with the ERC2981 NFT Royalty Standard, a standardized way to retrieve royalty payment * information. * * Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for * specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. * * IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See * https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to * voluntarily pay royalties together with sales, but note that this standard is not yet widely supported. * * _Available since v4.5._ */ abstract contract ERC721Royalty is ERC2981, ERC721 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, ERC2981) returns (bool) { return super.supportsInterface(interfaceId); } /** * @dev See {ERC721-_burn}. This override additionally clears the royalty information for the token. */ function _burn(uint256 tokenId) internal virtual override { super._burn(tokenId); _resetTokenRoyalty(tokenId); } } // File: @openzeppelin/contracts/access/Ownable.sol /** * @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() { _setOwner(_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 { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract Hounds is ERC721Enumerable, ERC721Royalty, Ownable { using Strings for uint256; using Address for address; // Optional mapping for token URIs mapping (uint256 => string) private _tokenURIs; // Base URI string private _baseURIextended; constructor(string memory _name, string memory _symbol) ERC721(_name, _symbol) {} function setBaseURI(string memory baseURI_) external onlyOwner() { _baseURIextended = baseURI_; } function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual { require(_exists(tokenId), "ERC721Metadata: URI set of nonexistent token"); _tokenURIs[tokenId] = _tokenURI; } function postSetTokenURI(uint256 tokenId, string memory _tokenURI) external onlyOwner { require(_exists(tokenId), "ERC721Metadata: URI set of nonexistent token"); _tokenURIs[tokenId] = _tokenURI; } function _baseURI() internal view virtual override returns (string memory) { return _baseURIextended; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: 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)); } // If there is a baseURI but no tokenURI, concatenate the tokenID to the baseURI. else { return string(abi.encodePacked(base, tokenId.toString())); } } /** * @dev Sets the royalty information for a specific token id, overriding the global default. */ function setTokenRoyalty( uint256 tokenId, address receiver, uint96 basisPoints ) public onlyOwner { _setTokenRoyalty(tokenId, receiver, basisPoints); } /** * @dev Removes default royalty information. */ function deleteDefaultRoyalty() public onlyOwner { _deleteDefaultRoyalty(); } function setDefaultRoyalty(address receiver, uint96 feeNumerator) public onlyOwner { _setDefaultRoyalty(receiver, feeNumerator); } /** * @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 override(ERC721, ERC721Enumerable) { super._beforeTokenTransfer(from, 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 override(ERC721, ERC721Royalty) { super._burn(tokenId); } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view override(ERC721Enumerable, ERC721Royalty) returns (bool) { return ERC721Enumerable.supportsInterface(interfaceId) || ERC721Royalty.supportsInterface(interfaceId); } function mint( address _to, uint256 _tokenId, string memory tokenURI_) external onlyOwner() { _mint(_to, _tokenId); _setTokenURI(_tokenId, tokenURI_); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":"deleteDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI_","type":"string"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"name":"postSetTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint96","name":"feeNumerator","type":"uint96"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint96","name":"basisPoints","type":"uint96"}],"name":"setTokenRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162004ce138038062004ce18339818101604052810190620000379190620002e8565b818181600290816200004a9190620005b8565b5080600390816200005c9190620005b8565b5050506200007f620000736200008760201b60201c565b6200008f60201b60201c565b50506200069f565b600033905090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620001be8262000173565b810181811067ffffffffffffffff82111715620001e057620001df62000184565b5b80604052505050565b6000620001f562000155565b9050620002038282620001b3565b919050565b600067ffffffffffffffff82111562000226576200022562000184565b5b620002318262000173565b9050602081019050919050565b60005b838110156200025e57808201518184015260208101905062000241565b60008484015250505050565b6000620002816200027b8462000208565b620001e9565b905082815260208101848484011115620002a0576200029f6200016e565b5b620002ad8482856200023e565b509392505050565b600082601f830112620002cd57620002cc62000169565b5b8151620002df8482602086016200026a565b91505092915050565b600080604083850312156200030257620003016200015f565b5b600083015167ffffffffffffffff81111562000323576200032262000164565b5b6200033185828601620002b5565b925050602083015167ffffffffffffffff81111562000355576200035462000164565b5b6200036385828601620002b5565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003c057607f821691505b602082108103620003d657620003d562000378565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000401565b6200044c868362000401565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000499620004936200048d8462000464565b6200046e565b62000464565b9050919050565b6000819050919050565b620004b58362000478565b620004cd620004c482620004a0565b8484546200040e565b825550505050565b600090565b620004e4620004d5565b620004f1818484620004aa565b505050565b5b8181101562000519576200050d600082620004da565b600181019050620004f7565b5050565b601f82111562000568576200053281620003dc565b6200053d84620003f1565b810160208510156200054d578190505b620005656200055c85620003f1565b830182620004f6565b50505b505050565b600082821c905092915050565b60006200058d600019846008026200056d565b1980831691505092915050565b6000620005a883836200057a565b9150826002028217905092915050565b620005c3826200036d565b67ffffffffffffffff811115620005df57620005de62000184565b5b620005eb8254620003a7565b620005f88282856200051d565b600060209050601f8311600181146200063057600084156200061b578287015190505b6200062785826200059a565b86555062000697565b601f1984166200064086620003dc565b60005b828110156200066a5784890151825560018201915060208501945060208101905062000643565b868310156200068a578489015162000686601f8916826200057a565b8355505b6001600288020188555050505b505050505050565b61463280620006af6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80635944c753116100de578063a22cb46511610097578063c87b56dd11610071578063c87b56dd1461046c578063d3fc98641461049c578063e985e9c5146104b8578063f2fde38b146104e85761018e565b8063a22cb4651461042a578063aa1b103f14610446578063b88d4fde146104505761018e565b80635944c753146103685780636352211e1461038457806370a08231146103b4578063715018a6146103e45780638da5cb5b146103ee57806395d89b411461040c5761018e565b806323b872dd1161014b57806342842e0e1161012557806342842e0e146102e45780634f6ccce71461030057806355f804b314610330578063579970811461034c5761018e565b806323b872dd146102675780632a55205a146102835780632f745c59146102b45761018e565b806301ffc9a71461019357806304634d8d146101c357806306fdde03146101df578063081812fc146101fd578063095ea7b31461022d57806318160ddd14610249575b600080fd5b6101ad60048036038101906101a89190612be0565b610504565b6040516101ba9190612c28565b60405180910390f35b6101dd60048036038101906101d89190612ce5565b610526565b005b6101e76105b0565b6040516101f49190612db5565b60405180910390f35b61021760048036038101906102129190612e0d565b610642565b6040516102249190612e49565b60405180910390f35b61024760048036038101906102429190612e64565b6106c7565b005b6102516107de565b60405161025e9190612eb3565b60405180910390f35b610281600480360381019061027c9190612ece565b6107eb565b005b61029d60048036038101906102989190612f21565b61084b565b6040516102ab929190612f61565b60405180910390f35b6102ce60048036038101906102c99190612e64565b610a35565b6040516102db9190612eb3565b60405180910390f35b6102fe60048036038101906102f99190612ece565b610ada565b005b61031a60048036038101906103159190612e0d565b610afa565b6040516103279190612eb3565b60405180910390f35b61034a600480360381019061034591906130bf565b610b6b565b005b61036660048036038101906103619190613108565b610bfa565b005b610382600480360381019061037d9190613164565b610ce3565b005b61039e60048036038101906103999190612e0d565b610d6f565b6040516103ab9190612e49565b60405180910390f35b6103ce60048036038101906103c991906131b7565b610e20565b6040516103db9190612eb3565b60405180910390f35b6103ec610ed7565b005b6103f6610f5f565b6040516104039190612e49565b60405180910390f35b610414610f89565b6040516104219190612db5565b60405180910390f35b610444600480360381019061043f9190613210565b61101b565b005b61044e61119b565b005b61046a600480360381019061046591906132f1565b611221565b005b61048660048036038101906104819190612e0d565b611283565b6040516104939190612db5565b60405180910390f35b6104b660048036038101906104b19190613374565b6113f5565b005b6104d260048036038101906104cd91906133e3565b61148a565b6040516104df9190612c28565b60405180910390f35b61050260048036038101906104fd91906131b7565b61151e565b005b600061050f82611615565b8061051f575061051e8261168f565b5b9050919050565b61052e6116a1565b73ffffffffffffffffffffffffffffffffffffffff1661054c610f5f565b73ffffffffffffffffffffffffffffffffffffffff16146105a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105999061346f565b60405180910390fd5b6105ac82826116a9565b5050565b6060600280546105bf906134be565b80601f01602080910402602001604051908101604052809291908181526020018280546105eb906134be565b80156106385780601f1061060d57610100808354040283529160200191610638565b820191906000526020600020905b81548152906001019060200180831161061b57829003601f168201915b5050505050905090565b600061064d8261183d565b61068c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068390613561565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006106d282610d6f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610742576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610739906135f3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107616116a1565b73ffffffffffffffffffffffffffffffffffffffff161480610790575061078f8161078a6116a1565b61148a565b5b6107cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c690613685565b60405180910390fd5b6107d983836118a9565b505050565b6000600a80549050905090565b6107fc6107f66116a1565b82611962565b61083b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083290613717565b60405180910390fd5b610846838383611a40565b505050565b6000806000600160008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036109e05760006040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b60006109ea611c9b565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610a169190613766565b610a2091906137d7565b90508160000151819350935050509250929050565b6000610a4083610e20565b8210610a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a789061387a565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610af583838360405180602001604052806000815250611221565b505050565b6000610b046107de565b8210610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c9061390c565b60405180910390fd5b600a8281548110610b5957610b5861392c565b5b90600052602060002001549050919050565b610b736116a1565b73ffffffffffffffffffffffffffffffffffffffff16610b91610f5f565b73ffffffffffffffffffffffffffffffffffffffff1614610be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bde9061346f565b60405180910390fd5b80600e9081610bf69190613b07565b5050565b610c026116a1565b73ffffffffffffffffffffffffffffffffffffffff16610c20610f5f565b73ffffffffffffffffffffffffffffffffffffffff1614610c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6d9061346f565b60405180910390fd5b610c7f8261183d565b610cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb590613c4b565b60405180910390fd5b80600d60008481526020019081526020016000209081610cde9190613b07565b505050565b610ceb6116a1565b73ffffffffffffffffffffffffffffffffffffffff16610d09610f5f565b73ffffffffffffffffffffffffffffffffffffffff1614610d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d569061346f565b60405180910390fd5b610d6a838383611ca5565b505050565b6000806004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e90613cdd565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8790613d6f565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610edf6116a1565b73ffffffffffffffffffffffffffffffffffffffff16610efd610f5f565b73ffffffffffffffffffffffffffffffffffffffff1614610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a9061346f565b60405180910390fd5b610f5d6000611e4c565b565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610f98906134be565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc4906134be565b80156110115780601f10610fe657610100808354040283529160200191611011565b820191906000526020600020905b815481529060010190602001808311610ff457829003601f168201915b5050505050905090565b6110236116a1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108790613ddb565b60405180910390fd5b806007600061109d6116a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661114a6116a1565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161118f9190612c28565b60405180910390a35050565b6111a36116a1565b73ffffffffffffffffffffffffffffffffffffffff166111c1610f5f565b73ffffffffffffffffffffffffffffffffffffffff1614611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120e9061346f565b60405180910390fd5b61121f611f12565b565b61123261122c6116a1565b83611962565b611271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126890613717565b60405180910390fd5b61127d84848484611f5f565b50505050565b606061128e8261183d565b6112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c490613e6d565b60405180910390fd5b6000600d600084815260200190815260200160002080546112ed906134be565b80601f0160208091040260200160405190810160405280929190818152602001828054611319906134be565b80156113665780601f1061133b57610100808354040283529160200191611366565b820191906000526020600020905b81548152906001019060200180831161134957829003601f168201915b505050505090506000611377611fbb565b9050600081510361138c5781925050506113f0565b6000825111156113c15780826040516020016113a9929190613ec9565b604051602081830303815290604052925050506113f0565b806113cb8561204d565b6040516020016113dc929190613ec9565b604051602081830303815290604052925050505b919050565b6113fd6116a1565b73ffffffffffffffffffffffffffffffffffffffff1661141b610f5f565b73ffffffffffffffffffffffffffffffffffffffff1614611471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114689061346f565b60405180910390fd5b61147b83836121ad565b611485828261237a565b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6115266116a1565b73ffffffffffffffffffffffffffffffffffffffff16611544610f5f565b73ffffffffffffffffffffffffffffffffffffffff161461159a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115919061346f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160090613f5f565b60405180910390fd5b61161281611e4c565b50565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116885750611687826123e7565b5b9050919050565b600061169a82611615565b9050919050565b600033905090565b6116b1611c9b565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111561170f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170690613ff1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361177e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117759061405d565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff168152506000808201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b60008073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661191c83610d6f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061196d8261183d565b6119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a3906140ef565b60405180910390fd5b60006119b783610d6f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a2657508373ffffffffffffffffffffffffffffffffffffffff16611a0e84610642565b73ffffffffffffffffffffffffffffffffffffffff16145b80611a375750611a36818561148a565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611a6082610d6f565b73ffffffffffffffffffffffffffffffffffffffff1614611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90614181565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1c90614213565b60405180910390fd5b611b308383836124c9565b611b3b6000826118a9565b6001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b8b9190614233565b925050819055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611be29190614267565b92505081905550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000612710905090565b611cad611c9b565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0290613ff1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d71906142e7565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff168152506001600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000806000820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff02191690555050565b611f6a848484611a40565b611f76848484846124d9565b611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac90614379565b60405180910390fd5b50505050565b6060600e8054611fca906134be565b80601f0160208091040260200160405190810160405280929190818152602001828054611ff6906134be565b80156120435780601f1061201857610100808354040283529160200191612043565b820191906000526020600020905b81548152906001019060200180831161202657829003601f168201915b5050505050905090565b606060008203612094576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506121a8565b600082905060005b600082146120c65780806120af90614399565b915050600a826120bf91906137d7565b915061209c565b60008167ffffffffffffffff8111156120e2576120e1612f94565b5b6040519080825280601f01601f1916602001820160405280156121145781602001600182028036833780820191505090505b5090505b600085146121a15760018261212d9190614233565b9150600a8561213c91906143e1565b60306121489190614267565b60f81b81838151811061215e5761215d61392c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561219a91906137d7565b9450612118565b8093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361221c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122139061445e565b60405180910390fd5b6122258161183d565b15612265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225c906144ca565b60405180910390fd5b612271600083836124c9565b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122c19190614267565b92505081905550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6123838261183d565b6123c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b990613c4b565b60405180910390fd5b80600d600084815260200190815260200160002090816123e29190613b07565b505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806124b257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806124c257506124c182612660565b5b9050919050565b6124d48383836126da565b505050565b60006124fa8473ffffffffffffffffffffffffffffffffffffffff166127ec565b15612653578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026125236116a1565b8786866040518563ffffffff1660e01b8152600401612545949392919061453f565b6020604051808303816000875af192505050801561258157506040513d601f19601f8201168201806040525081019061257e91906145a0565b60015b612603573d80600081146125b1576040519150601f19603f3d011682016040523d82523d6000602084013e6125b6565b606091505b5060008151036125fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f290614379565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612658565b600190505b949350505050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806126d357506126d2826127ff565b5b9050919050565b6126e5838383612869565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612727576127228161286e565b612766565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146127655761276483826128b7565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127a8576127a381612a24565b6127e7565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146127e6576127e58282612af5565b5b5b505050565b600080823b905060008111915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b600a80549050600b600083815260200190815260200160002081905550600a81908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016128c484610e20565b6128ce9190614233565b90506000600960008481526020019081526020016000205490508181146129b3576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816009600083815260200190815260200160002081905550505b6009600084815260200190815260200160002060009055600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600a80549050612a389190614233565b90506000600b60008481526020019081526020016000205490506000600a8381548110612a6857612a6761392c565b5b9060005260206000200154905080600a8381548110612a8a57612a8961392c565b5b906000526020600020018190555081600b600083815260200190815260200160002081905550600b600085815260200190815260200160002060009055600a805480612ad957612ad86145cd565b5b6001900381819060005260206000200160009055905550505050565b6000612b0083610e20565b905081600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806009600084815260200190815260200160002081905550505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612bbd81612b88565b8114612bc857600080fd5b50565b600081359050612bda81612bb4565b92915050565b600060208284031215612bf657612bf5612b7e565b5b6000612c0484828501612bcb565b91505092915050565b60008115159050919050565b612c2281612c0d565b82525050565b6000602082019050612c3d6000830184612c19565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c6e82612c43565b9050919050565b612c7e81612c63565b8114612c8957600080fd5b50565b600081359050612c9b81612c75565b92915050565b60006bffffffffffffffffffffffff82169050919050565b612cc281612ca1565b8114612ccd57600080fd5b50565b600081359050612cdf81612cb9565b92915050565b60008060408385031215612cfc57612cfb612b7e565b5b6000612d0a85828601612c8c565b9250506020612d1b85828601612cd0565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d5f578082015181840152602081019050612d44565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d8782612d25565b612d918185612d30565b9350612da1818560208601612d41565b612daa81612d6b565b840191505092915050565b60006020820190508181036000830152612dcf8184612d7c565b905092915050565b6000819050919050565b612dea81612dd7565b8114612df557600080fd5b50565b600081359050612e0781612de1565b92915050565b600060208284031215612e2357612e22612b7e565b5b6000612e3184828501612df8565b91505092915050565b612e4381612c63565b82525050565b6000602082019050612e5e6000830184612e3a565b92915050565b60008060408385031215612e7b57612e7a612b7e565b5b6000612e8985828601612c8c565b9250506020612e9a85828601612df8565b9150509250929050565b612ead81612dd7565b82525050565b6000602082019050612ec86000830184612ea4565b92915050565b600080600060608486031215612ee757612ee6612b7e565b5b6000612ef586828701612c8c565b9350506020612f0686828701612c8c565b9250506040612f1786828701612df8565b9150509250925092565b60008060408385031215612f3857612f37612b7e565b5b6000612f4685828601612df8565b9250506020612f5785828601612df8565b9150509250929050565b6000604082019050612f766000830185612e3a565b612f836020830184612ea4565b9392505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612fcc82612d6b565b810181811067ffffffffffffffff82111715612feb57612fea612f94565b5b80604052505050565b6000612ffe612b74565b905061300a8282612fc3565b919050565b600067ffffffffffffffff82111561302a57613029612f94565b5b61303382612d6b565b9050602081019050919050565b82818337600083830152505050565b600061306261305d8461300f565b612ff4565b90508281526020810184848401111561307e5761307d612f8f565b5b613089848285613040565b509392505050565b600082601f8301126130a6576130a5612f8a565b5b81356130b684826020860161304f565b91505092915050565b6000602082840312156130d5576130d4612b7e565b5b600082013567ffffffffffffffff8111156130f3576130f2612b83565b5b6130ff84828501613091565b91505092915050565b6000806040838503121561311f5761311e612b7e565b5b600061312d85828601612df8565b925050602083013567ffffffffffffffff81111561314e5761314d612b83565b5b61315a85828601613091565b9150509250929050565b60008060006060848603121561317d5761317c612b7e565b5b600061318b86828701612df8565b935050602061319c86828701612c8c565b92505060406131ad86828701612cd0565b9150509250925092565b6000602082840312156131cd576131cc612b7e565b5b60006131db84828501612c8c565b91505092915050565b6131ed81612c0d565b81146131f857600080fd5b50565b60008135905061320a816131e4565b92915050565b6000806040838503121561322757613226612b7e565b5b600061323585828601612c8c565b9250506020613246858286016131fb565b9150509250929050565b600067ffffffffffffffff82111561326b5761326a612f94565b5b61327482612d6b565b9050602081019050919050565b600061329461328f84613250565b612ff4565b9050828152602081018484840111156132b0576132af612f8f565b5b6132bb848285613040565b509392505050565b600082601f8301126132d8576132d7612f8a565b5b81356132e8848260208601613281565b91505092915050565b6000806000806080858703121561330b5761330a612b7e565b5b600061331987828801612c8c565b945050602061332a87828801612c8c565b935050604061333b87828801612df8565b925050606085013567ffffffffffffffff81111561335c5761335b612b83565b5b613368878288016132c3565b91505092959194509250565b60008060006060848603121561338d5761338c612b7e565b5b600061339b86828701612c8c565b93505060206133ac86828701612df8565b925050604084013567ffffffffffffffff8111156133cd576133cc612b83565b5b6133d986828701613091565b9150509250925092565b600080604083850312156133fa576133f9612b7e565b5b600061340885828601612c8c565b925050602061341985828601612c8c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613459602083612d30565b915061346482613423565b602082019050919050565b600060208201905081810360008301526134888161344c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134d657607f821691505b6020821081036134e9576134e861348f565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061354b602c83612d30565b9150613556826134ef565b604082019050919050565b6000602082019050818103600083015261357a8161353e565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006135dd602183612d30565b91506135e882613581565b604082019050919050565b6000602082019050818103600083015261360c816135d0565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b600061366f603883612d30565b915061367a82613613565b604082019050919050565b6000602082019050818103600083015261369e81613662565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613701603183612d30565b915061370c826136a5565b604082019050919050565b60006020820190508181036000830152613730816136f4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061377182612dd7565b915061377c83612dd7565b925082820261378a81612dd7565b915082820484148315176137a1576137a0613737565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137e282612dd7565b91506137ed83612dd7565b9250826137fd576137fc6137a8565b5b828204905092915050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000613864602b83612d30565b915061386f82613808565b604082019050919050565b6000602082019050818103600083015261389381613857565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006138f6602c83612d30565b91506139018261389a565b604082019050919050565b60006020820190508181036000830152613925816138e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026139bd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613980565b6139c78683613980565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613a046139ff6139fa84612dd7565b6139df565b612dd7565b9050919050565b6000819050919050565b613a1e836139e9565b613a32613a2a82613a0b565b84845461398d565b825550505050565b600090565b613a47613a3a565b613a52818484613a15565b505050565b5b81811015613a7657613a6b600082613a3f565b600181019050613a58565b5050565b601f821115613abb57613a8c8161395b565b613a9584613970565b81016020851015613aa4578190505b613ab8613ab085613970565b830182613a57565b50505b505050565b600082821c905092915050565b6000613ade60001984600802613ac0565b1980831691505092915050565b6000613af78383613acd565b9150826002028217905092915050565b613b1082612d25565b67ffffffffffffffff811115613b2957613b28612f94565b5b613b3382546134be565b613b3e828285613a7a565b600060209050601f831160018114613b715760008415613b5f578287015190505b613b698582613aeb565b865550613bd1565b601f198416613b7f8661395b565b60005b82811015613ba757848901518255600182019150602085019450602081019050613b82565b86831015613bc45784890151613bc0601f891682613acd565b8355505b6001600288020188555050505b505050505050565b7f4552433732314d657461646174613a2055524920736574206f66206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613c35602c83612d30565b9150613c4082613bd9565b604082019050919050565b60006020820190508181036000830152613c6481613c28565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000613cc7602983612d30565b9150613cd282613c6b565b604082019050919050565b60006020820190508181036000830152613cf681613cba565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613d59602a83612d30565b9150613d6482613cfd565b604082019050919050565b60006020820190508181036000830152613d8881613d4c565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613dc5601983612d30565b9150613dd082613d8f565b602082019050919050565b60006020820190508181036000830152613df481613db8565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613e57602f83612d30565b9150613e6282613dfb565b604082019050919050565b60006020820190508181036000830152613e8681613e4a565b9050919050565b600081905092915050565b6000613ea382612d25565b613ead8185613e8d565b9350613ebd818560208601612d41565b80840191505092915050565b6000613ed58285613e98565b9150613ee18284613e98565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f49602683612d30565b9150613f5482613eed565b604082019050919050565b60006020820190508181036000830152613f7881613f3c565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b6000613fdb602a83612d30565b9150613fe682613f7f565b604082019050919050565b6000602082019050818103600083015261400a81613fce565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b6000614047601983612d30565b915061405282614011565b602082019050919050565b600060208201905081810360008301526140768161403a565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006140d9602c83612d30565b91506140e48261407d565b604082019050919050565b60006020820190508181036000830152614108816140cc565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b600061416b602983612d30565b91506141768261410f565b604082019050919050565b6000602082019050818103600083015261419a8161415e565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006141fd602483612d30565b9150614208826141a1565b604082019050919050565b6000602082019050818103600083015261422c816141f0565b9050919050565b600061423e82612dd7565b915061424983612dd7565b925082820390508181111561426157614260613737565b5b92915050565b600061427282612dd7565b915061427d83612dd7565b925082820190508082111561429557614294613737565b5b92915050565b7f455243323938313a20496e76616c696420706172616d65746572730000000000600082015250565b60006142d1601b83612d30565b91506142dc8261429b565b602082019050919050565b60006020820190508181036000830152614300816142c4565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614363603283612d30565b915061436e82614307565b604082019050919050565b6000602082019050818103600083015261439281614356565b9050919050565b60006143a482612dd7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143d6576143d5613737565b5b600182019050919050565b60006143ec82612dd7565b91506143f783612dd7565b925082614407576144066137a8565b5b828206905092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614448602083612d30565b915061445382614412565b602082019050919050565b600060208201905081810360008301526144778161443b565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006144b4601c83612d30565b91506144bf8261447e565b602082019050919050565b600060208201905081810360008301526144e3816144a7565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000614511826144ea565b61451b81856144f5565b935061452b818560208601612d41565b61453481612d6b565b840191505092915050565b60006080820190506145546000830187612e3a565b6145616020830186612e3a565b61456e6040830185612ea4565b81810360608301526145808184614506565b905095945050505050565b60008151905061459a81612bb4565b92915050565b6000602082840312156145b6576145b5612b7e565b5b60006145c48482850161458b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220993a4c8490d1577a6a154f50c2571ad3baad8a7d3ca12ab98e5ab897644a67a864736f6c6343000813003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b48656c6c20486f756e64730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006484f554e44530000000000000000000000000000000000000000000000000000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b48656c6c20486f756e64730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006484f554e44530000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Hell Hounds
Arg [1] : _symbol (string): HOUNDS
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [3] : 48656c6c20486f756e6473000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [5] : 484f554e44530000000000000000000000000000000000000000000000000000
Deployed ByteCode Sourcemap
49139:4297:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52943:278;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51597:144;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23205:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24764:221;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24287:411;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35920:113;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25654:339;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42996:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;35588:256;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26064:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36110:233;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49541:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49899:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51224:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22899:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22629:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48508:94;;;:::i;:::-;;47857:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23374:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25057:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51498:91;;;:::i;:::-;;26320:328;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50268:832;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53231:202;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25423:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48757:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52943:278;53089:4;53118:47;53153:11;53118:34;:47::i;:::-;:95;;;;53169:44;53201:11;53169:31;:44::i;:::-;53118:95;53111:102;;52943:278;;;:::o;51597:144::-;48088:12;:10;:12::i;:::-;48077:23;;:7;:5;:7::i;:::-;:23;;;48069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51691:42:::1;51710:8;51720:12;51691:18;:42::i;:::-;51597:144:::0;;:::o;23205:100::-;23259:13;23292:5;23285:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23205:100;:::o;24764:221::-;24840:7;24868:16;24876:7;24868;:16::i;:::-;24860:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;24953:15;:24;24969:7;24953:24;;;;;;;;;;;;;;;;;;;;;24946:31;;24764:221;;;:::o;24287:411::-;24368:13;24384:23;24399:7;24384:14;:23::i;:::-;24368:39;;24432:5;24426:11;;:2;:11;;;24418:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;24526:5;24510:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;24535:37;24552:5;24559:12;:10;:12::i;:::-;24535:16;:37::i;:::-;24510:62;24488:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;24669:21;24678:2;24682:7;24669:8;:21::i;:::-;24357:341;24287:411;;:::o;35920:113::-;35981:7;36008:10;:17;;;;36001:24;;35920:113;:::o;25654:339::-;25849:41;25868:12;:10;:12::i;:::-;25882:7;25849:18;:41::i;:::-;25841:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;25957:28;25967:4;25973:2;25977:7;25957:9;:28::i;:::-;25654:339;;;:::o;42996:442::-;43093:7;43102;43122:26;43151:17;:27;43169:8;43151:27;;;;;;;;;;;43122:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43223:1;43195:30;;:7;:16;;;:30;;;43191:92;;43252:19;43242:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43191:92;43295:21;43360:17;:15;:17::i;:::-;43319:58;;43333:7;:23;;;43320:36;;:10;:36;;;;:::i;:::-;43319:58;;;;:::i;:::-;43295:82;;43398:7;:16;;;43416:13;43390:40;;;;;;42996:442;;;;;:::o;35588:256::-;35685:7;35721:23;35738:5;35721:16;:23::i;:::-;35713:5;:31;35705:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;35810:12;:19;35823:5;35810:19;;;;;;;;;;;;;;;:26;35830:5;35810:26;;;;;;;;;;;;35803:33;;35588:256;;;;:::o;26064:185::-;26202:39;26219:4;26225:2;26229:7;26202:39;;;;;;;;;;;;:16;:39::i;:::-;26064:185;;;:::o;36110:233::-;36185:7;36221:30;:28;:30::i;:::-;36213:5;:38;36205:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;36318:10;36329:5;36318:17;;;;;;;;:::i;:::-;;;;;;;;;;36311:24;;36110:233;;;:::o;49541:111::-;48088:12;:10;:12::i;:::-;48077:23;;:7;:5;:7::i;:::-;:23;;;48069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49636:8:::1;49617:16;:27;;;;;;:::i;:::-;;49541:111:::0;:::o;49899:220::-;48088:12;:10;:12::i;:::-;48077:23;;:7;:5;:7::i;:::-;:23;;;48069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50004:16:::1;50012:7;50004;:16::i;:::-;49996:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;50102:9;50080:10;:19;50091:7;50080:19;;;;;;;;;;;:31;;;;;;:::i;:::-;;49899:220:::0;;:::o;51224:198::-;48088:12;:10;:12::i;:::-;48077:23;;:7;:5;:7::i;:::-;:23;;;48069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51366:48:::1;51383:7;51392:8;51402:11;51366:16;:48::i;:::-;51224:198:::0;;;:::o;22899:239::-;22971:7;22991:13;23007:7;:16;23015:7;23007:16;;;;;;;;;;;;;;;;;;;;;22991:32;;23059:1;23042:19;;:5;:19;;;23034:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23125:5;23118:12;;;22899:239;;;:::o;22629:208::-;22701:7;22746:1;22729:19;;:5;:19;;;22721:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;22813:9;:16;22823:5;22813:16;;;;;;;;;;;;;;;;22806:23;;22629:208;;;:::o;48508:94::-;48088:12;:10;:12::i;:::-;48077:23;;:7;:5;:7::i;:::-;:23;;;48069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48573:21:::1;48591:1;48573:9;:21::i;:::-;48508:94::o:0;47857:87::-;47903:7;47930:6;;;;;;;;;;;47923:13;;47857:87;:::o;23374:104::-;23430:13;23463:7;23456:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23374:104;:::o;25057:295::-;25172:12;:10;:12::i;:::-;25160:24;;:8;:24;;;25152:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;25272:8;25227:18;:32;25246:12;:10;:12::i;:::-;25227:32;;;;;;;;;;;;;;;:42;25260:8;25227:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;25325:8;25296:48;;25311:12;:10;:12::i;:::-;25296:48;;;25335:8;25296:48;;;;;;:::i;:::-;;;;;;;;25057:295;;:::o;51498:91::-;48088:12;:10;:12::i;:::-;48077:23;;:7;:5;:7::i;:::-;:23;;;48069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51558:23:::1;:21;:23::i;:::-;51498:91::o:0;26320:328::-;26495:41;26514:12;:10;:12::i;:::-;26528:7;26495:18;:41::i;:::-;26487:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;26601:39;26615:4;26621:2;26625:7;26634:5;26601:13;:39::i;:::-;26320:328;;;;:::o;50268:832::-;50341:13;50375:16;50383:7;50375;:16::i;:::-;50367:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;50456:23;50482:10;:19;50493:7;50482:19;;;;;;;;;;;50456:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50512:18;50533:10;:8;:10::i;:::-;50512:31;;50653:1;50637:4;50631:18;:23;50627:72;;50678:9;50671:16;;;;;;50627:72;50825:1;50805:9;50799:23;:27;50795:298;;;50874:4;50880:9;50857:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;50843:48;;;;;;50795:298;51055:4;51061:18;:7;:16;:18::i;:::-;51038:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;51024:57;;;;50268:832;;;;:::o;53231:202::-;48088:12;:10;:12::i;:::-;48077:23;;:7;:5;:7::i;:::-;:23;;;48069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53361:20:::1;53367:3;53372:8;53361:5;:20::i;:::-;53392:33;53405:8;53415:9;53392:12;:33::i;:::-;53231:202:::0;;;:::o;25423:164::-;25520:4;25544:18;:25;25563:5;25544:25;;;;;;;;;;;;;;;:35;25570:8;25544:35;;;;;;;;;;;;;;;;;;;;;;;;;25537:42;;25423:164;;;;:::o;48757:192::-;48088:12;:10;:12::i;:::-;48077:23;;:7;:5;:7::i;:::-;:23;;;48069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48866:1:::1;48846:22;;:8;:22;;::::0;48838:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;48922:19;48932:8;48922:9;:19::i;:::-;48757:192:::0;:::o;35280:224::-;35382:4;35421:35;35406:50;;;:11;:50;;;;:90;;;;35460:36;35484:11;35460:23;:36::i;:::-;35406:90;35399:97;;35280:224;;;:::o;46446:170::-;46548:4;46572:36;46596:11;46572:23;:36::i;:::-;46565:43;;46446:170;;;:::o;19952:98::-;20005:7;20032:10;20025:17;;19952:98;:::o;44088:332::-;44207:17;:15;:17::i;:::-;44191:33;;:12;:33;;;;44183:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;44310:1;44290:22;;:8;:22;;;44282:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;44377:35;;;;;;;;44389:8;44377:35;;;;;;44399:12;44377:35;;;;;44355:19;:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44088:332;;:::o;28158:127::-;28223:4;28275:1;28247:30;;:7;:16;28255:7;28247:16;;;;;;;;;;;;;;;;;;;;;:30;;;;28240:37;;28158:127;;;:::o;32140:174::-;32242:2;32215:15;:24;32231:7;32215:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;32298:7;32294:2;32260:46;;32269:23;32284:7;32269:14;:23::i;:::-;32260:46;;;;;;;;;;;;32140:174;;:::o;28452:348::-;28545:4;28570:16;28578:7;28570;:16::i;:::-;28562:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;28646:13;28662:23;28677:7;28662:14;:23::i;:::-;28646:39;;28715:5;28704:16;;:7;:16;;;:51;;;;28748:7;28724:31;;:20;28736:7;28724:11;:20::i;:::-;:31;;;28704:51;:87;;;;28759:32;28776:5;28783:7;28759:16;:32::i;:::-;28704:87;28696:96;;;28452:348;;;;:::o;31444:578::-;31603:4;31576:31;;:23;31591:7;31576:14;:23::i;:::-;:31;;;31568:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;31686:1;31672:16;;:2;:16;;;31664:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;31742:39;31763:4;31769:2;31773:7;31742:20;:39::i;:::-;31846:29;31863:1;31867:7;31846:8;:29::i;:::-;31907:1;31888:9;:15;31898:4;31888:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;31936:1;31919:9;:13;31929:2;31919:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;31967:2;31948:7;:16;31956:7;31948:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;32006:7;32002:2;31987:27;;31996:4;31987:27;;;;;;;;;;;;31444:578;;;:::o;43720:97::-;43778:6;43804:5;43797:12;;43720:97;:::o;44871:390::-;45039:17;:15;:17::i;:::-;45023:33;;:12;:33;;;;45015:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;45142:1;45122:22;;:8;:22;;;45114:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;45218:35;;;;;;;;45230:8;45218:35;;;;;;45240:12;45218:35;;;;;45189:17;:26;45207:7;45189:26;;;;;;;;;;;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44871:390;;;:::o;48957:173::-;49013:16;49032:6;;;;;;;;;;;49013:25;;49058:8;49049:6;;:17;;;;;;;;;;;;;;;;;;49113:8;49082:40;;49103:8;49082:40;;;;;;;;;;;;49002:128;48957:173;:::o;44496:95::-;44564:19;;44557:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44496:95::o;27530:315::-;27687:28;27697:4;27703:2;27707:7;27687:9;:28::i;:::-;27734:48;27757:4;27763:2;27767:7;27776:5;27734:22;:48::i;:::-;27726:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;27530:315;;;;:::o;50135:117::-;50195:13;50228:16;50221:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50135:117;:::o;7892:723::-;7948:13;8178:1;8169:5;:10;8165:53;;8196:10;;;;;;;;;;;;;;;;;;;;;8165:53;8228:12;8243:5;8228:20;;8259:14;8284:78;8299:1;8291:4;:9;8284:78;;8317:8;;;;;:::i;:::-;;;;8348:2;8340:10;;;;;:::i;:::-;;;8284:78;;;8372:19;8404:6;8394:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8372:39;;8422:154;8438:1;8429:5;:10;8422:154;;8466:1;8456:11;;;;;:::i;:::-;;;8533:2;8525:5;:10;;;;:::i;:::-;8512:2;:24;;;;:::i;:::-;8499:39;;8482:6;8489;8482:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;8562:2;8553:11;;;;;:::i;:::-;;;8422:154;;;8600:6;8586:21;;;;;7892:723;;;;:::o;30136:382::-;30230:1;30216:16;;:2;:16;;;30208:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;30289:16;30297:7;30289;:16::i;:::-;30288:17;30280:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;30351:45;30380:1;30384:2;30388:7;30351:20;:45::i;:::-;30426:1;30409:9;:13;30419:2;30409:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;30457:2;30438:7;:16;30446:7;30438:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;30502:7;30498:2;30477:33;;30494:1;30477:33;;;;;;;;;;;;30136:382;;:::o;49668:215::-;49768:16;49776:7;49768;:16::i;:::-;49760:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;49866:9;49844:10;:19;49855:7;49844:19;;;;;;;;;;;:31;;;;;;:::i;:::-;;49668:215;;:::o;22260:305::-;22362:4;22414:25;22399:40;;;:11;:40;;;;:105;;;;22471:33;22456:48;;;:11;:48;;;;22399:105;:158;;;;22521:36;22545:11;22521:23;:36::i;:::-;22399:158;22379:178;;22260:305;;;:::o;52313:215::-;52475:45;52502:4;52508:2;52512:7;52475:26;:45::i;:::-;52313:215;;;:::o;32879:799::-;33034:4;33055:15;:2;:13;;;:15::i;:::-;33051:620;;;33107:2;33091:36;;;33128:12;:10;:12::i;:::-;33142:4;33148:7;33157:5;33091:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;33087:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33350:1;33333:6;:13;:18;33329:272;;33376:60;;;;;;;;;;:::i;:::-;;;;;;;;33329:272;33551:6;33545:13;33536:6;33532:2;33528:15;33521:38;33087:529;33224:41;;;33214:51;;;:6;:51;;;;33207:58;;;;;33051:620;33655:4;33648:11;;32879:799;;;;;;;:::o;42726:215::-;42828:4;42867:26;42852:41;;;:11;:41;;;;:81;;;;42897:36;42921:11;42897:23;:36::i;:::-;42852:81;42845:88;;42726:215;;;:::o;36956:589::-;37100:45;37127:4;37133:2;37137:7;37100:26;:45::i;:::-;37178:1;37162:18;;:4;:18;;;37158:187;;37197:40;37229:7;37197:31;:40::i;:::-;37158:187;;;37267:2;37259:10;;:4;:10;;;37255:90;;37286:47;37319:4;37325:7;37286:32;:47::i;:::-;37255:90;37158:187;37373:1;37359:16;;:2;:16;;;37355:183;;37392:45;37429:7;37392:36;:45::i;:::-;37355:183;;;37465:4;37459:10;;:2;:10;;;37455:83;;37486:40;37514:2;37518:7;37486:27;:40::i;:::-;37455:83;37355:183;36956:589;;;:::o;10392:387::-;10452:4;10660:12;10727:7;10715:20;10707:28;;10770:1;10763:4;:8;10756:15;;;10392:387;;;:::o;7448:157::-;7533:4;7572:25;7557:40;;;:11;:40;;;;7550:47;;7448:157;;;:::o;34250:126::-;;;;:::o;38268:164::-;38372:10;:17;;;;38345:15;:24;38361:7;38345:24;;;;;;;;;;;:44;;;;38400:10;38416:7;38400:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38268:164;:::o;39059:988::-;39325:22;39375:1;39350:22;39367:4;39350:16;:22::i;:::-;:26;;;;:::i;:::-;39325:51;;39387:18;39408:17;:26;39426:7;39408:26;;;;;;;;;;;;39387:47;;39555:14;39541:10;:28;39537:328;;39586:19;39608:12;:18;39621:4;39608:18;;;;;;;;;;;;;;;:34;39627:14;39608:34;;;;;;;;;;;;39586:56;;39692:11;39659:12;:18;39672:4;39659:18;;;;;;;;;;;;;;;:30;39678:10;39659:30;;;;;;;;;;;:44;;;;39809:10;39776:17;:30;39794:11;39776:30;;;;;;;;;;;:43;;;;39571:294;39537:328;39961:17;:26;39979:7;39961:26;;;;;;;;;;;39954:33;;;40005:12;:18;40018:4;40005:18;;;;;;;;;;;;;;;:34;40024:14;40005:34;;;;;;;;;;;39998:41;;;39140:907;;39059:988;;:::o;40342:1079::-;40595:22;40640:1;40620:10;:17;;;;:21;;;;:::i;:::-;40595:46;;40652:18;40673:15;:24;40689:7;40673:24;;;;;;;;;;;;40652:45;;41024:19;41046:10;41057:14;41046:26;;;;;;;;:::i;:::-;;;;;;;;;;41024:48;;41110:11;41085:10;41096;41085:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;41221:10;41190:15;:28;41206:11;41190:28;;;;;;;;;;;:41;;;;41362:15;:24;41378:7;41362:24;;;;;;;;;;;41355:31;;;41397:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;40413:1008;;;40342:1079;:::o;37846:221::-;37931:14;37948:20;37965:2;37948:16;:20::i;:::-;37931:37;;38006:7;37979:12;:16;37992:2;37979:16;;;;;;;;;;;;;;;:24;37996:6;37979:24;;;;;;;;;;;:34;;;;38053:6;38024:17;:26;38042:7;38024:26;;;;;;;;;;;:35;;;;37920:147;37846:221;;:::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:126::-;1555:7;1595:42;1588:5;1584:54;1573:65;;1518:126;;;:::o;1650:96::-;1687:7;1716:24;1734:5;1716:24;:::i;:::-;1705:35;;1650:96;;;:::o;1752:122::-;1825:24;1843:5;1825:24;:::i;:::-;1818:5;1815:35;1805:63;;1864:1;1861;1854:12;1805:63;1752:122;:::o;1880:139::-;1926:5;1964:6;1951:20;1942:29;;1980:33;2007:5;1980:33;:::i;:::-;1880:139;;;;:::o;2025:109::-;2061:7;2101:26;2094:5;2090:38;2079:49;;2025:109;;;:::o;2140:120::-;2212:23;2229:5;2212:23;:::i;:::-;2205:5;2202:34;2192:62;;2250:1;2247;2240:12;2192:62;2140:120;:::o;2266:137::-;2311:5;2349:6;2336:20;2327:29;;2365:32;2391:5;2365:32;:::i;:::-;2266:137;;;;:::o;2409:472::-;2476:6;2484;2533:2;2521:9;2512:7;2508:23;2504:32;2501:119;;;2539:79;;:::i;:::-;2501:119;2659:1;2684:53;2729:7;2720:6;2709:9;2705:22;2684:53;:::i;:::-;2674:63;;2630:117;2786:2;2812:52;2856:7;2847:6;2836:9;2832:22;2812:52;:::i;:::-;2802:62;;2757:117;2409:472;;;;;:::o;2887:99::-;2939:6;2973:5;2967:12;2957:22;;2887:99;;;:::o;2992:169::-;3076:11;3110:6;3105:3;3098:19;3150:4;3145:3;3141:14;3126:29;;2992:169;;;;:::o;3167:246::-;3248:1;3258:113;3272:6;3269:1;3266:13;3258:113;;;3357:1;3352:3;3348:11;3342:18;3338:1;3333:3;3329:11;3322:39;3294:2;3291:1;3287:10;3282:15;;3258:113;;;3405:1;3396:6;3391:3;3387:16;3380:27;3229:184;3167:246;;;:::o;3419:102::-;3460:6;3511:2;3507:7;3502:2;3495:5;3491:14;3487:28;3477:38;;3419:102;;;:::o;3527:377::-;3615:3;3643:39;3676:5;3643:39;:::i;:::-;3698:71;3762:6;3757:3;3698:71;:::i;:::-;3691:78;;3778:65;3836:6;3831:3;3824:4;3817:5;3813:16;3778:65;:::i;:::-;3868:29;3890:6;3868:29;:::i;:::-;3863:3;3859:39;3852:46;;3619:285;3527:377;;;;:::o;3910:313::-;4023:4;4061:2;4050:9;4046:18;4038:26;;4110:9;4104:4;4100:20;4096:1;4085:9;4081:17;4074:47;4138:78;4211:4;4202:6;4138:78;:::i;:::-;4130:86;;3910:313;;;;:::o;4229:77::-;4266:7;4295:5;4284:16;;4229:77;;;:::o;4312:122::-;4385:24;4403:5;4385:24;:::i;:::-;4378:5;4375:35;4365:63;;4424:1;4421;4414:12;4365:63;4312:122;:::o;4440:139::-;4486:5;4524:6;4511:20;4502:29;;4540:33;4567:5;4540:33;:::i;:::-;4440:139;;;;:::o;4585:329::-;4644:6;4693:2;4681:9;4672:7;4668:23;4664:32;4661:119;;;4699:79;;:::i;:::-;4661:119;4819:1;4844:53;4889:7;4880:6;4869:9;4865:22;4844:53;:::i;:::-;4834:63;;4790:117;4585:329;;;;:::o;4920:118::-;5007:24;5025:5;5007:24;:::i;:::-;5002:3;4995:37;4920:118;;:::o;5044:222::-;5137:4;5175:2;5164:9;5160:18;5152:26;;5188:71;5256:1;5245:9;5241:17;5232:6;5188:71;:::i;:::-;5044:222;;;;:::o;5272:474::-;5340:6;5348;5397:2;5385:9;5376:7;5372:23;5368:32;5365:119;;;5403:79;;:::i;:::-;5365:119;5523:1;5548:53;5593:7;5584:6;5573:9;5569:22;5548:53;:::i;:::-;5538:63;;5494:117;5650:2;5676:53;5721:7;5712:6;5701:9;5697:22;5676:53;:::i;:::-;5666:63;;5621:118;5272:474;;;;;:::o;5752:118::-;5839:24;5857:5;5839:24;:::i;:::-;5834:3;5827:37;5752:118;;:::o;5876:222::-;5969:4;6007:2;5996:9;5992:18;5984:26;;6020:71;6088:1;6077:9;6073:17;6064:6;6020:71;:::i;:::-;5876:222;;;;:::o;6104:619::-;6181:6;6189;6197;6246:2;6234:9;6225:7;6221:23;6217:32;6214:119;;;6252:79;;:::i;:::-;6214:119;6372:1;6397:53;6442:7;6433:6;6422:9;6418:22;6397:53;:::i;:::-;6387:63;;6343:117;6499:2;6525:53;6570:7;6561:6;6550:9;6546:22;6525:53;:::i;:::-;6515:63;;6470:118;6627:2;6653:53;6698:7;6689:6;6678:9;6674:22;6653:53;:::i;:::-;6643:63;;6598:118;6104:619;;;;;:::o;6729:474::-;6797:6;6805;6854:2;6842:9;6833:7;6829:23;6825:32;6822:119;;;6860:79;;:::i;:::-;6822:119;6980:1;7005:53;7050:7;7041:6;7030:9;7026:22;7005:53;:::i;:::-;6995:63;;6951:117;7107:2;7133:53;7178:7;7169:6;7158:9;7154:22;7133:53;:::i;:::-;7123:63;;7078:118;6729:474;;;;;:::o;7209:332::-;7330:4;7368:2;7357:9;7353:18;7345:26;;7381:71;7449:1;7438:9;7434:17;7425:6;7381:71;:::i;:::-;7462:72;7530:2;7519:9;7515:18;7506:6;7462:72;:::i;:::-;7209:332;;;;;:::o;7547:117::-;7656:1;7653;7646:12;7670:117;7779:1;7776;7769:12;7793:180;7841:77;7838:1;7831:88;7938:4;7935:1;7928:15;7962:4;7959:1;7952:15;7979:281;8062:27;8084:4;8062:27;:::i;:::-;8054:6;8050:40;8192:6;8180:10;8177:22;8156:18;8144:10;8141:34;8138:62;8135:88;;;8203:18;;:::i;:::-;8135:88;8243:10;8239:2;8232:22;8022:238;7979:281;;:::o;8266:129::-;8300:6;8327:20;;:::i;:::-;8317:30;;8356:33;8384:4;8376:6;8356:33;:::i;:::-;8266:129;;;:::o;8401:308::-;8463:4;8553:18;8545:6;8542:30;8539:56;;;8575:18;;:::i;:::-;8539:56;8613:29;8635:6;8613:29;:::i;:::-;8605:37;;8697:4;8691;8687:15;8679:23;;8401:308;;;:::o;8715:146::-;8812:6;8807:3;8802;8789:30;8853:1;8844:6;8839:3;8835:16;8828:27;8715:146;;;:::o;8867:425::-;8945:5;8970:66;8986:49;9028:6;8986:49;:::i;:::-;8970:66;:::i;:::-;8961:75;;9059:6;9052:5;9045:21;9097:4;9090:5;9086:16;9135:3;9126:6;9121:3;9117:16;9114:25;9111:112;;;9142:79;;:::i;:::-;9111:112;9232:54;9279:6;9274:3;9269;9232:54;:::i;:::-;8951:341;8867:425;;;;;:::o;9312:340::-;9368:5;9417:3;9410:4;9402:6;9398:17;9394:27;9384:122;;9425:79;;:::i;:::-;9384:122;9542:6;9529:20;9567:79;9642:3;9634:6;9627:4;9619:6;9615:17;9567:79;:::i;:::-;9558:88;;9374:278;9312:340;;;;:::o;9658:509::-;9727:6;9776:2;9764:9;9755:7;9751:23;9747:32;9744:119;;;9782:79;;:::i;:::-;9744:119;9930:1;9919:9;9915:17;9902:31;9960:18;9952:6;9949:30;9946:117;;;9982:79;;:::i;:::-;9946:117;10087:63;10142:7;10133:6;10122:9;10118:22;10087:63;:::i;:::-;10077:73;;9873:287;9658:509;;;;:::o;10173:654::-;10251:6;10259;10308:2;10296:9;10287:7;10283:23;10279:32;10276:119;;;10314:79;;:::i;:::-;10276:119;10434:1;10459:53;10504:7;10495:6;10484:9;10480:22;10459:53;:::i;:::-;10449:63;;10405:117;10589:2;10578:9;10574:18;10561:32;10620:18;10612:6;10609:30;10606:117;;;10642:79;;:::i;:::-;10606:117;10747:63;10802:7;10793:6;10782:9;10778:22;10747:63;:::i;:::-;10737:73;;10532:288;10173:654;;;;;:::o;10833:617::-;10909:6;10917;10925;10974:2;10962:9;10953:7;10949:23;10945:32;10942:119;;;10980:79;;:::i;:::-;10942:119;11100:1;11125:53;11170:7;11161:6;11150:9;11146:22;11125:53;:::i;:::-;11115:63;;11071:117;11227:2;11253:53;11298:7;11289:6;11278:9;11274:22;11253:53;:::i;:::-;11243:63;;11198:118;11355:2;11381:52;11425:7;11416:6;11405:9;11401:22;11381:52;:::i;:::-;11371:62;;11326:117;10833:617;;;;;:::o;11456:329::-;11515:6;11564:2;11552:9;11543:7;11539:23;11535:32;11532:119;;;11570:79;;:::i;:::-;11532:119;11690:1;11715:53;11760:7;11751:6;11740:9;11736:22;11715:53;:::i;:::-;11705:63;;11661:117;11456:329;;;;:::o;11791:116::-;11861:21;11876:5;11861:21;:::i;:::-;11854:5;11851:32;11841:60;;11897:1;11894;11887:12;11841:60;11791:116;:::o;11913:133::-;11956:5;11994:6;11981:20;11972:29;;12010:30;12034:5;12010:30;:::i;:::-;11913:133;;;;:::o;12052:468::-;12117:6;12125;12174:2;12162:9;12153:7;12149:23;12145:32;12142:119;;;12180:79;;:::i;:::-;12142:119;12300:1;12325:53;12370:7;12361:6;12350:9;12346:22;12325:53;:::i;:::-;12315:63;;12271:117;12427:2;12453:50;12495:7;12486:6;12475:9;12471:22;12453:50;:::i;:::-;12443:60;;12398:115;12052:468;;;;;:::o;12526:307::-;12587:4;12677:18;12669:6;12666:30;12663:56;;;12699:18;;:::i;:::-;12663:56;12737:29;12759:6;12737:29;:::i;:::-;12729:37;;12821:4;12815;12811:15;12803:23;;12526:307;;;:::o;12839:423::-;12916:5;12941:65;12957:48;12998:6;12957:48;:::i;:::-;12941:65;:::i;:::-;12932:74;;13029:6;13022:5;13015:21;13067:4;13060:5;13056:16;13105:3;13096:6;13091:3;13087:16;13084:25;13081:112;;;13112:79;;:::i;:::-;13081:112;13202:54;13249:6;13244:3;13239;13202:54;:::i;:::-;12922:340;12839:423;;;;;:::o;13281:338::-;13336:5;13385:3;13378:4;13370:6;13366:17;13362:27;13352:122;;13393:79;;:::i;:::-;13352:122;13510:6;13497:20;13535:78;13609:3;13601:6;13594:4;13586:6;13582:17;13535:78;:::i;:::-;13526:87;;13342:277;13281:338;;;;:::o;13625:943::-;13720:6;13728;13736;13744;13793:3;13781:9;13772:7;13768:23;13764:33;13761:120;;;13800:79;;:::i;:::-;13761:120;13920:1;13945:53;13990:7;13981:6;13970:9;13966:22;13945:53;:::i;:::-;13935:63;;13891:117;14047:2;14073:53;14118:7;14109:6;14098:9;14094:22;14073:53;:::i;:::-;14063:63;;14018:118;14175:2;14201:53;14246:7;14237:6;14226:9;14222:22;14201:53;:::i;:::-;14191:63;;14146:118;14331:2;14320:9;14316:18;14303:32;14362:18;14354:6;14351:30;14348:117;;;14384:79;;:::i;:::-;14348:117;14489:62;14543:7;14534:6;14523:9;14519:22;14489:62;:::i;:::-;14479:72;;14274:287;13625:943;;;;;;;:::o;14574:799::-;14661:6;14669;14677;14726:2;14714:9;14705:7;14701:23;14697:32;14694:119;;;14732:79;;:::i;:::-;14694:119;14852:1;14877:53;14922:7;14913:6;14902:9;14898:22;14877:53;:::i;:::-;14867:63;;14823:117;14979:2;15005:53;15050:7;15041:6;15030:9;15026:22;15005:53;:::i;:::-;14995:63;;14950:118;15135:2;15124:9;15120:18;15107:32;15166:18;15158:6;15155:30;15152:117;;;15188:79;;:::i;:::-;15152:117;15293:63;15348:7;15339:6;15328:9;15324:22;15293:63;:::i;:::-;15283:73;;15078:288;14574:799;;;;;:::o;15379:474::-;15447:6;15455;15504:2;15492:9;15483:7;15479:23;15475:32;15472:119;;;15510:79;;:::i;:::-;15472:119;15630:1;15655:53;15700:7;15691:6;15680:9;15676:22;15655:53;:::i;:::-;15645:63;;15601:117;15757:2;15783:53;15828:7;15819:6;15808:9;15804:22;15783:53;:::i;:::-;15773:63;;15728:118;15379:474;;;;;:::o;15859:182::-;15999:34;15995:1;15987:6;15983:14;15976:58;15859:182;:::o;16047:366::-;16189:3;16210:67;16274:2;16269:3;16210:67;:::i;:::-;16203:74;;16286:93;16375:3;16286:93;:::i;:::-;16404:2;16399:3;16395:12;16388:19;;16047:366;;;:::o;16419:419::-;16585:4;16623:2;16612:9;16608:18;16600:26;;16672:9;16666:4;16662:20;16658:1;16647:9;16643:17;16636:47;16700:131;16826:4;16700:131;:::i;:::-;16692:139;;16419:419;;;:::o;16844:180::-;16892:77;16889:1;16882:88;16989:4;16986:1;16979:15;17013:4;17010:1;17003:15;17030:320;17074:6;17111:1;17105:4;17101:12;17091:22;;17158:1;17152:4;17148:12;17179:18;17169:81;;17235:4;17227:6;17223:17;17213:27;;17169:81;17297:2;17289:6;17286:14;17266:18;17263:38;17260:84;;17316:18;;:::i;:::-;17260:84;17081:269;17030:320;;;:::o;17356:231::-;17496:34;17492:1;17484:6;17480:14;17473:58;17565:14;17560:2;17552:6;17548:15;17541:39;17356:231;:::o;17593:366::-;17735:3;17756:67;17820:2;17815:3;17756:67;:::i;:::-;17749:74;;17832:93;17921:3;17832:93;:::i;:::-;17950:2;17945:3;17941:12;17934:19;;17593:366;;;:::o;17965:419::-;18131:4;18169:2;18158:9;18154:18;18146:26;;18218:9;18212:4;18208:20;18204:1;18193:9;18189:17;18182:47;18246:131;18372:4;18246:131;:::i;:::-;18238:139;;17965:419;;;:::o;18390:220::-;18530:34;18526:1;18518:6;18514:14;18507:58;18599:3;18594:2;18586:6;18582:15;18575:28;18390:220;:::o;18616:366::-;18758:3;18779:67;18843:2;18838:3;18779:67;:::i;:::-;18772:74;;18855:93;18944:3;18855:93;:::i;:::-;18973:2;18968:3;18964:12;18957:19;;18616:366;;;:::o;18988:419::-;19154:4;19192:2;19181:9;19177:18;19169:26;;19241:9;19235:4;19231:20;19227:1;19216:9;19212:17;19205:47;19269:131;19395:4;19269:131;:::i;:::-;19261:139;;18988:419;;;:::o;19413:243::-;19553:34;19549:1;19541:6;19537:14;19530:58;19622:26;19617:2;19609:6;19605:15;19598:51;19413:243;:::o;19662:366::-;19804:3;19825:67;19889:2;19884:3;19825:67;:::i;:::-;19818:74;;19901:93;19990:3;19901:93;:::i;:::-;20019:2;20014:3;20010:12;20003:19;;19662:366;;;:::o;20034:419::-;20200:4;20238:2;20227:9;20223:18;20215:26;;20287:9;20281:4;20277:20;20273:1;20262:9;20258:17;20251:47;20315:131;20441:4;20315:131;:::i;:::-;20307:139;;20034:419;;;:::o;20459:236::-;20599:34;20595:1;20587:6;20583:14;20576:58;20668:19;20663:2;20655:6;20651:15;20644:44;20459:236;:::o;20701:366::-;20843:3;20864:67;20928:2;20923:3;20864:67;:::i;:::-;20857:74;;20940:93;21029:3;20940:93;:::i;:::-;21058:2;21053:3;21049:12;21042:19;;20701:366;;;:::o;21073:419::-;21239:4;21277:2;21266:9;21262:18;21254:26;;21326:9;21320:4;21316:20;21312:1;21301:9;21297:17;21290:47;21354:131;21480:4;21354:131;:::i;:::-;21346:139;;21073:419;;;:::o;21498:180::-;21546:77;21543:1;21536:88;21643:4;21640:1;21633:15;21667:4;21664:1;21657:15;21684:410;21724:7;21747:20;21765:1;21747:20;:::i;:::-;21742:25;;21781:20;21799:1;21781:20;:::i;:::-;21776:25;;21836:1;21833;21829:9;21858:30;21876:11;21858:30;:::i;:::-;21847:41;;22037:1;22028:7;22024:15;22021:1;22018:22;21998:1;21991:9;21971:83;21948:139;;22067:18;;:::i;:::-;21948:139;21732:362;21684:410;;;;:::o;22100:180::-;22148:77;22145:1;22138:88;22245:4;22242:1;22235:15;22269:4;22266:1;22259:15;22286:185;22326:1;22343:20;22361:1;22343:20;:::i;:::-;22338:25;;22377:20;22395:1;22377:20;:::i;:::-;22372:25;;22416:1;22406:35;;22421:18;;:::i;:::-;22406:35;22463:1;22460;22456:9;22451:14;;22286:185;;;;:::o;22477:230::-;22617:34;22613:1;22605:6;22601:14;22594:58;22686:13;22681:2;22673:6;22669:15;22662:38;22477:230;:::o;22713:366::-;22855:3;22876:67;22940:2;22935:3;22876:67;:::i;:::-;22869:74;;22952:93;23041:3;22952:93;:::i;:::-;23070:2;23065:3;23061:12;23054:19;;22713:366;;;:::o;23085:419::-;23251:4;23289:2;23278:9;23274:18;23266:26;;23338:9;23332:4;23328:20;23324:1;23313:9;23309:17;23302:47;23366:131;23492:4;23366:131;:::i;:::-;23358:139;;23085:419;;;:::o;23510:231::-;23650:34;23646:1;23638:6;23634:14;23627:58;23719:14;23714:2;23706:6;23702:15;23695:39;23510:231;:::o;23747:366::-;23889:3;23910:67;23974:2;23969:3;23910:67;:::i;:::-;23903:74;;23986:93;24075:3;23986:93;:::i;:::-;24104:2;24099:3;24095:12;24088:19;;23747:366;;;:::o;24119:419::-;24285:4;24323:2;24312:9;24308:18;24300:26;;24372:9;24366:4;24362:20;24358:1;24347:9;24343:17;24336:47;24400:131;24526:4;24400:131;:::i;:::-;24392:139;;24119:419;;;:::o;24544:180::-;24592:77;24589:1;24582:88;24689:4;24686:1;24679:15;24713:4;24710:1;24703:15;24730:141;24779:4;24802:3;24794:11;;24825:3;24822:1;24815:14;24859:4;24856:1;24846:18;24838:26;;24730:141;;;:::o;24877:93::-;24914:6;24961:2;24956;24949:5;24945:14;24941:23;24931:33;;24877:93;;;:::o;24976:107::-;25020:8;25070:5;25064:4;25060:16;25039:37;;24976:107;;;;:::o;25089:393::-;25158:6;25208:1;25196:10;25192:18;25231:97;25261:66;25250:9;25231:97;:::i;:::-;25349:39;25379:8;25368:9;25349:39;:::i;:::-;25337:51;;25421:4;25417:9;25410:5;25406:21;25397:30;;25470:4;25460:8;25456:19;25449:5;25446:30;25436:40;;25165:317;;25089:393;;;;;:::o;25488:60::-;25516:3;25537:5;25530:12;;25488:60;;;:::o;25554:142::-;25604:9;25637:53;25655:34;25664:24;25682:5;25664:24;:::i;:::-;25655:34;:::i;:::-;25637:53;:::i;:::-;25624:66;;25554:142;;;:::o;25702:75::-;25745:3;25766:5;25759:12;;25702:75;;;:::o;25783:269::-;25893:39;25924:7;25893:39;:::i;:::-;25954:91;26003:41;26027:16;26003:41;:::i;:::-;25995:6;25988:4;25982:11;25954:91;:::i;:::-;25948:4;25941:105;25859:193;25783:269;;;:::o;26058:73::-;26103:3;26058:73;:::o;26137:189::-;26214:32;;:::i;:::-;26255:65;26313:6;26305;26299:4;26255:65;:::i;:::-;26190:136;26137:189;;:::o;26332:186::-;26392:120;26409:3;26402:5;26399:14;26392:120;;;26463:39;26500:1;26493:5;26463:39;:::i;:::-;26436:1;26429:5;26425:13;26416:22;;26392:120;;;26332:186;;:::o;26524:543::-;26625:2;26620:3;26617:11;26614:446;;;26659:38;26691:5;26659:38;:::i;:::-;26743:29;26761:10;26743:29;:::i;:::-;26733:8;26729:44;26926:2;26914:10;26911:18;26908:49;;;26947:8;26932:23;;26908:49;26970:80;27026:22;27044:3;27026:22;:::i;:::-;27016:8;27012:37;26999:11;26970:80;:::i;:::-;26629:431;;26614:446;26524:543;;;:::o;27073:117::-;27127:8;27177:5;27171:4;27167:16;27146:37;;27073:117;;;;:::o;27196:169::-;27240:6;27273:51;27321:1;27317:6;27309:5;27306:1;27302:13;27273:51;:::i;:::-;27269:56;27354:4;27348;27344:15;27334:25;;27247:118;27196:169;;;;:::o;27370:295::-;27446:4;27592:29;27617:3;27611:4;27592:29;:::i;:::-;27584:37;;27654:3;27651:1;27647:11;27641:4;27638:21;27630:29;;27370:295;;;;:::o;27670:1395::-;27787:37;27820:3;27787:37;:::i;:::-;27889:18;27881:6;27878:30;27875:56;;;27911:18;;:::i;:::-;27875:56;27955:38;27987:4;27981:11;27955:38;:::i;:::-;28040:67;28100:6;28092;28086:4;28040:67;:::i;:::-;28134:1;28158:4;28145:17;;28190:2;28182:6;28179:14;28207:1;28202:618;;;;28864:1;28881:6;28878:77;;;28930:9;28925:3;28921:19;28915:26;28906:35;;28878:77;28981:67;29041:6;29034:5;28981:67;:::i;:::-;28975:4;28968:81;28837:222;28172:887;;28202:618;28254:4;28250:9;28242:6;28238:22;28288:37;28320:4;28288:37;:::i;:::-;28347:1;28361:208;28375:7;28372:1;28369:14;28361:208;;;28454:9;28449:3;28445:19;28439:26;28431:6;28424:42;28505:1;28497:6;28493:14;28483:24;;28552:2;28541:9;28537:18;28524:31;;28398:4;28395:1;28391:12;28386:17;;28361:208;;;28597:6;28588:7;28585:19;28582:179;;;28655:9;28650:3;28646:19;28640:26;28698:48;28740:4;28732:6;28728:17;28717:9;28698:48;:::i;:::-;28690:6;28683:64;28605:156;28582:179;28807:1;28803;28795:6;28791:14;28787:22;28781:4;28774:36;28209:611;;;28172:887;;27762:1303;;;27670:1395;;:::o;29071:231::-;29211:34;29207:1;29199:6;29195:14;29188:58;29280:14;29275:2;29267:6;29263:15;29256:39;29071:231;:::o;29308:366::-;29450:3;29471:67;29535:2;29530:3;29471:67;:::i;:::-;29464:74;;29547:93;29636:3;29547:93;:::i;:::-;29665:2;29660:3;29656:12;29649:19;;29308:366;;;:::o;29680:419::-;29846:4;29884:2;29873:9;29869:18;29861:26;;29933:9;29927:4;29923:20;29919:1;29908:9;29904:17;29897:47;29961:131;30087:4;29961:131;:::i;:::-;29953:139;;29680:419;;;:::o;30105:228::-;30245:34;30241:1;30233:6;30229:14;30222:58;30314:11;30309:2;30301:6;30297:15;30290:36;30105:228;:::o;30339:366::-;30481:3;30502:67;30566:2;30561:3;30502:67;:::i;:::-;30495:74;;30578:93;30667:3;30578:93;:::i;:::-;30696:2;30691:3;30687:12;30680:19;;30339:366;;;:::o;30711:419::-;30877:4;30915:2;30904:9;30900:18;30892:26;;30964:9;30958:4;30954:20;30950:1;30939:9;30935:17;30928:47;30992:131;31118:4;30992:131;:::i;:::-;30984:139;;30711:419;;;:::o;31136:229::-;31276:34;31272:1;31264:6;31260:14;31253:58;31345:12;31340:2;31332:6;31328:15;31321:37;31136:229;:::o;31371:366::-;31513:3;31534:67;31598:2;31593:3;31534:67;:::i;:::-;31527:74;;31610:93;31699:3;31610:93;:::i;:::-;31728:2;31723:3;31719:12;31712:19;;31371:366;;;:::o;31743:419::-;31909:4;31947:2;31936:9;31932:18;31924:26;;31996:9;31990:4;31986:20;31982:1;31971:9;31967:17;31960:47;32024:131;32150:4;32024:131;:::i;:::-;32016:139;;31743:419;;;:::o;32168:175::-;32308:27;32304:1;32296:6;32292:14;32285:51;32168:175;:::o;32349:366::-;32491:3;32512:67;32576:2;32571:3;32512:67;:::i;:::-;32505:74;;32588:93;32677:3;32588:93;:::i;:::-;32706:2;32701:3;32697:12;32690:19;;32349:366;;;:::o;32721:419::-;32887:4;32925:2;32914:9;32910:18;32902:26;;32974:9;32968:4;32964:20;32960:1;32949:9;32945:17;32938:47;33002:131;33128:4;33002:131;:::i;:::-;32994:139;;32721:419;;;:::o;33146:234::-;33286:34;33282:1;33274:6;33270:14;33263:58;33355:17;33350:2;33342:6;33338:15;33331:42;33146:234;:::o;33386:366::-;33528:3;33549:67;33613:2;33608:3;33549:67;:::i;:::-;33542:74;;33625:93;33714:3;33625:93;:::i;:::-;33743:2;33738:3;33734:12;33727:19;;33386:366;;;:::o;33758:419::-;33924:4;33962:2;33951:9;33947:18;33939:26;;34011:9;34005:4;34001:20;33997:1;33986:9;33982:17;33975:47;34039:131;34165:4;34039:131;:::i;:::-;34031:139;;33758:419;;;:::o;34183:148::-;34285:11;34322:3;34307:18;;34183:148;;;;:::o;34337:390::-;34443:3;34471:39;34504:5;34471:39;:::i;:::-;34526:89;34608:6;34603:3;34526:89;:::i;:::-;34519:96;;34624:65;34682:6;34677:3;34670:4;34663:5;34659:16;34624:65;:::i;:::-;34714:6;34709:3;34705:16;34698:23;;34447:280;34337:390;;;;:::o;34733:435::-;34913:3;34935:95;35026:3;35017:6;34935:95;:::i;:::-;34928:102;;35047:95;35138:3;35129:6;35047:95;:::i;:::-;35040:102;;35159:3;35152:10;;34733:435;;;;;:::o;35174:225::-;35314:34;35310:1;35302:6;35298:14;35291:58;35383:8;35378:2;35370:6;35366:15;35359:33;35174:225;:::o;35405:366::-;35547:3;35568:67;35632:2;35627:3;35568:67;:::i;:::-;35561:74;;35644:93;35733:3;35644:93;:::i;:::-;35762:2;35757:3;35753:12;35746:19;;35405:366;;;:::o;35777:419::-;35943:4;35981:2;35970:9;35966:18;35958:26;;36030:9;36024:4;36020:20;36016:1;36005:9;36001:17;35994:47;36058:131;36184:4;36058:131;:::i;:::-;36050:139;;35777:419;;;:::o;36202:229::-;36342:34;36338:1;36330:6;36326:14;36319:58;36411:12;36406:2;36398:6;36394:15;36387:37;36202:229;:::o;36437:366::-;36579:3;36600:67;36664:2;36659:3;36600:67;:::i;:::-;36593:74;;36676:93;36765:3;36676:93;:::i;:::-;36794:2;36789:3;36785:12;36778:19;;36437:366;;;:::o;36809:419::-;36975:4;37013:2;37002:9;36998:18;36990:26;;37062:9;37056:4;37052:20;37048:1;37037:9;37033:17;37026:47;37090:131;37216:4;37090:131;:::i;:::-;37082:139;;36809:419;;;:::o;37234:175::-;37374:27;37370:1;37362:6;37358:14;37351:51;37234:175;:::o;37415:366::-;37557:3;37578:67;37642:2;37637:3;37578:67;:::i;:::-;37571:74;;37654:93;37743:3;37654:93;:::i;:::-;37772:2;37767:3;37763:12;37756:19;;37415:366;;;:::o;37787:419::-;37953:4;37991:2;37980:9;37976:18;37968:26;;38040:9;38034:4;38030:20;38026:1;38015:9;38011:17;38004:47;38068:131;38194:4;38068:131;:::i;:::-;38060:139;;37787:419;;;:::o;38212:231::-;38352:34;38348:1;38340:6;38336:14;38329:58;38421:14;38416:2;38408:6;38404:15;38397:39;38212:231;:::o;38449:366::-;38591:3;38612:67;38676:2;38671:3;38612:67;:::i;:::-;38605:74;;38688:93;38777:3;38688:93;:::i;:::-;38806:2;38801:3;38797:12;38790:19;;38449:366;;;:::o;38821:419::-;38987:4;39025:2;39014:9;39010:18;39002:26;;39074:9;39068:4;39064:20;39060:1;39049:9;39045:17;39038:47;39102:131;39228:4;39102:131;:::i;:::-;39094:139;;38821:419;;;:::o;39246:228::-;39386:34;39382:1;39374:6;39370:14;39363:58;39455:11;39450:2;39442:6;39438:15;39431:36;39246:228;:::o;39480:366::-;39622:3;39643:67;39707:2;39702:3;39643:67;:::i;:::-;39636:74;;39719:93;39808:3;39719:93;:::i;:::-;39837:2;39832:3;39828:12;39821:19;;39480:366;;;:::o;39852:419::-;40018:4;40056:2;40045:9;40041:18;40033:26;;40105:9;40099:4;40095:20;40091:1;40080:9;40076:17;40069:47;40133:131;40259:4;40133:131;:::i;:::-;40125:139;;39852:419;;;:::o;40277:223::-;40417:34;40413:1;40405:6;40401:14;40394:58;40486:6;40481:2;40473:6;40469:15;40462:31;40277:223;:::o;40506:366::-;40648:3;40669:67;40733:2;40728:3;40669:67;:::i;:::-;40662:74;;40745:93;40834:3;40745:93;:::i;:::-;40863:2;40858:3;40854:12;40847:19;;40506:366;;;:::o;40878:419::-;41044:4;41082:2;41071:9;41067:18;41059:26;;41131:9;41125:4;41121:20;41117:1;41106:9;41102:17;41095:47;41159:131;41285:4;41159:131;:::i;:::-;41151:139;;40878:419;;;:::o;41303:194::-;41343:4;41363:20;41381:1;41363:20;:::i;:::-;41358:25;;41397:20;41415:1;41397:20;:::i;:::-;41392:25;;41441:1;41438;41434:9;41426:17;;41465:1;41459:4;41456:11;41453:37;;;41470:18;;:::i;:::-;41453:37;41303:194;;;;:::o;41503:191::-;41543:3;41562:20;41580:1;41562:20;:::i;:::-;41557:25;;41596:20;41614:1;41596:20;:::i;:::-;41591:25;;41639:1;41636;41632:9;41625:16;;41660:3;41657:1;41654:10;41651:36;;;41667:18;;:::i;:::-;41651:36;41503:191;;;;:::o;41700:177::-;41840:29;41836:1;41828:6;41824:14;41817:53;41700:177;:::o;41883:366::-;42025:3;42046:67;42110:2;42105:3;42046:67;:::i;:::-;42039:74;;42122:93;42211:3;42122:93;:::i;:::-;42240:2;42235:3;42231:12;42224:19;;41883:366;;;:::o;42255:419::-;42421:4;42459:2;42448:9;42444:18;42436:26;;42508:9;42502:4;42498:20;42494:1;42483:9;42479:17;42472:47;42536:131;42662:4;42536:131;:::i;:::-;42528:139;;42255:419;;;:::o;42680:237::-;42820:34;42816:1;42808:6;42804:14;42797:58;42889:20;42884:2;42876:6;42872:15;42865:45;42680:237;:::o;42923:366::-;43065:3;43086:67;43150:2;43145:3;43086:67;:::i;:::-;43079:74;;43162:93;43251:3;43162:93;:::i;:::-;43280:2;43275:3;43271:12;43264:19;;42923:366;;;:::o;43295:419::-;43461:4;43499:2;43488:9;43484:18;43476:26;;43548:9;43542:4;43538:20;43534:1;43523:9;43519:17;43512:47;43576:131;43702:4;43576:131;:::i;:::-;43568:139;;43295:419;;;:::o;43720:233::-;43759:3;43782:24;43800:5;43782:24;:::i;:::-;43773:33;;43828:66;43821:5;43818:77;43815:103;;43898:18;;:::i;:::-;43815:103;43945:1;43938:5;43934:13;43927:20;;43720:233;;;:::o;43959:176::-;43991:1;44008:20;44026:1;44008:20;:::i;:::-;44003:25;;44042:20;44060:1;44042:20;:::i;:::-;44037:25;;44081:1;44071:35;;44086:18;;:::i;:::-;44071:35;44127:1;44124;44120:9;44115:14;;43959:176;;;;:::o;44141:182::-;44281:34;44277:1;44269:6;44265:14;44258:58;44141:182;:::o;44329:366::-;44471:3;44492:67;44556:2;44551:3;44492:67;:::i;:::-;44485:74;;44568:93;44657:3;44568:93;:::i;:::-;44686:2;44681:3;44677:12;44670:19;;44329:366;;;:::o;44701:419::-;44867:4;44905:2;44894:9;44890:18;44882:26;;44954:9;44948:4;44944:20;44940:1;44929:9;44925:17;44918:47;44982:131;45108:4;44982:131;:::i;:::-;44974:139;;44701:419;;;:::o;45126:178::-;45266:30;45262:1;45254:6;45250:14;45243:54;45126:178;:::o;45310:366::-;45452:3;45473:67;45537:2;45532:3;45473:67;:::i;:::-;45466:74;;45549:93;45638:3;45549:93;:::i;:::-;45667:2;45662:3;45658:12;45651:19;;45310:366;;;:::o;45682:419::-;45848:4;45886:2;45875:9;45871:18;45863:26;;45935:9;45929:4;45925:20;45921:1;45910:9;45906:17;45899:47;45963:131;46089:4;45963:131;:::i;:::-;45955:139;;45682:419;;;:::o;46107:98::-;46158:6;46192:5;46186:12;46176:22;;46107:98;;;:::o;46211:168::-;46294:11;46328:6;46323:3;46316:19;46368:4;46363:3;46359:14;46344:29;;46211:168;;;;:::o;46385:373::-;46471:3;46499:38;46531:5;46499:38;:::i;:::-;46553:70;46616:6;46611:3;46553:70;:::i;:::-;46546:77;;46632:65;46690:6;46685:3;46678:4;46671:5;46667:16;46632:65;:::i;:::-;46722:29;46744:6;46722:29;:::i;:::-;46717:3;46713:39;46706:46;;46475:283;46385:373;;;;:::o;46764:640::-;46959:4;46997:3;46986:9;46982:19;46974:27;;47011:71;47079:1;47068:9;47064:17;47055:6;47011:71;:::i;:::-;47092:72;47160:2;47149:9;47145:18;47136:6;47092:72;:::i;:::-;47174;47242:2;47231:9;47227:18;47218:6;47174:72;:::i;:::-;47293:9;47287:4;47283:20;47278:2;47267:9;47263:18;47256:48;47321:76;47392:4;47383:6;47321:76;:::i;:::-;47313:84;;46764:640;;;;;;;:::o;47410:141::-;47466:5;47497:6;47491:13;47482:22;;47513:32;47539:5;47513:32;:::i;:::-;47410:141;;;;:::o;47557:349::-;47626:6;47675:2;47663:9;47654:7;47650:23;47646:32;47643:119;;;47681:79;;:::i;:::-;47643:119;47801:1;47826:63;47881:7;47872:6;47861:9;47857:22;47826:63;:::i;:::-;47816:73;;47772:127;47557:349;;;;:::o;47912:180::-;47960:77;47957:1;47950:88;48057:4;48054:1;48047:15;48081:4;48078:1;48071:15
Swarm Source
ipfs://993a4c8490d1577a6a154f50c2571ad3baad8a7d3ca12ab98e5ab897644a67a8
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Validator ID :
0 FTM
Amount Staked
0
Amount Delegated
0
Staking Total
0
Staking Start Epoch
0
Staking Start Time
0
Proof of Importance
0
Origination Score
0
Validation Score
0
Active
0
Online
0
Downtime
0 s
Address | Amount | claimed Rewards | Created On Epoch | Created On |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.