Polygon Sponsored slots available. Book your slot here!
Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0x2ba3617a37e825afcdf9c5540683e20a056e10daf0b3dcc2b1a18aea3232dbf3 | 27469316 | 70 days 18 hrs ago | 0x5e72796269b48d18020006e9170a919b1ddf53f7 | 0xb9cd42c60d23c5475d4b23325ed96a157b738a93 | 20 MATIC |
[ Download CSV Export ]
Contract Name:
ITS_DZBV2
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-04-23 */ // Sources flattened with hardhat v2.9.3 https://hardhat.org // File @openzeppelin/contracts/utils/introspection/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File @openzeppelin/contracts/token/ERC721/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File @openzeppelin/contracts/token/ERC721/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File @openzeppelin/contracts/utils/introspection/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File @openzeppelin/contracts/token/ERC721/[email protected] // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); _afterTokenTransfer(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); _afterTokenTransfer(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 from incorrect owner"); 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); _afterTokenTransfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] // OpenZeppelin Contracts v4.4.1 (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 @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File contracts/SmartContract.sol pragma solidity ^0.8.4; contract ITS_DZBV2 is ERC721Enumerable, Ownable { using Strings for uint256; //*************************************************************************************************** //Pricing //*************************************************************************************************** uint256 public pricePublic = 10 * 10 ** 18; // 10 Matic Default //*************************************************************************************************** //Supply and Reserve //*************************************************************************************************** uint256 public maxSupply = 100000; // set max supply uint256 public reserve = 10; // reserve token amount //*************************************************************************************************** //General //*************************************************************************************************** string public baseURI; string public uriExtension = '.json'; bool public paused = false; //*************************************************************************************************** //Constructor //*************************************************************************************************** constructor(string memory _name, string memory _symbol, string memory _bURI) ERC721(_name, _symbol) { baseURI = _bURI; } //*************************************************************************************************** //Mint tokens for management (pulls a reserve amount) //*************************************************************************************************** function mintReserve() external onlyOwner { uint256 supply = totalSupply(); require(supply + reserve <= maxSupply, 'This transaction would exceed max supply.'); for (uint256 i = 1; i <= reserve; i++) { _safeMint(msg.sender, supply + i); } } //*************************************************************************************************** //Public Mint //*************************************************************************************************** function publicMint(uint256 __count) external payable { uint256 supply = totalSupply(); require(!paused, "The Contract is not active at the moment."); require(__count > 0, 'Count can not be 0'); require(supply + __count <= maxSupply, 'This transaction would exceed max supply.'); require(msg.value >= pricePublic * __count, 'Ether value is too low'); for (uint256 i = 1; i <= __count; i++) { _safeMint(msg.sender, supply + i); } } //*************************************************************************************************** //Gift //*************************************************************************************************** function gift(address _address, uint256 __count) external onlyOwner { uint256 supply = totalSupply(); require(__count > 0, 'Count can not be 0'); require(supply + __count <= maxSupply, 'This transaction would exceed max supply.'); for (uint256 i = 1; i <= __count; i++) { _safeMint(_address, supply + i); } } //*************************************************************************************************** //Change prices of NFT //*************************************************************************************************** function setPublicPrice(uint256 __price) public onlyOwner { pricePublic = __price; } //*************************************************************************************************** //Pause //*************************************************************************************************** function pause(bool _state) public onlyOwner { paused = _state;} //*************************************************************************************************** //returns baseURI of collection //*************************************************************************************************** function _baseURI() internal view virtual override returns (string memory) { return baseURI; } //*************************************************************************************************** // MetaData //*************************************************************************************************** function tokenURI(uint256 tokenId) public view override returns (string memory) { require(_exists(tokenId), 'ERC721Metadata: URI query for nonexistent token'); return bytes(baseURI).length != 0 ? string(abi.encodePacked(_baseURI(), tokenId.toString(), uriExtension)) : ''; } //*************************************************************************************************** //Change baseURI collection //*************************************************************************************************** function setBaseURI(string memory __baseURI) public onlyOwner { baseURI = __baseURI; } //*************************************************************************************************** //Withdraw Funds (Normal to owner) //*************************************************************************************************** function withdraw() external onlyOwner { uint256 balance = address(this).balance; require(balance > 0, "No ether to withdraw"); payable(msg.sender).transfer(balance); } //*************************************************************************************************** //Fallback function for receiving Ether //*************************************************************************************************** receive() external payable { } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_bURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"__count","type":"uint256"}],"name":"gift","outputs":[],"stateMutability":"nonpayable","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":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pricePublic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"__count","type":"uint256"}],"name":"publicMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserve","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":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"__baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__price","type":"uint256"}],"name":"setPublicPrice","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":"uriExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052678ac7230489e80000600b55620186a0600c55600a600d556040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600f908051906020019062000069929190620001fe565b506000601060006101000a81548160ff0219169083151502179055503480156200009257600080fd5b5060405162004956380380620049568339818101604052810190620000b8919062000320565b82828160009080519060200190620000d2929190620001fe565b508060019080519060200190620000eb929190620001fe565b5050506200010e620001026200013060201b60201c565b6200013860201b60201c565b80600e908051906020019062000126929190620001fe565b5050505062000531565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200020c9062000456565b90600052602060002090601f0160209004810192826200023057600085556200027c565b82601f106200024b57805160ff19168380011785556200027c565b828001600101855582156200027c579182015b828111156200027b5782518255916020019190600101906200025e565b5b5090506200028b91906200028f565b5090565b5b80821115620002aa57600081600090555060010162000290565b5090565b6000620002c5620002bf84620003ea565b620003c1565b905082815260208101848484011115620002de57600080fd5b620002eb84828562000420565b509392505050565b600082601f8301126200030557600080fd5b815162000317848260208601620002ae565b91505092915050565b6000806000606084860312156200033657600080fd5b600084015167ffffffffffffffff8111156200035157600080fd5b6200035f86828701620002f3565b935050602084015167ffffffffffffffff8111156200037d57600080fd5b6200038b86828701620002f3565b925050604084015167ffffffffffffffff811115620003a957600080fd5b620003b786828701620002f3565b9150509250925092565b6000620003cd620003e0565b9050620003db82826200048c565b919050565b6000604051905090565b600067ffffffffffffffff821115620004085762000407620004f1565b5b620004138262000520565b9050602081019050919050565b60005b838110156200044057808201518184015260208101905062000423565b8381111562000450576000848401525b50505050565b600060028204905060018216806200046f57607f821691505b60208210811415620004865762000485620004c2565b5b50919050565b620004978262000520565b810181811067ffffffffffffffff82111715620004b957620004b8620004f1565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61441580620005416000396000f3fe6080604052600436106101e75760003560e01c80636352211e11610102578063b88d4fde11610095578063cd3293de11610064578063cd3293de146106c8578063d5abeb01146106f3578063e985e9c51461071e578063f2fde38b1461075b576101ee565b8063b88d4fde14610610578063c627525514610639578063c87b56dd14610662578063cbce4c971461069f576101ee565b8063890ac366116100d1578063890ac3661461057a5780638da5cb5b1461059157806395d89b41146105bc578063a22cb465146105e7576101ee565b80636352211e146104be5780636c0360eb146104fb57806370a0823114610526578063715018a614610563576101ee565b80632db115441161017a5780634f6ccce7116101495780634f6ccce71461040257806352ee46961461043f57806355f804b31461046a5780635c975abb14610493576101ee565b80632db11544146103695780632f745c59146103855780633ccfd60b146103c257806342842e0e146103d9576101ee565b8063095ea7b3116101b6578063095ea7b3146102c1578063102e766d146102ea57806318160ddd1461031557806323b872dd14610340576101ee565b806301ffc9a7146101f357806302329a291461023057806306fdde0314610259578063081812fc14610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021a60048036038101906102159190613020565b610784565b60405161022791906135e8565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612ff7565b6107fe565b005b34801561026557600080fd5b5061026e610897565b60405161027b9190613603565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a691906130b3565b610929565b6040516102b89190613581565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e39190612fbb565b6109ae565b005b3480156102f657600080fd5b506102ff610ac6565b60405161030c9190613905565b60405180910390f35b34801561032157600080fd5b5061032a610acc565b6040516103379190613905565b60405180910390f35b34801561034c57600080fd5b5061036760048036038101906103629190612eb5565b610ad9565b005b610383600480360381019061037e91906130b3565b610b39565b005b34801561039157600080fd5b506103ac60048036038101906103a79190612fbb565b610cb3565b6040516103b99190613905565b60405180910390f35b3480156103ce57600080fd5b506103d7610d58565b005b3480156103e557600080fd5b5061040060048036038101906103fb9190612eb5565b610e66565b005b34801561040e57600080fd5b50610429600480360381019061042491906130b3565b610e86565b6040516104369190613905565b60405180910390f35b34801561044b57600080fd5b50610454610f1d565b6040516104619190613603565b60405180910390f35b34801561047657600080fd5b50610491600480360381019061048c9190613072565b610fab565b005b34801561049f57600080fd5b506104a8611041565b6040516104b591906135e8565b60405180910390f35b3480156104ca57600080fd5b506104e560048036038101906104e091906130b3565b611054565b6040516104f29190613581565b60405180910390f35b34801561050757600080fd5b50610510611106565b60405161051d9190613603565b60405180910390f35b34801561053257600080fd5b5061054d60048036038101906105489190612e50565b611194565b60405161055a9190613905565b60405180910390f35b34801561056f57600080fd5b5061057861124c565b005b34801561058657600080fd5b5061058f6112d4565b005b34801561059d57600080fd5b506105a66113ea565b6040516105b39190613581565b60405180910390f35b3480156105c857600080fd5b506105d1611414565b6040516105de9190613603565b60405180910390f35b3480156105f357600080fd5b5061060e60048036038101906106099190612f7f565b6114a6565b005b34801561061c57600080fd5b5061063760048036038101906106329190612f04565b6114bc565b005b34801561064557600080fd5b50610660600480360381019061065b91906130b3565b61151e565b005b34801561066e57600080fd5b50610689600480360381019061068491906130b3565b6115a4565b6040516106969190613603565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c19190612fbb565b611656565b005b3480156106d457600080fd5b506106dd6117ad565b6040516106ea9190613905565b60405180910390f35b3480156106ff57600080fd5b506107086117b3565b6040516107159190613905565b60405180910390f35b34801561072a57600080fd5b5061074560048036038101906107409190612e79565b6117b9565b60405161075291906135e8565b60405180910390f35b34801561076757600080fd5b50610782600480360381019061077d9190612e50565b61184d565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107f757506107f682611945565b5b9050919050565b610806611a27565b73ffffffffffffffffffffffffffffffffffffffff166108246113ea565b73ffffffffffffffffffffffffffffffffffffffff161461087a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087190613825565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b6060600080546108a690613bca565b80601f01602080910402602001604051908101604052809291908181526020018280546108d290613bca565b801561091f5780601f106108f45761010080835404028352916020019161091f565b820191906000526020600020905b81548152906001019060200180831161090257829003601f168201915b5050505050905090565b600061093482611a2f565b610973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096a90613805565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109b982611054565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2190613865565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a49611a27565b73ffffffffffffffffffffffffffffffffffffffff161480610a785750610a7781610a72611a27565b6117b9565b5b610ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aae90613785565b60405180910390fd5b610ac18383611a9b565b505050565b600b5481565b6000600880549050905090565b610aea610ae4611a27565b82611b54565b610b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b20906138c5565b60405180910390fd5b610b34838383611c32565b505050565b6000610b43610acc565b9050601060009054906101000a900460ff1615610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8c906138a5565b60405180910390fd5b60008211610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf90613725565b60405180910390fd5b600c548282610be791906139ff565b1115610c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1f906136c5565b60405180910390fd5b81600b54610c369190613a86565b341015610c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6f90613885565b60405180910390fd5b6000600190505b828111610cae57610c9b338284610c9691906139ff565b611e99565b8080610ca690613c2d565b915050610c7f565b505050565b6000610cbe83611194565b8210610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690613625565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610d60611a27565b73ffffffffffffffffffffffffffffffffffffffff16610d7e6113ea565b73ffffffffffffffffffffffffffffffffffffffff1614610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90613825565b60405180910390fd5b600047905060008111610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1390613745565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e62573d6000803e3d6000fd5b5050565b610e81838383604051806020016040528060008152506114bc565b505050565b6000610e90610acc565b8210610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec8906138e5565b60405180910390fd5b60088281548110610f0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b600f8054610f2a90613bca565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5690613bca565b8015610fa35780601f10610f7857610100808354040283529160200191610fa3565b820191906000526020600020905b815481529060010190602001808311610f8657829003601f168201915b505050505081565b610fb3611a27565b73ffffffffffffffffffffffffffffffffffffffff16610fd16113ea565b73ffffffffffffffffffffffffffffffffffffffff1614611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101e90613825565b60405180910390fd5b80600e908051906020019061103d929190612c74565b5050565b601060009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f4906137c5565b60405180910390fd5b80915050919050565b600e805461111390613bca565b80601f016020809104026020016040519081016040528092919081815260200182805461113f90613bca565b801561118c5780601f106111615761010080835404028352916020019161118c565b820191906000526020600020905b81548152906001019060200180831161116f57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc906137a5565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611254611a27565b73ffffffffffffffffffffffffffffffffffffffff166112726113ea565b73ffffffffffffffffffffffffffffffffffffffff16146112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf90613825565b60405180910390fd5b6112d26000611eb7565b565b6112dc611a27565b73ffffffffffffffffffffffffffffffffffffffff166112fa6113ea565b73ffffffffffffffffffffffffffffffffffffffff1614611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134790613825565b60405180910390fd5b600061135a610acc565b9050600c54600d548261136d91906139ff565b11156113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a5906136c5565b60405180910390fd5b6000600190505b600d5481116113e6576113d33382846113ce91906139ff565b611e99565b80806113de90613c2d565b9150506113b5565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461142390613bca565b80601f016020809104026020016040519081016040528092919081815260200182805461144f90613bca565b801561149c5780601f106114715761010080835404028352916020019161149c565b820191906000526020600020905b81548152906001019060200180831161147f57829003601f168201915b5050505050905090565b6114b86114b1611a27565b8383611f7d565b5050565b6114cd6114c7611a27565b83611b54565b61150c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611503906138c5565b60405180910390fd5b611518848484846120ea565b50505050565b611526611a27565b73ffffffffffffffffffffffffffffffffffffffff166115446113ea565b73ffffffffffffffffffffffffffffffffffffffff161461159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159190613825565b60405180910390fd5b80600b8190555050565b60606115af82611a2f565b6115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e590613845565b60405180910390fd5b6000600e80546115fd90613bca565b9050141561161a576040518060200160405280600081525061164f565b611622612146565b61162b836121d8565b600f60405160200161163f93929190613550565b6040516020818303038152906040525b9050919050565b61165e611a27565b73ffffffffffffffffffffffffffffffffffffffff1661167c6113ea565b73ffffffffffffffffffffffffffffffffffffffff16146116d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c990613825565b60405180910390fd5b60006116dc610acc565b905060008211611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171890613725565b60405180910390fd5b600c54828261173091906139ff565b1115611771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611768906136c5565b60405180910390fd5b6000600190505b8281116117a75761179484828461178f91906139ff565b611e99565b808061179f90613c2d565b915050611778565b50505050565b600d5481565b600c5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611855611a27565b73ffffffffffffffffffffffffffffffffffffffff166118736113ea565b73ffffffffffffffffffffffffffffffffffffffff16146118c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c090613825565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193090613665565b60405180910390fd5b61194281611eb7565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a1057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611a205750611a1f82612385565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611b0e83611054565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611b5f82611a2f565b611b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9590613765565b60405180910390fd5b6000611ba983611054565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611c1857508373ffffffffffffffffffffffffffffffffffffffff16611c0084610929565b73ffffffffffffffffffffffffffffffffffffffff16145b80611c295750611c2881856117b9565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611c5282611054565b73ffffffffffffffffffffffffffffffffffffffff1614611ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9f90613685565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0f906136e5565b60405180910390fd5b611d238383836123ef565b611d2e600082611a9b565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d7e9190613ae0565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611dd591906139ff565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611e94838383612503565b505050565b611eb3828260405180602001604052806000815250612508565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe390613705565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516120dd91906135e8565b60405180910390a3505050565b6120f5848484611c32565b61210184848484612563565b612140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213790613645565b60405180910390fd5b50505050565b6060600e805461215590613bca565b80601f016020809104026020016040519081016040528092919081815260200182805461218190613bca565b80156121ce5780601f106121a3576101008083540402835291602001916121ce565b820191906000526020600020905b8154815290600101906020018083116121b157829003601f168201915b5050505050905090565b60606000821415612220576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612380565b600082905060005b6000821461225257808061223b90613c2d565b915050600a8261224b9190613a55565b9150612228565b60008167ffffffffffffffff811115612294577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156122c65781602001600182028036833780820191505090505b5090505b60008514612379576001826122df9190613ae0565b9150600a856122ee9190613c76565b60306122fa91906139ff565b60f81b818381518110612336577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856123729190613a55565b94506122ca565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6123fa8383836126fa565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561243d57612438816126ff565b61247c565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461247b5761247a8382612748565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124bf576124ba816128b5565b6124fe565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146124fd576124fc82826129f8565b5b5b505050565b505050565b6125128383612a77565b61251f6000848484612563565b61255e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255590613645565b60405180910390fd5b505050565b60006125848473ffffffffffffffffffffffffffffffffffffffff16612c51565b156126ed578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026125ad611a27565b8786866040518563ffffffff1660e01b81526004016125cf949392919061359c565b602060405180830381600087803b1580156125e957600080fd5b505af192505050801561261a57506040513d601f19601f820116820180604052508101906126179190613049565b60015b61269d573d806000811461264a576040519150601f19603f3d011682016040523d82523d6000602084013e61264f565b606091505b50600081511415612695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268c90613645565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506126f2565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161275584611194565b61275f9190613ae0565b9050600060076000848152602001908152602001600020549050818114612844576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506128c99190613ae0565b905060006009600084815260200190815260200160002054905060006008838154811061291f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060088381548110612967577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806129dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000612a0383611194565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ade906137e5565b60405180910390fd5b612af081611a2f565b15612b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b27906136a5565b60405180910390fd5b612b3c600083836123ef565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b8c91906139ff565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612c4d60008383612503565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054612c8090613bca565b90600052602060002090601f016020900481019282612ca25760008555612ce9565b82601f10612cbb57805160ff1916838001178555612ce9565b82800160010185558215612ce9579182015b82811115612ce8578251825591602001919060010190612ccd565b5b509050612cf69190612cfa565b5090565b5b80821115612d13576000816000905550600101612cfb565b5090565b6000612d2a612d2584613945565b613920565b905082815260208101848484011115612d4257600080fd5b612d4d848285613b88565b509392505050565b6000612d68612d6384613976565b613920565b905082815260208101848484011115612d8057600080fd5b612d8b848285613b88565b509392505050565b600081359050612da281614383565b92915050565b600081359050612db78161439a565b92915050565b600081359050612dcc816143b1565b92915050565b600081519050612de1816143b1565b92915050565b600082601f830112612df857600080fd5b8135612e08848260208601612d17565b91505092915050565b600082601f830112612e2257600080fd5b8135612e32848260208601612d55565b91505092915050565b600081359050612e4a816143c8565b92915050565b600060208284031215612e6257600080fd5b6000612e7084828501612d93565b91505092915050565b60008060408385031215612e8c57600080fd5b6000612e9a85828601612d93565b9250506020612eab85828601612d93565b9150509250929050565b600080600060608486031215612eca57600080fd5b6000612ed886828701612d93565b9350506020612ee986828701612d93565b9250506040612efa86828701612e3b565b9150509250925092565b60008060008060808587031215612f1a57600080fd5b6000612f2887828801612d93565b9450506020612f3987828801612d93565b9350506040612f4a87828801612e3b565b925050606085013567ffffffffffffffff811115612f6757600080fd5b612f7387828801612de7565b91505092959194509250565b60008060408385031215612f9257600080fd5b6000612fa085828601612d93565b9250506020612fb185828601612da8565b9150509250929050565b60008060408385031215612fce57600080fd5b6000612fdc85828601612d93565b9250506020612fed85828601612e3b565b9150509250929050565b60006020828403121561300957600080fd5b600061301784828501612da8565b91505092915050565b60006020828403121561303257600080fd5b600061304084828501612dbd565b91505092915050565b60006020828403121561305b57600080fd5b600061306984828501612dd2565b91505092915050565b60006020828403121561308457600080fd5b600082013567ffffffffffffffff81111561309e57600080fd5b6130aa84828501612e11565b91505092915050565b6000602082840312156130c557600080fd5b60006130d384828501612e3b565b91505092915050565b6130e581613b14565b82525050565b6130f481613b26565b82525050565b6000613105826139bc565b61310f81856139d2565b935061311f818560208601613b97565b61312881613d63565b840191505092915050565b600061313e826139c7565b61314881856139e3565b9350613158818560208601613b97565b61316181613d63565b840191505092915050565b6000613177826139c7565b61318181856139f4565b9350613191818560208601613b97565b80840191505092915050565b600081546131aa81613bca565b6131b481866139f4565b945060018216600081146131cf57600181146131e057613213565b60ff19831686528186019350613213565b6131e9856139a7565b60005b8381101561320b578154818901526001820191506020810190506131ec565b838801955050505b50505092915050565b6000613229602b836139e3565b915061323482613d74565b604082019050919050565b600061324c6032836139e3565b915061325782613dc3565b604082019050919050565b600061326f6026836139e3565b915061327a82613e12565b604082019050919050565b60006132926025836139e3565b915061329d82613e61565b604082019050919050565b60006132b5601c836139e3565b91506132c082613eb0565b602082019050919050565b60006132d86029836139e3565b91506132e382613ed9565b604082019050919050565b60006132fb6024836139e3565b915061330682613f28565b604082019050919050565b600061331e6019836139e3565b915061332982613f77565b602082019050919050565b60006133416012836139e3565b915061334c82613fa0565b602082019050919050565b60006133646014836139e3565b915061336f82613fc9565b602082019050919050565b6000613387602c836139e3565b915061339282613ff2565b604082019050919050565b60006133aa6038836139e3565b91506133b582614041565b604082019050919050565b60006133cd602a836139e3565b91506133d882614090565b604082019050919050565b60006133f06029836139e3565b91506133fb826140df565b604082019050919050565b60006134136020836139e3565b915061341e8261412e565b602082019050919050565b6000613436602c836139e3565b915061344182614157565b604082019050919050565b60006134596020836139e3565b9150613464826141a6565b602082019050919050565b600061347c602f836139e3565b9150613487826141cf565b604082019050919050565b600061349f6021836139e3565b91506134aa8261421e565b604082019050919050565b60006134c26016836139e3565b91506134cd8261426d565b602082019050919050565b60006134e56029836139e3565b91506134f082614296565b604082019050919050565b60006135086031836139e3565b9150613513826142e5565b604082019050919050565b600061352b602c836139e3565b915061353682614334565b604082019050919050565b61354a81613b7e565b82525050565b600061355c828661316c565b9150613568828561316c565b9150613574828461319d565b9150819050949350505050565b600060208201905061359660008301846130dc565b92915050565b60006080820190506135b160008301876130dc565b6135be60208301866130dc565b6135cb6040830185613541565b81810360608301526135dd81846130fa565b905095945050505050565b60006020820190506135fd60008301846130eb565b92915050565b6000602082019050818103600083015261361d8184613133565b905092915050565b6000602082019050818103600083015261363e8161321c565b9050919050565b6000602082019050818103600083015261365e8161323f565b9050919050565b6000602082019050818103600083015261367e81613262565b9050919050565b6000602082019050818103600083015261369e81613285565b9050919050565b600060208201905081810360008301526136be816132a8565b9050919050565b600060208201905081810360008301526136de816132cb565b9050919050565b600060208201905081810360008301526136fe816132ee565b9050919050565b6000602082019050818103600083015261371e81613311565b9050919050565b6000602082019050818103600083015261373e81613334565b9050919050565b6000602082019050818103600083015261375e81613357565b9050919050565b6000602082019050818103600083015261377e8161337a565b9050919050565b6000602082019050818103600083015261379e8161339d565b9050919050565b600060208201905081810360008301526137be816133c0565b9050919050565b600060208201905081810360008301526137de816133e3565b9050919050565b600060208201905081810360008301526137fe81613406565b9050919050565b6000602082019050818103600083015261381e81613429565b9050919050565b6000602082019050818103600083015261383e8161344c565b9050919050565b6000602082019050818103600083015261385e8161346f565b9050919050565b6000602082019050818103600083015261387e81613492565b9050919050565b6000602082019050818103600083015261389e816134b5565b9050919050565b600060208201905081810360008301526138be816134d8565b9050919050565b600060208201905081810360008301526138de816134fb565b9050919050565b600060208201905081810360008301526138fe8161351e565b9050919050565b600060208201905061391a6000830184613541565b92915050565b600061392a61393b565b90506139368282613bfc565b919050565b6000604051905090565b600067ffffffffffffffff8211156139605761395f613d34565b5b61396982613d63565b9050602081019050919050565b600067ffffffffffffffff82111561399157613990613d34565b5b61399a82613d63565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613a0a82613b7e565b9150613a1583613b7e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a4a57613a49613ca7565b5b828201905092915050565b6000613a6082613b7e565b9150613a6b83613b7e565b925082613a7b57613a7a613cd6565b5b828204905092915050565b6000613a9182613b7e565b9150613a9c83613b7e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ad557613ad4613ca7565b5b828202905092915050565b6000613aeb82613b7e565b9150613af683613b7e565b925082821015613b0957613b08613ca7565b5b828203905092915050565b6000613b1f82613b5e565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613bb5578082015181840152602081019050613b9a565b83811115613bc4576000848401525b50505050565b60006002820490506001821680613be257607f821691505b60208210811415613bf657613bf5613d05565b5b50919050565b613c0582613d63565b810181811067ffffffffffffffff82111715613c2457613c23613d34565b5b80604052505050565b6000613c3882613b7e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c6b57613c6a613ca7565b5b600182019050919050565b6000613c8182613b7e565b9150613c8c83613b7e565b925082613c9c57613c9b613cd6565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f54686973207472616e73616374696f6e20776f756c6420657863656564206d6160008201527f7820737570706c792e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f436f756e742063616e206e6f7420626520300000000000000000000000000000600082015250565b7f4e6f20657468657220746f207769746864726177000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f45746865722076616c756520697320746f6f206c6f7700000000000000000000600082015250565b7f54686520436f6e7472616374206973206e6f742061637469766520617420746860008201527f65206d6f6d656e742e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b61438c81613b14565b811461439757600080fd5b50565b6143a381613b26565b81146143ae57600080fd5b50565b6143ba81613b32565b81146143c557600080fd5b50565b6143d181613b7e565b81146143dc57600080fd5b5056fea2646970667358221220e3f1eb4e8c13b032a0d8da51dabd3c9c9fa7276aced2aa6371d8f519ca7b4d7064736f6c63430008040033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000124472656164205a6f6e6520426f747320563200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005445a425632000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c68747470733a2f2f696365747572746c6573747564696f732e6d7970696e6174612e636c6f75642f697066732f516d576365396643507a5554506e554167416876545839553643676135784e50436970626b7862634476466952332f00000000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000124472656164205a6f6e6520426f747320563200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005445a425632000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c68747470733a2f2f696365747572746c6573747564696f732e6d7970696e6174612e636c6f75642f697066732f516d576365396643507a5554506e554167416876545839553643676135784e50436970626b7862634476466952332f00000000
-----Decoded View---------------
Arg [0] : _name (string): Dread Zone Bots V2
Arg [1] : _symbol (string): DZBV2
Arg [2] : _bURI (string): https://iceturtlestudios.mypinata.cloud/ipfs/QmWce9fCPzUTPnUAgAhvTX9U6Cga5xNPCipbkxbcDvFiR3/
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [4] : 4472656164205a6f6e6520426f74732056320000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [6] : 445a425632000000000000000000000000000000000000000000000000000000
Arg [7] : 000000000000000000000000000000000000000000000000000000000000005c
Arg [8] : 68747470733a2f2f696365747572746c6573747564696f732e6d7970696e6174
Arg [9] : 612e636c6f75642f697066732f516d576365396643507a5554506e5541674168
Arg [10] : 76545839553643676135784e50436970626b7862634476466952332f00000000
Deployed ByteCode Sourcemap
45678:6076:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36922:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49693:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22650:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24209:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23732:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45998:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37562:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24959:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47950:543;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37230:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51251:202;;;;;;;;;;;;;:::i;:::-;;25369:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37752:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46684:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50903:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46727:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22344:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46656:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22074:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44789:103;;;;;;;;;;;;;:::i;:::-;;47410:299;;;;;;;;;;;;;:::i;:::-;;44138:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22819:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24502:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25625:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49374:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50349:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48727:399;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46367:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46309:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24728:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45047:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36922:224;37024:4;37063:35;37048:50;;;:11;:50;;;;:90;;;;37102:36;37126:11;37102:23;:36::i;:::-;37048:90;37041:97;;36922:224;;;:::o;49693:64::-;44369:12;:10;:12::i;:::-;44358:23;;:7;:5;:7::i;:::-;:23;;;44350:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49749:6:::1;49740;;:15;;;;;;;;;;;;;;;;;;49693:64:::0;:::o;22650:100::-;22704:13;22737:5;22730:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22650:100;:::o;24209:221::-;24285:7;24313:16;24321:7;24313;:16::i;:::-;24305:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;24398:15;:24;24414:7;24398:24;;;;;;;;;;;;;;;;;;;;;24391:31;;24209:221;;;:::o;23732:411::-;23813:13;23829:23;23844:7;23829:14;:23::i;:::-;23813:39;;23877:5;23871:11;;:2;:11;;;;23863:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;23971:5;23955:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;23980:37;23997:5;24004:12;:10;:12::i;:::-;23980:16;:37::i;:::-;23955:62;23933:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;24114:21;24123:2;24127:7;24114:8;:21::i;:::-;23732:411;;;:::o;45998:42::-;;;;:::o;37562:113::-;37623:7;37650:10;:17;;;;37643:24;;37562:113;:::o;24959:339::-;25154:41;25173:12;:10;:12::i;:::-;25187:7;25154:18;:41::i;:::-;25146:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;25262:28;25272:4;25278:2;25282:7;25262:9;:28::i;:::-;24959:339;;;:::o;47950:543::-;48017:14;48034:13;:11;:13::i;:::-;48017:30;;48067:6;;;;;;;;;;;48066:7;48058:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;48148:1;48138:7;:11;48130:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;48232:9;;48221:7;48212:6;:16;;;;:::i;:::-;:29;;48204:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;48336:7;48322:11;;:21;;;;:::i;:::-;48309:9;:34;;48301:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;48392:9;48404:1;48392:13;;48387:99;48412:7;48407:1;:12;48387:99;;48441:33;48451:10;48472:1;48463:6;:10;;;;:::i;:::-;48441:9;:33::i;:::-;48421:3;;;;;:::i;:::-;;;;48387:99;;;;47950:543;;:::o;37230:256::-;37327:7;37363:23;37380:5;37363:16;:23::i;:::-;37355:5;:31;37347:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;37452:12;:19;37465:5;37452:19;;;;;;;;;;;;;;;:26;37472:5;37452:26;;;;;;;;;;;;37445:33;;37230:256;;;;:::o;51251:202::-;44369:12;:10;:12::i;:::-;44358:23;;:7;:5;:7::i;:::-;:23;;;44350:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51301:15:::1;51319:21;51301:39;;51369:1;51359:7;:11;51351:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;51416:10;51408:28;;:37;51437:7;51408:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;44429:1;51251:202::o:0;25369:185::-;25507:39;25524:4;25530:2;25534:7;25507:39;;;;;;;;;;;;:16;:39::i;:::-;25369:185;;;:::o;37752:233::-;37827:7;37863:30;:28;:30::i;:::-;37855:5;:38;37847:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;37960:10;37971:5;37960:17;;;;;;;;;;;;;;;;;;;;;;;;37953:24;;37752:233;;;:::o;46684:36::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;50903:86::-;44369:12;:10;:12::i;:::-;44358:23;;:7;:5;:7::i;:::-;:23;;;44350:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50977:9:::1;50967:7;:19;;;;;;;;;;;;:::i;:::-;;50903:86:::0;:::o;46727:26::-;;;;;;;;;;;;;:::o;22344:239::-;22416:7;22436:13;22452:7;:16;22460:7;22452:16;;;;;;;;;;;;;;;;;;;;;22436:32;;22504:1;22487:19;;:5;:19;;;;22479:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22570:5;22563:12;;;22344:239;;;:::o;46656:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22074:208::-;22146:7;22191:1;22174:19;;:5;:19;;;;22166:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;22258:9;:16;22268:5;22258:16;;;;;;;;;;;;;;;;22251:23;;22074:208;;;:::o;44789:103::-;44369:12;:10;:12::i;:::-;44358:23;;:7;:5;:7::i;:::-;:23;;;44350:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44854:30:::1;44881:1;44854:18;:30::i;:::-;44789:103::o:0;47410:299::-;44369:12;:10;:12::i;:::-;44358:23;;:7;:5;:7::i;:::-;:23;;;44350:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47465:14:::1;47482:13;:11;:13::i;:::-;47465:30;;47534:9;;47523:7;;47514:6;:16;;;;:::i;:::-;:29;;47506:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;47608:9;47620:1;47608:13;;47603:99;47628:7;;47623:1;:12;47603:99;;47657:33;47667:10;47688:1;47679:6;:10;;;;:::i;:::-;47657:9;:33::i;:::-;47637:3;;;;;:::i;:::-;;;;47603:99;;;;44429:1;47410:299::o:0;44138:87::-;44184:7;44211:6;;;;;;;;;;;44204:13;;44138:87;:::o;22819:104::-;22875:13;22908:7;22901:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22819:104;:::o;24502:155::-;24597:52;24616:12;:10;:12::i;:::-;24630:8;24640;24597:18;:52::i;:::-;24502:155;;:::o;25625:328::-;25800:41;25819:12;:10;:12::i;:::-;25833:7;25800:18;:41::i;:::-;25792:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;25906:39;25920:4;25926:2;25930:7;25939:5;25906:13;:39::i;:::-;25625:328;;;;:::o;49374:84::-;44369:12;:10;:12::i;:::-;44358:23;;:7;:5;:7::i;:::-;:23;;;44350:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49448:7:::1;49434:11;:21;;;;49374:84:::0;:::o;50349:299::-;50414:13;50450:16;50458:7;50450;:16::i;:::-;50442:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;50561:1;50542:7;50536:21;;;;;:::i;:::-;;;:26;;:104;;;;;;;;;;;;;;;;;50589:10;:8;:10::i;:::-;50601:18;:7;:16;:18::i;:::-;50621:12;50572:62;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;50536:104;50529:111;;50349:299;;;:::o;48727:399::-;44369:12;:10;:12::i;:::-;44358:23;;:7;:5;:7::i;:::-;:23;;;44350:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48808:14:::1;48825:13;:11;:13::i;:::-;48808:30;;48867:1;48857:7;:11;48849:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;48951:9;;48940:7;48931:6;:16;;;;:::i;:::-;:29;;48923:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;49027:9;49039:1;49027:13;;49022:97;49047:7;49042:1;:12;49022:97;;49076:31;49086:8;49105:1;49096:6;:10;;;;:::i;:::-;49076:9;:31::i;:::-;49056:3;;;;;:::i;:::-;;;;49022:97;;;;44429:1;48727:399:::0;;:::o;46367:27::-;;;;:::o;46309:33::-;;;;:::o;24728:164::-;24825:4;24849:18;:25;24868:5;24849:25;;;;;;;;;;;;;;;:35;24875:8;24849:35;;;;;;;;;;;;;;;;;;;;;;;;;24842:42;;24728:164;;;;:::o;45047:201::-;44369:12;:10;:12::i;:::-;44358:23;;:7;:5;:7::i;:::-;:23;;;44350:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45156:1:::1;45136:22;;:8;:22;;;;45128:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;45212:28;45231:8;45212:18;:28::i;:::-;45047:201:::0;:::o;21705:305::-;21807:4;21859:25;21844:40;;;:11;:40;;;;:105;;;;21916:33;21901:48;;;:11;:48;;;;21844:105;:158;;;;21966:36;21990:11;21966:23;:36::i;:::-;21844:158;21824:178;;21705:305;;;:::o;16911:98::-;16964:7;16991:10;16984:17;;16911:98;:::o;27463:127::-;27528:4;27580:1;27552:30;;:7;:16;27560:7;27552:16;;;;;;;;;;;;;;;;;;;;;:30;;;;27545:37;;27463:127;;;:::o;31609:174::-;31711:2;31684:15;:24;31700:7;31684:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;31767:7;31763:2;31729:46;;31738:23;31753:7;31738:14;:23::i;:::-;31729:46;;;;;;;;;;;;31609:174;;:::o;27757:348::-;27850:4;27875:16;27883:7;27875;:16::i;:::-;27867:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27951:13;27967:23;27982:7;27967:14;:23::i;:::-;27951:39;;28020:5;28009:16;;:7;:16;;;:51;;;;28053:7;28029:31;;:20;28041:7;28029:11;:20::i;:::-;:31;;;28009:51;:87;;;;28064:32;28081:5;28088:7;28064:16;:32::i;:::-;28009:87;28001:96;;;27757:348;;;;:::o;30866:625::-;31025:4;30998:31;;:23;31013:7;30998:14;:23::i;:::-;:31;;;30990:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;31104:1;31090:16;;:2;:16;;;;31082:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;31160:39;31181:4;31187:2;31191:7;31160:20;:39::i;:::-;31264:29;31281:1;31285:7;31264:8;:29::i;:::-;31325:1;31306:9;:15;31316:4;31306:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;31354:1;31337:9;:13;31347:2;31337:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;31385:2;31366:7;:16;31374:7;31366:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;31424:7;31420:2;31405:27;;31414:4;31405:27;;;;;;;;;;;;31445:38;31465:4;31471:2;31475:7;31445:19;:38::i;:::-;30866:625;;;:::o;28447:110::-;28523:26;28533:2;28537:7;28523:26;;;;;;;;;;;;:9;:26::i;:::-;28447:110;;:::o;45408:191::-;45482:16;45501:6;;;;;;;;;;;45482:25;;45527:8;45518:6;;:17;;;;;;;;;;;;;;;;;;45582:8;45551:40;;45572:8;45551:40;;;;;;;;;;;;45408:191;;:::o;31925:315::-;32080:8;32071:17;;:5;:17;;;;32063:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;32167:8;32129:18;:25;32148:5;32129:25;;;;;;;;;;;;;;;:35;32155:8;32129:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;32213:8;32191:41;;32206:5;32191:41;;;32223:8;32191:41;;;;;;:::i;:::-;;;;;;;;31925:315;;;:::o;26835:::-;26992:28;27002:4;27008:2;27012:7;26992:9;:28::i;:::-;27039:48;27062:4;27068:2;27072:7;27081:5;27039:22;:48::i;:::-;27031:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;26835:315;;;;:::o;50016:94::-;50076:13;50100:7;50093:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50016:94;:::o;17498:723::-;17554:13;17784:1;17775:5;:10;17771:53;;;17802:10;;;;;;;;;;;;;;;;;;;;;17771:53;17834:12;17849:5;17834:20;;17865:14;17890:78;17905:1;17897:4;:9;17890:78;;17923:8;;;;;:::i;:::-;;;;17954:2;17946:10;;;;;:::i;:::-;;;17890:78;;;17978:19;18010:6;18000:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17978:39;;18028:154;18044:1;18035:5;:10;18028:154;;18072:1;18062:11;;;;;:::i;:::-;;;18139:2;18131:5;:10;;;;:::i;:::-;18118:2;:24;;;;:::i;:::-;18105:39;;18088:6;18095;18088:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;18168:2;18159:11;;;;;:::i;:::-;;;18028:154;;;18206:6;18192:21;;;;;17498:723;;;;:::o;20128:157::-;20213:4;20252:25;20237:40;;;:11;:40;;;;20230:47;;20128:157;;;:::o;38598:589::-;38742:45;38769:4;38775:2;38779:7;38742:26;:45::i;:::-;38820:1;38804:18;;:4;:18;;;38800:187;;;38839:40;38871:7;38839:31;:40::i;:::-;38800:187;;;38909:2;38901:10;;:4;:10;;;38897:90;;38928:47;38961:4;38967:7;38928:32;:47::i;:::-;38897:90;38800:187;39015:1;39001:16;;:2;:16;;;38997:183;;;39034:45;39071:7;39034:36;:45::i;:::-;38997:183;;;39107:4;39101:10;;:2;:10;;;39097:83;;39128:40;39156:2;39160:7;39128:27;:40::i;:::-;39097:83;38997:183;38598:589;;;:::o;34687:125::-;;;;:::o;28784:321::-;28914:18;28920:2;28924:7;28914:5;:18::i;:::-;28965:54;28996:1;29000:2;29004:7;29013:5;28965:22;:54::i;:::-;28943:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;28784:321;;;:::o;32805:799::-;32960:4;32981:15;:2;:13;;;:15::i;:::-;32977:620;;;33033:2;33017:36;;;33054:12;:10;:12::i;:::-;33068:4;33074:7;33083:5;33017:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;33013:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33276:1;33259:6;:13;:18;33255:272;;;33302:60;;;;;;;;;;:::i;:::-;;;;;;;;33255:272;33477:6;33471:13;33462:6;33458:2;33454:15;33447:38;33013:529;33150:41;;;33140:51;;;:6;:51;;;;33133:58;;;;;32977:620;33581:4;33574:11;;32805:799;;;;;;;:::o;34176:126::-;;;;:::o;39910:164::-;40014:10;:17;;;;39987:15;:24;40003:7;39987:24;;;;;;;;;;;:44;;;;40042:10;40058:7;40042:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39910:164;:::o;40701:988::-;40967:22;41017:1;40992:22;41009:4;40992:16;:22::i;:::-;:26;;;;:::i;:::-;40967:51;;41029:18;41050:17;:26;41068:7;41050:26;;;;;;;;;;;;41029:47;;41197:14;41183:10;:28;41179:328;;41228:19;41250:12;:18;41263:4;41250:18;;;;;;;;;;;;;;;:34;41269:14;41250:34;;;;;;;;;;;;41228:56;;41334:11;41301:12;:18;41314:4;41301:18;;;;;;;;;;;;;;;:30;41320:10;41301:30;;;;;;;;;;;:44;;;;41451:10;41418:17;:30;41436:11;41418:30;;;;;;;;;;;:43;;;;41179:328;;41603:17;:26;41621:7;41603:26;;;;;;;;;;;41596:33;;;41647:12;:18;41660:4;41647:18;;;;;;;;;;;;;;;:34;41666:14;41647:34;;;;;;;;;;;41640:41;;;40701:988;;;;:::o;41984:1079::-;42237:22;42282:1;42262:10;:17;;;;:21;;;;:::i;:::-;42237:46;;42294:18;42315:15;:24;42331:7;42315:24;;;;;;;;;;;;42294:45;;42666:19;42688:10;42699:14;42688:26;;;;;;;;;;;;;;;;;;;;;;;;42666:48;;42752:11;42727:10;42738;42727:22;;;;;;;;;;;;;;;;;;;;;;;:36;;;;42863:10;42832:15;:28;42848:11;42832:28;;;;;;;;;;;:41;;;;43004:15;:24;43020:7;43004:24;;;;;;;;;;;42997:31;;;43039:10;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41984:1079;;;;:::o;39488:221::-;39573:14;39590:20;39607:2;39590:16;:20::i;:::-;39573:37;;39648:7;39621:12;:16;39634:2;39621:16;;;;;;;;;;;;;;;:24;39638:6;39621:24;;;;;;;;;;;:34;;;;39695:6;39666:17;:26;39684:7;39666:26;;;;;;;;;;;:35;;;;39488:221;;;:::o;29441:439::-;29535:1;29521:16;;:2;:16;;;;29513:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;29594:16;29602:7;29594;:16::i;:::-;29593:17;29585:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;29656:45;29685:1;29689:2;29693:7;29656:20;:45::i;:::-;29731:1;29714:9;:13;29724:2;29714:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;29762:2;29743:7;:16;29751:7;29743:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;29807:7;29803:2;29782:33;;29799:1;29782:33;;;;;;;;;;;;29828:44;29856:1;29860:2;29864:7;29828:19;:44::i;:::-;29441:439;;:::o;8954:326::-;9014:4;9271:1;9249:7;:19;;;:23;9242:30;;8954:326;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:343:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:2;;;290:1;287;280:12;249:2;303:41;337:6;332:3;327;303:41;:::i;:::-;90:260;;;;;;:::o;356:345::-;434:5;459:66;475:49;517:6;475:49;:::i;:::-;459:66;:::i;:::-;450:75;;548:6;541:5;534:21;586:4;579:5;575:16;624:3;615:6;610:3;606:16;603:25;600:2;;;641:1;638;631:12;600:2;654:41;688:6;683:3;678;654:41;:::i;:::-;440:261;;;;;;:::o;707:139::-;753:5;791:6;778:20;769:29;;807:33;834:5;807:33;:::i;:::-;759:87;;;;:::o;852:133::-;895:5;933:6;920:20;911:29;;949:30;973:5;949:30;:::i;:::-;901:84;;;;:::o;991:137::-;1036:5;1074:6;1061:20;1052:29;;1090:32;1116:5;1090:32;:::i;:::-;1042:86;;;;:::o;1134:141::-;1190:5;1221:6;1215:13;1206:22;;1237:32;1263:5;1237:32;:::i;:::-;1196:79;;;;:::o;1294:271::-;1349:5;1398:3;1391:4;1383:6;1379:17;1375:27;1365:2;;1416:1;1413;1406:12;1365:2;1456:6;1443:20;1481:78;1555:3;1547:6;1540:4;1532:6;1528:17;1481:78;:::i;:::-;1472:87;;1355:210;;;;;:::o;1585:273::-;1641:5;1690:3;1683:4;1675:6;1671:17;1667:27;1657:2;;1708:1;1705;1698:12;1657:2;1748:6;1735:20;1773:79;1848:3;1840:6;1833:4;1825:6;1821:17;1773:79;:::i;:::-;1764:88;;1647:211;;;;;:::o;1864:139::-;1910:5;1948:6;1935:20;1926:29;;1964:33;1991:5;1964:33;:::i;:::-;1916:87;;;;:::o;2009:262::-;2068:6;2117:2;2105:9;2096:7;2092:23;2088:32;2085:2;;;2133:1;2130;2123:12;2085:2;2176:1;2201:53;2246:7;2237:6;2226:9;2222:22;2201:53;:::i;:::-;2191:63;;2147:117;2075:196;;;;:::o;2277:407::-;2345:6;2353;2402:2;2390:9;2381:7;2377:23;2373:32;2370:2;;;2418:1;2415;2408:12;2370:2;2461:1;2486:53;2531:7;2522:6;2511:9;2507:22;2486:53;:::i;:::-;2476:63;;2432:117;2588:2;2614:53;2659:7;2650:6;2639:9;2635:22;2614:53;:::i;:::-;2604:63;;2559:118;2360:324;;;;;:::o;2690:552::-;2767:6;2775;2783;2832:2;2820:9;2811:7;2807:23;2803:32;2800:2;;;2848:1;2845;2838:12;2800:2;2891:1;2916:53;2961:7;2952:6;2941:9;2937:22;2916:53;:::i;:::-;2906:63;;2862:117;3018:2;3044:53;3089:7;3080:6;3069:9;3065:22;3044:53;:::i;:::-;3034:63;;2989:118;3146:2;3172:53;3217:7;3208:6;3197:9;3193:22;3172:53;:::i;:::-;3162:63;;3117:118;2790:452;;;;;:::o;3248:809::-;3343:6;3351;3359;3367;3416:3;3404:9;3395:7;3391:23;3387:33;3384:2;;;3433:1;3430;3423:12;3384:2;3476:1;3501:53;3546:7;3537:6;3526:9;3522:22;3501:53;:::i;:::-;3491:63;;3447:117;3603:2;3629:53;3674:7;3665:6;3654:9;3650:22;3629:53;:::i;:::-;3619:63;;3574:118;3731:2;3757:53;3802:7;3793:6;3782:9;3778:22;3757:53;:::i;:::-;3747:63;;3702:118;3887:2;3876:9;3872:18;3859:32;3918:18;3910:6;3907:30;3904:2;;;3950:1;3947;3940:12;3904:2;3978:62;4032:7;4023:6;4012:9;4008:22;3978:62;:::i;:::-;3968:72;;3830:220;3374:683;;;;;;;:::o;4063:401::-;4128:6;4136;4185:2;4173:9;4164:7;4160:23;4156:32;4153:2;;;4201:1;4198;4191:12;4153:2;4244:1;4269:53;4314:7;4305:6;4294:9;4290:22;4269:53;:::i;:::-;4259:63;;4215:117;4371:2;4397:50;4439:7;4430:6;4419:9;4415:22;4397:50;:::i;:::-;4387:60;;4342:115;4143:321;;;;;:::o;4470:407::-;4538:6;4546;4595:2;4583:9;4574:7;4570:23;4566:32;4563:2;;;4611:1;4608;4601:12;4563:2;4654:1;4679:53;4724:7;4715:6;4704:9;4700:22;4679:53;:::i;:::-;4669:63;;4625:117;4781:2;4807:53;4852:7;4843:6;4832:9;4828:22;4807:53;:::i;:::-;4797:63;;4752:118;4553:324;;;;;:::o;4883:256::-;4939:6;4988:2;4976:9;4967:7;4963:23;4959:32;4956:2;;;5004:1;5001;4994:12;4956:2;5047:1;5072:50;5114:7;5105:6;5094:9;5090:22;5072:50;:::i;:::-;5062:60;;5018:114;4946:193;;;;:::o;5145:260::-;5203:6;5252:2;5240:9;5231:7;5227:23;5223:32;5220:2;;;5268:1;5265;5258:12;5220:2;5311:1;5336:52;5380:7;5371:6;5360:9;5356:22;5336:52;:::i;:::-;5326:62;;5282:116;5210:195;;;;:::o;5411:282::-;5480:6;5529:2;5517:9;5508:7;5504:23;5500:32;5497:2;;;5545:1;5542;5535:12;5497:2;5588:1;5613:63;5668:7;5659:6;5648:9;5644:22;5613:63;:::i;:::-;5603:73;;5559:127;5487:206;;;;:::o;5699:375::-;5768:6;5817:2;5805:9;5796:7;5792:23;5788:32;5785:2;;;5833:1;5830;5823:12;5785:2;5904:1;5893:9;5889:17;5876:31;5934:18;5926:6;5923:30;5920:2;;;5966:1;5963;5956:12;5920:2;5994:63;6049:7;6040:6;6029:9;6025:22;5994:63;:::i;:::-;5984:73;;5847:220;5775:299;;;;:::o;6080:262::-;6139:6;6188:2;6176:9;6167:7;6163:23;6159:32;6156:2;;;6204:1;6201;6194:12;6156:2;6247:1;6272:53;6317:7;6308:6;6297:9;6293:22;6272:53;:::i;:::-;6262:63;;6218:117;6146:196;;;;:::o;6348:118::-;6435:24;6453:5;6435:24;:::i;:::-;6430:3;6423:37;6413:53;;:::o;6472:109::-;6553:21;6568:5;6553:21;:::i;:::-;6548:3;6541:34;6531:50;;:::o;6587:360::-;6673:3;6701:38;6733:5;6701:38;:::i;:::-;6755:70;6818:6;6813:3;6755:70;:::i;:::-;6748:77;;6834:52;6879:6;6874:3;6867:4;6860:5;6856:16;6834:52;:::i;:::-;6911:29;6933:6;6911:29;:::i;:::-;6906:3;6902:39;6895:46;;6677:270;;;;;:::o;6953:364::-;7041:3;7069:39;7102:5;7069:39;:::i;:::-;7124:71;7188:6;7183:3;7124:71;:::i;:::-;7117:78;;7204:52;7249:6;7244:3;7237:4;7230:5;7226:16;7204:52;:::i;:::-;7281:29;7303:6;7281:29;:::i;:::-;7276:3;7272:39;7265:46;;7045:272;;;;;:::o;7323:377::-;7429:3;7457:39;7490:5;7457:39;:::i;:::-;7512:89;7594:6;7589:3;7512:89;:::i;:::-;7505:96;;7610:52;7655:6;7650:3;7643:4;7636:5;7632:16;7610:52;:::i;:::-;7687:6;7682:3;7678:16;7671:23;;7433:267;;;;;:::o;7730:845::-;7833:3;7870:5;7864:12;7899:36;7925:9;7899:36;:::i;:::-;7951:89;8033:6;8028:3;7951:89;:::i;:::-;7944:96;;8071:1;8060:9;8056:17;8087:1;8082:137;;;;8233:1;8228:341;;;;8049:520;;8082:137;8166:4;8162:9;8151;8147:25;8142:3;8135:38;8202:6;8197:3;8193:16;8186:23;;8082:137;;8228:341;8295:38;8327:5;8295:38;:::i;:::-;8355:1;8369:154;8383:6;8380:1;8377:13;8369:154;;;8457:7;8451:14;8447:1;8442:3;8438:11;8431:35;8507:1;8498:7;8494:15;8483:26;;8405:4;8402:1;8398:12;8393:17;;8369:154;;;8552:6;8547:3;8543:16;8536:23;;8235:334;;8049:520;;7837:738;;;;;;:::o;8581:366::-;8723:3;8744:67;8808:2;8803:3;8744:67;:::i;:::-;8737:74;;8820:93;8909:3;8820:93;:::i;:::-;8938:2;8933:3;8929:12;8922:19;;8727:220;;;:::o;8953:366::-;9095:3;9116:67;9180:2;9175:3;9116:67;:::i;:::-;9109:74;;9192:93;9281:3;9192:93;:::i;:::-;9310:2;9305:3;9301:12;9294:19;;9099:220;;;:::o;9325:366::-;9467:3;9488:67;9552:2;9547:3;9488:67;:::i;:::-;9481:74;;9564:93;9653:3;9564:93;:::i;:::-;9682:2;9677:3;9673:12;9666:19;;9471:220;;;:::o;9697:366::-;9839:3;9860:67;9924:2;9919:3;9860:67;:::i;:::-;9853:74;;9936:93;10025:3;9936:93;:::i;:::-;10054:2;10049:3;10045:12;10038:19;;9843:220;;;:::o;10069:366::-;10211:3;10232:67;10296:2;10291:3;10232:67;:::i;:::-;10225:74;;10308:93;10397:3;10308:93;:::i;:::-;10426:2;10421:3;10417:12;10410:19;;10215:220;;;:::o;10441:366::-;10583:3;10604:67;10668:2;10663:3;10604:67;:::i;:::-;10597:74;;10680:93;10769:3;10680:93;:::i;:::-;10798:2;10793:3;10789:12;10782:19;;10587:220;;;:::o;10813:366::-;10955:3;10976:67;11040:2;11035:3;10976:67;:::i;:::-;10969:74;;11052:93;11141:3;11052:93;:::i;:::-;11170:2;11165:3;11161:12;11154:19;;10959:220;;;:::o;11185:366::-;11327:3;11348:67;11412:2;11407:3;11348:67;:::i;:::-;11341:74;;11424:93;11513:3;11424:93;:::i;:::-;11542:2;11537:3;11533:12;11526:19;;11331:220;;;:::o;11557:366::-;11699:3;11720:67;11784:2;11779:3;11720:67;:::i;:::-;11713:74;;11796:93;11885:3;11796:93;:::i;:::-;11914:2;11909:3;11905:12;11898:19;;11703:220;;;:::o;11929:366::-;12071:3;12092:67;12156:2;12151:3;12092:67;:::i;:::-;12085:74;;12168:93;12257:3;12168:93;:::i;:::-;12286:2;12281:3;12277:12;12270:19;;12075:220;;;:::o;12301:366::-;12443:3;12464:67;12528:2;12523:3;12464:67;:::i;:::-;12457:74;;12540:93;12629:3;12540:93;:::i;:::-;12658:2;12653:3;12649:12;12642:19;;12447:220;;;:::o;12673:366::-;12815:3;12836:67;12900:2;12895:3;12836:67;:::i;:::-;12829:74;;12912:93;13001:3;12912:93;:::i;:::-;13030:2;13025:3;13021:12;13014:19;;12819:220;;;:::o;13045:366::-;13187:3;13208:67;13272:2;13267:3;13208:67;:::i;:::-;13201:74;;13284:93;13373:3;13284:93;:::i;:::-;13402:2;13397:3;13393:12;13386:19;;13191:220;;;:::o;13417:366::-;13559:3;13580:67;13644:2;13639:3;13580:67;:::i;:::-;13573:74;;13656:93;13745:3;13656:93;:::i;:::-;13774:2;13769:3;13765:12;13758:19;;13563:220;;;:::o;13789:366::-;13931:3;13952:67;14016:2;14011:3;13952:67;:::i;:::-;13945:74;;14028:93;14117:3;14028:93;:::i;:::-;14146:2;14141:3;14137:12;14130:19;;13935:220;;;:::o;14161:366::-;14303:3;14324:67;14388:2;14383:3;14324:67;:::i;:::-;14317:74;;14400:93;14489:3;14400:93;:::i;:::-;14518:2;14513:3;14509:12;14502:19;;14307:220;;;:::o;14533:366::-;14675:3;14696:67;14760:2;14755:3;14696:67;:::i;:::-;14689:74;;14772:93;14861:3;14772:93;:::i;:::-;14890:2;14885:3;14881:12;14874:19;;14679:220;;;:::o;14905:366::-;15047:3;15068:67;15132:2;15127:3;15068:67;:::i;:::-;15061:74;;15144:93;15233:3;15144:93;:::i;:::-;15262:2;15257:3;15253:12;15246:19;;15051:220;;;:::o;15277:366::-;15419:3;15440:67;15504:2;15499:3;15440:67;:::i;:::-;15433:74;;15516:93;15605:3;15516:93;:::i;:::-;15634:2;15629:3;15625:12;15618:19;;15423:220;;;:::o;15649:366::-;15791:3;15812:67;15876:2;15871:3;15812:67;:::i;:::-;15805:74;;15888:93;15977:3;15888:93;:::i;:::-;16006:2;16001:3;15997:12;15990:19;;15795:220;;;:::o;16021:366::-;16163:3;16184:67;16248:2;16243:3;16184:67;:::i;:::-;16177:74;;16260:93;16349:3;16260:93;:::i;:::-;16378:2;16373:3;16369:12;16362:19;;16167:220;;;:::o;16393:366::-;16535:3;16556:67;16620:2;16615:3;16556:67;:::i;:::-;16549:74;;16632:93;16721:3;16632:93;:::i;:::-;16750:2;16745:3;16741:12;16734:19;;16539:220;;;:::o;16765:366::-;16907:3;16928:67;16992:2;16987:3;16928:67;:::i;:::-;16921:74;;17004:93;17093:3;17004:93;:::i;:::-;17122:2;17117:3;17113:12;17106:19;;16911:220;;;:::o;17137:118::-;17224:24;17242:5;17224:24;:::i;:::-;17219:3;17212:37;17202:53;;:::o;17261:589::-;17486:3;17508:95;17599:3;17590:6;17508:95;:::i;:::-;17501:102;;17620:95;17711:3;17702:6;17620:95;:::i;:::-;17613:102;;17732:92;17820:3;17811:6;17732:92;:::i;:::-;17725:99;;17841:3;17834:10;;17490:360;;;;;;:::o;17856:222::-;17949:4;17987:2;17976:9;17972:18;17964:26;;18000:71;18068:1;18057:9;18053:17;18044:6;18000:71;:::i;:::-;17954:124;;;;:::o;18084:640::-;18279:4;18317:3;18306:9;18302:19;18294:27;;18331:71;18399:1;18388:9;18384:17;18375:6;18331:71;:::i;:::-;18412:72;18480:2;18469:9;18465:18;18456:6;18412:72;:::i;:::-;18494;18562:2;18551:9;18547:18;18538:6;18494:72;:::i;:::-;18613:9;18607:4;18603:20;18598:2;18587:9;18583:18;18576:48;18641:76;18712:4;18703:6;18641:76;:::i;:::-;18633:84;;18284:440;;;;;;;:::o;18730:210::-;18817:4;18855:2;18844:9;18840:18;18832:26;;18868:65;18930:1;18919:9;18915:17;18906:6;18868:65;:::i;:::-;18822:118;;;;:::o;18946:313::-;19059:4;19097:2;19086:9;19082:18;19074:26;;19146:9;19140:4;19136:20;19132:1;19121:9;19117:17;19110:47;19174:78;19247:4;19238:6;19174:78;:::i;:::-;19166:86;;19064:195;;;;:::o;19265:419::-;19431:4;19469:2;19458:9;19454:18;19446:26;;19518:9;19512:4;19508:20;19504:1;19493:9;19489:17;19482:47;19546:131;19672:4;19546:131;:::i;:::-;19538:139;;19436:248;;;:::o;19690:419::-;19856:4;19894:2;19883:9;19879:18;19871:26;;19943:9;19937:4;19933:20;19929:1;19918:9;19914:17;19907:47;19971:131;20097:4;19971:131;:::i;:::-;19963:139;;19861:248;;;:::o;20115:419::-;20281:4;20319:2;20308:9;20304:18;20296:26;;20368:9;20362:4;20358:20;20354:1;20343:9;20339:17;20332:47;20396:131;20522:4;20396:131;:::i;:::-;20388:139;;20286:248;;;:::o;20540:419::-;20706:4;20744:2;20733:9;20729:18;20721:26;;20793:9;20787:4;20783:20;20779:1;20768:9;20764:17;20757:47;20821:131;20947:4;20821:131;:::i;:::-;20813:139;;20711:248;;;:::o;20965:419::-;21131:4;21169:2;21158:9;21154:18;21146:26;;21218:9;21212:4;21208:20;21204:1;21193:9;21189:17;21182:47;21246:131;21372:4;21246:131;:::i;:::-;21238:139;;21136:248;;;:::o;21390:419::-;21556:4;21594:2;21583:9;21579:18;21571:26;;21643:9;21637:4;21633:20;21629:1;21618:9;21614:17;21607:47;21671:131;21797:4;21671:131;:::i;:::-;21663:139;;21561:248;;;:::o;21815:419::-;21981:4;22019:2;22008:9;22004:18;21996:26;;22068:9;22062:4;22058:20;22054:1;22043:9;22039:17;22032:47;22096:131;22222:4;22096:131;:::i;:::-;22088:139;;21986:248;;;:::o;22240:419::-;22406:4;22444:2;22433:9;22429:18;22421:26;;22493:9;22487:4;22483:20;22479:1;22468:9;22464:17;22457:47;22521:131;22647:4;22521:131;:::i;:::-;22513:139;;22411:248;;;:::o;22665:419::-;22831:4;22869:2;22858:9;22854:18;22846:26;;22918:9;22912:4;22908:20;22904:1;22893:9;22889:17;22882:47;22946:131;23072:4;22946:131;:::i;:::-;22938:139;;22836:248;;;:::o;23090:419::-;23256:4;23294:2;23283:9;23279:18;23271:26;;23343:9;23337:4;23333:20;23329:1;23318:9;23314:17;23307:47;23371:131;23497:4;23371:131;:::i;:::-;23363:139;;23261:248;;;:::o;23515:419::-;23681:4;23719:2;23708:9;23704:18;23696:26;;23768:9;23762:4;23758:20;23754:1;23743:9;23739:17;23732:47;23796:131;23922:4;23796:131;:::i;:::-;23788:139;;23686:248;;;:::o;23940:419::-;24106:4;24144:2;24133:9;24129:18;24121:26;;24193:9;24187:4;24183:20;24179:1;24168:9;24164:17;24157:47;24221:131;24347:4;24221:131;:::i;:::-;24213:139;;24111:248;;;:::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;;24536:248;;;:::o;24790:419::-;24956:4;24994:2;24983:9;24979:18;24971:26;;25043:9;25037:4;25033:20;25029:1;25018:9;25014:17;25007:47;25071:131;25197:4;25071:131;:::i;:::-;25063:139;;24961:248;;;:::o;25215:419::-;25381:4;25419:2;25408:9;25404:18;25396:26;;25468:9;25462:4;25458:20;25454:1;25443:9;25439:17;25432:47;25496:131;25622:4;25496:131;:::i;:::-;25488:139;;25386:248;;;:::o;25640:419::-;25806:4;25844:2;25833:9;25829:18;25821:26;;25893:9;25887:4;25883:20;25879:1;25868:9;25864:17;25857:47;25921:131;26047:4;25921:131;:::i;:::-;25913:139;;25811:248;;;:::o;26065:419::-;26231:4;26269:2;26258:9;26254:18;26246:26;;26318:9;26312:4;26308:20;26304:1;26293:9;26289:17;26282:47;26346:131;26472:4;26346:131;:::i;:::-;26338:139;;26236:248;;;:::o;26490:419::-;26656:4;26694:2;26683:9;26679:18;26671:26;;26743:9;26737:4;26733:20;26729:1;26718:9;26714:17;26707:47;26771:131;26897:4;26771:131;:::i;:::-;26763:139;;26661:248;;;:::o;26915:419::-;27081:4;27119:2;27108:9;27104:18;27096:26;;27168:9;27162:4;27158:20;27154:1;27143:9;27139:17;27132:47;27196:131;27322:4;27196:131;:::i;:::-;27188:139;;27086:248;;;:::o;27340:419::-;27506:4;27544:2;27533:9;27529:18;27521:26;;27593:9;27587:4;27583:20;27579:1;27568:9;27564:17;27557:47;27621:131;27747:4;27621:131;:::i;:::-;27613:139;;27511:248;;;:::o;27765:419::-;27931:4;27969:2;27958:9;27954:18;27946:26;;28018:9;28012:4;28008:20;28004:1;27993:9;27989:17;27982:47;28046:131;28172:4;28046:131;:::i;:::-;28038:139;;27936:248;;;:::o;28190:419::-;28356:4;28394:2;28383:9;28379:18;28371:26;;28443:9;28437:4;28433:20;28429:1;28418:9;28414:17;28407:47;28471:131;28597:4;28471:131;:::i;:::-;28463:139;;28361:248;;;:::o;28615:419::-;28781:4;28819:2;28808:9;28804:18;28796:26;;28868:9;28862:4;28858:20;28854:1;28843:9;28839:17;28832:47;28896:131;29022:4;28896:131;:::i;:::-;28888:139;;28786:248;;;:::o;29040:222::-;29133:4;29171:2;29160:9;29156:18;29148:26;;29184:71;29252:1;29241:9;29237:17;29228:6;29184:71;:::i;:::-;29138:124;;;;:::o;29268:129::-;29302:6;29329:20;;:::i;:::-;29319:30;;29358:33;29386:4;29378:6;29358:33;:::i;:::-;29309:88;;;:::o;29403:75::-;29436:6;29469:2;29463:9;29453:19;;29443:35;:::o;29484:307::-;29545:4;29635:18;29627:6;29624:30;29621:2;;;29657:18;;:::i;:::-;29621:2;29695:29;29717:6;29695:29;:::i;:::-;29687:37;;29779:4;29773;29769:15;29761:23;;29550:241;;;:::o;29797:308::-;29859:4;29949:18;29941:6;29938:30;29935:2;;;29971:18;;:::i;:::-;29935:2;30009:29;30031:6;30009:29;:::i;:::-;30001:37;;30093:4;30087;30083:15;30075:23;;29864:241;;;:::o;30111:141::-;30160:4;30183:3;30175:11;;30206:3;30203:1;30196:14;30240:4;30237:1;30227:18;30219:26;;30165:87;;;:::o;30258:98::-;30309:6;30343:5;30337:12;30327:22;;30316:40;;;:::o;30362:99::-;30414:6;30448:5;30442:12;30432:22;;30421:40;;;:::o;30467:168::-;30550:11;30584:6;30579:3;30572:19;30624:4;30619:3;30615:14;30600:29;;30562:73;;;;:::o;30641:169::-;30725:11;30759:6;30754:3;30747:19;30799:4;30794:3;30790:14;30775:29;;30737:73;;;;:::o;30816:148::-;30918:11;30955:3;30940:18;;30930:34;;;;:::o;30970:305::-;31010:3;31029:20;31047:1;31029:20;:::i;:::-;31024:25;;31063:20;31081:1;31063:20;:::i;:::-;31058:25;;31217:1;31149:66;31145:74;31142:1;31139:81;31136:2;;;31223:18;;:::i;:::-;31136:2;31267:1;31264;31260:9;31253:16;;31014:261;;;;:::o;31281:185::-;31321:1;31338:20;31356:1;31338:20;:::i;:::-;31333:25;;31372:20;31390:1;31372:20;:::i;:::-;31367:25;;31411:1;31401:2;;31416:18;;:::i;:::-;31401:2;31458:1;31455;31451:9;31446:14;;31323:143;;;;:::o;31472:348::-;31512:7;31535:20;31553:1;31535:20;:::i;:::-;31530:25;;31569:20;31587:1;31569:20;:::i;:::-;31564:25;;31757:1;31689:66;31685:74;31682:1;31679:81;31674:1;31667:9;31660:17;31656:105;31653:2;;;31764:18;;:::i;:::-;31653:2;31812:1;31809;31805:9;31794:20;;31520:300;;;;:::o;31826:191::-;31866:4;31886:20;31904:1;31886:20;:::i;:::-;31881:25;;31920:20;31938:1;31920:20;:::i;:::-;31915:25;;31959:1;31956;31953:8;31950:2;;;31964:18;;:::i;:::-;31950:2;32009:1;32006;32002:9;31994:17;;31871:146;;;;:::o;32023:96::-;32060:7;32089:24;32107:5;32089:24;:::i;:::-;32078:35;;32068:51;;;:::o;32125:90::-;32159:7;32202:5;32195:13;32188:21;32177:32;;32167:48;;;:::o;32221:149::-;32257:7;32297:66;32290:5;32286:78;32275:89;;32265:105;;;:::o;32376:126::-;32413:7;32453:42;32446:5;32442:54;32431:65;;32421:81;;;:::o;32508:77::-;32545:7;32574:5;32563:16;;32553:32;;;:::o;32591:154::-;32675:6;32670:3;32665;32652:30;32737:1;32728:6;32723:3;32719:16;32712:27;32642:103;;;:::o;32751:307::-;32819:1;32829:113;32843:6;32840:1;32837:13;32829:113;;;32928:1;32923:3;32919:11;32913:18;32909:1;32904:3;32900:11;32893:39;32865:2;32862:1;32858:10;32853:15;;32829:113;;;32960:6;32957:1;32954:13;32951:2;;;33040:1;33031:6;33026:3;33022:16;33015:27;32951:2;32800:258;;;;:::o;33064:320::-;33108:6;33145:1;33139:4;33135:12;33125:22;;33192:1;33186:4;33182:12;33213:18;33203:2;;33269:4;33261:6;33257:17;33247:27;;33203:2;33331;33323:6;33320:14;33300:18;33297:38;33294:2;;;33350:18;;:::i;:::-;33294:2;33115:269;;;;:::o;33390:281::-;33473:27;33495:4;33473:27;:::i;:::-;33465:6;33461:40;33603:6;33591:10;33588:22;33567:18;33555:10;33552:34;33549:62;33546:2;;;33614:18;;:::i;:::-;33546:2;33654:10;33650:2;33643:22;33433:238;;;:::o;33677:233::-;33716:3;33739:24;33757:5;33739:24;:::i;:::-;33730:33;;33785:66;33778:5;33775:77;33772:2;;;33855:18;;:::i;:::-;33772:2;33902:1;33895:5;33891:13;33884:20;;33720:190;;;:::o;33916:176::-;33948:1;33965:20;33983:1;33965:20;:::i;:::-;33960:25;;33999:20;34017:1;33999:20;:::i;:::-;33994:25;;34038:1;34028:2;;34043:18;;:::i;:::-;34028:2;34084:1;34081;34077:9;34072:14;;33950:142;;;;:::o;34098:180::-;34146:77;34143:1;34136:88;34243:4;34240:1;34233:15;34267:4;34264:1;34257:15;34284:180;34332:77;34329:1;34322:88;34429:4;34426:1;34419:15;34453:4;34450:1;34443:15;34470:180;34518:77;34515:1;34508:88;34615:4;34612:1;34605:15;34639:4;34636:1;34629:15;34656:180;34704:77;34701:1;34694:88;34801:4;34798:1;34791:15;34825:4;34822:1;34815:15;34842:102;34883:6;34934:2;34930:7;34925:2;34918:5;34914:14;34910:28;34900:38;;34890:54;;;:::o;34950:230::-;35090:34;35086:1;35078:6;35074:14;35067:58;35159:13;35154:2;35146:6;35142:15;35135:38;35056:124;:::o;35186:237::-;35326:34;35322:1;35314:6;35310:14;35303:58;35395:20;35390:2;35382:6;35378:15;35371:45;35292:131;:::o;35429:225::-;35569:34;35565:1;35557:6;35553:14;35546:58;35638:8;35633:2;35625:6;35621:15;35614:33;35535:119;:::o;35660:224::-;35800:34;35796:1;35788:6;35784:14;35777:58;35869:7;35864:2;35856:6;35852:15;35845:32;35766:118;:::o;35890:178::-;36030:30;36026:1;36018:6;36014:14;36007:54;35996:72;:::o;36074:228::-;36214:34;36210:1;36202:6;36198:14;36191:58;36283:11;36278:2;36270:6;36266:15;36259:36;36180:122;:::o;36308:223::-;36448:34;36444:1;36436:6;36432:14;36425:58;36517:6;36512:2;36504:6;36500:15;36493:31;36414:117;:::o;36537:175::-;36677:27;36673:1;36665:6;36661:14;36654:51;36643:69;:::o;36718:168::-;36858:20;36854:1;36846:6;36842:14;36835:44;36824:62;:::o;36892:170::-;37032:22;37028:1;37020:6;37016:14;37009:46;36998:64;:::o;37068:231::-;37208:34;37204:1;37196:6;37192:14;37185:58;37277:14;37272:2;37264:6;37260:15;37253:39;37174:125;:::o;37305:243::-;37445:34;37441:1;37433:6;37429:14;37422:58;37514:26;37509:2;37501:6;37497:15;37490:51;37411:137;:::o;37554:229::-;37694:34;37690:1;37682:6;37678:14;37671:58;37763:12;37758:2;37750:6;37746:15;37739:37;37660:123;:::o;37789:228::-;37929:34;37925:1;37917:6;37913:14;37906:58;37998:11;37993:2;37985:6;37981:15;37974:36;37895:122;:::o;38023:182::-;38163:34;38159:1;38151:6;38147:14;38140:58;38129:76;:::o;38211:231::-;38351:34;38347:1;38339:6;38335:14;38328:58;38420:14;38415:2;38407:6;38403:15;38396:39;38317:125;:::o;38448:182::-;38588:34;38584:1;38576:6;38572:14;38565:58;38554:76;:::o;38636:234::-;38776:34;38772:1;38764:6;38760:14;38753:58;38845:17;38840:2;38832:6;38828:15;38821:42;38742:128;:::o;38876:220::-;39016:34;39012:1;39004:6;39000:14;38993:58;39085:3;39080:2;39072:6;39068:15;39061:28;38982:114;:::o;39102:172::-;39242:24;39238:1;39230:6;39226:14;39219:48;39208:66;:::o;39280:228::-;39420:34;39416:1;39408:6;39404:14;39397:58;39489:11;39484:2;39476:6;39472:15;39465:36;39386:122;:::o;39514:236::-;39654:34;39650:1;39642:6;39638:14;39631:58;39723:19;39718:2;39710:6;39706:15;39699:44;39620:130;:::o;39756:231::-;39896:34;39892:1;39884:6;39880:14;39873:58;39965:14;39960:2;39952:6;39948:15;39941:39;39862:125;:::o;39993:122::-;40066:24;40084:5;40066:24;:::i;:::-;40059:5;40056:35;40046:2;;40105:1;40102;40095:12;40046:2;40036:79;:::o;40121:116::-;40191:21;40206:5;40191:21;:::i;:::-;40184:5;40181:32;40171:2;;40227:1;40224;40217:12;40171:2;40161:76;:::o;40243:120::-;40315:23;40332:5;40315:23;:::i;:::-;40308:5;40305:34;40295:2;;40353:1;40350;40343:12;40295:2;40285:78;:::o;40369:122::-;40442:24;40460:5;40442:24;:::i;:::-;40435:5;40432:35;40422:2;;40481:1;40478;40471:12;40422:2;40412:79;:::o
Swarm Source
ipfs://e3f1eb4e8c13b032a0d8da51dabd3c9c9fa7276aced2aa6371d8f519ca7b4d70
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.