Contract Overview
Balance:
0.01 MATIC
MATIC Value:
Less Than $0.01 (@ $0.91/MATIC)
[ Download CSV Export ]
Contract Name:
CrazyBoy
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2023-03-26 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: node_modules\openzeppelin-solidity\contracts\token\ERC721\IERC721.sol pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer( address indexed from, address indexed to, uint256 indexed tokenId ); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval( address indexed owner, address indexed approved, uint256 indexed tokenId ); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll( address indexed owner, address indexed operator, bool approved ); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } // File: node_modules\openzeppelin-solidity\contracts\token\ERC721\IERC721Receiver.sol pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: node_modules\openzeppelin-solidity\contracts\token\ERC721\extensions\IERC721Metadata.sol pragma solidity ^0.8.0; /** * @title ERC-721 Non-CrazyBoyble 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: node_modules\openzeppelin-solidity\contracts\utils\Address.sol pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{value: value}( data ); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: node_modules\openzeppelin-solidity\contracts\utils\Context.sol pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: node_modules\openzeppelin-solidity\contracts\utils\Strings.sol pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant alphabet = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = alphabet[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: node_modules\openzeppelin-solidity\contracts\utils\introspection\ERC165.sol pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: node_modules\openzeppelin-solidity\contracts\token\ERC721\ERC721.sol pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-CrazyBoyble 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}. 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(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert( "ERC721: transfer to non ERC721Receiver implementer" ); } else { // solhint-disable-next-line no-inline-assembly assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` 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 {} } // File: node_modules\openzeppelin-solidity\contracts\token\ERC721\extensions\IERC721Enumerable.sol pragma solidity ^0.8.0; /** * @title ERC-721 Non-CrazyBoyble 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-solidity\contracts\token\ERC721\extensions\ERC721Enumerable.sol pragma solidity ^0.8.0; /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require( index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds" ); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require( index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds" ); return _allTokens[index]; } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } } // File: contracts\lib\Counters.sol pragma solidity ^0.8.0; /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); { counter._value = value - 1; } } } // File: openzeppelin-solidity\contracts\access\Ownable.sol pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), 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 { emit OwnershipTransferred(_owner, address(0)); _owner = 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" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } pragma solidity ^0.8.9; contract CrazyBoy is ERC721Enumerable, Ownable, ReentrancyGuard { using Counters for Counters.Counter; using Strings for uint256; uint256 public constant crazyMax = 10000; uint256 public constant crazyPublic = crazyMax; uint256 public constant maxPerMint = 20; uint256 public crazyPrice = 20000000000000000000; uint256 public allowListPrice = 10000000000000000000; uint256 public allowListMaxMint = 30; string private _contractURI = ""; string private _tokenBaseURI = ""; bool public isActive = false; bool public isAllowListActive = false; mapping(address => bool) private _allowList; mapping(address => uint256) private _allowListClaimed; Counters.Counter private _publicCrazy; constructor() ERC721("CrazyBoy", "CRAZB") { } function setActive(bool _isActive) external onlyOwner { isActive = _isActive; } function setContractURI(string memory URI) external onlyOwner { _contractURI = URI; } function setBaseURI(string memory URI) external onlyOwner { _tokenBaseURI = URI; } // Just in case Eth does some crazy stuff function setPrice(uint256 _newPrice) external onlyOwner { crazyPrice = _newPrice; } function setAllowListPrice(uint256 _newAllowListPrice) external onlyOwner { allowListPrice = _newAllowListPrice; } // Owner minting function ownerMinting(address to, uint256 numberOfTokens) external payable onlyOwner { require(_publicCrazy.current() < crazyPublic,"Purchase would exceed crazyPublic"); for (uint256 i = 0; i < numberOfTokens; i++) { uint256 tokenId = _publicCrazy.current(); if (_publicCrazy.current() < crazyPublic) { _publicCrazy.increment(); _safeMint(to, tokenId); } } } function setIsAllowListActive(bool _isAllowListActive) external onlyOwner { isAllowListActive = _isAllowListActive; } function setAllowListMaxMint(uint256 maxMint) external onlyOwner { allowListMaxMint = maxMint; } function addToAllowList(address[] calldata addresses) external onlyOwner { for (uint256 i = 0; i < addresses.length; i++) { require(addresses[i] != address(0), "Can't add the null address"); _allowList[addresses[i]] = true; /** * @dev We don't want to reset _allowListClaimed count * if we try to add someone more than once. */ _allowListClaimed[addresses[i]] > 0 ? _allowListClaimed[addresses[i]] : 0; } } function allowListClaimedBy(address owner) external view returns (uint256){ require(owner != address(0), "Zero address not on Allow List"); return _allowListClaimed[owner]; } function onAllowList(address addr) external view returns (bool) { return _allowList[addr]; } function removeFromAllowList(address[] calldata addresses) external onlyOwner { for (uint256 i = 0; i < addresses.length; i++) { require(addresses[i] != address(0), "Can't add the null address"); _allowList[addresses[i]] = false; } } function mintAllowList(uint256 numberOfTokens) external payable nonReentrant { require(numberOfTokens <= maxPerMint, "Too many tokens for one transaction"); require(isAllowListActive, "Allow List is not active"); require(_allowList[msg.sender], "You are not on the Allow List"); require(_publicCrazy.current() < crazyPublic,"Purchase would exceed max"); require(numberOfTokens <= allowListMaxMint, "Cannot purchase this many tokens"); require(_allowListClaimed[msg.sender] + numberOfTokens <= allowListMaxMint, "Purchase exceeds max allowed"); require(crazyPrice * numberOfTokens <= msg.value, "Insufficient payment"); require(_publicCrazy.current() < crazyPublic,"Purchase would exceed crazyPublic"); for (uint256 i = 0; i < numberOfTokens; i++) { uint256 tokenId = _publicCrazy.current(); if (_publicCrazy.current() < crazyPublic) { _publicCrazy.increment(); _allowListClaimed[msg.sender] += 1; _safeMint(msg.sender, tokenId); } } } function mint(uint256 numberOfTokens) external payable nonReentrant { require(isActive, "Sale is not active"); require(numberOfTokens <= maxPerMint, "Too many tokens for one transaction"); require(_publicCrazy.current() < crazyPublic, "Purchase would exceed crazyPublic"); require(crazyPrice * numberOfTokens <= msg.value, "Insufficient payment"); for (uint256 i = 0; i < numberOfTokens; i++) { uint256 tokenId = _publicCrazy.current(); if (_publicCrazy.current() < crazyPublic) { _publicCrazy.increment(); _safeMint(msg.sender, tokenId); } } } function contractURI() public view returns (string memory) { return _contractURI; } function tokenURI(uint256 tokenId) public view override(ERC721) returns (string memory){ require(_exists(tokenId), "Token does not exist"); return string(abi.encodePacked(_tokenBaseURI, tokenId.toString())); } // Get the balance of the contract function withdraw() external onlyOwner { uint256 balance = address(this).balance; payable(msg.sender).transfer(balance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"addresses","type":"address[]"}],"name":"addToAllowList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"allowListClaimedBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowListMaxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowListPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"crazyMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"crazyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"crazyPublic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAllowListActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfTokens","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfTokens","type":"uint256"}],"name":"mintAllowList","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"onAllowList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"numberOfTokens","type":"uint256"}],"name":"ownerMinting","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeFromAllowList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxMint","type":"uint256"}],"name":"setAllowListMaxMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAllowListPrice","type":"uint256"}],"name":"setAllowListPrice","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":"URI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"URI","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isAllowListActive","type":"bool"}],"name":"setIsAllowListActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","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"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526801158e460913d00000600c55678ac7230489e80000600d55601e600e5560405180602001604052806000815250600f9080519060200190620000499291906200021d565b506040518060200160405280600081525060109080519060200190620000719291906200021d565b506000601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff021916908315150217905550348015620000b557600080fd5b506040518060400160405280600881526020017f4372617a79426f790000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4352415a4200000000000000000000000000000000000000000000000000000081525081600090805190602001906200013a9291906200021d565b508060019080519060200190620001539291906200021d565b5050506000620001686200021560201b60201c565b905080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506001600b8190555062000332565b600033905090565b8280546200022b90620002fc565b90600052602060002090601f0160209004810192826200024f57600085556200029b565b82601f106200026a57805160ff19168380011785556200029b565b828001600101855582156200029b579182015b828111156200029a5782518255916020019190600101906200027d565b5b509050620002aa9190620002ae565b5090565b5b80821115620002c9576000816000905550600101620002af565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200031557607f821691505b602082108114156200032c576200032b620002cd565b5b50919050565b61537180620003426000396000f3fe60806040526004361061025b5760003560e01c8063718bc4af11610144578063a24e5153116100b6578063c87b56dd1161007a578063c87b56dd146108d4578063e54ee8d814610911578063e86fe2bb1461092d578063e8a3d48514610949578063e985e9c514610974578063f2fde38b146109b15761025b565b8063a24e515314610803578063a51312c81461082e578063acec338a14610857578063b76866f714610880578063b88d4fde146108ab5761025b565b806391b7f5ed1161010857806391b7f5ed14610716578063938e3d7b1461073f57806395d89b411461076857806399b3a61314610793578063a0712d68146107be578063a22cb465146107da5761025b565b8063718bc4af146106455780637263cfe21461066e5780637a6685f1146106975780637f44ab2f146106c05780638da5cb5b146106eb5761025b565b80633a065892116101dd578063507e094f116101a1578063507e094f1461053757806355f804b3146105625780636352211e1461058b5780636df9fa88146105c857806370a08231146105f1578063715018a61461062e5761025b565b80633a065892146104525780633ccfd60b1461048f57806342842e0e146104a6578063476e79a0146104cf5780634f6ccce7146104fa5761025b565b806318160ddd1161022457806318160ddd1461036b57806322f3e2d41461039657806323b872dd146103c157806329fc6bae146103ea5780632f745c59146104155761025b565b806208ffdd1461026057806301ffc9a71461029d57806306fdde03146102da578063081812fc14610305578063095ea7b314610342575b600080fd5b34801561026c57600080fd5b50610287600480360381019061028291906138c1565b6109da565b6040516102949190613907565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf919061397a565b610a92565b6040516102d191906139c2565b60405180910390f35b3480156102e657600080fd5b506102ef610b0c565b6040516102fc9190613a76565b60405180910390f35b34801561031157600080fd5b5061032c60048036038101906103279190613ac4565b610b9e565b6040516103399190613b00565b60405180910390f35b34801561034e57600080fd5b5061036960048036038101906103649190613b1b565b610c23565b005b34801561037757600080fd5b50610380610d3b565b60405161038d9190613907565b60405180910390f35b3480156103a257600080fd5b506103ab610d48565b6040516103b891906139c2565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e39190613b5b565b610d5b565b005b3480156103f657600080fd5b506103ff610dbb565b60405161040c91906139c2565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190613b1b565b610dce565b6040516104499190613907565b60405180910390f35b34801561045e57600080fd5b50610479600480360381019061047491906138c1565b610e73565b60405161048691906139c2565b60405180910390f35b34801561049b57600080fd5b506104a4610ec9565b005b3480156104b257600080fd5b506104cd60048036038101906104c89190613b5b565b610f94565b005b3480156104db57600080fd5b506104e4610fb4565b6040516104f19190613907565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190613ac4565b610fba565b60405161052e9190613907565b60405180910390f35b34801561054357600080fd5b5061054c61102b565b6040516105599190613907565b60405180910390f35b34801561056e57600080fd5b5061058960048036038101906105849190613ce3565b611030565b005b34801561059757600080fd5b506105b260048036038101906105ad9190613ac4565b6110c6565b6040516105bf9190613b00565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea9190613ac4565b611178565b005b3480156105fd57600080fd5b50610618600480360381019061061391906138c1565b6111fe565b6040516106259190613907565b60405180910390f35b34801561063a57600080fd5b506106436112b6565b005b34801561065157600080fd5b5061066c60048036038101906106679190613d58565b6113f3565b005b34801561067a57600080fd5b5061069560048036038101906106909190613de5565b61148c565b005b3480156106a357600080fd5b506106be60048036038101906106b99190613ac4565b611722565b005b3480156106cc57600080fd5b506106d56117a8565b6040516106e29190613907565b60405180910390f35b3480156106f757600080fd5b506107006117ae565b60405161070d9190613b00565b60405180910390f35b34801561072257600080fd5b5061073d60048036038101906107389190613ac4565b6117d8565b005b34801561074b57600080fd5b5061076660048036038101906107619190613ce3565b61185e565b005b34801561077457600080fd5b5061077d6118f4565b60405161078a9190613a76565b60405180910390f35b34801561079f57600080fd5b506107a8611986565b6040516107b59190613907565b60405180910390f35b6107d860048036038101906107d39190613ac4565b61198c565b005b3480156107e657600080fd5b5061080160048036038101906107fc9190613e32565b611b6b565b005b34801561080f57600080fd5b50610818611cec565b6040516108259190613907565b60405180910390f35b34801561083a57600080fd5b5061085560048036038101906108509190613de5565b611cf2565b005b34801561086357600080fd5b5061087e60048036038101906108799190613d58565b611eaa565b005b34801561088c57600080fd5b50610895611f43565b6040516108a29190613907565b60405180910390f35b3480156108b757600080fd5b506108d260048036038101906108cd9190613f13565b611f49565b005b3480156108e057600080fd5b506108fb60048036038101906108f69190613ac4565b611fab565b6040516109089190613a76565b60405180910390f35b61092b60048036038101906109269190613b1b565b612027565b005b61094760048036038101906109429190613ac4565b61214a565b005b34801561095557600080fd5b5061095e61252d565b60405161096b9190613a76565b60405180910390f35b34801561098057600080fd5b5061099b60048036038101906109969190613f96565b6125bf565b6040516109a891906139c2565b60405180910390f35b3480156109bd57600080fd5b506109d860048036038101906109d391906138c1565b612653565b005b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4290614022565b60405180910390fd5b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b055750610b04826127ff565b5b9050919050565b606060008054610b1b90614071565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4790614071565b8015610b945780601f10610b6957610100808354040283529160200191610b94565b820191906000526020600020905b815481529060010190602001808311610b7757829003601f168201915b5050505050905090565b6000610ba9826128e1565b610be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdf90614115565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c2e826110c6565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c96906141a7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610cbe61294d565b73ffffffffffffffffffffffffffffffffffffffff161480610ced5750610cec81610ce761294d565b6125bf565b5b610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2390614239565b60405180910390fd5b610d368383612955565b505050565b6000600880549050905090565b601160009054906101000a900460ff1681565b610d6c610d6661294d565b82612a0e565b610dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da2906142cb565b60405180910390fd5b610db6838383612aec565b505050565b601160019054906101000a900460ff1681565b6000610dd9836111fe565b8210610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e119061435d565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ed161294d565b73ffffffffffffffffffffffffffffffffffffffff16610eef6117ae565b73ffffffffffffffffffffffffffffffffffffffff1614610f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3c906143c9565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610f90573d6000803e3d6000fd5b5050565b610faf83838360405180602001604052806000815250611f49565b505050565b61271081565b6000610fc4610d3b565b8210611005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffc9061445b565b60405180910390fd5b600882815481106110195761101861447b565b5b90600052602060002001549050919050565b601481565b61103861294d565b73ffffffffffffffffffffffffffffffffffffffff166110566117ae565b73ffffffffffffffffffffffffffffffffffffffff16146110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a3906143c9565b60405180910390fd5b80601090805190602001906110c29291906137ac565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561116f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111669061451c565b60405180910390fd5b80915050919050565b61118061294d565b73ffffffffffffffffffffffffffffffffffffffff1661119e6117ae565b73ffffffffffffffffffffffffffffffffffffffff16146111f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111eb906143c9565b60405180910390fd5b80600d8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561126f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611266906145ae565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112be61294d565b73ffffffffffffffffffffffffffffffffffffffff166112dc6117ae565b73ffffffffffffffffffffffffffffffffffffffff1614611332576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611329906143c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6113fb61294d565b73ffffffffffffffffffffffffffffffffffffffff166114196117ae565b73ffffffffffffffffffffffffffffffffffffffff161461146f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611466906143c9565b60405180910390fd5b80601160016101000a81548160ff02191690831515021790555050565b61149461294d565b73ffffffffffffffffffffffffffffffffffffffff166114b26117ae565b73ffffffffffffffffffffffffffffffffffffffff1614611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff906143c9565b60405180910390fd5b60005b8282905081101561171d57600073ffffffffffffffffffffffffffffffffffffffff168383838181106115415761154061447b565b5b905060200201602081019061155691906138c1565b73ffffffffffffffffffffffffffffffffffffffff1614156115ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a49061461a565b60405180910390fd5b6001601260008585858181106115c6576115c561447b565b5b90506020020160208101906115db91906138c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601360008585858181106116455761164461447b565b5b905060200201602081019061165a91906138c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116116a1576000611709565b601360008484848181106116b8576116b761447b565b5b90506020020160208101906116cd91906138c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020545b50808061171590614669565b91505061150b565b505050565b61172a61294d565b73ffffffffffffffffffffffffffffffffffffffff166117486117ae565b73ffffffffffffffffffffffffffffffffffffffff161461179e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611795906143c9565b60405180910390fd5b80600e8190555050565b600e5481565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117e061294d565b73ffffffffffffffffffffffffffffffffffffffff166117fe6117ae565b73ffffffffffffffffffffffffffffffffffffffff1614611854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184b906143c9565b60405180910390fd5b80600c8190555050565b61186661294d565b73ffffffffffffffffffffffffffffffffffffffff166118846117ae565b73ffffffffffffffffffffffffffffffffffffffff16146118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d1906143c9565b60405180910390fd5b80600f90805190602001906118f09291906137ac565b5050565b60606001805461190390614071565b80601f016020809104026020016040519081016040528092919081815260200182805461192f90614071565b801561197c5780601f106119515761010080835404028352916020019161197c565b820191906000526020600020905b81548152906001019060200180831161195f57829003601f168201915b5050505050905090565b600c5481565b6002600b5414156119d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c9906146fe565b60405180910390fd5b6002600b81905550601160009054906101000a900460ff16611a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a209061476a565b60405180910390fd5b6014811115611a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a64906147fc565b60405180910390fd5b612710611a7a6014612d48565b10611aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab19061488e565b60405180910390fd5b3481600c54611ac991906148ae565b1115611b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0190614954565b60405180910390fd5b60005b81811015611b5f576000611b216014612d48565b9050612710611b306014612d48565b1015611b4b57611b406014612d56565b611b4a3382612d75565b5b508080611b5790614669565b915050611b0d565b506001600b8190555050565b611b7361294d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd8906149c0565b60405180910390fd5b8060056000611bee61294d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611c9b61294d565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ce091906139c2565b60405180910390a35050565b600d5481565b611cfa61294d565b73ffffffffffffffffffffffffffffffffffffffff16611d186117ae565b73ffffffffffffffffffffffffffffffffffffffff1614611d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d65906143c9565b60405180910390fd5b60005b82829050811015611ea557600073ffffffffffffffffffffffffffffffffffffffff16838383818110611da757611da661447b565b5b9050602002016020810190611dbc91906138c1565b73ffffffffffffffffffffffffffffffffffffffff161415611e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0a9061461a565b60405180910390fd5b600060126000858585818110611e2c57611e2b61447b565b5b9050602002016020810190611e4191906138c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611e9d90614669565b915050611d71565b505050565b611eb261294d565b73ffffffffffffffffffffffffffffffffffffffff16611ed06117ae565b73ffffffffffffffffffffffffffffffffffffffff1614611f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d906143c9565b60405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b61271081565b611f5a611f5461294d565b83612a0e565b611f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f90906142cb565b60405180910390fd5b611fa584848484612d93565b50505050565b6060611fb6826128e1565b611ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fec90614a2c565b60405180910390fd5b601061200083612def565b604051602001612011929190614b1c565b6040516020818303038152906040529050919050565b61202f61294d565b73ffffffffffffffffffffffffffffffffffffffff1661204d6117ae565b73ffffffffffffffffffffffffffffffffffffffff16146120a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209a906143c9565b60405180910390fd5b6127106120b06014612d48565b106120f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e79061488e565b60405180910390fd5b60005b818110156121455760006121076014612d48565b90506127106121166014612d48565b1015612131576121266014612d56565b6121308482612d75565b5b50808061213d90614669565b9150506120f3565b505050565b6002600b541415612190576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612187906146fe565b60405180910390fd5b6002600b8190555060148111156121dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d3906147fc565b60405180910390fd5b601160019054906101000a900460ff1661222b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222290614b8c565b60405180910390fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166122b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ae90614bf8565b60405180910390fd5b6127106122c46014612d48565b10612304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fb90614c64565b60405180910390fd5b600e54811115612349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234090614cd0565b60405180910390fd5b600e5481601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123979190614cf0565b11156123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf90614d92565b60405180910390fd5b3481600c546123e791906148ae565b1115612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241f90614954565b60405180910390fd5b6127106124356014612d48565b10612475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246c9061488e565b60405180910390fd5b60005b8181101561252157600061248c6014612d48565b905061271061249b6014612d48565b101561250d576124ab6014612d56565b6001601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124fb9190614cf0565b9250508190555061250c3382612d75565b5b50808061251990614669565b915050612478565b506001600b8190555050565b6060600f805461253c90614071565b80601f016020809104026020016040519081016040528092919081815260200182805461256890614071565b80156125b55780601f1061258a576101008083540402835291602001916125b5565b820191906000526020600020905b81548152906001019060200180831161259857829003601f168201915b5050505050905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61265b61294d565b73ffffffffffffffffffffffffffffffffffffffff166126796117ae565b73ffffffffffffffffffffffffffffffffffffffff16146126cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c6906143c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561273f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273690614e24565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806128ca57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806128da57506128d982612f50565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166129c8836110c6565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612a19826128e1565b612a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4f90614eb6565b60405180910390fd5b6000612a63836110c6565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612ad257508373ffffffffffffffffffffffffffffffffffffffff16612aba84610b9e565b73ffffffffffffffffffffffffffffffffffffffff16145b80612ae35750612ae281856125bf565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612b0c826110c6565b73ffffffffffffffffffffffffffffffffffffffff1614612b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5990614f48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc990614fda565b60405180910390fd5b612bdd838383612fba565b612be8600082612955565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c389190614ffa565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c8f9190614cf0565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600081600001549050919050565b6001816000016000828254612d6b9190614cf0565b9250508190555050565b612d8f8282604051806020016040528060008152506130ce565b5050565b612d9e848484612aec565b612daa84848484613129565b612de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de0906150a0565b60405180910390fd5b50505050565b60606000821415612e37576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612f4b565b600082905060005b60008214612e69578080612e5290614669565b915050600a82612e6291906150ef565b9150612e3f565b60008167ffffffffffffffff811115612e8557612e84613bb8565b5b6040519080825280601f01601f191660200182016040528015612eb75781602001600182028036833780820191505090505b5090505b60008514612f4457600182612ed09190614ffa565b9150600a85612edf9190615120565b6030612eeb9190614cf0565b60f81b818381518110612f0157612f0061447b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612f3d91906150ef565b9450612ebb565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612fc58383836132c0565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561300857613003816132c5565b613047565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461304657613045838261330e565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561308a576130858161347b565b6130c9565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146130c8576130c7828261354c565b5b5b505050565b6130d883836135cb565b6130e56000848484613129565b613124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311b906150a0565b60405180910390fd5b505050565b600061314a8473ffffffffffffffffffffffffffffffffffffffff16613799565b156132b3578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261317361294d565b8786866040518563ffffffff1660e01b815260040161319594939291906151a6565b602060405180830381600087803b1580156131af57600080fd5b505af19250505080156131e057506040513d601f19601f820116820180604052508101906131dd9190615207565b60015b613263573d8060008114613210576040519150601f19603f3d011682016040523d82523d6000602084013e613215565b606091505b5060008151141561325b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613252906150a0565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506132b8565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161331b846111fe565b6133259190614ffa565b905060006007600084815260200190815260200160002054905081811461340a576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061348f9190614ffa565b90506000600960008481526020019081526020016000205490506000600883815481106134bf576134be61447b565b5b9060005260206000200154905080600883815481106134e1576134e061447b565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806135305761352f615234565b5b6001900381819060005260206000200160009055905550505050565b6000613557836111fe565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561363b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613632906152af565b60405180910390fd5b613644816128e1565b15613684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161367b9061531b565b60405180910390fd5b61369060008383612fba565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136e09190614cf0565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b8280546137b890614071565b90600052602060002090601f0160209004810192826137da5760008555613821565b82601f106137f357805160ff1916838001178555613821565b82800160010185558215613821579182015b82811115613820578251825591602001919060010190613805565b5b50905061382e9190613832565b5090565b5b8082111561384b576000816000905550600101613833565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061388e82613863565b9050919050565b61389e81613883565b81146138a957600080fd5b50565b6000813590506138bb81613895565b92915050565b6000602082840312156138d7576138d6613859565b5b60006138e5848285016138ac565b91505092915050565b6000819050919050565b613901816138ee565b82525050565b600060208201905061391c60008301846138f8565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61395781613922565b811461396257600080fd5b50565b6000813590506139748161394e565b92915050565b6000602082840312156139905761398f613859565b5b600061399e84828501613965565b91505092915050565b60008115159050919050565b6139bc816139a7565b82525050565b60006020820190506139d760008301846139b3565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a175780820151818401526020810190506139fc565b83811115613a26576000848401525b50505050565b6000601f19601f8301169050919050565b6000613a48826139dd565b613a5281856139e8565b9350613a628185602086016139f9565b613a6b81613a2c565b840191505092915050565b60006020820190508181036000830152613a908184613a3d565b905092915050565b613aa1816138ee565b8114613aac57600080fd5b50565b600081359050613abe81613a98565b92915050565b600060208284031215613ada57613ad9613859565b5b6000613ae884828501613aaf565b91505092915050565b613afa81613883565b82525050565b6000602082019050613b156000830184613af1565b92915050565b60008060408385031215613b3257613b31613859565b5b6000613b40858286016138ac565b9250506020613b5185828601613aaf565b9150509250929050565b600080600060608486031215613b7457613b73613859565b5b6000613b82868287016138ac565b9350506020613b93868287016138ac565b9250506040613ba486828701613aaf565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613bf082613a2c565b810181811067ffffffffffffffff82111715613c0f57613c0e613bb8565b5b80604052505050565b6000613c2261384f565b9050613c2e8282613be7565b919050565b600067ffffffffffffffff821115613c4e57613c4d613bb8565b5b613c5782613a2c565b9050602081019050919050565b82818337600083830152505050565b6000613c86613c8184613c33565b613c18565b905082815260208101848484011115613ca257613ca1613bb3565b5b613cad848285613c64565b509392505050565b600082601f830112613cca57613cc9613bae565b5b8135613cda848260208601613c73565b91505092915050565b600060208284031215613cf957613cf8613859565b5b600082013567ffffffffffffffff811115613d1757613d1661385e565b5b613d2384828501613cb5565b91505092915050565b613d35816139a7565b8114613d4057600080fd5b50565b600081359050613d5281613d2c565b92915050565b600060208284031215613d6e57613d6d613859565b5b6000613d7c84828501613d43565b91505092915050565b600080fd5b600080fd5b60008083601f840112613da557613da4613bae565b5b8235905067ffffffffffffffff811115613dc257613dc1613d85565b5b602083019150836020820283011115613dde57613ddd613d8a565b5b9250929050565b60008060208385031215613dfc57613dfb613859565b5b600083013567ffffffffffffffff811115613e1a57613e1961385e565b5b613e2685828601613d8f565b92509250509250929050565b60008060408385031215613e4957613e48613859565b5b6000613e57858286016138ac565b9250506020613e6885828601613d43565b9150509250929050565b600067ffffffffffffffff821115613e8d57613e8c613bb8565b5b613e9682613a2c565b9050602081019050919050565b6000613eb6613eb184613e72565b613c18565b905082815260208101848484011115613ed257613ed1613bb3565b5b613edd848285613c64565b509392505050565b600082601f830112613efa57613ef9613bae565b5b8135613f0a848260208601613ea3565b91505092915050565b60008060008060808587031215613f2d57613f2c613859565b5b6000613f3b878288016138ac565b9450506020613f4c878288016138ac565b9350506040613f5d87828801613aaf565b925050606085013567ffffffffffffffff811115613f7e57613f7d61385e565b5b613f8a87828801613ee5565b91505092959194509250565b60008060408385031215613fad57613fac613859565b5b6000613fbb858286016138ac565b9250506020613fcc858286016138ac565b9150509250929050565b7f5a65726f2061646472657373206e6f74206f6e20416c6c6f77204c6973740000600082015250565b600061400c601e836139e8565b915061401782613fd6565b602082019050919050565b6000602082019050818103600083015261403b81613fff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061408957607f821691505b6020821081141561409d5761409c614042565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006140ff602c836139e8565b915061410a826140a3565b604082019050919050565b6000602082019050818103600083015261412e816140f2565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006141916021836139e8565b915061419c82614135565b604082019050919050565b600060208201905081810360008301526141c081614184565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006142236038836139e8565b915061422e826141c7565b604082019050919050565b6000602082019050818103600083015261425281614216565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006142b56031836139e8565b91506142c082614259565b604082019050919050565b600060208201905081810360008301526142e4816142a8565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000614347602b836139e8565b9150614352826142eb565b604082019050919050565b600060208201905081810360008301526143768161433a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006143b36020836139e8565b91506143be8261437d565b602082019050919050565b600060208201905081810360008301526143e2816143a6565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000614445602c836139e8565b9150614450826143e9565b604082019050919050565b6000602082019050818103600083015261447481614438565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006145066029836139e8565b9150614511826144aa565b604082019050919050565b60006020820190508181036000830152614535816144f9565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000614598602a836139e8565b91506145a38261453c565b604082019050919050565b600060208201905081810360008301526145c78161458b565b9050919050565b7f43616e27742061646420746865206e756c6c2061646472657373000000000000600082015250565b6000614604601a836139e8565b915061460f826145ce565b602082019050919050565b60006020820190508181036000830152614633816145f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614674826138ee565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156146a7576146a661463a565b5b600182019050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006146e8601f836139e8565b91506146f3826146b2565b602082019050919050565b60006020820190508181036000830152614717816146db565b9050919050565b7f53616c65206973206e6f74206163746976650000000000000000000000000000600082015250565b60006147546012836139e8565b915061475f8261471e565b602082019050919050565b6000602082019050818103600083015261478381614747565b9050919050565b7f546f6f206d616e7920746f6b656e7320666f72206f6e65207472616e7361637460008201527f696f6e0000000000000000000000000000000000000000000000000000000000602082015250565b60006147e66023836139e8565b91506147f18261478a565b604082019050919050565b60006020820190508181036000830152614815816147d9565b9050919050565b7f507572636861736520776f756c6420657863656564206372617a795075626c6960008201527f6300000000000000000000000000000000000000000000000000000000000000602082015250565b60006148786021836139e8565b91506148838261481c565b604082019050919050565b600060208201905081810360008301526148a78161486b565b9050919050565b60006148b9826138ee565b91506148c4836138ee565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148fd576148fc61463a565b5b828202905092915050565b7f496e73756666696369656e74207061796d656e74000000000000000000000000600082015250565b600061493e6014836139e8565b915061494982614908565b602082019050919050565b6000602082019050818103600083015261496d81614931565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006149aa6019836139e8565b91506149b582614974565b602082019050919050565b600060208201905081810360008301526149d98161499d565b9050919050565b7f546f6b656e20646f6573206e6f74206578697374000000000000000000000000600082015250565b6000614a166014836139e8565b9150614a21826149e0565b602082019050919050565b60006020820190508181036000830152614a4581614a09565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b60008154614a7981614071565b614a838186614a4c565b94506001821660008114614a9e5760018114614aaf57614ae2565b60ff19831686528186019350614ae2565b614ab885614a57565b60005b83811015614ada57815481890152600182019150602081019050614abb565b838801955050505b50505092915050565b6000614af6826139dd565b614b008185614a4c565b9350614b108185602086016139f9565b80840191505092915050565b6000614b288285614a6c565b9150614b348284614aeb565b91508190509392505050565b7f416c6c6f77204c697374206973206e6f74206163746976650000000000000000600082015250565b6000614b766018836139e8565b9150614b8182614b40565b602082019050919050565b60006020820190508181036000830152614ba581614b69565b9050919050565b7f596f7520617265206e6f74206f6e2074686520416c6c6f77204c697374000000600082015250565b6000614be2601d836139e8565b9150614bed82614bac565b602082019050919050565b60006020820190508181036000830152614c1181614bd5565b9050919050565b7f507572636861736520776f756c6420657863656564206d617800000000000000600082015250565b6000614c4e6019836139e8565b9150614c5982614c18565b602082019050919050565b60006020820190508181036000830152614c7d81614c41565b9050919050565b7f43616e6e6f742070757263686173652074686973206d616e7920746f6b656e73600082015250565b6000614cba6020836139e8565b9150614cc582614c84565b602082019050919050565b60006020820190508181036000830152614ce981614cad565b9050919050565b6000614cfb826138ee565b9150614d06836138ee565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d3b57614d3a61463a565b5b828201905092915050565b7f50757263686173652065786365656473206d617820616c6c6f77656400000000600082015250565b6000614d7c601c836139e8565b9150614d8782614d46565b602082019050919050565b60006020820190508181036000830152614dab81614d6f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e0e6026836139e8565b9150614e1982614db2565b604082019050919050565b60006020820190508181036000830152614e3d81614e01565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614ea0602c836139e8565b9150614eab82614e44565b604082019050919050565b60006020820190508181036000830152614ecf81614e93565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b6000614f326029836139e8565b9150614f3d82614ed6565b604082019050919050565b60006020820190508181036000830152614f6181614f25565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614fc46024836139e8565b9150614fcf82614f68565b604082019050919050565b60006020820190508181036000830152614ff381614fb7565b9050919050565b6000615005826138ee565b9150615010836138ee565b9250828210156150235761502261463a565b5b828203905092915050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061508a6032836139e8565b91506150958261502e565b604082019050919050565b600060208201905081810360008301526150b98161507d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006150fa826138ee565b9150615105836138ee565b925082615115576151146150c0565b5b828204905092915050565b600061512b826138ee565b9150615136836138ee565b925082615146576151456150c0565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b600061517882615151565b615182818561515c565b93506151928185602086016139f9565b61519b81613a2c565b840191505092915050565b60006080820190506151bb6000830187613af1565b6151c86020830186613af1565b6151d560408301856138f8565b81810360608301526151e7818461516d565b905095945050505050565b6000815190506152018161394e565b92915050565b60006020828403121561521d5761521c613859565b5b600061522b848285016151f2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006152996020836139e8565b91506152a482615263565b602082019050919050565b600060208201905081810360008301526152c88161528c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615305601c836139e8565b9150615310826152cf565b602082019050919050565b60006020820190508181036000830152615334816152f8565b905091905056fea26469706673582212203787defdcbd5880a2df59a9c161e352615ca71b700c9466e35c03c501043bbab64736f6c63430008090033
Deployed ByteCode Sourcemap
49480:5721:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52220:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39401:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25518:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27100:308;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26623:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40204:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50011:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28159:376;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50046:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39785:343;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52429:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;55053:145;;;;;;;;;;;;;:::i;:::-;;28606:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49674:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40394:320;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49727:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50520:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25125:326;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50776:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24768:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48862:148;;;;;;;;;;;;;:::i;:::-;;51409:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51676:530;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51552:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49887:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48211:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50671:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50413:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25687:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49773:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53980:680;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27480:327;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49828:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52547:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50312:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49627:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28862:365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;54773:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50934:467;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52837:1135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;54668:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27878:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49165:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52220:197;52286:7;52330:1;52313:19;;:5;:19;;;;52305:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;52385:17;:24;52403:5;52385:24;;;;;;;;;;;;;;;;52378:31;;52220:197;;;:::o;39401:300::-;39548:4;39605:35;39590:50;;;:11;:50;;;;:103;;;;39657:36;39681:11;39657:23;:36::i;:::-;39590:103;39570:123;;39401:300;;;:::o;25518:100::-;25572:13;25605:5;25598:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25518:100;:::o;27100:308::-;27221:7;27268:16;27276:7;27268;:16::i;:::-;27246:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;27376:15;:24;27392:7;27376:24;;;;;;;;;;;;;;;;;;;;;27369:31;;27100:308;;;:::o;26623:411::-;26704:13;26720:23;26735:7;26720:14;:23::i;:::-;26704:39;;26768:5;26762:11;;:2;:11;;;;26754:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;26862:5;26846:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;26871:37;26888:5;26895:12;:10;:12::i;:::-;26871:16;:37::i;:::-;26846:62;26824:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;27005:21;27014:2;27018:7;27005:8;:21::i;:::-;26693:341;26623:411;;:::o;40204:113::-;40265:7;40292:10;:17;;;;40285:24;;40204:113;:::o;50011:28::-;;;;;;;;;;;;;:::o;28159:376::-;28368:41;28387:12;:10;:12::i;:::-;28401:7;28368:18;:41::i;:::-;28346:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28499:28;28509:4;28515:2;28519:7;28499:9;:28::i;:::-;28159:376;;;:::o;50046:37::-;;;;;;;;;;;;;:::o;39785:343::-;39927:7;39982:23;39999:5;39982:16;:23::i;:::-;39974:5;:31;39952:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;40094:12;:19;40107:5;40094:19;;;;;;;;;;;;;;;:26;40114:5;40094:26;;;;;;;;;;;;40087:33;;39785:343;;;;:::o;52429:106::-;52487:4;52511:10;:16;52522:4;52511:16;;;;;;;;;;;;;;;;;;;;;;;;;52504:23;;52429:106;;;:::o;55053:145::-;48442:12;:10;:12::i;:::-;48431:23;;:7;:5;:7::i;:::-;:23;;;48423:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;55103:15:::1;55121:21;55103:39;;55161:10;55153:28;;:37;55182:7;55153:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;55092:106;55053:145::o:0;28606:185::-;28744:39;28761:4;28767:2;28771:7;28744:39;;;;;;;;;;;;:16;:39::i;:::-;28606:185;;;:::o;49674:46::-;49662:5;49674:46;:::o;40394:320::-;40514:7;40569:30;:28;:30::i;:::-;40561:5;:38;40539:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;40689:10;40700:5;40689:17;;;;;;;;:::i;:::-;;;;;;;;;;40682:24;;40394:320;;;:::o;49727:39::-;49764:2;49727:39;:::o;50520:96::-;48442:12;:10;:12::i;:::-;48431:23;;:7;:5;:7::i;:::-;:23;;;48423:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50605:3:::1;50589:13;:19;;;;;;;;;;;;:::i;:::-;;50520:96:::0;:::o;25125:326::-;25242:7;25267:13;25283:7;:16;25291:7;25283:16;;;;;;;;;;;;;;;;;;;;;25267:32;;25349:1;25332:19;;:5;:19;;;;25310:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;25438:5;25431:12;;;25125:326;;;:::o;50776:128::-;48442:12;:10;:12::i;:::-;48431:23;;:7;:5;:7::i;:::-;:23;;;48423:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50878:18:::1;50861:14;:35;;;;50776:128:::0;:::o;24768:295::-;24885:7;24949:1;24932:19;;:5;:19;;;;24910:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;25039:9;:16;25049:5;25039:16;;;;;;;;;;;;;;;;25032:23;;24768:295;;;:::o;48862:148::-;48442:12;:10;:12::i;:::-;48431:23;;:7;:5;:7::i;:::-;:23;;;48423:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48969:1:::1;48932:40;;48953:6;;;;;;;;;;;48932:40;;;;;;;;;;;;49000:1;48983:6;;:19;;;;;;;;;;;;;;;;;;48862:148::o:0;51409:131::-;48442:12;:10;:12::i;:::-;48431:23;;:7;:5;:7::i;:::-;:23;;;48423:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51514:18:::1;51494:17;;:38;;;;;;;;;;;;;;;;;;51409:131:::0;:::o;51676:530::-;48442:12;:10;:12::i;:::-;48431:23;;:7;:5;:7::i;:::-;:23;;;48423:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51765:9:::1;51760:439;51784:9;;:16;;51780:1;:20;51760:439;;;51852:1;51828:26;;:9;;51838:1;51828:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:26;;;;51820:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;51937:4;51910:10;:24;51921:9;;51931:1;51921:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;51910:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;52148:1;52114:17;:31;52132:9;;52142:1;52132:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;52114:31;;;;;;;;;;;;;;;;:35;:73;;52186:1;52114:73;;;52152:17;:31;52170:9;;52180:1;52170:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;52152:31;;;;;;;;;;;;;;;;52114:73;;51802:3;;;;;:::i;:::-;;;;51760:439;;;;51676:530:::0;;:::o;51552:110::-;48442:12;:10;:12::i;:::-;48431:23;;:7;:5;:7::i;:::-;:23;;;48423:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51647:7:::1;51628:16;:26;;;;51552:110:::0;:::o;49887:36::-;;;;:::o;48211:87::-;48257:7;48284:6;;;;;;;;;;;48277:13;;48211:87;:::o;50671:97::-;48442:12;:10;:12::i;:::-;48431:23;;:7;:5;:7::i;:::-;:23;;;48423:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50751:9:::1;50738:10;:22;;;;50671:97:::0;:::o;50413:99::-;48442:12;:10;:12::i;:::-;48431:23;;:7;:5;:7::i;:::-;:23;;;48423:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50501:3:::1;50486:12;:18;;;;;;;;;;;;:::i;:::-;;50413:99:::0;:::o;25687:104::-;25743:13;25776:7;25769:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25687:104;:::o;49773:48::-;;;;:::o;53980:680::-;7464:1;8060:7;;:19;;8052:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7464:1;8193:7;:18;;;;54067:8:::1;;;;;;;;;;;54059:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;49764:2;54117:14;:28;;54109:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;49662:5;54204:22;:12;:20;:22::i;:::-;:36;54196:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;54328:9;54310:14;54297:10;;:27;;;;:::i;:::-;:40;;54289:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;54380:9;54375:278;54399:14;54395:1;:18;54375:278;;;54435:15;54453:22;:12;:20;:22::i;:::-;54435:40;;49662:5;54496:22;:12;:20;:22::i;:::-;:36;54492:150;;;54553:24;:12;:22;:24::i;:::-;54596:30;54606:10;54618:7;54596:9;:30::i;:::-;54492:150;54420:233;54415:3;;;;;:::i;:::-;;;;54375:278;;;;7420:1:::0;8372:7;:22;;;;53980:680;:::o;27480:327::-;27627:12;:10;:12::i;:::-;27615:24;;:8;:24;;;;27607:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;27727:8;27682:18;:32;27701:12;:10;:12::i;:::-;27682:32;;;;;;;;;;;;;;;:42;27715:8;27682:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;27780:8;27751:48;;27766:12;:10;:12::i;:::-;27751:48;;;27790:8;27751:48;;;;;;:::i;:::-;;;;;;;;27480:327;;:::o;49828:52::-;;;;:::o;52547:278::-;48442:12;:10;:12::i;:::-;48431:23;;:7;:5;:7::i;:::-;:23;;;48423:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52641:9:::1;52636:182;52660:9;;:16;;52656:1;:20;52636:182;;;52728:1;52704:26;;:9;;52714:1;52704:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:26;;;;52696:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;52801:5;52774:10;:24;52785:9;;52795:1;52785:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;52774:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;52678:3;;;;;:::i;:::-;;;;52636:182;;;;52547:278:::0;;:::o;50312:93::-;48442:12;:10;:12::i;:::-;48431:23;;:7;:5;:7::i;:::-;:23;;;48423:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50388:9:::1;50377:8;;:20;;;;;;;;;;;;;;;;;;50312:93:::0;:::o;49627:40::-;49662:5;49627:40;:::o;28862:365::-;29051:41;29070:12;:10;:12::i;:::-;29084:7;29051:18;:41::i;:::-;29029:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;29180:39;29194:4;29200:2;29204:7;29213:5;29180:13;:39::i;:::-;28862:365;;;;:::o;54773:232::-;54846:13;54879:16;54887:7;54879;:16::i;:::-;54871:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;54962:13;54977:18;:7;:16;:18::i;:::-;54945:51;;;;;;;;;:::i;:::-;;;;;;;;;;;;;54931:66;;54773:232;;;:::o;50934:467::-;48442:12;:10;:12::i;:::-;48431:23;;:7;:5;:7::i;:::-;:23;;;48423:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49662:5:::1;51038:22;:12;:20;:22::i;:::-;:36;51030:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;51129:9;51124:270;51148:14;51144:1;:18;51124:270;;;51184:15;51202:22;:12;:20;:22::i;:::-;51184:40;;49662:5;51245:22;:12;:20;:22::i;:::-;:36;51241:142;;;51302:24;:12;:22;:24::i;:::-;51345:22;51355:2;51359:7;51345:9;:22::i;:::-;51241:142;51169:225;51164:3;;;;;:::i;:::-;;;;51124:270;;;;50934:467:::0;;:::o;52837:1135::-;7464:1;8060:7;;:19;;8052:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7464:1;8193:7;:18;;;;49764:2:::1;52933:14;:28;;52925:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;53020:17;;;;;;;;;;;53012:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;53085:10;:22;53096:10;53085:22;;;;;;;;;;;;;;;;;;;;;;;;;53077:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;49662:5;53160:22;:12;:20;:22::i;:::-;:36;53152:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;53262:16;;53244:14;:34;;53236:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;53384:16;;53366:14;53334:17;:29;53352:10;53334:29;;;;;;;;;;;;;;;;:46;;;;:::i;:::-;:66;;53326:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;53483:9;53465:14;53452:10;;:27;;;;:::i;:::-;:40;;53444:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;49662:5;53536:22;:12;:20;:22::i;:::-;:36;53528:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;53627:9;53622:331;53646:14;53642:1;:18;53622:331;;;53682:15;53700:22;:12;:20;:22::i;:::-;53682:40;;49662:5;53743:22;:12;:20;:22::i;:::-;:36;53739:203;;;53800:24;:12;:22;:24::i;:::-;53876:1;53843:17;:29;53861:10;53843:29;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;53896:30;53906:10;53918:7;53896:9;:30::i;:::-;53739:203;53667:286;53662:3;;;;;:::i;:::-;;;;53622:331;;;;7420:1:::0;8372:7;:22;;;;52837:1135;:::o;54668:97::-;54712:13;54745:12;54738:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54668:97;:::o;27878:214::-;28020:4;28049:18;:25;28068:5;28049:25;;;;;;;;;;;;;;;:35;28075:8;28049:35;;;;;;;;;;;;;;;;;;;;;;;;;28042:42;;27878:214;;;;:::o;49165:281::-;48442:12;:10;:12::i;:::-;48431:23;;:7;:5;:7::i;:::-;:23;;;48423:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49288:1:::1;49268:22;;:8;:22;;;;49246:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;49401:8;49372:38;;49393:6;;;;;;;;;;;49372:38;;;;;;;;;;;;49430:8;49421:6;;:17;;;;;;;;;;;;;;;;;;49165:281:::0;:::o;24349:355::-;24496:4;24553:25;24538:40;;;:11;:40;;;;:105;;;;24610:33;24595:48;;;:11;:48;;;;24538:105;:158;;;;24660:36;24684:11;24660:23;:36::i;:::-;24538:158;24518:178;;24349:355;;;:::o;30774:127::-;30839:4;30891:1;30863:30;;:7;:16;30871:7;30863:16;;;;;;;;;;;;;;;;;;;;;:30;;;;30856:37;;30774:127;;;:::o;19525:98::-;19578:7;19605:10;19598:17;;19525:98;:::o;34897:174::-;34999:2;34972:15;:24;34988:7;34972:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;35055:7;35051:2;35017:46;;35026:23;35041:7;35026:14;:23::i;:::-;35017:46;;;;;;;;;;;;34897:174;;:::o;31068:452::-;31197:4;31241:16;31249:7;31241;:16::i;:::-;31219:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;31340:13;31356:23;31371:7;31356:14;:23::i;:::-;31340:39;;31409:5;31398:16;;:7;:16;;;:64;;;;31455:7;31431:31;;:20;31443:7;31431:11;:20::i;:::-;:31;;;31398:64;:113;;;;31479:32;31496:5;31503:7;31479:16;:32::i;:::-;31398:113;31390:122;;;31068:452;;;;:::o;34164:615::-;34337:4;34310:31;;:23;34325:7;34310:14;:23::i;:::-;:31;;;34288:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;34443:1;34429:16;;:2;:16;;;;34421:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;34499:39;34520:4;34526:2;34530:7;34499:20;:39::i;:::-;34603:29;34620:1;34624:7;34603:8;:29::i;:::-;34664:1;34645:9;:15;34655:4;34645:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;34693:1;34676:9;:13;34686:2;34676:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;34724:2;34705:7;:16;34713:7;34705:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;34763:7;34759:2;34744:27;;34753:4;34744:27;;;;;;;;;;;;34164:615;;;:::o;46610:114::-;46675:7;46702;:14;;;46695:21;;46610:114;;;:::o;46732:117::-;46829:1;46811:7;:14;;;:19;;;;;;;:::i;:::-;;;;;;;;46732:117;:::o;31862:110::-;31938:26;31948:2;31952:7;31938:26;;;;;;;;;;;;:9;:26::i;:::-;31862:110;;:::o;30109:352::-;30266:28;30276:4;30282:2;30286:7;30266:9;:28::i;:::-;30327:48;30350:4;30356:2;30360:7;30369:5;30327:22;:48::i;:::-;30305:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;30109:352;;;;:::o;20197:723::-;20253:13;20483:1;20474:5;:10;20470:53;;;20501:10;;;;;;;;;;;;;;;;;;;;;20470:53;20533:12;20548:5;20533:20;;20564:14;20589:78;20604:1;20596:4;:9;20589:78;;20622:8;;;;;:::i;:::-;;;;20653:2;20645:10;;;;;:::i;:::-;;;20589:78;;;20677:19;20709:6;20699:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20677:39;;20727:154;20743:1;20734:5;:10;20727:154;;20771:1;20761:11;;;;;:::i;:::-;;;20838:2;20830:5;:10;;;;:::i;:::-;20817:2;:24;;;;:::i;:::-;20804:39;;20787:6;20794;20787:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;20867:2;20858:11;;;;;:::i;:::-;;;20727:154;;;20905:6;20891:21;;;;;20197:723;;;;:::o;22797:207::-;22927:4;22971:25;22956:40;;;:11;:40;;;;22949:47;;22797:207;;;:::o;41327:589::-;41471:45;41498:4;41504:2;41508:7;41471:26;:45::i;:::-;41549:1;41533:18;;:4;:18;;;41529:187;;;41568:40;41600:7;41568:31;:40::i;:::-;41529:187;;;41638:2;41630:10;;:4;:10;;;41626:90;;41657:47;41690:4;41696:7;41657:32;:47::i;:::-;41626:90;41529:187;41744:1;41730:16;;:2;:16;;;41726:183;;;41763:45;41800:7;41763:36;:45::i;:::-;41726:183;;;41836:4;41830:10;;:2;:10;;;41826:83;;41857:40;41885:2;41889:7;41857:27;:40::i;:::-;41826:83;41726:183;41327:589;;;:::o;32199:321::-;32329:18;32335:2;32339:7;32329:5;:18::i;:::-;32380:54;32411:1;32415:2;32419:7;32428:5;32380:22;:54::i;:::-;32358:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;32199:321;;;:::o;35636:1053::-;35791:4;35812:15;:2;:13;;;:15::i;:::-;35808:874;;;35881:2;35865:36;;;35924:12;:10;:12::i;:::-;35959:4;35986:7;36016:5;35865:175;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;35844:783;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36244:1;36227:6;:13;:18;36223:389;;;36270:108;;;;;;;;;;:::i;:::-;;;;;;;;36223:389;36562:6;36556:13;36547:6;36543:2;36539:15;36532:38;35844:783;36114:45;;;36104:55;;;:6;:55;;;;36097:62;;;;;35808:874;36666:4;36659:11;;35636:1053;;;;;;;:::o;37302:126::-;;;;:::o;42639:164::-;42743:10;:17;;;;42716:15;:24;42732:7;42716:24;;;;;;;;;;;:44;;;;42771:10;42787:7;42771:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42639:164;:::o;43430:1002::-;43710:22;43760:1;43735:22;43752:4;43735:16;:22::i;:::-;:26;;;;:::i;:::-;43710:51;;43772:18;43793:17;:26;43811:7;43793:26;;;;;;;;;;;;43772:47;;43940:14;43926:10;:28;43922:328;;43971:19;43993:12;:18;44006:4;43993:18;;;;;;;;;;;;;;;:34;44012:14;43993:34;;;;;;;;;;;;43971:56;;44077:11;44044:12;:18;44057:4;44044:18;;;;;;;;;;;;;;;:30;44063:10;44044:30;;;;;;;;;;;:44;;;;44194:10;44161:17;:30;44179:11;44161:30;;;;;;;;;;;:43;;;;43956:294;43922:328;44346:17;:26;44364:7;44346:26;;;;;;;;;;;44339:33;;;44390:12;:18;44403:4;44390:18;;;;;;;;;;;;;;;:34;44409:14;44390:34;;;;;;;;;;;44383:41;;;43525:907;;43430:1002;;:::o;44727:1079::-;44980:22;45025:1;45005:10;:17;;;;:21;;;;:::i;:::-;44980:46;;45037:18;45058:15;:24;45074:7;45058:24;;;;;;;;;;;;45037:45;;45409:19;45431:10;45442:14;45431:26;;;;;;;;:::i;:::-;;;;;;;;;;45409:48;;45495:11;45470:10;45481;45470:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;45606:10;45575:15;:28;45591:11;45575:28;;;;;;;;;;;:41;;;;45747:15;:24;45763:7;45747:24;;;;;;;;;;;45740:31;;;45782:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;44798:1008;;;44727:1079;:::o;42217:221::-;42302:14;42319:20;42336:2;42319:16;:20::i;:::-;42302:37;;42377:7;42350:12;:16;42363:2;42350:16;;;;;;;;;;;;;;;:24;42367:6;42350:24;;;;;;;;;;;:34;;;;42424:6;42395:17;:26;42413:7;42395:26;;;;;;;;;;;:35;;;;42291:147;42217:221;;:::o;32856:382::-;32950:1;32936:16;;:2;:16;;;;32928:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;33009:16;33017:7;33009;:16::i;:::-;33008:17;33000:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;33071:45;33100:1;33104:2;33108:7;33071:20;:45::i;:::-;33146:1;33129:9;:13;33139:2;33129:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;33177:2;33158:7;:16;33166:7;33158:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;33222:7;33218:2;33197:33;;33214:1;33197:33;;;;;;;;;;;;32856:382;;:::o;10924:444::-;10984:4;11192:12;11316:7;11304:20;11296:28;;11359:1;11352:4;:8;11345:15;;;10924:444;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:77::-;1213:7;1242:5;1231:16;;1176:77;;;:::o;1259:118::-;1346:24;1364:5;1346:24;:::i;:::-;1341:3;1334:37;1259:118;;:::o;1383:222::-;1476:4;1514:2;1503:9;1499:18;1491:26;;1527:71;1595:1;1584:9;1580:17;1571:6;1527:71;:::i;:::-;1383:222;;;;:::o;1611:149::-;1647:7;1687:66;1680:5;1676:78;1665:89;;1611:149;;;:::o;1766:120::-;1838:23;1855:5;1838:23;:::i;:::-;1831:5;1828:34;1818:62;;1876:1;1873;1866:12;1818:62;1766:120;:::o;1892:137::-;1937:5;1975:6;1962:20;1953:29;;1991:32;2017:5;1991:32;:::i;:::-;1892:137;;;;:::o;2035:327::-;2093:6;2142:2;2130:9;2121:7;2117:23;2113:32;2110:119;;;2148:79;;:::i;:::-;2110:119;2268:1;2293:52;2337:7;2328:6;2317:9;2313:22;2293:52;:::i;:::-;2283:62;;2239:116;2035:327;;;;:::o;2368:90::-;2402:7;2445:5;2438:13;2431:21;2420:32;;2368:90;;;:::o;2464:109::-;2545:21;2560:5;2545:21;:::i;:::-;2540:3;2533:34;2464:109;;:::o;2579:210::-;2666:4;2704:2;2693:9;2689:18;2681:26;;2717:65;2779:1;2768:9;2764:17;2755:6;2717:65;:::i;:::-;2579:210;;;;:::o;2795:99::-;2847:6;2881:5;2875:12;2865:22;;2795:99;;;:::o;2900:169::-;2984:11;3018:6;3013:3;3006:19;3058:4;3053:3;3049:14;3034:29;;2900:169;;;;:::o;3075:307::-;3143:1;3153:113;3167:6;3164:1;3161:13;3153:113;;;3252:1;3247:3;3243:11;3237:18;3233:1;3228:3;3224:11;3217:39;3189:2;3186:1;3182:10;3177:15;;3153:113;;;3284:6;3281:1;3278:13;3275:101;;;3364:1;3355:6;3350:3;3346:16;3339:27;3275:101;3124:258;3075:307;;;:::o;3388:102::-;3429:6;3480:2;3476:7;3471:2;3464:5;3460:14;3456:28;3446:38;;3388:102;;;:::o;3496:364::-;3584:3;3612:39;3645:5;3612:39;:::i;:::-;3667:71;3731:6;3726:3;3667:71;:::i;:::-;3660:78;;3747:52;3792:6;3787:3;3780:4;3773:5;3769:16;3747:52;:::i;:::-;3824:29;3846:6;3824:29;:::i;:::-;3819:3;3815:39;3808:46;;3588:272;3496:364;;;;:::o;3866:313::-;3979:4;4017:2;4006:9;4002:18;3994:26;;4066:9;4060:4;4056:20;4052:1;4041:9;4037:17;4030:47;4094:78;4167:4;4158:6;4094:78;:::i;:::-;4086:86;;3866:313;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:329::-;4517:6;4566:2;4554:9;4545:7;4541:23;4537:32;4534:119;;;4572:79;;:::i;:::-;4534:119;4692:1;4717:53;4762:7;4753:6;4742:9;4738:22;4717:53;:::i;:::-;4707:63;;4663:117;4458:329;;;;:::o;4793:118::-;4880:24;4898:5;4880:24;:::i;:::-;4875:3;4868:37;4793:118;;:::o;4917:222::-;5010:4;5048:2;5037:9;5033:18;5025:26;;5061:71;5129:1;5118:9;5114:17;5105:6;5061:71;:::i;:::-;4917:222;;;;:::o;5145:474::-;5213:6;5221;5270:2;5258:9;5249:7;5245:23;5241:32;5238:119;;;5276:79;;:::i;:::-;5238:119;5396:1;5421:53;5466:7;5457:6;5446:9;5442:22;5421:53;:::i;:::-;5411:63;;5367:117;5523:2;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5494:118;5145:474;;;;;:::o;5625:619::-;5702:6;5710;5718;5767:2;5755:9;5746:7;5742:23;5738:32;5735:119;;;5773:79;;:::i;:::-;5735:119;5893:1;5918:53;5963:7;5954:6;5943:9;5939:22;5918:53;:::i;:::-;5908:63;;5864:117;6020:2;6046:53;6091:7;6082:6;6071:9;6067:22;6046:53;:::i;:::-;6036:63;;5991:118;6148:2;6174:53;6219:7;6210:6;6199:9;6195:22;6174:53;:::i;:::-;6164:63;;6119:118;5625:619;;;;;:::o;6250:117::-;6359:1;6356;6349:12;6373:117;6482:1;6479;6472:12;6496:180;6544:77;6541:1;6534:88;6641:4;6638:1;6631:15;6665:4;6662:1;6655:15;6682:281;6765:27;6787:4;6765:27;:::i;:::-;6757:6;6753:40;6895:6;6883:10;6880:22;6859:18;6847:10;6844:34;6841:62;6838:88;;;6906:18;;:::i;:::-;6838:88;6946:10;6942:2;6935:22;6725:238;6682:281;;:::o;6969:129::-;7003:6;7030:20;;:::i;:::-;7020:30;;7059:33;7087:4;7079:6;7059:33;:::i;:::-;6969:129;;;:::o;7104:308::-;7166:4;7256:18;7248:6;7245:30;7242:56;;;7278:18;;:::i;:::-;7242:56;7316:29;7338:6;7316:29;:::i;:::-;7308:37;;7400:4;7394;7390:15;7382:23;;7104:308;;;:::o;7418:154::-;7502:6;7497:3;7492;7479:30;7564:1;7555:6;7550:3;7546:16;7539:27;7418:154;;;:::o;7578:412::-;7656:5;7681:66;7697:49;7739:6;7697:49;:::i;:::-;7681:66;:::i;:::-;7672:75;;7770:6;7763:5;7756:21;7808:4;7801:5;7797:16;7846:3;7837:6;7832:3;7828:16;7825:25;7822:112;;;7853:79;;:::i;:::-;7822:112;7943:41;7977:6;7972:3;7967;7943:41;:::i;:::-;7662:328;7578:412;;;;;:::o;8010:340::-;8066:5;8115:3;8108:4;8100:6;8096:17;8092:27;8082:122;;8123:79;;:::i;:::-;8082:122;8240:6;8227:20;8265:79;8340:3;8332:6;8325:4;8317:6;8313:17;8265:79;:::i;:::-;8256:88;;8072:278;8010:340;;;;:::o;8356:509::-;8425:6;8474:2;8462:9;8453:7;8449:23;8445:32;8442:119;;;8480:79;;:::i;:::-;8442:119;8628:1;8617:9;8613:17;8600:31;8658:18;8650:6;8647:30;8644:117;;;8680:79;;:::i;:::-;8644:117;8785:63;8840:7;8831:6;8820:9;8816:22;8785:63;:::i;:::-;8775:73;;8571:287;8356:509;;;;:::o;8871:116::-;8941:21;8956:5;8941:21;:::i;:::-;8934:5;8931:32;8921:60;;8977:1;8974;8967:12;8921:60;8871:116;:::o;8993:133::-;9036:5;9074:6;9061:20;9052:29;;9090:30;9114:5;9090:30;:::i;:::-;8993:133;;;;:::o;9132:323::-;9188:6;9237:2;9225:9;9216:7;9212:23;9208:32;9205:119;;;9243:79;;:::i;:::-;9205:119;9363:1;9388:50;9430:7;9421:6;9410:9;9406:22;9388:50;:::i;:::-;9378:60;;9334:114;9132:323;;;;:::o;9461:117::-;9570:1;9567;9560:12;9584:117;9693:1;9690;9683:12;9724:568;9797:8;9807:6;9857:3;9850:4;9842:6;9838:17;9834:27;9824:122;;9865:79;;:::i;:::-;9824:122;9978:6;9965:20;9955:30;;10008:18;10000:6;9997:30;9994:117;;;10030:79;;:::i;:::-;9994:117;10144:4;10136:6;10132:17;10120:29;;10198:3;10190:4;10182:6;10178:17;10168:8;10164:32;10161:41;10158:128;;;10205:79;;:::i;:::-;10158:128;9724:568;;;;;:::o;10298:559::-;10384:6;10392;10441:2;10429:9;10420:7;10416:23;10412:32;10409:119;;;10447:79;;:::i;:::-;10409:119;10595:1;10584:9;10580:17;10567:31;10625:18;10617:6;10614:30;10611:117;;;10647:79;;:::i;:::-;10611:117;10760:80;10832:7;10823:6;10812:9;10808:22;10760:80;:::i;:::-;10742:98;;;;10538:312;10298:559;;;;;:::o;10863:468::-;10928:6;10936;10985:2;10973:9;10964:7;10960:23;10956:32;10953:119;;;10991:79;;:::i;:::-;10953:119;11111:1;11136:53;11181:7;11172:6;11161:9;11157:22;11136:53;:::i;:::-;11126:63;;11082:117;11238:2;11264:50;11306:7;11297:6;11286:9;11282:22;11264:50;:::i;:::-;11254:60;;11209:115;10863:468;;;;;:::o;11337:307::-;11398:4;11488:18;11480:6;11477:30;11474:56;;;11510:18;;:::i;:::-;11474:56;11548:29;11570:6;11548:29;:::i;:::-;11540:37;;11632:4;11626;11622:15;11614:23;;11337:307;;;:::o;11650:410::-;11727:5;11752:65;11768:48;11809:6;11768:48;:::i;:::-;11752:65;:::i;:::-;11743:74;;11840:6;11833:5;11826:21;11878:4;11871:5;11867:16;11916:3;11907:6;11902:3;11898:16;11895:25;11892:112;;;11923:79;;:::i;:::-;11892:112;12013:41;12047:6;12042:3;12037;12013:41;:::i;:::-;11733:327;11650:410;;;;;:::o;12079:338::-;12134:5;12183:3;12176:4;12168:6;12164:17;12160:27;12150:122;;12191:79;;:::i;:::-;12150:122;12308:6;12295:20;12333:78;12407:3;12399:6;12392:4;12384:6;12380:17;12333:78;:::i;:::-;12324:87;;12140:277;12079:338;;;;:::o;12423:943::-;12518:6;12526;12534;12542;12591:3;12579:9;12570:7;12566:23;12562:33;12559:120;;;12598:79;;:::i;:::-;12559:120;12718:1;12743:53;12788:7;12779:6;12768:9;12764:22;12743:53;:::i;:::-;12733:63;;12689:117;12845:2;12871:53;12916:7;12907:6;12896:9;12892:22;12871:53;:::i;:::-;12861:63;;12816:118;12973:2;12999:53;13044:7;13035:6;13024:9;13020:22;12999:53;:::i;:::-;12989:63;;12944:118;13129:2;13118:9;13114:18;13101:32;13160:18;13152:6;13149:30;13146:117;;;13182:79;;:::i;:::-;13146:117;13287:62;13341:7;13332:6;13321:9;13317:22;13287:62;:::i;:::-;13277:72;;13072:287;12423:943;;;;;;;:::o;13372:474::-;13440:6;13448;13497:2;13485:9;13476:7;13472:23;13468:32;13465:119;;;13503:79;;:::i;:::-;13465:119;13623:1;13648:53;13693:7;13684:6;13673:9;13669:22;13648:53;:::i;:::-;13638:63;;13594:117;13750:2;13776:53;13821:7;13812:6;13801:9;13797:22;13776:53;:::i;:::-;13766:63;;13721:118;13372:474;;;;;:::o;13852:180::-;13992:32;13988:1;13980:6;13976:14;13969:56;13852:180;:::o;14038:366::-;14180:3;14201:67;14265:2;14260:3;14201:67;:::i;:::-;14194:74;;14277:93;14366:3;14277:93;:::i;:::-;14395:2;14390:3;14386:12;14379:19;;14038:366;;;:::o;14410:419::-;14576:4;14614:2;14603:9;14599:18;14591:26;;14663:9;14657:4;14653:20;14649:1;14638:9;14634:17;14627:47;14691:131;14817:4;14691:131;:::i;:::-;14683:139;;14410:419;;;:::o;14835:180::-;14883:77;14880:1;14873:88;14980:4;14977:1;14970:15;15004:4;15001:1;14994:15;15021:320;15065:6;15102:1;15096:4;15092:12;15082:22;;15149:1;15143:4;15139:12;15170:18;15160:81;;15226:4;15218:6;15214:17;15204:27;;15160:81;15288:2;15280:6;15277:14;15257:18;15254:38;15251:84;;;15307:18;;:::i;:::-;15251:84;15072:269;15021:320;;;:::o;15347:231::-;15487:34;15483:1;15475:6;15471:14;15464:58;15556:14;15551:2;15543:6;15539:15;15532:39;15347:231;:::o;15584:366::-;15726:3;15747:67;15811:2;15806:3;15747:67;:::i;:::-;15740:74;;15823:93;15912:3;15823:93;:::i;:::-;15941:2;15936:3;15932:12;15925:19;;15584:366;;;:::o;15956:419::-;16122:4;16160:2;16149:9;16145:18;16137:26;;16209:9;16203:4;16199:20;16195:1;16184:9;16180:17;16173:47;16237:131;16363:4;16237:131;:::i;:::-;16229:139;;15956:419;;;:::o;16381:220::-;16521:34;16517:1;16509:6;16505:14;16498:58;16590:3;16585:2;16577:6;16573:15;16566:28;16381:220;:::o;16607:366::-;16749:3;16770:67;16834:2;16829:3;16770:67;:::i;:::-;16763:74;;16846:93;16935:3;16846:93;:::i;:::-;16964:2;16959:3;16955:12;16948:19;;16607:366;;;:::o;16979:419::-;17145:4;17183:2;17172:9;17168:18;17160:26;;17232:9;17226:4;17222:20;17218:1;17207:9;17203:17;17196:47;17260:131;17386:4;17260:131;:::i;:::-;17252:139;;16979:419;;;:::o;17404:243::-;17544:34;17540:1;17532:6;17528:14;17521:58;17613:26;17608:2;17600:6;17596:15;17589:51;17404:243;:::o;17653:366::-;17795:3;17816:67;17880:2;17875:3;17816:67;:::i;:::-;17809:74;;17892:93;17981:3;17892:93;:::i;:::-;18010:2;18005:3;18001:12;17994:19;;17653:366;;;:::o;18025:419::-;18191:4;18229:2;18218:9;18214:18;18206:26;;18278:9;18272:4;18268:20;18264:1;18253:9;18249:17;18242:47;18306:131;18432:4;18306:131;:::i;:::-;18298:139;;18025:419;;;:::o;18450:236::-;18590:34;18586:1;18578:6;18574:14;18567:58;18659:19;18654:2;18646:6;18642:15;18635:44;18450:236;:::o;18692:366::-;18834:3;18855:67;18919:2;18914:3;18855:67;:::i;:::-;18848:74;;18931:93;19020:3;18931:93;:::i;:::-;19049:2;19044:3;19040:12;19033:19;;18692:366;;;:::o;19064:419::-;19230:4;19268:2;19257:9;19253:18;19245:26;;19317:9;19311:4;19307:20;19303:1;19292:9;19288:17;19281:47;19345:131;19471:4;19345:131;:::i;:::-;19337:139;;19064:419;;;:::o;19489:230::-;19629:34;19625:1;19617:6;19613:14;19606:58;19698:13;19693:2;19685:6;19681:15;19674:38;19489:230;:::o;19725:366::-;19867:3;19888:67;19952:2;19947:3;19888:67;:::i;:::-;19881:74;;19964:93;20053:3;19964:93;:::i;:::-;20082:2;20077:3;20073:12;20066:19;;19725:366;;;:::o;20097:419::-;20263:4;20301:2;20290:9;20286:18;20278:26;;20350:9;20344:4;20340:20;20336:1;20325:9;20321:17;20314:47;20378:131;20504:4;20378:131;:::i;:::-;20370:139;;20097:419;;;:::o;20522:182::-;20662:34;20658:1;20650:6;20646:14;20639:58;20522:182;:::o;20710:366::-;20852:3;20873:67;20937:2;20932:3;20873:67;:::i;:::-;20866:74;;20949:93;21038:3;20949:93;:::i;:::-;21067:2;21062:3;21058:12;21051:19;;20710:366;;;:::o;21082:419::-;21248:4;21286:2;21275:9;21271:18;21263:26;;21335:9;21329:4;21325:20;21321:1;21310:9;21306:17;21299:47;21363:131;21489:4;21363:131;:::i;:::-;21355:139;;21082:419;;;:::o;21507:231::-;21647:34;21643:1;21635:6;21631:14;21624:58;21716:14;21711:2;21703:6;21699:15;21692:39;21507:231;:::o;21744:366::-;21886:3;21907:67;21971:2;21966:3;21907:67;:::i;:::-;21900:74;;21983:93;22072:3;21983:93;:::i;:::-;22101:2;22096:3;22092:12;22085:19;;21744:366;;;:::o;22116:419::-;22282:4;22320:2;22309:9;22305:18;22297:26;;22369:9;22363:4;22359:20;22355:1;22344:9;22340:17;22333:47;22397:131;22523:4;22397:131;:::i;:::-;22389:139;;22116:419;;;:::o;22541:180::-;22589:77;22586:1;22579:88;22686:4;22683:1;22676:15;22710:4;22707:1;22700:15;22727:228;22867:34;22863:1;22855:6;22851:14;22844:58;22936:11;22931:2;22923:6;22919:15;22912:36;22727:228;:::o;22961:366::-;23103:3;23124:67;23188:2;23183:3;23124:67;:::i;:::-;23117:74;;23200:93;23289:3;23200:93;:::i;:::-;23318:2;23313:3;23309:12;23302:19;;22961:366;;;:::o;23333:419::-;23499:4;23537:2;23526:9;23522:18;23514:26;;23586:9;23580:4;23576:20;23572:1;23561:9;23557:17;23550:47;23614:131;23740:4;23614:131;:::i;:::-;23606:139;;23333:419;;;:::o;23758:229::-;23898:34;23894:1;23886:6;23882:14;23875:58;23967:12;23962:2;23954:6;23950:15;23943:37;23758:229;:::o;23993:366::-;24135:3;24156:67;24220:2;24215:3;24156:67;:::i;:::-;24149:74;;24232:93;24321:3;24232:93;:::i;:::-;24350:2;24345:3;24341:12;24334:19;;23993:366;;;:::o;24365:419::-;24531:4;24569:2;24558:9;24554:18;24546:26;;24618:9;24612:4;24608:20;24604:1;24593:9;24589:17;24582:47;24646:131;24772:4;24646:131;:::i;:::-;24638:139;;24365:419;;;:::o;24790:176::-;24930:28;24926:1;24918:6;24914:14;24907:52;24790:176;:::o;24972:366::-;25114:3;25135:67;25199:2;25194:3;25135:67;:::i;:::-;25128:74;;25211:93;25300:3;25211:93;:::i;:::-;25329:2;25324:3;25320:12;25313:19;;24972:366;;;:::o;25344:419::-;25510:4;25548:2;25537:9;25533:18;25525:26;;25597:9;25591:4;25587:20;25583:1;25572:9;25568:17;25561:47;25625:131;25751:4;25625:131;:::i;:::-;25617:139;;25344:419;;;:::o;25769:180::-;25817:77;25814:1;25807:88;25914:4;25911:1;25904:15;25938:4;25935:1;25928:15;25955:233;25994:3;26017:24;26035:5;26017:24;:::i;:::-;26008:33;;26063:66;26056:5;26053:77;26050:103;;;26133:18;;:::i;:::-;26050:103;26180:1;26173:5;26169:13;26162:20;;25955:233;;;:::o;26194:181::-;26334:33;26330:1;26322:6;26318:14;26311:57;26194:181;:::o;26381:366::-;26523:3;26544:67;26608:2;26603:3;26544:67;:::i;:::-;26537:74;;26620:93;26709:3;26620:93;:::i;:::-;26738:2;26733:3;26729:12;26722:19;;26381:366;;;:::o;26753:419::-;26919:4;26957:2;26946:9;26942:18;26934:26;;27006:9;27000:4;26996:20;26992:1;26981:9;26977:17;26970:47;27034:131;27160:4;27034:131;:::i;:::-;27026:139;;26753:419;;;:::o;27178:168::-;27318:20;27314:1;27306:6;27302:14;27295:44;27178:168;:::o;27352:366::-;27494:3;27515:67;27579:2;27574:3;27515:67;:::i;:::-;27508:74;;27591:93;27680:3;27591:93;:::i;:::-;27709:2;27704:3;27700:12;27693:19;;27352:366;;;:::o;27724:419::-;27890:4;27928:2;27917:9;27913:18;27905:26;;27977:9;27971:4;27967:20;27963:1;27952:9;27948:17;27941:47;28005:131;28131:4;28005:131;:::i;:::-;27997:139;;27724:419;;;:::o;28149:222::-;28289:34;28285:1;28277:6;28273:14;28266:58;28358:5;28353:2;28345:6;28341:15;28334:30;28149:222;:::o;28377:366::-;28519:3;28540:67;28604:2;28599:3;28540:67;:::i;:::-;28533:74;;28616:93;28705:3;28616:93;:::i;:::-;28734:2;28729:3;28725:12;28718:19;;28377:366;;;:::o;28749:419::-;28915:4;28953:2;28942:9;28938:18;28930:26;;29002:9;28996:4;28992:20;28988:1;28977:9;28973:17;28966:47;29030:131;29156:4;29030:131;:::i;:::-;29022:139;;28749:419;;;:::o;29174:220::-;29314:34;29310:1;29302:6;29298:14;29291:58;29383:3;29378:2;29370:6;29366:15;29359:28;29174:220;:::o;29400:366::-;29542:3;29563:67;29627:2;29622:3;29563:67;:::i;:::-;29556:74;;29639:93;29728:3;29639:93;:::i;:::-;29757:2;29752:3;29748:12;29741:19;;29400:366;;;:::o;29772:419::-;29938:4;29976:2;29965:9;29961:18;29953:26;;30025:9;30019:4;30015:20;30011:1;30000:9;29996:17;29989:47;30053:131;30179:4;30053:131;:::i;:::-;30045:139;;29772:419;;;:::o;30197:348::-;30237:7;30260:20;30278:1;30260:20;:::i;:::-;30255:25;;30294:20;30312:1;30294:20;:::i;:::-;30289:25;;30482:1;30414:66;30410:74;30407:1;30404:81;30399:1;30392:9;30385:17;30381:105;30378:131;;;30489:18;;:::i;:::-;30378:131;30537:1;30534;30530:9;30519:20;;30197:348;;;;:::o;30551:170::-;30691:22;30687:1;30679:6;30675:14;30668:46;30551:170;:::o;30727:366::-;30869:3;30890:67;30954:2;30949:3;30890:67;:::i;:::-;30883:74;;30966:93;31055:3;30966:93;:::i;:::-;31084:2;31079:3;31075:12;31068:19;;30727:366;;;:::o;31099:419::-;31265:4;31303:2;31292:9;31288:18;31280:26;;31352:9;31346:4;31342:20;31338:1;31327:9;31323:17;31316:47;31380:131;31506:4;31380:131;:::i;:::-;31372:139;;31099:419;;;:::o;31524:175::-;31664:27;31660:1;31652:6;31648:14;31641:51;31524:175;:::o;31705:366::-;31847:3;31868:67;31932:2;31927:3;31868:67;:::i;:::-;31861:74;;31944:93;32033:3;31944:93;:::i;:::-;32062:2;32057:3;32053:12;32046:19;;31705:366;;;:::o;32077:419::-;32243:4;32281:2;32270:9;32266:18;32258:26;;32330:9;32324:4;32320:20;32316:1;32305:9;32301:17;32294:47;32358:131;32484:4;32358:131;:::i;:::-;32350:139;;32077:419;;;:::o;32502:170::-;32642:22;32638:1;32630:6;32626:14;32619:46;32502:170;:::o;32678:366::-;32820:3;32841:67;32905:2;32900:3;32841:67;:::i;:::-;32834:74;;32917:93;33006:3;32917:93;:::i;:::-;33035:2;33030:3;33026:12;33019:19;;32678:366;;;:::o;33050:419::-;33216:4;33254:2;33243:9;33239:18;33231:26;;33303:9;33297:4;33293:20;33289:1;33278:9;33274:17;33267:47;33331:131;33457:4;33331:131;:::i;:::-;33323:139;;33050:419;;;:::o;33475:148::-;33577:11;33614:3;33599:18;;33475:148;;;;:::o;33629:141::-;33678:4;33701:3;33693:11;;33724:3;33721:1;33714:14;33758:4;33755:1;33745:18;33737:26;;33629:141;;;:::o;33800:845::-;33903:3;33940:5;33934:12;33969:36;33995:9;33969:36;:::i;:::-;34021:89;34103:6;34098:3;34021:89;:::i;:::-;34014:96;;34141:1;34130:9;34126:17;34157:1;34152:137;;;;34303:1;34298:341;;;;34119:520;;34152:137;34236:4;34232:9;34221;34217:25;34212:3;34205:38;34272:6;34267:3;34263:16;34256:23;;34152:137;;34298:341;34365:38;34397:5;34365:38;:::i;:::-;34425:1;34439:154;34453:6;34450:1;34447:13;34439:154;;;34527:7;34521:14;34517:1;34512:3;34508:11;34501:35;34577:1;34568:7;34564:15;34553:26;;34475:4;34472:1;34468:12;34463:17;;34439:154;;;34622:6;34617:3;34613:16;34606:23;;34305:334;;34119:520;;33907:738;;33800:845;;;;:::o;34651:377::-;34757:3;34785:39;34818:5;34785:39;:::i;:::-;34840:89;34922:6;34917:3;34840:89;:::i;:::-;34833:96;;34938:52;34983:6;34978:3;34971:4;34964:5;34960:16;34938:52;:::i;:::-;35015:6;35010:3;35006:16;34999:23;;34761:267;34651:377;;;;:::o;35034:429::-;35211:3;35233:92;35321:3;35312:6;35233:92;:::i;:::-;35226:99;;35342:95;35433:3;35424:6;35342:95;:::i;:::-;35335:102;;35454:3;35447:10;;35034:429;;;;;:::o;35469:174::-;35609:26;35605:1;35597:6;35593:14;35586:50;35469:174;:::o;35649:366::-;35791:3;35812:67;35876:2;35871:3;35812:67;:::i;:::-;35805:74;;35888:93;35977:3;35888:93;:::i;:::-;36006:2;36001:3;35997:12;35990:19;;35649:366;;;:::o;36021:419::-;36187:4;36225:2;36214:9;36210:18;36202:26;;36274:9;36268:4;36264:20;36260:1;36249:9;36245:17;36238:47;36302:131;36428:4;36302:131;:::i;:::-;36294:139;;36021:419;;;:::o;36446:179::-;36586:31;36582:1;36574:6;36570:14;36563:55;36446:179;:::o;36631:366::-;36773:3;36794:67;36858:2;36853:3;36794:67;:::i;:::-;36787:74;;36870:93;36959:3;36870:93;:::i;:::-;36988:2;36983:3;36979:12;36972:19;;36631:366;;;:::o;37003:419::-;37169:4;37207:2;37196:9;37192:18;37184:26;;37256:9;37250:4;37246:20;37242:1;37231:9;37227:17;37220:47;37284:131;37410:4;37284:131;:::i;:::-;37276:139;;37003:419;;;:::o;37428:175::-;37568:27;37564:1;37556:6;37552:14;37545:51;37428:175;:::o;37609:366::-;37751:3;37772:67;37836:2;37831:3;37772:67;:::i;:::-;37765:74;;37848:93;37937:3;37848:93;:::i;:::-;37966:2;37961:3;37957:12;37950:19;;37609:366;;;:::o;37981:419::-;38147:4;38185:2;38174:9;38170:18;38162:26;;38234:9;38228:4;38224:20;38220:1;38209:9;38205:17;38198:47;38262:131;38388:4;38262:131;:::i;:::-;38254:139;;37981:419;;;:::o;38406:182::-;38546:34;38542:1;38534:6;38530:14;38523:58;38406:182;:::o;38594:366::-;38736:3;38757:67;38821:2;38816:3;38757:67;:::i;:::-;38750:74;;38833:93;38922:3;38833:93;:::i;:::-;38951:2;38946:3;38942:12;38935:19;;38594:366;;;:::o;38966:419::-;39132:4;39170:2;39159:9;39155:18;39147:26;;39219:9;39213:4;39209:20;39205:1;39194:9;39190:17;39183:47;39247:131;39373:4;39247:131;:::i;:::-;39239:139;;38966:419;;;:::o;39391:305::-;39431:3;39450:20;39468:1;39450:20;:::i;:::-;39445:25;;39484:20;39502:1;39484:20;:::i;:::-;39479:25;;39638:1;39570:66;39566:74;39563:1;39560:81;39557:107;;;39644:18;;:::i;:::-;39557:107;39688:1;39685;39681:9;39674:16;;39391:305;;;;:::o;39702:178::-;39842:30;39838:1;39830:6;39826:14;39819:54;39702:178;:::o;39886:366::-;40028:3;40049:67;40113:2;40108:3;40049:67;:::i;:::-;40042:74;;40125:93;40214:3;40125:93;:::i;:::-;40243:2;40238:3;40234:12;40227:19;;39886:366;;;:::o;40258:419::-;40424:4;40462:2;40451:9;40447:18;40439:26;;40511:9;40505:4;40501:20;40497:1;40486:9;40482:17;40475:47;40539:131;40665:4;40539:131;:::i;:::-;40531:139;;40258:419;;;:::o;40683:225::-;40823:34;40819:1;40811:6;40807:14;40800:58;40892:8;40887:2;40879:6;40875:15;40868:33;40683:225;:::o;40914:366::-;41056:3;41077:67;41141:2;41136:3;41077:67;:::i;:::-;41070:74;;41153:93;41242:3;41153:93;:::i;:::-;41271:2;41266:3;41262:12;41255:19;;40914:366;;;:::o;41286:419::-;41452:4;41490:2;41479:9;41475:18;41467:26;;41539:9;41533:4;41529:20;41525:1;41514:9;41510:17;41503:47;41567:131;41693:4;41567:131;:::i;:::-;41559:139;;41286:419;;;:::o;41711:231::-;41851:34;41847:1;41839:6;41835:14;41828:58;41920:14;41915:2;41907:6;41903:15;41896:39;41711:231;:::o;41948:366::-;42090:3;42111:67;42175:2;42170:3;42111:67;:::i;:::-;42104:74;;42187:93;42276:3;42187:93;:::i;:::-;42305:2;42300:3;42296:12;42289:19;;41948:366;;;:::o;42320:419::-;42486:4;42524:2;42513:9;42509:18;42501:26;;42573:9;42567:4;42563:20;42559:1;42548:9;42544:17;42537:47;42601:131;42727:4;42601:131;:::i;:::-;42593:139;;42320:419;;;:::o;42745:228::-;42885:34;42881:1;42873:6;42869:14;42862:58;42954:11;42949:2;42941:6;42937:15;42930:36;42745:228;:::o;42979:366::-;43121:3;43142:67;43206:2;43201:3;43142:67;:::i;:::-;43135:74;;43218:93;43307:3;43218:93;:::i;:::-;43336:2;43331:3;43327:12;43320:19;;42979:366;;;:::o;43351:419::-;43517:4;43555:2;43544:9;43540:18;43532:26;;43604:9;43598:4;43594:20;43590:1;43579:9;43575:17;43568:47;43632:131;43758:4;43632:131;:::i;:::-;43624:139;;43351:419;;;:::o;43776:223::-;43916:34;43912:1;43904:6;43900:14;43893:58;43985:6;43980:2;43972:6;43968:15;43961:31;43776:223;:::o;44005:366::-;44147:3;44168:67;44232:2;44227:3;44168:67;:::i;:::-;44161:74;;44244:93;44333:3;44244:93;:::i;:::-;44362:2;44357:3;44353:12;44346:19;;44005:366;;;:::o;44377:419::-;44543:4;44581:2;44570:9;44566:18;44558:26;;44630:9;44624:4;44620:20;44616:1;44605:9;44601:17;44594:47;44658:131;44784:4;44658:131;:::i;:::-;44650:139;;44377:419;;;:::o;44802:191::-;44842:4;44862:20;44880:1;44862:20;:::i;:::-;44857:25;;44896:20;44914:1;44896:20;:::i;:::-;44891:25;;44935:1;44932;44929:8;44926:34;;;44940:18;;:::i;:::-;44926:34;44985:1;44982;44978:9;44970:17;;44802:191;;;;:::o;44999:237::-;45139:34;45135:1;45127:6;45123:14;45116:58;45208:20;45203:2;45195:6;45191:15;45184:45;44999:237;:::o;45242:366::-;45384:3;45405:67;45469:2;45464:3;45405:67;:::i;:::-;45398:74;;45481:93;45570:3;45481:93;:::i;:::-;45599:2;45594:3;45590:12;45583:19;;45242:366;;;:::o;45614:419::-;45780:4;45818:2;45807:9;45803:18;45795:26;;45867:9;45861:4;45857:20;45853:1;45842:9;45838:17;45831:47;45895:131;46021:4;45895:131;:::i;:::-;45887:139;;45614:419;;;:::o;46039:180::-;46087:77;46084:1;46077:88;46184:4;46181:1;46174:15;46208:4;46205:1;46198:15;46225:185;46265:1;46282:20;46300:1;46282:20;:::i;:::-;46277:25;;46316:20;46334:1;46316:20;:::i;:::-;46311:25;;46355:1;46345:35;;46360:18;;:::i;:::-;46345:35;46402:1;46399;46395:9;46390:14;;46225:185;;;;:::o;46416:176::-;46448:1;46465:20;46483:1;46465:20;:::i;:::-;46460:25;;46499:20;46517:1;46499:20;:::i;:::-;46494:25;;46538:1;46528:35;;46543:18;;:::i;:::-;46528:35;46584:1;46581;46577:9;46572:14;;46416:176;;;;:::o;46598:98::-;46649:6;46683:5;46677:12;46667:22;;46598:98;;;:::o;46702:168::-;46785:11;46819:6;46814:3;46807:19;46859:4;46854:3;46850:14;46835:29;;46702:168;;;;:::o;46876:360::-;46962:3;46990:38;47022:5;46990:38;:::i;:::-;47044:70;47107:6;47102:3;47044:70;:::i;:::-;47037:77;;47123:52;47168:6;47163:3;47156:4;47149:5;47145:16;47123:52;:::i;:::-;47200:29;47222:6;47200:29;:::i;:::-;47195:3;47191:39;47184:46;;46966:270;46876:360;;;;:::o;47242:640::-;47437:4;47475:3;47464:9;47460:19;47452:27;;47489:71;47557:1;47546:9;47542:17;47533:6;47489:71;:::i;:::-;47570:72;47638:2;47627:9;47623:18;47614:6;47570:72;:::i;:::-;47652;47720:2;47709:9;47705:18;47696:6;47652:72;:::i;:::-;47771:9;47765:4;47761:20;47756:2;47745:9;47741:18;47734:48;47799:76;47870:4;47861:6;47799:76;:::i;:::-;47791:84;;47242:640;;;;;;;:::o;47888:141::-;47944:5;47975:6;47969:13;47960:22;;47991:32;48017:5;47991:32;:::i;:::-;47888:141;;;;:::o;48035:349::-;48104:6;48153:2;48141:9;48132:7;48128:23;48124:32;48121:119;;;48159:79;;:::i;:::-;48121:119;48279:1;48304:63;48359:7;48350:6;48339:9;48335:22;48304:63;:::i;:::-;48294:73;;48250:127;48035:349;;;;:::o;48390:180::-;48438:77;48435:1;48428:88;48535:4;48532:1;48525:15;48559:4;48556:1;48549:15;48576:182;48716:34;48712:1;48704:6;48700:14;48693:58;48576:182;:::o;48764:366::-;48906:3;48927:67;48991:2;48986:3;48927:67;:::i;:::-;48920:74;;49003:93;49092:3;49003:93;:::i;:::-;49121:2;49116:3;49112:12;49105:19;;48764:366;;;:::o;49136:419::-;49302:4;49340:2;49329:9;49325:18;49317:26;;49389:9;49383:4;49379:20;49375:1;49364:9;49360:17;49353:47;49417:131;49543:4;49417:131;:::i;:::-;49409:139;;49136:419;;;:::o;49561:178::-;49701:30;49697:1;49689:6;49685:14;49678:54;49561:178;:::o;49745:366::-;49887:3;49908:67;49972:2;49967:3;49908:67;:::i;:::-;49901:74;;49984:93;50073:3;49984:93;:::i;:::-;50102:2;50097:3;50093:12;50086:19;;49745:366;;;:::o;50117:419::-;50283:4;50321:2;50310:9;50306:18;50298:26;;50370:9;50364:4;50360:20;50356:1;50345:9;50341:17;50334:47;50398:131;50524:4;50398:131;:::i;:::-;50390:139;;50117:419;;;:::o
Swarm Source
ipfs://3787defdcbd5880a2df59a9c161e352615ca71b700c9466e35c03c501043bbab
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.