Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
4.70000000000000008 ETH
Eth Value
$15,356.21 (@ $3,267.28/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 85 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 15205394 | 734 days ago | IN | 0 ETH | 0.00037673 | ||||
Set Approval For... | 14769350 | 805 days ago | IN | 0 ETH | 0.00232054 | ||||
Buy | 14725228 | 812 days ago | IN | 0.1 ETH | 0.00366725 | ||||
Set Approval For... | 14649301 | 824 days ago | IN | 0 ETH | 0.00271821 | ||||
Transfer From | 14534055 | 842 days ago | IN | 0 ETH | 0.00358762 | ||||
Set Approval For... | 14532687 | 843 days ago | IN | 0 ETH | 0.00341018 | ||||
Set Approval For... | 14521665 | 844 days ago | IN | 0 ETH | 0.00323241 | ||||
Set Approval For... | 14501897 | 847 days ago | IN | 0 ETH | 0.00414349 | ||||
Set Approval For... | 14498373 | 848 days ago | IN | 0 ETH | 0.00204133 | ||||
Set Approval For... | 14498336 | 848 days ago | IN | 0 ETH | 0.00159388 | ||||
Buy | 14495566 | 848 days ago | IN | 0.2 ETH | 0.00611198 | ||||
Set Approval For... | 14488631 | 850 days ago | IN | 0 ETH | 0.00427655 | ||||
Giveaway | 14483105 | 850 days ago | IN | 0 ETH | 0.00635979 | ||||
Set Approval For... | 14482794 | 850 days ago | IN | 0 ETH | 0.00236824 | ||||
Buy | 14482772 | 850 days ago | IN | 0.2 ETH | 0.00486142 | ||||
Set Approval For... | 14482695 | 850 days ago | IN | 0 ETH | 0.0013155 | ||||
Set Approval For... | 14482695 | 850 days ago | IN | 0 ETH | 0.00229061 | ||||
Set Approval For... | 14481032 | 851 days ago | IN | 0 ETH | 0.00096061 | ||||
Set Approval For... | 14478255 | 851 days ago | IN | 0 ETH | 0.00206872 | ||||
Set Approval For... | 14477769 | 851 days ago | IN | 0 ETH | 0.00230553 | ||||
Set Approval For... | 14477518 | 851 days ago | IN | 0 ETH | 0.00273268 | ||||
Set Approval For... | 14476814 | 851 days ago | IN | 0 ETH | 0.00321641 | ||||
Buy | 14476712 | 851 days ago | IN | 0.3 ETH | 0.01187789 | ||||
Set Approval For... | 14476489 | 851 days ago | IN | 0 ETH | 0.00460717 | ||||
Set Approval For... | 14476379 | 851 days ago | IN | 0 ETH | 0.00435477 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
HalfShekel
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-08 */ // SPDX-License-Identifier: MIT /** * @title HalfShekel * @author Shahid Ahmed * @dev Used for Ethereum projects compatible with OpenSea */ pragma solidity >=0.8.4; 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] 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] 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] 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] pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File @openzeppelin/contracts/utils/[email protected] 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] 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] 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] 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 { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] 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 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] 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/utils/[email protected] pragma solidity ^0.8.0; /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } // File @openzeppelin/contracts/access/[email protected] 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() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File @openzeppelin/contracts/utils/math/[email protected] pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } contract HalfShekel is ERC721, Ownable { using Strings for uint256; bool public revealed = false; bool public sale = false; bool public isWhitelistedActive = false; uint16 public nonce = 0; uint public price = 100000000000000000; uint16 public earlySupply = 1000; uint16 public totalSupply = 1000; uint8 public maxTx = 10; uint8 public maxTxWL = 5; string private baseURI = ''; string public notRevealedUri = ''; uint256 public nftPerAddressLimit = 4; uint16 public minimumbuy = 1; mapping (address => uint256) public addressMintedBalance; address[] public whitelistedAddresses; constructor( string memory _name, string memory _ticker ) ERC721(_name, _ticker) { } function reveal() public onlyOwner { revealed = !revealed; } function setBaseURI(string memory baseURI_) public onlyOwner { baseURI = baseURI_; } function setUnrevealedURI(string memory baseURI_) public onlyOwner { notRevealedUri = baseURI_; } function _baseURI() internal view virtual override returns (string memory) { if(revealed == false) { return notRevealedUri; }else{ return baseURI; } } function setnftPerAddressLimit(uint _newValue) external onlyOwner { nftPerAddressLimit = _newValue; } function setPrice(uint _newPrice) external onlyOwner { price = _newPrice; } function setEarlySupply(uint16 _newSupply) external onlyOwner { earlySupply = _newSupply; } function setTotalSupply(uint16 _newSupply) external onlyOwner { totalSupply = _newSupply; earlySupply = _newSupply; } function setWhitelisted(address[] calldata _walletAddresses) public onlyOwner{ whitelistedAddresses = _walletAddresses; } function isWhitelisted(address _user) public view returns (bool) { for (uint i = 0; i < whitelistedAddresses.length; i++) { if (whitelistedAddresses[i] == _user) { return true; } } return false; } function setSale() public onlyOwner { sale = !sale; } function setWhitelistSale() public onlyOwner { isWhitelistedActive = !isWhitelistedActive; } function setMaxTx(uint8 _newMax) external onlyOwner { maxTx = _newMax; } function setMaxTxWL(uint8 _newMax) external onlyOwner { maxTxWL = _newMax; } function setMinimumBuy(uint8 _minimumbuy) external onlyOwner { minimumbuy = _minimumbuy; } function whitelistMint(uint8 _qty) external payable { require(isWhitelistedActive, "SALE_NOT_ACTIVE_YET"); require(isWhitelisted(msg.sender), "USER_IS_NOT_WHITELISTED"); require(_qty >= minimumbuy, "CANT_BUY_LESS_THAN_ALLOWED"); require(_qty <= maxTxWL || _qty < 1, "CANT_BUY_MORE_THAN_ALLOWED"); require(addressMintedBalance[msg.sender] + _qty <= nftPerAddressLimit, "WHITELIST_LIMIT_EXCEED"); require(uint16(_qty) + nonce - 1 <= totalSupply, "NO_MORE_SUPPLY"); require(msg.value >= price * _qty, "INVALID_PRICE"); mintNFTs(msg.sender, _qty); addressMintedBalance[msg.sender]+=_qty; } function buy(uint8 _qty) external payable { require(sale, "SALE_NOT_ACTIVE_YET"); require(_qty >= minimumbuy, "CANT_BUY_LESS_THAN_ALLOWED"); require(_qty <= maxTx || _qty < 1, "CANT_BUY_MORE_THAN_ALLOWED"); require(uint16(_qty) + nonce - 1 <= earlySupply, "NO_MORE_SUPPLY"); require(uint16(_qty) + nonce - 1 <= totalSupply, "NO_MORE_SUPPLY"); require(msg.value >= price * _qty, "INVALID_PRICE"); mintNFTs(msg.sender, _qty); addressMintedBalance[msg.sender]+=_qty; } function giveaway(address _to, uint8 _qty) external onlyOwner { require(uint16(_qty) + nonce - 1 <= totalSupply, "NO_MORE_SUPPLY"); mintNFTs(_to, _qty); addressMintedBalance[_to]+=_qty; } function mintNFTs(address _to, uint8 _qty) private { for (uint8 i = 0; i < _qty; i++) { uint16 _tokenId = nonce; _safeMint(_to, _tokenId); nonce++; } } function withdraw() external onlyOwner { payable(msg.sender).transfer(address(this).balance); } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); if(revealed == false) { return notRevealedUri; }else{ return bytes(baseURI).length > 0 ? string(abi.encodePacked(_baseURI(), tokenId.toString(), ".json")) : ""; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_ticker","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":"","type":"address"}],"name":"addressMintedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_qty","type":"uint8"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"earlySupply","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"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":"_to","type":"address"},{"internalType":"uint8","name":"_qty","type":"uint8"}],"name":"giveaway","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":[{"internalType":"address","name":"_user","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isWhitelistedActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxWL","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumbuy","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftPerAddressLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonce","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"sale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"uint16","name":"_newSupply","type":"uint16"}],"name":"setEarlySupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_newMax","type":"uint8"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_newMax","type":"uint8"}],"name":"setMaxTxWL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_minimumbuy","type":"uint8"}],"name":"setMinimumBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_newSupply","type":"uint16"}],"name":"setTotalSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setUnrevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setWhitelistSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_walletAddresses","type":"address[]"}],"name":"setWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newValue","type":"uint256"}],"name":"setnftPerAddressLimit","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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"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":[{"internalType":"uint8","name":"_qty","type":"uint8"}],"name":"whitelistMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistedAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600660146101000a81548160ff0219169083151502179055506000600660156101000a81548160ff0219169083151502179055506000600660166101000a81548160ff0219169083151502179055506000600660176101000a81548161ffff021916908361ffff16021790555067016345785d8a00006007556103e8600860006101000a81548161ffff021916908361ffff1602179055506103e8600860026101000a81548161ffff021916908361ffff160217905550600a600860046101000a81548160ff021916908360ff1602179055506005600860056101000a81548160ff021916908360ff16021790555060405180602001604052806000815250600990805190602001906200011c929190620002c7565b5060405180602001604052806000815250600a908051906020019062000144929190620002c7565b506004600b556001600c60006101000a81548161ffff021916908361ffff1602179055503480156200017557600080fd5b506040516200554c3803806200554c83398181016040528101906200019b9190620003e9565b81818160009080519060200190620001b5929190620002c7565b508060019080519060200190620001ce929190620002c7565b505050620001f1620001e5620001f960201b60201c565b6200020160201b60201c565b5050620005cc565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002d590620004f1565b90600052602060002090601f016020900481019282620002f9576000855562000345565b82601f106200031457805160ff191683800117855562000345565b8280016001018555821562000345579182015b828111156200034457825182559160200191906001019062000327565b5b50905062000354919062000358565b5090565b5b808211156200037357600081600090555060010162000359565b5090565b60006200038e620003888462000485565b6200045c565b905082815260208101848484011115620003a757600080fd5b620003b4848285620004bb565b509392505050565b600082601f830112620003ce57600080fd5b8151620003e084826020860162000377565b91505092915050565b60008060408385031215620003fd57600080fd5b600083015167ffffffffffffffff8111156200041857600080fd5b6200042685828601620003bc565b925050602083015167ffffffffffffffff8111156200044457600080fd5b6200045285828601620003bc565b9150509250929050565b6000620004686200047b565b905062000476828262000527565b919050565b6000604051905090565b600067ffffffffffffffff821115620004a357620004a26200058c565b5b620004ae82620005bb565b9050602081019050919050565b60005b83811015620004db578082015181840152602081019050620004be565b83811115620004eb576000848401525b50505050565b600060028204905060018216806200050a57607f821691505b602082108114156200052157620005206200055d565b5b50919050565b6200053282620005bb565b810181811067ffffffffffffffff821117156200055457620005536200058c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b614f7080620005dc6000396000f3fe6080604052600436106102935760003560e01c80637437681e1161015a578063b88d4fde116100c1578063c8a2bb8d1161007a578063c8a2bb8d146109ae578063cef216e2146109d7578063e985e9c5146109ee578063f2fde38b14610a2b578063fa395a6414610a54578063fe2c7fee14610a7d57610293565b8063b88d4fde1461088e578063ba4e5c49146108b7578063ba7d2c76146108f4578063c1408d791461091f578063c408050614610948578063c87b56dd1461097157610293565b80639db7863f116101135780639db7863f146107a4578063a035b1fe146107cf578063a22cb465146107fa578063a24ffbd414610823578063a475b5dd1461084c578063affed0e01461086357610293565b80637437681e146106a65780638cb2923c146106d15780638da5cb5b146106fc5780638f14085d1461072757806391b7f5ed1461075057806395d89b411461077957610293565b80633ccfd60b116101fe57806360e85cde116101b757806360e85cde146105a55780636352211e146105c157806365f48e62146105fe5780636ad1fe021461062757806370a0823114610652578063715018a61461068f57610293565b80633ccfd60b146104bd578063425f30a5146104d457806342842e0e146104ff578063518302271461052857806355f804b314610553578063562e438b1461057c57610293565b806314107f3c1161025057806314107f3c146103bc57806318160ddd146103d857806318cae269146104035780631d9cfd6d1461044057806323b872dd146104575780633af32abf1461048057610293565b806301ffc9a71461029857806306fdde03146102d5578063081812fc14610300578063081c8c441461033d578063095ea7b3146103685780630d1f7a8a14610391575b600080fd5b3480156102a457600080fd5b506102bf60048036038101906102ba9190613aad565b610aa6565b6040516102cc9190614087565b60405180910390f35b3480156102e157600080fd5b506102ea610b88565b6040516102f791906140a2565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190613b69565b610c1a565b6040516103349190614020565b60405180910390f35b34801561034957600080fd5b50610352610c9f565b60405161035f91906140a2565b60405180910390f35b34801561037457600080fd5b5061038f600480360381019061038a91906139f0565b610d2d565b005b34801561039d57600080fd5b506103a6610e45565b6040516103b391906143a4565b60405180910390f35b6103d660048036038101906103d19190613b92565b610e59565b005b3480156103e457600080fd5b506103ed61112b565b6040516103fa91906143a4565b60405180910390f35b34801561040f57600080fd5b5061042a60048036038101906104259190613885565b61113f565b60405161043791906143bf565b60405180910390f35b34801561044c57600080fd5b50610455611157565b005b34801561046357600080fd5b5061047e600480360381019061047991906138ea565b6111ff565b005b34801561048c57600080fd5b506104a760048036038101906104a29190613885565b61125f565b6040516104b49190614087565b60405180910390f35b3480156104c957600080fd5b506104d2611334565b005b3480156104e057600080fd5b506104e96113f9565b6040516104f69190614087565b60405180910390f35b34801561050b57600080fd5b50610526600480360381019061052191906138ea565b61140c565b005b34801561053457600080fd5b5061053d61142c565b60405161054a9190614087565b60405180910390f35b34801561055f57600080fd5b5061057a60048036038101906105759190613aff565b61143f565b005b34801561058857600080fd5b506105a3600480360381019061059e9190613b40565b6114d5565b005b6105bf60048036038101906105ba9190613b92565b61158e565b005b3480156105cd57600080fd5b506105e860048036038101906105e39190613b69565b6118b5565b6040516105f59190614020565b60405180910390f35b34801561060a57600080fd5b5061062560048036038101906106209190613b92565b611967565b005b34801561063357600080fd5b5061063c611a01565b6040516106499190614087565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190613885565b611a14565b60405161068691906143bf565b60405180910390f35b34801561069b57600080fd5b506106a4611acc565b005b3480156106b257600080fd5b506106bb611b54565b6040516106c891906143da565b60405180910390f35b3480156106dd57600080fd5b506106e6611b67565b6040516106f391906143a4565b60405180910390f35b34801561070857600080fd5b50610711611b7b565b60405161071e9190614020565b60405180910390f35b34801561073357600080fd5b5061074e60048036038101906107499190613b69565b611ba5565b005b34801561075c57600080fd5b5061077760048036038101906107729190613b69565b611c2b565b005b34801561078557600080fd5b5061078e611cb1565b60405161079b91906140a2565b60405180910390f35b3480156107b057600080fd5b506107b9611d43565b6040516107c691906143da565b60405180910390f35b3480156107db57600080fd5b506107e4611d56565b6040516107f191906143bf565b60405180910390f35b34801561080657600080fd5b50610821600480360381019061081c91906139b4565b611d5c565b005b34801561082f57600080fd5b5061084a60048036038101906108459190613a2c565b611edd565b005b34801561085857600080fd5b50610861612045565b005b34801561086f57600080fd5b506108786120ed565b60405161088591906143a4565b60405180910390f35b34801561089a57600080fd5b506108b560048036038101906108b09190613939565b612101565b005b3480156108c357600080fd5b506108de60048036038101906108d99190613b69565b612163565b6040516108eb9190614020565b60405180910390f35b34801561090057600080fd5b506109096121a2565b60405161091691906143bf565b60405180910390f35b34801561092b57600080fd5b5061094660048036038101906109419190613b40565b6121a8565b005b34801561095457600080fd5b5061096f600480360381019061096a9190613a68565b612244565b005b34801561097d57600080fd5b5061099860048036038101906109939190613b69565b6122d6565b6040516109a591906140a2565b60405180910390f35b3480156109ba57600080fd5b506109d560048036038101906109d09190613b92565b612433565b005b3480156109e357600080fd5b506109ec6124cd565b005b3480156109fa57600080fd5b50610a156004803603810190610a1091906138ae565b612575565b604051610a229190614087565b60405180910390f35b348015610a3757600080fd5b50610a526004803603810190610a4d9190613885565b612609565b005b348015610a6057600080fd5b50610a7b6004803603810190610a769190613b92565b612701565b005b348015610a8957600080fd5b50610aa46004803603810190610a9f9190613aff565b6127a0565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b7157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b815750610b8082612836565b5b9050919050565b606060008054610b9790614711565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc390614711565b8015610c105780601f10610be557610100808354040283529160200191610c10565b820191906000526020600020905b815481529060010190602001808311610bf357829003601f168201915b5050505050905090565b6000610c25826128a0565b610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b906142c4565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600a8054610cac90614711565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd890614711565b8015610d255780601f10610cfa57610100808354040283529160200191610d25565b820191906000526020600020905b815481529060010190602001808311610d0857829003601f168201915b505050505081565b6000610d38826118b5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da090614364565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610dc861290c565b73ffffffffffffffffffffffffffffffffffffffff161480610df75750610df681610df161290c565b612575565b5b610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d90614244565b60405180910390fd5b610e408383612914565b505050565b600c60009054906101000a900461ffff1681565b600660159054906101000a900460ff16610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f90614224565b60405180910390fd5b600c60009054906101000a900461ffff1661ffff168160ff161015610f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef990614184565b60405180910390fd5b600860049054906101000a900460ff1660ff168160ff16111580610f29575060018160ff16105b610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90614164565b60405180910390fd5b600860009054906101000a900461ffff1661ffff166001600660179054906101000a900461ffff168360ff16610f9e91906144bf565b610fa891906145d8565b61ffff161115610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe4906140c4565b60405180910390fd5b600860029054906101000a900461ffff1661ffff166001600660179054906101000a900461ffff168360ff1661102391906144bf565b61102d91906145d8565b61ffff161115611072576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611069906140c4565b60405180910390fd5b8060ff16600754611083919061457e565b3410156110c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bc906141a4565b60405180910390fd5b6110cf33826129cd565b8060ff16600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461112191906144f7565b9250508190555050565b600860029054906101000a900461ffff1681565b600d6020528060005260406000206000915090505481565b61115f61290c565b73ffffffffffffffffffffffffffffffffffffffff1661117d611b7b565b73ffffffffffffffffffffffffffffffffffffffff16146111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca906142e4565b60405180910390fd5b600660159054906101000a900460ff1615600660156101000a81548160ff021916908315150217905550565b61121061120a61290c565b82612a55565b61124f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124690614384565b60405180910390fd5b61125a838383612b33565b505050565b600080600090505b600e80549050811015611329578273ffffffffffffffffffffffffffffffffffffffff16600e82815481106112c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561131657600191505061132f565b80806113219061479f565b915050611267565b50600090505b919050565b61133c61290c565b73ffffffffffffffffffffffffffffffffffffffff1661135a611b7b565b73ffffffffffffffffffffffffffffffffffffffff16146113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a7906142e4565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156113f6573d6000803e3d6000fd5b50565b600660169054906101000a900460ff1681565b61142783838360405180602001604052806000815250612101565b505050565b600660149054906101000a900460ff1681565b61144761290c565b73ffffffffffffffffffffffffffffffffffffffff16611465611b7b565b73ffffffffffffffffffffffffffffffffffffffff16146114bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b2906142e4565b60405180910390fd5b80600990805190602001906114d1929190613595565b5050565b6114dd61290c565b73ffffffffffffffffffffffffffffffffffffffff166114fb611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614611551576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611548906142e4565b60405180910390fd5b80600860026101000a81548161ffff021916908361ffff16021790555080600860006101000a81548161ffff021916908361ffff16021790555050565b600660169054906101000a900460ff166115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d490614224565b60405180910390fd5b6115e63361125f565b611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90614324565b60405180910390fd5b600c60009054906101000a900461ffff1661ffff168160ff16101561167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690614184565b60405180910390fd5b600860059054906101000a900460ff1660ff168160ff161115806116a6575060018160ff16105b6116e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dc90614164565b60405180910390fd5b600b548160ff16600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461173691906144f7565b1115611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e906140e4565b60405180910390fd5b600860029054906101000a900461ffff1661ffff166001600660179054906101000a900461ffff168360ff166117ad91906144bf565b6117b791906145d8565b61ffff1611156117fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f3906140c4565b60405180910390fd5b8060ff1660075461180d919061457e565b34101561184f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611846906141a4565b60405180910390fd5b61185933826129cd565b8060ff16600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118ab91906144f7565b9250508190555050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561195e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195590614284565b60405180910390fd5b80915050919050565b61196f61290c565b73ffffffffffffffffffffffffffffffffffffffff1661198d611b7b565b73ffffffffffffffffffffffffffffffffffffffff16146119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da906142e4565b60405180910390fd5b80600860046101000a81548160ff021916908360ff16021790555050565b600660159054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c90614264565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611ad461290c565b73ffffffffffffffffffffffffffffffffffffffff16611af2611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f906142e4565b60405180910390fd5b611b526000612d8f565b565b600860049054906101000a900460ff1681565b600860009054906101000a900461ffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611bad61290c565b73ffffffffffffffffffffffffffffffffffffffff16611bcb611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c18906142e4565b60405180910390fd5b80600b8190555050565b611c3361290c565b73ffffffffffffffffffffffffffffffffffffffff16611c51611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e906142e4565b60405180910390fd5b8060078190555050565b606060018054611cc090614711565b80601f0160208091040260200160405190810160405280929190818152602001828054611cec90614711565b8015611d395780601f10611d0e57610100808354040283529160200191611d39565b820191906000526020600020905b815481529060010190602001808311611d1c57829003601f168201915b5050505050905090565b600860059054906101000a900460ff1681565b60075481565b611d6461290c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc9906141e4565b60405180910390fd5b8060056000611ddf61290c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611e8c61290c565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ed19190614087565b60405180910390a35050565b611ee561290c565b73ffffffffffffffffffffffffffffffffffffffff16611f03611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f50906142e4565b60405180910390fd5b600860029054906101000a900461ffff1661ffff166001600660179054906101000a900461ffff168360ff16611f8f91906144bf565b611f9991906145d8565b61ffff161115611fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd5906140c4565b60405180910390fd5b611fe882826129cd565b8060ff16600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461203a91906144f7565b925050819055505050565b61204d61290c565b73ffffffffffffffffffffffffffffffffffffffff1661206b611b7b565b73ffffffffffffffffffffffffffffffffffffffff16146120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b8906142e4565b60405180910390fd5b600660149054906101000a900460ff1615600660146101000a81548160ff021916908315150217905550565b600660179054906101000a900461ffff1681565b61211261210c61290c565b83612a55565b612151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214890614384565b60405180910390fd5b61215d84848484612e55565b50505050565b600e818154811061217357600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6121b061290c565b73ffffffffffffffffffffffffffffffffffffffff166121ce611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221b906142e4565b60405180910390fd5b80600860006101000a81548161ffff021916908361ffff16021790555050565b61224c61290c565b73ffffffffffffffffffffffffffffffffffffffff1661226a611b7b565b73ffffffffffffffffffffffffffffffffffffffff16146122c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b7906142e4565b60405180910390fd5b8181600e91906122d192919061361b565b505050565b60606122e1826128a0565b612320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231790614344565b60405180910390fd5b60001515600660149054906101000a900460ff16151514156123ce57600a805461234990614711565b80601f016020809104026020016040519081016040528092919081815260200182805461237590614711565b80156123c25780601f10612397576101008083540402835291602001916123c2565b820191906000526020600020905b8154815290600101906020018083116123a557829003601f168201915b5050505050905061242e565b6000600980546123dd90614711565b9050116123f9576040518060200160405280600081525061242b565b612401612eb1565b61240a83612ff2565b60405160200161241b929190613ff1565b6040516020818303038152906040525b90505b919050565b61243b61290c565b73ffffffffffffffffffffffffffffffffffffffff16612459611b7b565b73ffffffffffffffffffffffffffffffffffffffff16146124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a6906142e4565b60405180910390fd5b80600860056101000a81548160ff021916908360ff16021790555050565b6124d561290c565b73ffffffffffffffffffffffffffffffffffffffff166124f3611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614612549576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612540906142e4565b60405180910390fd5b600660169054906101000a900460ff1615600660166101000a81548160ff021916908315150217905550565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61261161290c565b73ffffffffffffffffffffffffffffffffffffffff1661262f611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c906142e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ec90614124565b60405180910390fd5b6126fe81612d8f565b50565b61270961290c565b73ffffffffffffffffffffffffffffffffffffffff16612727611b7b565b73ffffffffffffffffffffffffffffffffffffffff161461277d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612774906142e4565b60405180910390fd5b8060ff16600c60006101000a81548161ffff021916908361ffff16021790555050565b6127a861290c565b73ffffffffffffffffffffffffffffffffffffffff166127c6611b7b565b73ffffffffffffffffffffffffffffffffffffffff161461281c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612813906142e4565b60405180910390fd5b80600a9080519060200190612832929190613595565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612987836118b5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60005b8160ff168160ff161015612a50576000600660179054906101000a900461ffff169050612a01848261ffff1661319f565b6006601781819054906101000a900461ffff1680929190612a2190614774565b91906101000a81548161ffff021916908361ffff16021790555050508080612a48906147e8565b9150506129d0565b505050565b6000612a60826128a0565b612a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9690614204565b60405180910390fd5b6000612aaa836118b5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612b1957508373ffffffffffffffffffffffffffffffffffffffff16612b0184610c1a565b73ffffffffffffffffffffffffffffffffffffffff16145b80612b2a5750612b298185612575565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612b53826118b5565b73ffffffffffffffffffffffffffffffffffffffff1614612ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba090614304565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c10906141c4565b60405180910390fd5b612c248383836131bd565b612c2f600082612914565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c7f919061460c565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612cd691906144f7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612e60848484612b33565b612e6c848484846131c2565b612eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea290614104565b60405180910390fd5b50505050565b606060001515600660149054906101000a900460ff1615151415612f6157600a8054612edc90614711565b80601f0160208091040260200160405190810160405280929190818152602001828054612f0890614711565b8015612f555780601f10612f2a57610100808354040283529160200191612f55565b820191906000526020600020905b815481529060010190602001808311612f3857829003601f168201915b50505050509050612fef565b60098054612f6e90614711565b80601f0160208091040260200160405190810160405280929190818152602001828054612f9a90614711565b8015612fe75780601f10612fbc57610100808354040283529160200191612fe7565b820191906000526020600020905b815481529060010190602001808311612fca57829003601f168201915b505050505090505b90565b6060600082141561303a576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061319a565b600082905060005b6000821461306c5780806130559061479f565b915050600a82613065919061454d565b9150613042565b60008167ffffffffffffffff8111156130ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156130e05781602001600182028036833780820191505090505b5090505b60008514613193576001826130f9919061460c565b9150600a856131089190614812565b603061311491906144f7565b60f81b818381518110613150577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561318c919061454d565b94506130e4565b8093505050505b919050565b6131b9828260405180602001604052806000815250613359565b5050565b505050565b60006131e38473ffffffffffffffffffffffffffffffffffffffff166133b4565b1561334c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261320c61290c565b8786866040518563ffffffff1660e01b815260040161322e949392919061403b565b602060405180830381600087803b15801561324857600080fd5b505af192505050801561327957506040513d601f19601f820116820180604052508101906132769190613ad6565b60015b6132fc573d80600081146132a9576040519150601f19603f3d011682016040523d82523d6000602084013e6132ae565b606091505b506000815114156132f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132eb90614104565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613351565b600190505b949350505050565b61336383836133c7565b61337060008484846131c2565b6133af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a690614104565b60405180910390fd5b505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342e906142a4565b60405180910390fd5b613440816128a0565b15613480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347790614144565b60405180910390fd5b61348c600083836131bd565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134dc91906144f7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b8280546135a190614711565b90600052602060002090601f0160209004810192826135c3576000855561360a565b82601f106135dc57805160ff191683800117855561360a565b8280016001018555821561360a579182015b828111156136095782518255916020019190600101906135ee565b5b50905061361791906136bb565b5090565b8280548282559060005260206000209081019282156136aa579160200282015b828111156136a957823573ffffffffffffffffffffffffffffffffffffffff168260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061363b565b5b5090506136b791906136bb565b5090565b5b808211156136d45760008160009055506001016136bc565b5090565b60006136eb6136e68461441a565b6143f5565b90508281526020810184848401111561370357600080fd5b61370e8482856146cf565b509392505050565b60006137296137248461444b565b6143f5565b90508281526020810184848401111561374157600080fd5b61374c8482856146cf565b509392505050565b60008135905061376381614eb0565b92915050565b60008083601f84011261377b57600080fd5b8235905067ffffffffffffffff81111561379457600080fd5b6020830191508360208202830111156137ac57600080fd5b9250929050565b6000813590506137c281614ec7565b92915050565b6000813590506137d781614ede565b92915050565b6000815190506137ec81614ede565b92915050565b600082601f83011261380357600080fd5b81356138138482602086016136d8565b91505092915050565b600082601f83011261382d57600080fd5b813561383d848260208601613716565b91505092915050565b60008135905061385581614ef5565b92915050565b60008135905061386a81614f0c565b92915050565b60008135905061387f81614f23565b92915050565b60006020828403121561389757600080fd5b60006138a584828501613754565b91505092915050565b600080604083850312156138c157600080fd5b60006138cf85828601613754565b92505060206138e085828601613754565b9150509250929050565b6000806000606084860312156138ff57600080fd5b600061390d86828701613754565b935050602061391e86828701613754565b925050604061392f8682870161385b565b9150509250925092565b6000806000806080858703121561394f57600080fd5b600061395d87828801613754565b945050602061396e87828801613754565b935050604061397f8782880161385b565b925050606085013567ffffffffffffffff81111561399c57600080fd5b6139a8878288016137f2565b91505092959194509250565b600080604083850312156139c757600080fd5b60006139d585828601613754565b92505060206139e6858286016137b3565b9150509250929050565b60008060408385031215613a0357600080fd5b6000613a1185828601613754565b9250506020613a228582860161385b565b9150509250929050565b60008060408385031215613a3f57600080fd5b6000613a4d85828601613754565b9250506020613a5e85828601613870565b9150509250929050565b60008060208385031215613a7b57600080fd5b600083013567ffffffffffffffff811115613a9557600080fd5b613aa185828601613769565b92509250509250929050565b600060208284031215613abf57600080fd5b6000613acd848285016137c8565b91505092915050565b600060208284031215613ae857600080fd5b6000613af6848285016137dd565b91505092915050565b600060208284031215613b1157600080fd5b600082013567ffffffffffffffff811115613b2b57600080fd5b613b378482850161381c565b91505092915050565b600060208284031215613b5257600080fd5b6000613b6084828501613846565b91505092915050565b600060208284031215613b7b57600080fd5b6000613b898482850161385b565b91505092915050565b600060208284031215613ba457600080fd5b6000613bb284828501613870565b91505092915050565b613bc481614640565b82525050565b613bd381614652565b82525050565b6000613be48261447c565b613bee8185614492565b9350613bfe8185602086016146de565b613c07816148ff565b840191505092915050565b6000613c1d82614487565b613c2781856144a3565b9350613c378185602086016146de565b613c40816148ff565b840191505092915050565b6000613c5682614487565b613c6081856144b4565b9350613c708185602086016146de565b80840191505092915050565b6000613c89600e836144a3565b9150613c9482614910565b602082019050919050565b6000613cac6016836144a3565b9150613cb782614939565b602082019050919050565b6000613ccf6032836144a3565b9150613cda82614962565b604082019050919050565b6000613cf26026836144a3565b9150613cfd826149b1565b604082019050919050565b6000613d15601c836144a3565b9150613d2082614a00565b602082019050919050565b6000613d38601a836144a3565b9150613d4382614a29565b602082019050919050565b6000613d5b601a836144a3565b9150613d6682614a52565b602082019050919050565b6000613d7e600d836144a3565b9150613d8982614a7b565b602082019050919050565b6000613da16024836144a3565b9150613dac82614aa4565b604082019050919050565b6000613dc46019836144a3565b9150613dcf82614af3565b602082019050919050565b6000613de7602c836144a3565b9150613df282614b1c565b604082019050919050565b6000613e0a6013836144a3565b9150613e1582614b6b565b602082019050919050565b6000613e2d6038836144a3565b9150613e3882614b94565b604082019050919050565b6000613e50602a836144a3565b9150613e5b82614be3565b604082019050919050565b6000613e736029836144a3565b9150613e7e82614c32565b604082019050919050565b6000613e966020836144a3565b9150613ea182614c81565b602082019050919050565b6000613eb9602c836144a3565b9150613ec482614caa565b604082019050919050565b6000613edc6005836144b4565b9150613ee782614cf9565b600582019050919050565b6000613eff6020836144a3565b9150613f0a82614d22565b602082019050919050565b6000613f226029836144a3565b9150613f2d82614d4b565b604082019050919050565b6000613f456017836144a3565b9150613f5082614d9a565b602082019050919050565b6000613f68602f836144a3565b9150613f7382614dc3565b604082019050919050565b6000613f8b6021836144a3565b9150613f9682614e12565b604082019050919050565b6000613fae6031836144a3565b9150613fb982614e61565b604082019050919050565b613fcd8161468a565b82525050565b613fdc816146b8565b82525050565b613feb816146c2565b82525050565b6000613ffd8285613c4b565b91506140098284613c4b565b915061401482613ecf565b91508190509392505050565b60006020820190506140356000830184613bbb565b92915050565b60006080820190506140506000830187613bbb565b61405d6020830186613bbb565b61406a6040830185613fd3565b818103606083015261407c8184613bd9565b905095945050505050565b600060208201905061409c6000830184613bca565b92915050565b600060208201905081810360008301526140bc8184613c12565b905092915050565b600060208201905081810360008301526140dd81613c7c565b9050919050565b600060208201905081810360008301526140fd81613c9f565b9050919050565b6000602082019050818103600083015261411d81613cc2565b9050919050565b6000602082019050818103600083015261413d81613ce5565b9050919050565b6000602082019050818103600083015261415d81613d08565b9050919050565b6000602082019050818103600083015261417d81613d2b565b9050919050565b6000602082019050818103600083015261419d81613d4e565b9050919050565b600060208201905081810360008301526141bd81613d71565b9050919050565b600060208201905081810360008301526141dd81613d94565b9050919050565b600060208201905081810360008301526141fd81613db7565b9050919050565b6000602082019050818103600083015261421d81613dda565b9050919050565b6000602082019050818103600083015261423d81613dfd565b9050919050565b6000602082019050818103600083015261425d81613e20565b9050919050565b6000602082019050818103600083015261427d81613e43565b9050919050565b6000602082019050818103600083015261429d81613e66565b9050919050565b600060208201905081810360008301526142bd81613e89565b9050919050565b600060208201905081810360008301526142dd81613eac565b9050919050565b600060208201905081810360008301526142fd81613ef2565b9050919050565b6000602082019050818103600083015261431d81613f15565b9050919050565b6000602082019050818103600083015261433d81613f38565b9050919050565b6000602082019050818103600083015261435d81613f5b565b9050919050565b6000602082019050818103600083015261437d81613f7e565b9050919050565b6000602082019050818103600083015261439d81613fa1565b9050919050565b60006020820190506143b96000830184613fc4565b92915050565b60006020820190506143d46000830184613fd3565b92915050565b60006020820190506143ef6000830184613fe2565b92915050565b60006143ff614410565b905061440b8282614743565b919050565b6000604051905090565b600067ffffffffffffffff821115614435576144346148d0565b5b61443e826148ff565b9050602081019050919050565b600067ffffffffffffffff821115614466576144656148d0565b5b61446f826148ff565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006144ca8261468a565b91506144d58361468a565b92508261ffff038211156144ec576144eb614843565b5b828201905092915050565b6000614502826146b8565b915061450d836146b8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561454257614541614843565b5b828201905092915050565b6000614558826146b8565b9150614563836146b8565b92508261457357614572614872565b5b828204905092915050565b6000614589826146b8565b9150614594836146b8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145cd576145cc614843565b5b828202905092915050565b60006145e38261468a565b91506145ee8361468a565b92508282101561460157614600614843565b5b828203905092915050565b6000614617826146b8565b9150614622836146b8565b92508282101561463557614634614843565b5b828203905092915050565b600061464b82614698565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156146fc5780820151818401526020810190506146e1565b8381111561470b576000848401525b50505050565b6000600282049050600182168061472957607f821691505b6020821081141561473d5761473c6148a1565b5b50919050565b61474c826148ff565b810181811067ffffffffffffffff8211171561476b5761476a6148d0565b5b80604052505050565b600061477f8261468a565b915061ffff82141561479457614793614843565b5b600182019050919050565b60006147aa826146b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156147dd576147dc614843565b5b600182019050919050565b60006147f3826146c2565b915060ff82141561480757614806614843565b5b600182019050919050565b600061481d826146b8565b9150614828836146b8565b92508261483857614837614872565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4e4f5f4d4f52455f535550504c59000000000000000000000000000000000000600082015250565b7f57484954454c4953545f4c494d49545f45584345454400000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f43414e545f4255595f4d4f52455f5448414e5f414c4c4f574544000000000000600082015250565b7f43414e545f4255595f4c4553535f5448414e5f414c4c4f574544000000000000600082015250565b7f494e56414c49445f505249434500000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f53414c455f4e4f545f4143544956455f59455400000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f555345525f49535f4e4f545f57484954454c4953544544000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b614eb981614640565b8114614ec457600080fd5b50565b614ed081614652565b8114614edb57600080fd5b50565b614ee78161465e565b8114614ef257600080fd5b50565b614efe8161468a565b8114614f0957600080fd5b50565b614f15816146b8565b8114614f2057600080fd5b50565b614f2c816146c2565b8114614f3757600080fd5b5056fea2646970667358221220623f299a8c7032e603cea7ca9340086f37a5d79318e2bf274a14e246886c4a0e64736f6c6343000804003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b48616c66205368656b656c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000348534b0000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102935760003560e01c80637437681e1161015a578063b88d4fde116100c1578063c8a2bb8d1161007a578063c8a2bb8d146109ae578063cef216e2146109d7578063e985e9c5146109ee578063f2fde38b14610a2b578063fa395a6414610a54578063fe2c7fee14610a7d57610293565b8063b88d4fde1461088e578063ba4e5c49146108b7578063ba7d2c76146108f4578063c1408d791461091f578063c408050614610948578063c87b56dd1461097157610293565b80639db7863f116101135780639db7863f146107a4578063a035b1fe146107cf578063a22cb465146107fa578063a24ffbd414610823578063a475b5dd1461084c578063affed0e01461086357610293565b80637437681e146106a65780638cb2923c146106d15780638da5cb5b146106fc5780638f14085d1461072757806391b7f5ed1461075057806395d89b411461077957610293565b80633ccfd60b116101fe57806360e85cde116101b757806360e85cde146105a55780636352211e146105c157806365f48e62146105fe5780636ad1fe021461062757806370a0823114610652578063715018a61461068f57610293565b80633ccfd60b146104bd578063425f30a5146104d457806342842e0e146104ff578063518302271461052857806355f804b314610553578063562e438b1461057c57610293565b806314107f3c1161025057806314107f3c146103bc57806318160ddd146103d857806318cae269146104035780631d9cfd6d1461044057806323b872dd146104575780633af32abf1461048057610293565b806301ffc9a71461029857806306fdde03146102d5578063081812fc14610300578063081c8c441461033d578063095ea7b3146103685780630d1f7a8a14610391575b600080fd5b3480156102a457600080fd5b506102bf60048036038101906102ba9190613aad565b610aa6565b6040516102cc9190614087565b60405180910390f35b3480156102e157600080fd5b506102ea610b88565b6040516102f791906140a2565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190613b69565b610c1a565b6040516103349190614020565b60405180910390f35b34801561034957600080fd5b50610352610c9f565b60405161035f91906140a2565b60405180910390f35b34801561037457600080fd5b5061038f600480360381019061038a91906139f0565b610d2d565b005b34801561039d57600080fd5b506103a6610e45565b6040516103b391906143a4565b60405180910390f35b6103d660048036038101906103d19190613b92565b610e59565b005b3480156103e457600080fd5b506103ed61112b565b6040516103fa91906143a4565b60405180910390f35b34801561040f57600080fd5b5061042a60048036038101906104259190613885565b61113f565b60405161043791906143bf565b60405180910390f35b34801561044c57600080fd5b50610455611157565b005b34801561046357600080fd5b5061047e600480360381019061047991906138ea565b6111ff565b005b34801561048c57600080fd5b506104a760048036038101906104a29190613885565b61125f565b6040516104b49190614087565b60405180910390f35b3480156104c957600080fd5b506104d2611334565b005b3480156104e057600080fd5b506104e96113f9565b6040516104f69190614087565b60405180910390f35b34801561050b57600080fd5b50610526600480360381019061052191906138ea565b61140c565b005b34801561053457600080fd5b5061053d61142c565b60405161054a9190614087565b60405180910390f35b34801561055f57600080fd5b5061057a60048036038101906105759190613aff565b61143f565b005b34801561058857600080fd5b506105a3600480360381019061059e9190613b40565b6114d5565b005b6105bf60048036038101906105ba9190613b92565b61158e565b005b3480156105cd57600080fd5b506105e860048036038101906105e39190613b69565b6118b5565b6040516105f59190614020565b60405180910390f35b34801561060a57600080fd5b5061062560048036038101906106209190613b92565b611967565b005b34801561063357600080fd5b5061063c611a01565b6040516106499190614087565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190613885565b611a14565b60405161068691906143bf565b60405180910390f35b34801561069b57600080fd5b506106a4611acc565b005b3480156106b257600080fd5b506106bb611b54565b6040516106c891906143da565b60405180910390f35b3480156106dd57600080fd5b506106e6611b67565b6040516106f391906143a4565b60405180910390f35b34801561070857600080fd5b50610711611b7b565b60405161071e9190614020565b60405180910390f35b34801561073357600080fd5b5061074e60048036038101906107499190613b69565b611ba5565b005b34801561075c57600080fd5b5061077760048036038101906107729190613b69565b611c2b565b005b34801561078557600080fd5b5061078e611cb1565b60405161079b91906140a2565b60405180910390f35b3480156107b057600080fd5b506107b9611d43565b6040516107c691906143da565b60405180910390f35b3480156107db57600080fd5b506107e4611d56565b6040516107f191906143bf565b60405180910390f35b34801561080657600080fd5b50610821600480360381019061081c91906139b4565b611d5c565b005b34801561082f57600080fd5b5061084a60048036038101906108459190613a2c565b611edd565b005b34801561085857600080fd5b50610861612045565b005b34801561086f57600080fd5b506108786120ed565b60405161088591906143a4565b60405180910390f35b34801561089a57600080fd5b506108b560048036038101906108b09190613939565b612101565b005b3480156108c357600080fd5b506108de60048036038101906108d99190613b69565b612163565b6040516108eb9190614020565b60405180910390f35b34801561090057600080fd5b506109096121a2565b60405161091691906143bf565b60405180910390f35b34801561092b57600080fd5b5061094660048036038101906109419190613b40565b6121a8565b005b34801561095457600080fd5b5061096f600480360381019061096a9190613a68565b612244565b005b34801561097d57600080fd5b5061099860048036038101906109939190613b69565b6122d6565b6040516109a591906140a2565b60405180910390f35b3480156109ba57600080fd5b506109d560048036038101906109d09190613b92565b612433565b005b3480156109e357600080fd5b506109ec6124cd565b005b3480156109fa57600080fd5b50610a156004803603810190610a1091906138ae565b612575565b604051610a229190614087565b60405180910390f35b348015610a3757600080fd5b50610a526004803603810190610a4d9190613885565b612609565b005b348015610a6057600080fd5b50610a7b6004803603810190610a769190613b92565b612701565b005b348015610a8957600080fd5b50610aa46004803603810190610a9f9190613aff565b6127a0565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b7157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b815750610b8082612836565b5b9050919050565b606060008054610b9790614711565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc390614711565b8015610c105780601f10610be557610100808354040283529160200191610c10565b820191906000526020600020905b815481529060010190602001808311610bf357829003601f168201915b5050505050905090565b6000610c25826128a0565b610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b906142c4565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600a8054610cac90614711565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd890614711565b8015610d255780601f10610cfa57610100808354040283529160200191610d25565b820191906000526020600020905b815481529060010190602001808311610d0857829003601f168201915b505050505081565b6000610d38826118b5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da090614364565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610dc861290c565b73ffffffffffffffffffffffffffffffffffffffff161480610df75750610df681610df161290c565b612575565b5b610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d90614244565b60405180910390fd5b610e408383612914565b505050565b600c60009054906101000a900461ffff1681565b600660159054906101000a900460ff16610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f90614224565b60405180910390fd5b600c60009054906101000a900461ffff1661ffff168160ff161015610f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef990614184565b60405180910390fd5b600860049054906101000a900460ff1660ff168160ff16111580610f29575060018160ff16105b610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90614164565b60405180910390fd5b600860009054906101000a900461ffff1661ffff166001600660179054906101000a900461ffff168360ff16610f9e91906144bf565b610fa891906145d8565b61ffff161115610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe4906140c4565b60405180910390fd5b600860029054906101000a900461ffff1661ffff166001600660179054906101000a900461ffff168360ff1661102391906144bf565b61102d91906145d8565b61ffff161115611072576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611069906140c4565b60405180910390fd5b8060ff16600754611083919061457e565b3410156110c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bc906141a4565b60405180910390fd5b6110cf33826129cd565b8060ff16600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461112191906144f7565b9250508190555050565b600860029054906101000a900461ffff1681565b600d6020528060005260406000206000915090505481565b61115f61290c565b73ffffffffffffffffffffffffffffffffffffffff1661117d611b7b565b73ffffffffffffffffffffffffffffffffffffffff16146111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca906142e4565b60405180910390fd5b600660159054906101000a900460ff1615600660156101000a81548160ff021916908315150217905550565b61121061120a61290c565b82612a55565b61124f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124690614384565b60405180910390fd5b61125a838383612b33565b505050565b600080600090505b600e80549050811015611329578273ffffffffffffffffffffffffffffffffffffffff16600e82815481106112c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561131657600191505061132f565b80806113219061479f565b915050611267565b50600090505b919050565b61133c61290c565b73ffffffffffffffffffffffffffffffffffffffff1661135a611b7b565b73ffffffffffffffffffffffffffffffffffffffff16146113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a7906142e4565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156113f6573d6000803e3d6000fd5b50565b600660169054906101000a900460ff1681565b61142783838360405180602001604052806000815250612101565b505050565b600660149054906101000a900460ff1681565b61144761290c565b73ffffffffffffffffffffffffffffffffffffffff16611465611b7b565b73ffffffffffffffffffffffffffffffffffffffff16146114bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b2906142e4565b60405180910390fd5b80600990805190602001906114d1929190613595565b5050565b6114dd61290c565b73ffffffffffffffffffffffffffffffffffffffff166114fb611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614611551576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611548906142e4565b60405180910390fd5b80600860026101000a81548161ffff021916908361ffff16021790555080600860006101000a81548161ffff021916908361ffff16021790555050565b600660169054906101000a900460ff166115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d490614224565b60405180910390fd5b6115e63361125f565b611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90614324565b60405180910390fd5b600c60009054906101000a900461ffff1661ffff168160ff16101561167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690614184565b60405180910390fd5b600860059054906101000a900460ff1660ff168160ff161115806116a6575060018160ff16105b6116e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dc90614164565b60405180910390fd5b600b548160ff16600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461173691906144f7565b1115611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e906140e4565b60405180910390fd5b600860029054906101000a900461ffff1661ffff166001600660179054906101000a900461ffff168360ff166117ad91906144bf565b6117b791906145d8565b61ffff1611156117fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f3906140c4565b60405180910390fd5b8060ff1660075461180d919061457e565b34101561184f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611846906141a4565b60405180910390fd5b61185933826129cd565b8060ff16600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118ab91906144f7565b9250508190555050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561195e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195590614284565b60405180910390fd5b80915050919050565b61196f61290c565b73ffffffffffffffffffffffffffffffffffffffff1661198d611b7b565b73ffffffffffffffffffffffffffffffffffffffff16146119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da906142e4565b60405180910390fd5b80600860046101000a81548160ff021916908360ff16021790555050565b600660159054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c90614264565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611ad461290c565b73ffffffffffffffffffffffffffffffffffffffff16611af2611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f906142e4565b60405180910390fd5b611b526000612d8f565b565b600860049054906101000a900460ff1681565b600860009054906101000a900461ffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611bad61290c565b73ffffffffffffffffffffffffffffffffffffffff16611bcb611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c18906142e4565b60405180910390fd5b80600b8190555050565b611c3361290c565b73ffffffffffffffffffffffffffffffffffffffff16611c51611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e906142e4565b60405180910390fd5b8060078190555050565b606060018054611cc090614711565b80601f0160208091040260200160405190810160405280929190818152602001828054611cec90614711565b8015611d395780601f10611d0e57610100808354040283529160200191611d39565b820191906000526020600020905b815481529060010190602001808311611d1c57829003601f168201915b5050505050905090565b600860059054906101000a900460ff1681565b60075481565b611d6461290c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc9906141e4565b60405180910390fd5b8060056000611ddf61290c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611e8c61290c565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ed19190614087565b60405180910390a35050565b611ee561290c565b73ffffffffffffffffffffffffffffffffffffffff16611f03611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f50906142e4565b60405180910390fd5b600860029054906101000a900461ffff1661ffff166001600660179054906101000a900461ffff168360ff16611f8f91906144bf565b611f9991906145d8565b61ffff161115611fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd5906140c4565b60405180910390fd5b611fe882826129cd565b8060ff16600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461203a91906144f7565b925050819055505050565b61204d61290c565b73ffffffffffffffffffffffffffffffffffffffff1661206b611b7b565b73ffffffffffffffffffffffffffffffffffffffff16146120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b8906142e4565b60405180910390fd5b600660149054906101000a900460ff1615600660146101000a81548160ff021916908315150217905550565b600660179054906101000a900461ffff1681565b61211261210c61290c565b83612a55565b612151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214890614384565b60405180910390fd5b61215d84848484612e55565b50505050565b600e818154811061217357600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6121b061290c565b73ffffffffffffffffffffffffffffffffffffffff166121ce611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221b906142e4565b60405180910390fd5b80600860006101000a81548161ffff021916908361ffff16021790555050565b61224c61290c565b73ffffffffffffffffffffffffffffffffffffffff1661226a611b7b565b73ffffffffffffffffffffffffffffffffffffffff16146122c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b7906142e4565b60405180910390fd5b8181600e91906122d192919061361b565b505050565b60606122e1826128a0565b612320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231790614344565b60405180910390fd5b60001515600660149054906101000a900460ff16151514156123ce57600a805461234990614711565b80601f016020809104026020016040519081016040528092919081815260200182805461237590614711565b80156123c25780601f10612397576101008083540402835291602001916123c2565b820191906000526020600020905b8154815290600101906020018083116123a557829003601f168201915b5050505050905061242e565b6000600980546123dd90614711565b9050116123f9576040518060200160405280600081525061242b565b612401612eb1565b61240a83612ff2565b60405160200161241b929190613ff1565b6040516020818303038152906040525b90505b919050565b61243b61290c565b73ffffffffffffffffffffffffffffffffffffffff16612459611b7b565b73ffffffffffffffffffffffffffffffffffffffff16146124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a6906142e4565b60405180910390fd5b80600860056101000a81548160ff021916908360ff16021790555050565b6124d561290c565b73ffffffffffffffffffffffffffffffffffffffff166124f3611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614612549576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612540906142e4565b60405180910390fd5b600660169054906101000a900460ff1615600660166101000a81548160ff021916908315150217905550565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61261161290c565b73ffffffffffffffffffffffffffffffffffffffff1661262f611b7b565b73ffffffffffffffffffffffffffffffffffffffff1614612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c906142e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ec90614124565b60405180910390fd5b6126fe81612d8f565b50565b61270961290c565b73ffffffffffffffffffffffffffffffffffffffff16612727611b7b565b73ffffffffffffffffffffffffffffffffffffffff161461277d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612774906142e4565b60405180910390fd5b8060ff16600c60006101000a81548161ffff021916908361ffff16021790555050565b6127a861290c565b73ffffffffffffffffffffffffffffffffffffffff166127c6611b7b565b73ffffffffffffffffffffffffffffffffffffffff161461281c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612813906142e4565b60405180910390fd5b80600a9080519060200190612832929190613595565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612987836118b5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60005b8160ff168160ff161015612a50576000600660179054906101000a900461ffff169050612a01848261ffff1661319f565b6006601781819054906101000a900461ffff1680929190612a2190614774565b91906101000a81548161ffff021916908361ffff16021790555050508080612a48906147e8565b9150506129d0565b505050565b6000612a60826128a0565b612a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9690614204565b60405180910390fd5b6000612aaa836118b5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612b1957508373ffffffffffffffffffffffffffffffffffffffff16612b0184610c1a565b73ffffffffffffffffffffffffffffffffffffffff16145b80612b2a5750612b298185612575565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612b53826118b5565b73ffffffffffffffffffffffffffffffffffffffff1614612ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba090614304565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c10906141c4565b60405180910390fd5b612c248383836131bd565b612c2f600082612914565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c7f919061460c565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612cd691906144f7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612e60848484612b33565b612e6c848484846131c2565b612eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea290614104565b60405180910390fd5b50505050565b606060001515600660149054906101000a900460ff1615151415612f6157600a8054612edc90614711565b80601f0160208091040260200160405190810160405280929190818152602001828054612f0890614711565b8015612f555780601f10612f2a57610100808354040283529160200191612f55565b820191906000526020600020905b815481529060010190602001808311612f3857829003601f168201915b50505050509050612fef565b60098054612f6e90614711565b80601f0160208091040260200160405190810160405280929190818152602001828054612f9a90614711565b8015612fe75780601f10612fbc57610100808354040283529160200191612fe7565b820191906000526020600020905b815481529060010190602001808311612fca57829003601f168201915b505050505090505b90565b6060600082141561303a576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061319a565b600082905060005b6000821461306c5780806130559061479f565b915050600a82613065919061454d565b9150613042565b60008167ffffffffffffffff8111156130ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156130e05781602001600182028036833780820191505090505b5090505b60008514613193576001826130f9919061460c565b9150600a856131089190614812565b603061311491906144f7565b60f81b818381518110613150577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561318c919061454d565b94506130e4565b8093505050505b919050565b6131b9828260405180602001604052806000815250613359565b5050565b505050565b60006131e38473ffffffffffffffffffffffffffffffffffffffff166133b4565b1561334c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261320c61290c565b8786866040518563ffffffff1660e01b815260040161322e949392919061403b565b602060405180830381600087803b15801561324857600080fd5b505af192505050801561327957506040513d601f19601f820116820180604052508101906132769190613ad6565b60015b6132fc573d80600081146132a9576040519150601f19603f3d011682016040523d82523d6000602084013e6132ae565b606091505b506000815114156132f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132eb90614104565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613351565b600190505b949350505050565b61336383836133c7565b61337060008484846131c2565b6133af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a690614104565b60405180910390fd5b505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342e906142a4565b60405180910390fd5b613440816128a0565b15613480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347790614144565b60405180910390fd5b61348c600083836131bd565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134dc91906144f7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b8280546135a190614711565b90600052602060002090601f0160209004810192826135c3576000855561360a565b82601f106135dc57805160ff191683800117855561360a565b8280016001018555821561360a579182015b828111156136095782518255916020019190600101906135ee565b5b50905061361791906136bb565b5090565b8280548282559060005260206000209081019282156136aa579160200282015b828111156136a957823573ffffffffffffffffffffffffffffffffffffffff168260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061363b565b5b5090506136b791906136bb565b5090565b5b808211156136d45760008160009055506001016136bc565b5090565b60006136eb6136e68461441a565b6143f5565b90508281526020810184848401111561370357600080fd5b61370e8482856146cf565b509392505050565b60006137296137248461444b565b6143f5565b90508281526020810184848401111561374157600080fd5b61374c8482856146cf565b509392505050565b60008135905061376381614eb0565b92915050565b60008083601f84011261377b57600080fd5b8235905067ffffffffffffffff81111561379457600080fd5b6020830191508360208202830111156137ac57600080fd5b9250929050565b6000813590506137c281614ec7565b92915050565b6000813590506137d781614ede565b92915050565b6000815190506137ec81614ede565b92915050565b600082601f83011261380357600080fd5b81356138138482602086016136d8565b91505092915050565b600082601f83011261382d57600080fd5b813561383d848260208601613716565b91505092915050565b60008135905061385581614ef5565b92915050565b60008135905061386a81614f0c565b92915050565b60008135905061387f81614f23565b92915050565b60006020828403121561389757600080fd5b60006138a584828501613754565b91505092915050565b600080604083850312156138c157600080fd5b60006138cf85828601613754565b92505060206138e085828601613754565b9150509250929050565b6000806000606084860312156138ff57600080fd5b600061390d86828701613754565b935050602061391e86828701613754565b925050604061392f8682870161385b565b9150509250925092565b6000806000806080858703121561394f57600080fd5b600061395d87828801613754565b945050602061396e87828801613754565b935050604061397f8782880161385b565b925050606085013567ffffffffffffffff81111561399c57600080fd5b6139a8878288016137f2565b91505092959194509250565b600080604083850312156139c757600080fd5b60006139d585828601613754565b92505060206139e6858286016137b3565b9150509250929050565b60008060408385031215613a0357600080fd5b6000613a1185828601613754565b9250506020613a228582860161385b565b9150509250929050565b60008060408385031215613a3f57600080fd5b6000613a4d85828601613754565b9250506020613a5e85828601613870565b9150509250929050565b60008060208385031215613a7b57600080fd5b600083013567ffffffffffffffff811115613a9557600080fd5b613aa185828601613769565b92509250509250929050565b600060208284031215613abf57600080fd5b6000613acd848285016137c8565b91505092915050565b600060208284031215613ae857600080fd5b6000613af6848285016137dd565b91505092915050565b600060208284031215613b1157600080fd5b600082013567ffffffffffffffff811115613b2b57600080fd5b613b378482850161381c565b91505092915050565b600060208284031215613b5257600080fd5b6000613b6084828501613846565b91505092915050565b600060208284031215613b7b57600080fd5b6000613b898482850161385b565b91505092915050565b600060208284031215613ba457600080fd5b6000613bb284828501613870565b91505092915050565b613bc481614640565b82525050565b613bd381614652565b82525050565b6000613be48261447c565b613bee8185614492565b9350613bfe8185602086016146de565b613c07816148ff565b840191505092915050565b6000613c1d82614487565b613c2781856144a3565b9350613c378185602086016146de565b613c40816148ff565b840191505092915050565b6000613c5682614487565b613c6081856144b4565b9350613c708185602086016146de565b80840191505092915050565b6000613c89600e836144a3565b9150613c9482614910565b602082019050919050565b6000613cac6016836144a3565b9150613cb782614939565b602082019050919050565b6000613ccf6032836144a3565b9150613cda82614962565b604082019050919050565b6000613cf26026836144a3565b9150613cfd826149b1565b604082019050919050565b6000613d15601c836144a3565b9150613d2082614a00565b602082019050919050565b6000613d38601a836144a3565b9150613d4382614a29565b602082019050919050565b6000613d5b601a836144a3565b9150613d6682614a52565b602082019050919050565b6000613d7e600d836144a3565b9150613d8982614a7b565b602082019050919050565b6000613da16024836144a3565b9150613dac82614aa4565b604082019050919050565b6000613dc46019836144a3565b9150613dcf82614af3565b602082019050919050565b6000613de7602c836144a3565b9150613df282614b1c565b604082019050919050565b6000613e0a6013836144a3565b9150613e1582614b6b565b602082019050919050565b6000613e2d6038836144a3565b9150613e3882614b94565b604082019050919050565b6000613e50602a836144a3565b9150613e5b82614be3565b604082019050919050565b6000613e736029836144a3565b9150613e7e82614c32565b604082019050919050565b6000613e966020836144a3565b9150613ea182614c81565b602082019050919050565b6000613eb9602c836144a3565b9150613ec482614caa565b604082019050919050565b6000613edc6005836144b4565b9150613ee782614cf9565b600582019050919050565b6000613eff6020836144a3565b9150613f0a82614d22565b602082019050919050565b6000613f226029836144a3565b9150613f2d82614d4b565b604082019050919050565b6000613f456017836144a3565b9150613f5082614d9a565b602082019050919050565b6000613f68602f836144a3565b9150613f7382614dc3565b604082019050919050565b6000613f8b6021836144a3565b9150613f9682614e12565b604082019050919050565b6000613fae6031836144a3565b9150613fb982614e61565b604082019050919050565b613fcd8161468a565b82525050565b613fdc816146b8565b82525050565b613feb816146c2565b82525050565b6000613ffd8285613c4b565b91506140098284613c4b565b915061401482613ecf565b91508190509392505050565b60006020820190506140356000830184613bbb565b92915050565b60006080820190506140506000830187613bbb565b61405d6020830186613bbb565b61406a6040830185613fd3565b818103606083015261407c8184613bd9565b905095945050505050565b600060208201905061409c6000830184613bca565b92915050565b600060208201905081810360008301526140bc8184613c12565b905092915050565b600060208201905081810360008301526140dd81613c7c565b9050919050565b600060208201905081810360008301526140fd81613c9f565b9050919050565b6000602082019050818103600083015261411d81613cc2565b9050919050565b6000602082019050818103600083015261413d81613ce5565b9050919050565b6000602082019050818103600083015261415d81613d08565b9050919050565b6000602082019050818103600083015261417d81613d2b565b9050919050565b6000602082019050818103600083015261419d81613d4e565b9050919050565b600060208201905081810360008301526141bd81613d71565b9050919050565b600060208201905081810360008301526141dd81613d94565b9050919050565b600060208201905081810360008301526141fd81613db7565b9050919050565b6000602082019050818103600083015261421d81613dda565b9050919050565b6000602082019050818103600083015261423d81613dfd565b9050919050565b6000602082019050818103600083015261425d81613e20565b9050919050565b6000602082019050818103600083015261427d81613e43565b9050919050565b6000602082019050818103600083015261429d81613e66565b9050919050565b600060208201905081810360008301526142bd81613e89565b9050919050565b600060208201905081810360008301526142dd81613eac565b9050919050565b600060208201905081810360008301526142fd81613ef2565b9050919050565b6000602082019050818103600083015261431d81613f15565b9050919050565b6000602082019050818103600083015261433d81613f38565b9050919050565b6000602082019050818103600083015261435d81613f5b565b9050919050565b6000602082019050818103600083015261437d81613f7e565b9050919050565b6000602082019050818103600083015261439d81613fa1565b9050919050565b60006020820190506143b96000830184613fc4565b92915050565b60006020820190506143d46000830184613fd3565b92915050565b60006020820190506143ef6000830184613fe2565b92915050565b60006143ff614410565b905061440b8282614743565b919050565b6000604051905090565b600067ffffffffffffffff821115614435576144346148d0565b5b61443e826148ff565b9050602081019050919050565b600067ffffffffffffffff821115614466576144656148d0565b5b61446f826148ff565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006144ca8261468a565b91506144d58361468a565b92508261ffff038211156144ec576144eb614843565b5b828201905092915050565b6000614502826146b8565b915061450d836146b8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561454257614541614843565b5b828201905092915050565b6000614558826146b8565b9150614563836146b8565b92508261457357614572614872565b5b828204905092915050565b6000614589826146b8565b9150614594836146b8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145cd576145cc614843565b5b828202905092915050565b60006145e38261468a565b91506145ee8361468a565b92508282101561460157614600614843565b5b828203905092915050565b6000614617826146b8565b9150614622836146b8565b92508282101561463557614634614843565b5b828203905092915050565b600061464b82614698565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156146fc5780820151818401526020810190506146e1565b8381111561470b576000848401525b50505050565b6000600282049050600182168061472957607f821691505b6020821081141561473d5761473c6148a1565b5b50919050565b61474c826148ff565b810181811067ffffffffffffffff8211171561476b5761476a6148d0565b5b80604052505050565b600061477f8261468a565b915061ffff82141561479457614793614843565b5b600182019050919050565b60006147aa826146b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156147dd576147dc614843565b5b600182019050919050565b60006147f3826146c2565b915060ff82141561480757614806614843565b5b600182019050919050565b600061481d826146b8565b9150614828836146b8565b92508261483857614837614872565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4e4f5f4d4f52455f535550504c59000000000000000000000000000000000000600082015250565b7f57484954454c4953545f4c494d49545f45584345454400000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f43414e545f4255595f4d4f52455f5448414e5f414c4c4f574544000000000000600082015250565b7f43414e545f4255595f4c4553535f5448414e5f414c4c4f574544000000000000600082015250565b7f494e56414c49445f505249434500000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f53414c455f4e4f545f4143544956455f59455400000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f555345525f49535f4e4f545f57484954454c4953544544000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b614eb981614640565b8114614ec457600080fd5b50565b614ed081614652565b8114614edb57600080fd5b50565b614ee78161465e565b8114614ef257600080fd5b50565b614efe8161468a565b8114614f0957600080fd5b50565b614f15816146b8565b8114614f2057600080fd5b50565b614f2c816146c2565b8114614f3757600080fd5b5056fea2646970667358221220623f299a8c7032e603cea7ca9340086f37a5d79318e2bf274a14e246886c4a0e64736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b48616c66205368656b656c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000348534b0000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Half Shekel
Arg [1] : _ticker (string): HSK
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [3] : 48616c66205368656b656c000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [5] : 48534b0000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
51652:5413:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20791:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21736:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23295:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52236:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22818:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52329:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;55442:644;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52047:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52377:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;54050:67;;;;;;;;;;;;;:::i;:::-;;24185:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53771:271;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;56542:109;;;;;;;;;;;;;:::i;:::-;;51839:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24595:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51739:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52703:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53477:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;54543:891;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21430:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;54239:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51789:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21160:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44060:94;;;;;;;;;;;;;:::i;:::-;;52096:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51998:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43409:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53144:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53267:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21905:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52143:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51935:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23588:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;56094:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52606:89;;;;;;;;;;;;;:::i;:::-;;51889:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24851:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52440:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52283:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53364:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53625:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;56659:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;54333:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;54125:106;;;;;;;;;;;;;:::i;:::-;;23954:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44309:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;54431:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52809:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20791:305;20893:4;20945:25;20930:40;;;:11;:40;;;;:105;;;;21002:33;20987:48;;;:11;:48;;;;20930:105;:158;;;;21052:36;21076:11;21052:23;:36::i;:::-;20930:158;20910:178;;20791:305;;;:::o;21736:100::-;21790:13;21823:5;21816:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21736:100;:::o;23295:221::-;23371:7;23399:16;23407:7;23399;:16::i;:::-;23391:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23484:15;:24;23500:7;23484:24;;;;;;;;;;;;;;;;;;;;;23477:31;;23295:221;;;:::o;52236:40::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22818:411::-;22899:13;22915:23;22930:7;22915:14;:23::i;:::-;22899:39;;22963:5;22957:11;;:2;:11;;;;22949:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;23057:5;23041:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;23066:37;23083:5;23090:12;:10;:12::i;:::-;23066:16;:37::i;:::-;23041:62;23019:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;23200:21;23209:2;23213:7;23200:8;:21::i;:::-;22818:411;;;:::o;52329:39::-;;;;;;;;;;;;;:::o;55442:644::-;55503:4;;;;;;;;;;;55495:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;55596:10;;;;;;;;;;;55588:18;;:4;:18;;;;55580:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;55688:5;;;;;;;;;;;55680:13;;:4;:13;;;;:25;;;;55704:1;55697:4;:8;;;55680:25;55672:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;55800:11;;;;;;;;;;;55772:39;;55795:1;55787:5;;;;;;;;;;;55779:4;55772:12;;:20;;;;:::i;:::-;:24;;;;:::i;:::-;:39;;;;55764:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;55880:11;;;;;;;;;;;55852:39;;55875:1;55867:5;;;;;;;;;;;55859:4;55852:12;;:20;;;;:::i;:::-;:24;;;;:::i;:::-;:39;;;;55844:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;55953:4;55945:12;;:5;;:12;;;;:::i;:::-;55932:9;:25;;55924:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;56003:26;56012:10;56024:4;56003:8;:26::i;:::-;56074:4;56040:38;;:20;:32;56061:10;56040:32;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;55442:644;:::o;52047:42::-;;;;;;;;;;;;;:::o;52377:56::-;;;;;;;;;;;;;;;;;:::o;54050:67::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;54105:4:::1;;;;;;;;;;;54104:5;54097:4;;:12;;;;;;;;;;;;;;;;;;54050:67::o:0;24185:339::-;24380:41;24399:12;:10;:12::i;:::-;24413:7;24380:18;:41::i;:::-;24372:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24488:28;24498:4;24504:2;24508:7;24488:9;:28::i;:::-;24185:339;;;:::o;53771:271::-;53830:4;53852:6;53861:1;53852:10;;53847:165;53868:20;:27;;;;53864:1;:31;53847:165;;;53948:5;53921:32;;:20;53942:1;53921:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;53917:84;;;53981:4;53974:11;;;;;53917:84;53897:3;;;;;:::i;:::-;;;;53847:165;;;;54029:5;54022:12;;53771:271;;;;:::o;56542:109::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;56600:10:::1;56592:28;;:51;56621:21;56592:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;56542:109::o:0;51839:43::-;;;;;;;;;;;;;:::o;24595:185::-;24733:39;24750:4;24756:2;24760:7;24733:39;;;;;;;;;;;;:16;:39::i;:::-;24595:185;;;:::o;51739:43::-;;;;;;;;;;;;;:::o;52703:98::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52785:8:::1;52775:7;:18;;;;;;;;;;;;:::i;:::-;;52703:98:::0;:::o;53477:140::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53564:10:::1;53550:11;;:24;;;;;;;;;;;;;;;;;;53599:10;53585:11;;:24;;;;;;;;;;;;;;;;;;53477:140:::0;:::o;54543:891::-;54614:19;;;;;;;;;;;54606:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;54719:25;54733:10;54719:13;:25::i;:::-;54711:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;54836:10;;;;;;;;;;;54828:18;;:4;:18;;;;54820:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;54948:7;;;;;;;;;;;54940:15;;:4;:15;;;;:27;;;;54966:1;54959:4;:8;;;54940:27;54932:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;55095:18;;55087:4;55052:39;;:20;:32;55073:10;55052:32;;;;;;;;;;;;;;;;:39;;;;:::i;:::-;:61;;55044:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;55188:11;;;;;;;;;;;55160:39;;55183:1;55175:5;;;;;;;;;;;55167:4;55160:12;;:20;;;;:::i;:::-;:24;;;;:::i;:::-;:39;;;;55152:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;55281:4;55273:12;;:5;;:12;;;;:::i;:::-;55260:9;:25;;55252:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;55351:26;55360:10;55372:4;55351:8;:26::i;:::-;55422:4;55388:38;;:20;:32;55409:10;55388:32;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;54543:891;:::o;21430:239::-;21502:7;21522:13;21538:7;:16;21546:7;21538:16;;;;;;;;;;;;;;;;;;;;;21522:32;;21590:1;21573:19;;:5;:19;;;;21565:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21656:5;21649:12;;;21430:239;;;:::o;54239:86::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;54310:7:::1;54302:5;;:15;;;;;;;;;;;;;;;;;;54239:86:::0;:::o;51789:43::-;;;;;;;;;;;;;:::o;21160:208::-;21232:7;21277:1;21260:19;;:5;:19;;;;21252:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;21344:9;:16;21354:5;21344:16;;;;;;;;;;;;;;;;21337:23;;21160:208;;;:::o;44060:94::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44125:21:::1;44143:1;44125:9;:21::i;:::-;44060:94::o:0;52096:40::-;;;;;;;;;;;;;:::o;51998:42::-;;;;;;;;;;;;;:::o;43409:87::-;43455:7;43482:6;;;;;;;;;;;43475:13;;43409:87;:::o;53144:115::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53242:9:::1;53221:18;:30;;;;53144:115:::0;:::o;53267:89::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53339:9:::1;53331:5;:17;;;;53267:89:::0;:::o;21905:104::-;21961:13;21994:7;21987:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21905:104;:::o;52143:39::-;;;;;;;;;;;;;:::o;51935:56::-;;;;:::o;23588:295::-;23703:12;:10;:12::i;:::-;23691:24;;:8;:24;;;;23683:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;23803:8;23758:18;:32;23777:12;:10;:12::i;:::-;23758:32;;;;;;;;;;;;;;;:42;23791:8;23758:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;23856:8;23827:48;;23842:12;:10;:12::i;:::-;23827:48;;;23866:8;23827:48;;;;;;:::i;:::-;;;;;;;;23588:295;;:::o;56094:219::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;56203:11:::1;;;;;;;;;;;56175:39;;56198:1;56190:5;;;;;;;;;;;56182:4;56175:12;;:20;;;;:::i;:::-;:24;;;;:::i;:::-;:39;;;;56167:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;56244:19;56253:3;56258:4;56244:8;:19::i;:::-;56301:4;56274:31;;:20;:25;56295:3;56274:25;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;56094:219:::0;;:::o;52606:89::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52679:8:::1;;;;;;;;;;;52678:9;52652:8;;:35;;;;;;;;;;;;;;;;;;52606:89::o:0;51889:39::-;;;;;;;;;;;;;:::o;24851:328::-;25026:41;25045:12;:10;:12::i;:::-;25059:7;25026:18;:41::i;:::-;25018:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;25132:39;25146:4;25152:2;25156:7;25165:5;25132:13;:39::i;:::-;24851:328;;;;:::o;52440:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;52283:39::-;;;;:::o;53364:105::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53451:10:::1;53437:11;;:24;;;;;;;;;;;;;;;;;;53364:105:::0;:::o;53625:138::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53739:16:::1;;53713:20;:42;;;;;;;:::i;:::-;;53625:138:::0;;:::o;56659:401::-;56732:13;56766:16;56774:7;56766;:16::i;:::-;56758:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;56862:5;56850:17;;:8;;;;;;;;;;;:17;;;56847:206;;;56891:14;56884:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;56847:206;56967:1;56949:7;56943:21;;;;;:::i;:::-;;;:25;:98;;;;;;;;;;;;;;;;;56995:10;:8;:10::i;:::-;57007:18;:7;:16;:18::i;:::-;56978:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;56943:98;56936:105;;56659:401;;;;:::o;54333:90::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;54408:7:::1;54398;;:17;;;;;;;;;;;;;;;;;;54333:90:::0;:::o;54125:106::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;54204:19:::1;;;;;;;;;;;54203:20;54181:19;;:42;;;;;;;;;;;;;;;;;;54125:106::o:0;23954:164::-;24051:4;24075:18;:25;24094:5;24075:25;;;;;;;;;;;;;;;:35;24101:8;24075:35;;;;;;;;;;;;;;;;;;;;;;;;;24068:42;;23954:164;;;;:::o;44309:192::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44418:1:::1;44398:22;;:8;:22;;;;44390:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;44474:19;44484:8;44474:9;:19::i;:::-;44309:192:::0;:::o;54431:104::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;54516:11:::1;54503:24;;:10;;:24;;;;;;;;;;;;;;;;;;54431:104:::0;:::o;52809:111::-;43640:12;:10;:12::i;:::-;43629:23;;:7;:5;:7::i;:::-;:23;;;43621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52904:8:::1;52887:14;:25;;;;;;;;;;;;:::i;:::-;;52809:111:::0;:::o;19291:157::-;19376:4;19415:25;19400:40;;;:11;:40;;;;19393:47;;19291:157;;;:::o;26689:127::-;26754:4;26806:1;26778:30;;:7;:16;26786:7;26778:16;;;;;;;;;;;;;;;;;;;;;:30;;;;26771:37;;26689:127;;;:::o;16199:98::-;16252:7;16279:10;16272:17;;16199:98;:::o;30671:174::-;30773:2;30746:15;:24;30762:7;30746:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;30829:7;30825:2;30791:46;;30800:23;30815:7;30800:14;:23::i;:::-;30791:46;;;;;;;;;;;;30671:174;;:::o;56321:213::-;56388:7;56383:144;56405:4;56401:8;;:1;:8;;;56383:144;;;56431:15;56449:5;;;;;;;;;;;56431:23;;56469:24;56479:3;56484:8;56469:24;;:9;:24::i;:::-;56508:5;;:7;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;56383:144;56411:3;;;;;:::i;:::-;;;;56383:144;;;;56321:213;;:::o;26983:348::-;27076:4;27101:16;27109:7;27101;:16::i;:::-;27093:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27177:13;27193:23;27208:7;27193:14;:23::i;:::-;27177:39;;27246:5;27235:16;;:7;:16;;;:51;;;;27279:7;27255:31;;:20;27267:7;27255:11;:20::i;:::-;:31;;;27235:51;:87;;;;27290:32;27307:5;27314:7;27290:16;:32::i;:::-;27235:87;27227:96;;;26983:348;;;;:::o;29975:578::-;30134:4;30107:31;;:23;30122:7;30107:14;:23::i;:::-;:31;;;30099:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;30217:1;30203:16;;:2;:16;;;;30195:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30273:39;30294:4;30300:2;30304:7;30273:20;:39::i;:::-;30377:29;30394:1;30398:7;30377:8;:29::i;:::-;30438:1;30419:9;:15;30429:4;30419:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;30467:1;30450:9;:13;30460:2;30450:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;30498:2;30479:7;:16;30487:7;30479:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;30537:7;30533:2;30518:27;;30527:4;30518:27;;;;;;;;;;;;29975:578;;;:::o;44509:173::-;44565:16;44584:6;;;;;;;;;;;44565:25;;44610:8;44601:6;;:17;;;;;;;;;;;;;;;;;;44665:8;44634:40;;44655:8;44634:40;;;;;;;;;;;;44509:173;;:::o;26061:315::-;26218:28;26228:4;26234:2;26238:7;26218:9;:28::i;:::-;26265:48;26288:4;26294:2;26298:7;26307:5;26265:22;:48::i;:::-;26257:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;26061:315;;;;:::o;52928:208::-;52988:13;53029:5;53017:17;;:8;;;;;;;;;;;:17;;;53014:115;;;53058:14;53051:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53014:115;53110:7;53103:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52928:208;;:::o;16730:723::-;16786:13;17016:1;17007:5;:10;17003:53;;;17034:10;;;;;;;;;;;;;;;;;;;;;17003:53;17066:12;17081:5;17066:20;;17097:14;17122:78;17137:1;17129:4;:9;17122:78;;17155:8;;;;;:::i;:::-;;;;17186:2;17178:10;;;;;:::i;:::-;;;17122:78;;;17210:19;17242:6;17232:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17210:39;;17260:154;17276:1;17267:5;:10;17260:154;;17304:1;17294:11;;;;;:::i;:::-;;;17371:2;17363:5;:10;;;;:::i;:::-;17350:2;:24;;;;:::i;:::-;17337:39;;17320:6;17327;17320:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;17400:2;17391:11;;;;;:::i;:::-;;;17260:154;;;17438:6;17424:21;;;;;16730:723;;;;:::o;27673:110::-;27749:26;27759:2;27763:7;27749:26;;;;;;;;;;;;:9;:26::i;:::-;27673:110;;:::o;32781:126::-;;;;:::o;31410:799::-;31565:4;31586:15;:2;:13;;;:15::i;:::-;31582:620;;;31638:2;31622:36;;;31659:12;:10;:12::i;:::-;31673:4;31679:7;31688:5;31622:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;31618:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31881:1;31864:6;:13;:18;31860:272;;;31907:60;;;;;;;;;;:::i;:::-;;;;;;;;31860:272;32082:6;32076:13;32067:6;32063:2;32059:15;32052:38;31618:529;31755:41;;;31745:51;;;:6;:51;;;;31738:58;;;;;31582:620;32186:4;32179:11;;31410:799;;;;;;;:::o;28010:321::-;28140:18;28146:2;28150:7;28140:5;:18::i;:::-;28191:54;28222:1;28226:2;28230:7;28239:5;28191:22;:54::i;:::-;28169:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;28010:321;;;:::o;8237:387::-;8297:4;8505:12;8572:7;8560:20;8552:28;;8615:1;8608:4;:8;8601:15;;;8237:387;;;:::o;28667:382::-;28761:1;28747:16;;:2;:16;;;;28739:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;28820:16;28828:7;28820;:16::i;:::-;28819:17;28811:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;28882:45;28911:1;28915:2;28919:7;28882:20;:45::i;:::-;28957:1;28940:9;:13;28950:2;28940:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;28988:2;28969:7;:16;28977:7;28969:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;29033:7;29029:2;29008:33;;29025:1;29008:33;;;;;;;;;;;;28667:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::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;869:367::-;942:8;952:6;1002:3;995:4;987:6;983:17;979:27;969:2;;1020:1;1017;1010:12;969:2;1056:6;1043:20;1033:30;;1086:18;1078:6;1075:30;1072:2;;;1118:1;1115;1108:12;1072:2;1155:4;1147:6;1143:17;1131:29;;1209:3;1201:4;1193:6;1189:17;1179:8;1175:32;1172:41;1169:2;;;1226:1;1223;1216:12;1169:2;959:277;;;;;:::o;1242:133::-;1285:5;1323:6;1310:20;1301:29;;1339:30;1363:5;1339:30;:::i;:::-;1291:84;;;;:::o;1381:137::-;1426:5;1464:6;1451:20;1442:29;;1480:32;1506:5;1480:32;:::i;:::-;1432:86;;;;:::o;1524:141::-;1580:5;1611:6;1605:13;1596:22;;1627:32;1653:5;1627:32;:::i;:::-;1586:79;;;;:::o;1684:271::-;1739:5;1788:3;1781:4;1773:6;1769:17;1765:27;1755:2;;1806:1;1803;1796:12;1755:2;1846:6;1833:20;1871:78;1945:3;1937:6;1930:4;1922:6;1918:17;1871:78;:::i;:::-;1862:87;;1745:210;;;;;:::o;1975:273::-;2031:5;2080:3;2073:4;2065:6;2061:17;2057:27;2047:2;;2098:1;2095;2088:12;2047:2;2138:6;2125:20;2163:79;2238:3;2230:6;2223:4;2215:6;2211:17;2163:79;:::i;:::-;2154:88;;2037:211;;;;;:::o;2254:137::-;2299:5;2337:6;2324:20;2315:29;;2353:32;2379:5;2353:32;:::i;:::-;2305:86;;;;:::o;2397:139::-;2443:5;2481:6;2468:20;2459:29;;2497:33;2524:5;2497:33;:::i;:::-;2449:87;;;;:::o;2542:135::-;2586:5;2624:6;2611:20;2602:29;;2640:31;2665:5;2640:31;:::i;:::-;2592:85;;;;:::o;2683:262::-;2742:6;2791:2;2779:9;2770:7;2766:23;2762:32;2759:2;;;2807:1;2804;2797:12;2759:2;2850:1;2875:53;2920:7;2911:6;2900:9;2896:22;2875:53;:::i;:::-;2865:63;;2821:117;2749:196;;;;:::o;2951:407::-;3019:6;3027;3076:2;3064:9;3055:7;3051:23;3047:32;3044:2;;;3092:1;3089;3082:12;3044:2;3135:1;3160:53;3205:7;3196:6;3185:9;3181:22;3160:53;:::i;:::-;3150:63;;3106:117;3262:2;3288:53;3333:7;3324:6;3313:9;3309:22;3288:53;:::i;:::-;3278:63;;3233:118;3034:324;;;;;:::o;3364:552::-;3441:6;3449;3457;3506:2;3494:9;3485:7;3481:23;3477:32;3474:2;;;3522:1;3519;3512:12;3474:2;3565:1;3590:53;3635:7;3626:6;3615:9;3611:22;3590:53;:::i;:::-;3580:63;;3536:117;3692:2;3718:53;3763:7;3754:6;3743:9;3739:22;3718:53;:::i;:::-;3708:63;;3663:118;3820:2;3846:53;3891:7;3882:6;3871:9;3867:22;3846:53;:::i;:::-;3836:63;;3791:118;3464:452;;;;;:::o;3922:809::-;4017:6;4025;4033;4041;4090:3;4078:9;4069:7;4065:23;4061:33;4058:2;;;4107:1;4104;4097:12;4058:2;4150:1;4175:53;4220:7;4211:6;4200:9;4196:22;4175:53;:::i;:::-;4165:63;;4121:117;4277:2;4303:53;4348:7;4339:6;4328:9;4324:22;4303:53;:::i;:::-;4293:63;;4248:118;4405:2;4431:53;4476:7;4467:6;4456:9;4452:22;4431:53;:::i;:::-;4421:63;;4376:118;4561:2;4550:9;4546:18;4533:32;4592:18;4584:6;4581:30;4578:2;;;4624:1;4621;4614:12;4578:2;4652:62;4706:7;4697:6;4686:9;4682:22;4652:62;:::i;:::-;4642:72;;4504:220;4048:683;;;;;;;:::o;4737:401::-;4802:6;4810;4859:2;4847:9;4838:7;4834:23;4830:32;4827:2;;;4875:1;4872;4865:12;4827:2;4918:1;4943:53;4988:7;4979:6;4968:9;4964:22;4943:53;:::i;:::-;4933:63;;4889:117;5045:2;5071:50;5113:7;5104:6;5093:9;5089:22;5071:50;:::i;:::-;5061:60;;5016:115;4817:321;;;;;:::o;5144:407::-;5212:6;5220;5269:2;5257:9;5248:7;5244:23;5240:32;5237:2;;;5285:1;5282;5275:12;5237:2;5328:1;5353:53;5398:7;5389:6;5378:9;5374:22;5353:53;:::i;:::-;5343:63;;5299:117;5455:2;5481:53;5526:7;5517:6;5506:9;5502:22;5481:53;:::i;:::-;5471:63;;5426:118;5227:324;;;;;:::o;5557:403::-;5623:6;5631;5680:2;5668:9;5659:7;5655:23;5651:32;5648:2;;;5696:1;5693;5686:12;5648:2;5739:1;5764:53;5809:7;5800:6;5789:9;5785:22;5764:53;:::i;:::-;5754:63;;5710:117;5866:2;5892:51;5935:7;5926:6;5915:9;5911:22;5892:51;:::i;:::-;5882:61;;5837:116;5638:322;;;;;:::o;5966:425::-;6052:6;6060;6109:2;6097:9;6088:7;6084:23;6080:32;6077:2;;;6125:1;6122;6115:12;6077:2;6196:1;6185:9;6181:17;6168:31;6226:18;6218:6;6215:30;6212:2;;;6258:1;6255;6248:12;6212:2;6294:80;6366:7;6357:6;6346:9;6342:22;6294:80;:::i;:::-;6276:98;;;;6139:245;6067:324;;;;;:::o;6397:260::-;6455:6;6504:2;6492:9;6483:7;6479:23;6475:32;6472:2;;;6520:1;6517;6510:12;6472:2;6563:1;6588:52;6632:7;6623:6;6612:9;6608:22;6588:52;:::i;:::-;6578:62;;6534:116;6462:195;;;;:::o;6663:282::-;6732:6;6781:2;6769:9;6760:7;6756:23;6752:32;6749:2;;;6797:1;6794;6787:12;6749:2;6840:1;6865:63;6920:7;6911:6;6900:9;6896:22;6865:63;:::i;:::-;6855:73;;6811:127;6739:206;;;;:::o;6951:375::-;7020:6;7069:2;7057:9;7048:7;7044:23;7040:32;7037:2;;;7085:1;7082;7075:12;7037:2;7156:1;7145:9;7141:17;7128:31;7186:18;7178:6;7175:30;7172:2;;;7218:1;7215;7208:12;7172:2;7246:63;7301:7;7292:6;7281:9;7277:22;7246:63;:::i;:::-;7236:73;;7099:220;7027:299;;;;:::o;7332:260::-;7390:6;7439:2;7427:9;7418:7;7414:23;7410:32;7407:2;;;7455:1;7452;7445:12;7407:2;7498:1;7523:52;7567:7;7558:6;7547:9;7543:22;7523:52;:::i;:::-;7513:62;;7469:116;7397:195;;;;:::o;7598:262::-;7657:6;7706:2;7694:9;7685:7;7681:23;7677:32;7674:2;;;7722:1;7719;7712:12;7674:2;7765:1;7790:53;7835:7;7826:6;7815:9;7811:22;7790:53;:::i;:::-;7780:63;;7736:117;7664:196;;;;:::o;7866:258::-;7923:6;7972:2;7960:9;7951:7;7947:23;7943:32;7940:2;;;7988:1;7985;7978:12;7940:2;8031:1;8056:51;8099:7;8090:6;8079:9;8075:22;8056:51;:::i;:::-;8046:61;;8002:115;7930:194;;;;:::o;8130:118::-;8217:24;8235:5;8217:24;:::i;:::-;8212:3;8205:37;8195:53;;:::o;8254:109::-;8335:21;8350:5;8335:21;:::i;:::-;8330:3;8323:34;8313:50;;:::o;8369:360::-;8455:3;8483:38;8515:5;8483:38;:::i;:::-;8537:70;8600:6;8595:3;8537:70;:::i;:::-;8530:77;;8616:52;8661:6;8656:3;8649:4;8642:5;8638:16;8616:52;:::i;:::-;8693:29;8715:6;8693:29;:::i;:::-;8688:3;8684:39;8677:46;;8459:270;;;;;:::o;8735:364::-;8823:3;8851:39;8884:5;8851:39;:::i;:::-;8906:71;8970:6;8965:3;8906:71;:::i;:::-;8899:78;;8986:52;9031:6;9026:3;9019:4;9012:5;9008:16;8986:52;:::i;:::-;9063:29;9085:6;9063:29;:::i;:::-;9058:3;9054:39;9047:46;;8827:272;;;;;:::o;9105:377::-;9211:3;9239:39;9272:5;9239:39;:::i;:::-;9294:89;9376:6;9371:3;9294:89;:::i;:::-;9287:96;;9392:52;9437:6;9432:3;9425:4;9418:5;9414:16;9392:52;:::i;:::-;9469:6;9464:3;9460:16;9453:23;;9215:267;;;;;:::o;9488:366::-;9630:3;9651:67;9715:2;9710:3;9651:67;:::i;:::-;9644:74;;9727:93;9816:3;9727:93;:::i;:::-;9845:2;9840:3;9836:12;9829:19;;9634:220;;;:::o;9860:366::-;10002:3;10023:67;10087:2;10082:3;10023:67;:::i;:::-;10016:74;;10099:93;10188:3;10099:93;:::i;:::-;10217:2;10212:3;10208:12;10201:19;;10006:220;;;:::o;10232:366::-;10374:3;10395:67;10459:2;10454:3;10395:67;:::i;:::-;10388:74;;10471:93;10560:3;10471:93;:::i;:::-;10589:2;10584:3;10580:12;10573:19;;10378:220;;;:::o;10604:366::-;10746:3;10767:67;10831:2;10826:3;10767:67;:::i;:::-;10760:74;;10843:93;10932:3;10843:93;:::i;:::-;10961:2;10956:3;10952:12;10945:19;;10750:220;;;:::o;10976:366::-;11118:3;11139:67;11203:2;11198:3;11139:67;:::i;:::-;11132:74;;11215:93;11304:3;11215:93;:::i;:::-;11333:2;11328:3;11324:12;11317:19;;11122:220;;;:::o;11348:366::-;11490:3;11511:67;11575:2;11570:3;11511:67;:::i;:::-;11504:74;;11587:93;11676:3;11587:93;:::i;:::-;11705:2;11700:3;11696:12;11689:19;;11494:220;;;:::o;11720:366::-;11862:3;11883:67;11947:2;11942:3;11883:67;:::i;:::-;11876:74;;11959:93;12048:3;11959:93;:::i;:::-;12077:2;12072:3;12068:12;12061:19;;11866:220;;;:::o;12092:366::-;12234:3;12255:67;12319:2;12314:3;12255:67;:::i;:::-;12248:74;;12331:93;12420:3;12331:93;:::i;:::-;12449:2;12444:3;12440:12;12433:19;;12238:220;;;:::o;12464:366::-;12606:3;12627:67;12691:2;12686:3;12627:67;:::i;:::-;12620:74;;12703:93;12792:3;12703:93;:::i;:::-;12821:2;12816:3;12812:12;12805:19;;12610:220;;;:::o;12836:366::-;12978:3;12999:67;13063:2;13058:3;12999:67;:::i;:::-;12992:74;;13075:93;13164:3;13075:93;:::i;:::-;13193:2;13188:3;13184:12;13177:19;;12982:220;;;:::o;13208:366::-;13350:3;13371:67;13435:2;13430:3;13371:67;:::i;:::-;13364:74;;13447:93;13536:3;13447:93;:::i;:::-;13565:2;13560:3;13556:12;13549:19;;13354:220;;;:::o;13580:366::-;13722:3;13743:67;13807:2;13802:3;13743:67;:::i;:::-;13736:74;;13819:93;13908:3;13819:93;:::i;:::-;13937:2;13932:3;13928:12;13921:19;;13726:220;;;:::o;13952:366::-;14094:3;14115:67;14179:2;14174:3;14115:67;:::i;:::-;14108:74;;14191:93;14280:3;14191:93;:::i;:::-;14309:2;14304:3;14300:12;14293:19;;14098:220;;;:::o;14324:366::-;14466:3;14487:67;14551:2;14546:3;14487:67;:::i;:::-;14480:74;;14563:93;14652:3;14563:93;:::i;:::-;14681:2;14676:3;14672:12;14665:19;;14470:220;;;:::o;14696:366::-;14838:3;14859:67;14923:2;14918:3;14859:67;:::i;:::-;14852:74;;14935:93;15024:3;14935:93;:::i;:::-;15053:2;15048:3;15044:12;15037:19;;14842:220;;;:::o;15068:366::-;15210:3;15231:67;15295:2;15290:3;15231:67;:::i;:::-;15224:74;;15307:93;15396:3;15307:93;:::i;:::-;15425:2;15420:3;15416:12;15409:19;;15214:220;;;:::o;15440:366::-;15582:3;15603:67;15667:2;15662:3;15603:67;:::i;:::-;15596:74;;15679:93;15768:3;15679:93;:::i;:::-;15797:2;15792:3;15788:12;15781:19;;15586:220;;;:::o;15812:400::-;15972:3;15993:84;16075:1;16070:3;15993:84;:::i;:::-;15986:91;;16086:93;16175:3;16086:93;:::i;:::-;16204:1;16199:3;16195:11;16188:18;;15976:236;;;:::o;16218:366::-;16360:3;16381:67;16445:2;16440:3;16381:67;:::i;:::-;16374:74;;16457:93;16546:3;16457:93;:::i;:::-;16575:2;16570:3;16566:12;16559:19;;16364:220;;;:::o;16590:366::-;16732:3;16753:67;16817:2;16812:3;16753:67;:::i;:::-;16746:74;;16829:93;16918:3;16829:93;:::i;:::-;16947:2;16942:3;16938:12;16931:19;;16736:220;;;:::o;16962:366::-;17104:3;17125:67;17189:2;17184:3;17125:67;:::i;:::-;17118:74;;17201:93;17290:3;17201:93;:::i;:::-;17319:2;17314:3;17310:12;17303:19;;17108:220;;;:::o;17334:366::-;17476:3;17497:67;17561:2;17556:3;17497:67;:::i;:::-;17490:74;;17573:93;17662:3;17573:93;:::i;:::-;17691:2;17686:3;17682:12;17675:19;;17480:220;;;:::o;17706:366::-;17848:3;17869:67;17933:2;17928:3;17869:67;:::i;:::-;17862:74;;17945:93;18034:3;17945:93;:::i;:::-;18063:2;18058:3;18054:12;18047:19;;17852:220;;;:::o;18078:366::-;18220:3;18241:67;18305:2;18300:3;18241:67;:::i;:::-;18234:74;;18317:93;18406:3;18317:93;:::i;:::-;18435:2;18430:3;18426:12;18419:19;;18224:220;;;:::o;18450:115::-;18535:23;18552:5;18535:23;:::i;:::-;18530:3;18523:36;18513:52;;:::o;18571:118::-;18658:24;18676:5;18658:24;:::i;:::-;18653:3;18646:37;18636:53;;:::o;18695:112::-;18778:22;18794:5;18778:22;:::i;:::-;18773:3;18766:35;18756:51;;:::o;18813:701::-;19094:3;19116:95;19207:3;19198:6;19116:95;:::i;:::-;19109:102;;19228:95;19319:3;19310:6;19228:95;:::i;:::-;19221:102;;19340:148;19484:3;19340:148;:::i;:::-;19333:155;;19505:3;19498:10;;19098:416;;;;;:::o;19520:222::-;19613:4;19651:2;19640:9;19636:18;19628:26;;19664:71;19732:1;19721:9;19717:17;19708:6;19664:71;:::i;:::-;19618:124;;;;:::o;19748:640::-;19943:4;19981:3;19970:9;19966:19;19958:27;;19995:71;20063:1;20052:9;20048:17;20039:6;19995:71;:::i;:::-;20076:72;20144:2;20133:9;20129:18;20120:6;20076:72;:::i;:::-;20158;20226:2;20215:9;20211:18;20202:6;20158:72;:::i;:::-;20277:9;20271:4;20267:20;20262:2;20251:9;20247:18;20240:48;20305:76;20376:4;20367:6;20305:76;:::i;:::-;20297:84;;19948:440;;;;;;;:::o;20394:210::-;20481:4;20519:2;20508:9;20504:18;20496:26;;20532:65;20594:1;20583:9;20579:17;20570:6;20532:65;:::i;:::-;20486:118;;;;:::o;20610:313::-;20723:4;20761:2;20750:9;20746:18;20738:26;;20810:9;20804:4;20800:20;20796:1;20785:9;20781:17;20774:47;20838:78;20911:4;20902:6;20838:78;:::i;:::-;20830:86;;20728:195;;;;:::o;20929:419::-;21095:4;21133:2;21122:9;21118:18;21110:26;;21182:9;21176:4;21172:20;21168:1;21157:9;21153:17;21146:47;21210:131;21336:4;21210:131;:::i;:::-;21202:139;;21100:248;;;:::o;21354:419::-;21520:4;21558:2;21547:9;21543:18;21535:26;;21607:9;21601:4;21597:20;21593:1;21582:9;21578:17;21571:47;21635:131;21761:4;21635:131;:::i;:::-;21627:139;;21525:248;;;:::o;21779:419::-;21945:4;21983:2;21972:9;21968:18;21960:26;;22032:9;22026:4;22022:20;22018:1;22007:9;22003:17;21996:47;22060:131;22186:4;22060:131;:::i;:::-;22052:139;;21950:248;;;:::o;22204:419::-;22370:4;22408:2;22397:9;22393:18;22385:26;;22457:9;22451:4;22447:20;22443:1;22432:9;22428:17;22421:47;22485:131;22611:4;22485:131;:::i;:::-;22477:139;;22375:248;;;:::o;22629:419::-;22795:4;22833:2;22822:9;22818:18;22810:26;;22882:9;22876:4;22872:20;22868:1;22857:9;22853:17;22846:47;22910:131;23036:4;22910:131;:::i;:::-;22902:139;;22800:248;;;:::o;23054:419::-;23220:4;23258:2;23247:9;23243:18;23235:26;;23307:9;23301:4;23297:20;23293:1;23282:9;23278:17;23271:47;23335:131;23461:4;23335:131;:::i;:::-;23327:139;;23225:248;;;:::o;23479:419::-;23645:4;23683:2;23672:9;23668:18;23660:26;;23732:9;23726:4;23722:20;23718:1;23707:9;23703:17;23696:47;23760:131;23886:4;23760:131;:::i;:::-;23752:139;;23650:248;;;:::o;23904:419::-;24070:4;24108:2;24097:9;24093:18;24085:26;;24157:9;24151:4;24147:20;24143:1;24132:9;24128:17;24121:47;24185:131;24311:4;24185:131;:::i;:::-;24177:139;;24075:248;;;:::o;24329:419::-;24495:4;24533:2;24522:9;24518:18;24510:26;;24582:9;24576:4;24572:20;24568:1;24557:9;24553:17;24546:47;24610:131;24736:4;24610:131;:::i;:::-;24602:139;;24500:248;;;:::o;24754:419::-;24920:4;24958:2;24947:9;24943:18;24935:26;;25007:9;25001:4;24997:20;24993:1;24982:9;24978:17;24971:47;25035:131;25161:4;25035:131;:::i;:::-;25027:139;;24925:248;;;:::o;25179:419::-;25345:4;25383:2;25372:9;25368:18;25360:26;;25432:9;25426:4;25422:20;25418:1;25407:9;25403:17;25396:47;25460:131;25586:4;25460:131;:::i;:::-;25452:139;;25350:248;;;:::o;25604:419::-;25770:4;25808:2;25797:9;25793:18;25785:26;;25857:9;25851:4;25847:20;25843:1;25832:9;25828:17;25821:47;25885:131;26011:4;25885:131;:::i;:::-;25877:139;;25775:248;;;:::o;26029:419::-;26195:4;26233:2;26222:9;26218:18;26210:26;;26282:9;26276:4;26272:20;26268:1;26257:9;26253:17;26246:47;26310:131;26436:4;26310:131;:::i;:::-;26302:139;;26200:248;;;:::o;26454:419::-;26620:4;26658:2;26647:9;26643:18;26635:26;;26707:9;26701:4;26697:20;26693:1;26682:9;26678:17;26671:47;26735:131;26861:4;26735:131;:::i;:::-;26727:139;;26625:248;;;:::o;26879:419::-;27045:4;27083:2;27072:9;27068:18;27060:26;;27132:9;27126:4;27122:20;27118:1;27107:9;27103:17;27096:47;27160:131;27286:4;27160:131;:::i;:::-;27152:139;;27050:248;;;:::o;27304:419::-;27470:4;27508:2;27497:9;27493:18;27485:26;;27557:9;27551:4;27547:20;27543:1;27532:9;27528:17;27521:47;27585:131;27711:4;27585:131;:::i;:::-;27577:139;;27475:248;;;:::o;27729:419::-;27895:4;27933:2;27922:9;27918:18;27910:26;;27982:9;27976:4;27972:20;27968:1;27957:9;27953:17;27946:47;28010:131;28136:4;28010:131;:::i;:::-;28002:139;;27900:248;;;:::o;28154:419::-;28320:4;28358:2;28347:9;28343:18;28335:26;;28407:9;28401:4;28397:20;28393:1;28382:9;28378:17;28371:47;28435:131;28561:4;28435:131;:::i;:::-;28427:139;;28325:248;;;:::o;28579:419::-;28745:4;28783:2;28772:9;28768:18;28760:26;;28832:9;28826:4;28822:20;28818:1;28807:9;28803:17;28796:47;28860:131;28986:4;28860:131;:::i;:::-;28852:139;;28750:248;;;:::o;29004:419::-;29170:4;29208:2;29197:9;29193:18;29185:26;;29257:9;29251:4;29247:20;29243:1;29232:9;29228:17;29221:47;29285:131;29411:4;29285:131;:::i;:::-;29277:139;;29175:248;;;:::o;29429:419::-;29595:4;29633:2;29622:9;29618:18;29610:26;;29682:9;29676:4;29672:20;29668:1;29657:9;29653:17;29646:47;29710:131;29836:4;29710:131;:::i;:::-;29702:139;;29600:248;;;:::o;29854:419::-;30020:4;30058:2;30047:9;30043:18;30035:26;;30107:9;30101:4;30097:20;30093:1;30082:9;30078:17;30071:47;30135:131;30261:4;30135:131;:::i;:::-;30127:139;;30025:248;;;:::o;30279:419::-;30445:4;30483:2;30472:9;30468:18;30460:26;;30532:9;30526:4;30522:20;30518:1;30507:9;30503:17;30496:47;30560:131;30686:4;30560:131;:::i;:::-;30552:139;;30450:248;;;:::o;30704:218::-;30795:4;30833:2;30822:9;30818:18;30810:26;;30846:69;30912:1;30901:9;30897:17;30888:6;30846:69;:::i;:::-;30800:122;;;;:::o;30928:222::-;31021:4;31059:2;31048:9;31044:18;31036:26;;31072:71;31140:1;31129:9;31125:17;31116:6;31072:71;:::i;:::-;31026:124;;;;:::o;31156:214::-;31245:4;31283:2;31272:9;31268:18;31260:26;;31296:67;31360:1;31349:9;31345:17;31336:6;31296:67;:::i;:::-;31250:120;;;;:::o;31376:129::-;31410:6;31437:20;;:::i;:::-;31427:30;;31466:33;31494:4;31486:6;31466:33;:::i;:::-;31417:88;;;:::o;31511:75::-;31544:6;31577:2;31571:9;31561:19;;31551:35;:::o;31592:307::-;31653:4;31743:18;31735:6;31732:30;31729:2;;;31765:18;;:::i;:::-;31729:2;31803:29;31825:6;31803:29;:::i;:::-;31795:37;;31887:4;31881;31877:15;31869:23;;31658:241;;;:::o;31905:308::-;31967:4;32057:18;32049:6;32046:30;32043:2;;;32079:18;;:::i;:::-;32043:2;32117:29;32139:6;32117:29;:::i;:::-;32109:37;;32201:4;32195;32191:15;32183:23;;31972:241;;;:::o;32219:98::-;32270:6;32304:5;32298:12;32288:22;;32277:40;;;:::o;32323:99::-;32375:6;32409:5;32403:12;32393:22;;32382:40;;;:::o;32428:168::-;32511:11;32545:6;32540:3;32533:19;32585:4;32580:3;32576:14;32561:29;;32523:73;;;;:::o;32602:169::-;32686:11;32720:6;32715:3;32708:19;32760:4;32755:3;32751:14;32736:29;;32698:73;;;;:::o;32777:148::-;32879:11;32916:3;32901:18;;32891:34;;;;:::o;32931:242::-;32970:3;32989:19;33006:1;32989:19;:::i;:::-;32984:24;;33022:19;33039:1;33022:19;:::i;:::-;33017:24;;33115:1;33107:6;33103:14;33100:1;33097:21;33094:2;;;33121:18;;:::i;:::-;33094:2;33165:1;33162;33158:9;33151:16;;32974:199;;;;:::o;33179:305::-;33219:3;33238:20;33256:1;33238:20;:::i;:::-;33233:25;;33272:20;33290:1;33272:20;:::i;:::-;33267:25;;33426:1;33358:66;33354:74;33351:1;33348:81;33345:2;;;33432:18;;:::i;:::-;33345:2;33476:1;33473;33469:9;33462:16;;33223:261;;;;:::o;33490:185::-;33530:1;33547:20;33565:1;33547:20;:::i;:::-;33542:25;;33581:20;33599:1;33581:20;:::i;:::-;33576:25;;33620:1;33610:2;;33625:18;;:::i;:::-;33610:2;33667:1;33664;33660:9;33655:14;;33532:143;;;;:::o;33681:348::-;33721:7;33744:20;33762:1;33744:20;:::i;:::-;33739:25;;33778:20;33796:1;33778:20;:::i;:::-;33773:25;;33966:1;33898:66;33894:74;33891:1;33888:81;33883:1;33876:9;33869:17;33865:105;33862:2;;;33973:18;;:::i;:::-;33862:2;34021:1;34018;34014:9;34003:20;;33729:300;;;;:::o;34035:188::-;34074:4;34094:19;34111:1;34094:19;:::i;:::-;34089:24;;34127:19;34144:1;34127:19;:::i;:::-;34122:24;;34165:1;34162;34159:8;34156:2;;;34170:18;;:::i;:::-;34156:2;34215:1;34212;34208:9;34200:17;;34079:144;;;;:::o;34229:191::-;34269:4;34289:20;34307:1;34289:20;:::i;:::-;34284:25;;34323:20;34341:1;34323:20;:::i;:::-;34318:25;;34362:1;34359;34356:8;34353:2;;;34367:18;;:::i;:::-;34353:2;34412:1;34409;34405:9;34397:17;;34274:146;;;;:::o;34426:96::-;34463:7;34492:24;34510:5;34492:24;:::i;:::-;34481:35;;34471:51;;;:::o;34528:90::-;34562:7;34605:5;34598:13;34591:21;34580:32;;34570:48;;;:::o;34624:149::-;34660:7;34700:66;34693:5;34689:78;34678:89;;34668:105;;;:::o;34779:89::-;34815:7;34855:6;34848:5;34844:18;34833:29;;34823:45;;;:::o;34874:126::-;34911:7;34951:42;34944:5;34940:54;34929:65;;34919:81;;;:::o;35006:77::-;35043:7;35072:5;35061:16;;35051:32;;;:::o;35089:86::-;35124:7;35164:4;35157:5;35153:16;35142:27;;35132:43;;;:::o;35181:154::-;35265:6;35260:3;35255;35242:30;35327:1;35318:6;35313:3;35309:16;35302:27;35232:103;;;:::o;35341:307::-;35409:1;35419:113;35433:6;35430:1;35427:13;35419:113;;;35518:1;35513:3;35509:11;35503:18;35499:1;35494:3;35490:11;35483:39;35455:2;35452:1;35448:10;35443:15;;35419:113;;;35550:6;35547:1;35544:13;35541:2;;;35630:1;35621:6;35616:3;35612:16;35605:27;35541:2;35390:258;;;;:::o;35654:320::-;35698:6;35735:1;35729:4;35725:12;35715:22;;35782:1;35776:4;35772:12;35803:18;35793:2;;35859:4;35851:6;35847:17;35837:27;;35793:2;35921;35913:6;35910:14;35890:18;35887:38;35884:2;;;35940:18;;:::i;:::-;35884:2;35705:269;;;;:::o;35980:281::-;36063:27;36085:4;36063:27;:::i;:::-;36055:6;36051:40;36193:6;36181:10;36178:22;36157:18;36145:10;36142:34;36139:62;36136:2;;;36204:18;;:::i;:::-;36136:2;36244:10;36240:2;36233:22;36023:238;;;:::o;36267:171::-;36305:3;36328:23;36345:5;36328:23;:::i;:::-;36319:32;;36373:6;36366:5;36363:17;36360:2;;;36383:18;;:::i;:::-;36360:2;36430:1;36423:5;36419:13;36412:20;;36309:129;;;:::o;36444:233::-;36483:3;36506:24;36524:5;36506:24;:::i;:::-;36497:33;;36552:66;36545:5;36542:77;36539:2;;;36622:18;;:::i;:::-;36539:2;36669:1;36662:5;36658:13;36651:20;;36487:190;;;:::o;36683:167::-;36720:3;36743:22;36759:5;36743:22;:::i;:::-;36734:31;;36787:4;36780:5;36777:15;36774:2;;;36795:18;;:::i;:::-;36774:2;36842:1;36835:5;36831:13;36824:20;;36724:126;;;:::o;36856:176::-;36888:1;36905:20;36923:1;36905:20;:::i;:::-;36900:25;;36939:20;36957:1;36939:20;:::i;:::-;36934:25;;36978:1;36968:2;;36983:18;;:::i;:::-;36968:2;37024:1;37021;37017:9;37012:14;;36890:142;;;;:::o;37038:180::-;37086:77;37083:1;37076:88;37183:4;37180:1;37173:15;37207:4;37204:1;37197:15;37224:180;37272:77;37269:1;37262:88;37369:4;37366:1;37359:15;37393:4;37390:1;37383:15;37410:180;37458:77;37455:1;37448:88;37555:4;37552:1;37545:15;37579:4;37576:1;37569:15;37596:180;37644:77;37641:1;37634:88;37741:4;37738:1;37731:15;37765:4;37762:1;37755:15;37782:102;37823:6;37874:2;37870:7;37865:2;37858:5;37854:14;37850:28;37840:38;;37830:54;;;:::o;37890:164::-;38030:16;38026:1;38018:6;38014:14;38007:40;37996:58;:::o;38060:172::-;38200:24;38196:1;38188:6;38184:14;38177:48;38166:66;:::o;38238:237::-;38378:34;38374:1;38366:6;38362:14;38355:58;38447:20;38442:2;38434:6;38430:15;38423:45;38344:131;:::o;38481:225::-;38621:34;38617:1;38609:6;38605:14;38598:58;38690:8;38685:2;38677:6;38673:15;38666:33;38587:119;:::o;38712:178::-;38852:30;38848:1;38840:6;38836:14;38829:54;38818:72;:::o;38896:176::-;39036:28;39032:1;39024:6;39020:14;39013:52;39002:70;:::o;39078:176::-;39218:28;39214:1;39206:6;39202:14;39195:52;39184:70;:::o;39260:163::-;39400:15;39396:1;39388:6;39384:14;39377:39;39366:57;:::o;39429:223::-;39569:34;39565:1;39557:6;39553:14;39546:58;39638:6;39633:2;39625:6;39621:15;39614:31;39535:117;:::o;39658:175::-;39798:27;39794:1;39786:6;39782:14;39775:51;39764:69;:::o;39839:231::-;39979:34;39975:1;39967:6;39963:14;39956:58;40048:14;40043:2;40035:6;40031:15;40024:39;39945:125;:::o;40076:169::-;40216:21;40212:1;40204:6;40200:14;40193:45;40182:63;:::o;40251:243::-;40391:34;40387:1;40379:6;40375:14;40368:58;40460:26;40455:2;40447:6;40443:15;40436:51;40357:137;:::o;40500:229::-;40640:34;40636:1;40628:6;40624:14;40617:58;40709:12;40704:2;40696:6;40692:15;40685:37;40606:123;:::o;40735:228::-;40875:34;40871:1;40863:6;40859:14;40852:58;40944:11;40939:2;40931:6;40927:15;40920:36;40841:122;:::o;40969:182::-;41109:34;41105:1;41097:6;41093:14;41086:58;41075:76;:::o;41157:231::-;41297:34;41293:1;41285:6;41281:14;41274:58;41366:14;41361:2;41353:6;41349:15;41342:39;41263:125;:::o;41394:155::-;41534:7;41530:1;41522:6;41518:14;41511:31;41500:49;:::o;41555:182::-;41695:34;41691:1;41683:6;41679:14;41672:58;41661:76;:::o;41743:228::-;41883:34;41879:1;41871:6;41867:14;41860:58;41952:11;41947:2;41939:6;41935:15;41928:36;41849:122;:::o;41977:173::-;42117:25;42113:1;42105:6;42101:14;42094:49;42083:67;:::o;42156:234::-;42296:34;42292:1;42284:6;42280:14;42273:58;42365:17;42360:2;42352:6;42348:15;42341:42;42262:128;:::o;42396:220::-;42536:34;42532:1;42524:6;42520:14;42513:58;42605:3;42600:2;42592:6;42588:15;42581:28;42502:114;:::o;42622:236::-;42762:34;42758:1;42750:6;42746:14;42739:58;42831:19;42826:2;42818:6;42814:15;42807:44;42728:130;:::o;42864:122::-;42937:24;42955:5;42937:24;:::i;:::-;42930:5;42927:35;42917:2;;42976:1;42973;42966:12;42917:2;42907:79;:::o;42992:116::-;43062:21;43077:5;43062:21;:::i;:::-;43055:5;43052:32;43042:2;;43098:1;43095;43088:12;43042:2;43032:76;:::o;43114:120::-;43186:23;43203:5;43186:23;:::i;:::-;43179:5;43176:34;43166:2;;43224:1;43221;43214:12;43166:2;43156:78;:::o;43240:120::-;43312:23;43329:5;43312:23;:::i;:::-;43305:5;43302:34;43292:2;;43350:1;43347;43340:12;43292:2;43282:78;:::o;43366:122::-;43439:24;43457:5;43439:24;:::i;:::-;43432:5;43429:35;43419:2;;43478:1;43475;43468:12;43419:2;43409:79;:::o;43494:118::-;43565:22;43581:5;43565:22;:::i;:::-;43558:5;43555:33;43545:2;;43602:1;43599;43592:12;43545:2;43535:77;:::o
Swarm Source
ipfs://623f299a8c7032e603cea7ca9340086f37a5d79318e2bf274a14e246886c4a0e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,268.54 | 4.7 | $15,362.15 |
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.