Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 7 from a total of 7 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Set Approval For... | 12792023 | 1682 days ago | IN | 0 ETH | 0.00152321 | ||||
| Withdraw | 12752868 | 1689 days ago | IN | 0 ETH | 0.00030293 | ||||
| Buy | 12752840 | 1689 days ago | IN | 0.05 ETH | 0.01322556 | ||||
| Mint Bunch | 12752836 | 1689 days ago | IN | 0 ETH | 0.00492299 | ||||
| Buy | 12752824 | 1689 days ago | IN | 0.001 ETH | 0.00147098 | ||||
| Set Min Price | 12752800 | 1689 days ago | IN | 0 ETH | 0.00031528 | ||||
| Set Sale Enabled | 12752798 | 1689 days ago | IN | 0 ETH | 0.00045848 |
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 12752868 | 1689 days ago | 0.051 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SpaceShibasTest
Compiler Version
v0.8.6+commit.11564f7e
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-07-03
*/
/**
*Submitted for verification at Etherscan.io on 2021-06-30
*/
// File: @openzeppelin/contracts/utils/introspection/IERC165.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
// File: @openzeppelin/contracts/token/ERC721/IERC721.sol
pragma solidity ^0.8.0;
/**
* @dev Required interface of an ERC721 compliant contract.
*/
interface IERC721 is IERC165 {
/**
* @dev Emitted when `tokenId` token is transferred from `from` to `to`.
*/
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
*/
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
*/
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
/**
* @dev Returns the number of tokens in ``owner``'s account.
*/
function balanceOf(address owner) external view returns (uint256 balance);
/**
* @dev Returns the owner of the `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function ownerOf(uint256 tokenId) external view returns (address owner);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(address from, address to, uint256 tokenId) external;
/**
* @dev Transfers `tokenId` token from `from` to `to`.
*
* WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 tokenId) external;
/**
* @dev Gives permission to `to` to transfer `tokenId` token to another account.
* The approval is cleared when the token is transferred.
*
* Only a single account can be approved at a time, so approving the zero address clears previous approvals.
*
* Requirements:
*
* - The caller must own the token or be an approved operator.
* - `tokenId` must exist.
*
* Emits an {Approval} event.
*/
function approve(address to, uint256 tokenId) external;
/**
* @dev Returns the account approved for `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function getApproved(uint256 tokenId) external view returns (address operator);
/**
* @dev Approve or remove `operator` as an operator for the caller.
* Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
*
* Requirements:
*
* - The `operator` cannot be the caller.
*
* Emits an {ApprovalForAll} event.
*/
function setApprovalForAll(address operator, bool _approved) external;
/**
* @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
*
* See {setApprovalForAll}
*/
function isApprovedForAll(address owner, address operator) external view returns (bool);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}
// File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol
pragma solidity ^0.8.0;
/**
* @title ERC721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC721 asset contracts.
*/
interface IERC721Receiver {
/**
* @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
* by `operator` from `from`, this function is called.
*
* It must return its Solidity selector to confirm the token transfer.
* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
*
* The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
*/
function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}
// File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol
pragma solidity ^0.8.0;
/**
* @title ERC-721 Non-Fungible Token Standard, optional metadata extension
* @dev See https://eips.ethereum.org/EIPS/eip-721
*/
interface IERC721Metadata is IERC721 {
/**
* @dev Returns the token collection name.
*/
function name() external view returns (string memory);
/**
* @dev Returns the token collection symbol.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
*/
function tokenURI(uint256 tokenId) external view returns (string memory);
}
// File: @openzeppelin/contracts/utils/Address.sol
pragma solidity ^0.8.0;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly { size := extcodesize(account) }
return size > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain`call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.call{ value: value }(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
// solhint-disable-next-line no-inline-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
// File: @openzeppelin/contracts/utils/Context.sol
pragma solidity ^0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
// File: @openzeppelin/contracts/utils/Strings.sol
pragma solidity ^0.8.0;
/**
* @dev String operations.
*/
library Strings {
bytes16 private constant alphabet = "0123456789abcdef";
/**
* @dev Converts a `uint256` to its ASCII `string` decimal representation.
*/
function toString(uint256 value) internal pure returns (string memory) {
// Inspired by OraclizeAPI's implementation - MIT licence
// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol
if (value == 0) {
return "0";
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
}
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
value /= 10;
}
return string(buffer);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
*/
function toHexString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0x00";
}
uint256 temp = value;
uint256 length = 0;
while (temp != 0) {
length++;
temp >>= 8;
}
return toHexString(value, length);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
*/
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = alphabet[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
}
// File: @openzeppelin/contracts/utils/introspection/ERC165.sol
pragma solidity ^0.8.0;
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
* for the additional interface id that will be supported. For example:
*
* ```solidity
* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
* }
* ```
*
* Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
*/
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
// File: @openzeppelin/contracts/token/ERC721/ERC721.sol
pragma solidity ^0.8.0;
/**
* @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
* the Metadata extension, but not including the Enumerable extension, which is available separately as
* {ERC721Enumerable}.
*/
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
using Address for address;
using Strings for uint256;
// Token name
string private _name;
// Token symbol
string private _symbol;
// Mapping from token ID to owner address
mapping (uint256 => address) private _owners;
// Mapping owner address to token count
mapping (address => uint256) private _balances;
// Mapping from token ID to approved address
mapping (uint256 => address) private _tokenApprovals;
// Mapping from owner to operator approvals
mapping (address => mapping (address => bool)) private _operatorApprovals;
/**
* @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
*/
constructor (string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return interfaceId == type(IERC721).interfaceId
|| interfaceId == type(IERC721Metadata).interfaceId
|| super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC721-balanceOf}.
*/
function balanceOf(address owner) public view virtual override returns (uint256) {
require(owner != address(0), "ERC721: balance query for the zero address");
return _balances[owner];
}
/**
* @dev See {IERC721-ownerOf}.
*/
function ownerOf(uint256 tokenId) public view virtual override returns (address) {
address owner = _owners[tokenId];
require(owner != address(0), "ERC721: owner query for nonexistent token");
return owner;
}
/**
* @dev See {IERC721Metadata-name}.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev See {IERC721Metadata-symbol}.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev See {IERC721Metadata-tokenURI}.
*/
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
string memory baseURI = _baseURI();
return bytes(baseURI).length > 0
? string(abi.encodePacked(baseURI, tokenId.toString()))
: '';
}
/**
* @dev Base URI for computing {tokenURI}. Empty by default, can be overriden
* in child contracts.
*/
function _baseURI() internal view virtual returns (string memory) {
return "";
}
/**
* @dev See {IERC721-approve}.
*/
function approve(address to, uint256 tokenId) public virtual override {
address owner = ERC721.ownerOf(tokenId);
require(to != owner, "ERC721: approval to current owner");
require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()),
"ERC721: approve caller is not owner nor approved for all"
);
_approve(to, tokenId);
}
/**
* @dev See {IERC721-getApproved}.
*/
function getApproved(uint256 tokenId) public view virtual override returns (address) {
require(_exists(tokenId), "ERC721: approved query for nonexistent token");
return _tokenApprovals[tokenId];
}
/**
* @dev See {IERC721-setApprovalForAll}.
*/
function setApprovalForAll(address operator, bool approved) public virtual override {
require(operator != _msgSender(), "ERC721: approve to caller");
_operatorApprovals[_msgSender()][operator] = approved;
emit ApprovalForAll(_msgSender(), operator, approved);
}
/**
* @dev See {IERC721-isApprovedForAll}.
*/
function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
return _operatorApprovals[owner][operator];
}
/**
* @dev See {IERC721-transferFrom}.
*/
function transferFrom(address from, address to, uint256 tokenId) public virtual override {
//solhint-disable-next-line max-line-length
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
_transfer(from, to, tokenId);
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {
safeTransferFrom(from, to, tokenId, "");
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
_safeTransfer(from, to, tokenId, _data);
}
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* `_data` is additional data, it has no specified format and it is sent in call to `to`.
*
* This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
* implement alternative mechanisms to perform token transfer, such as signature-based.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {
_transfer(from, to, tokenId);
require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
}
/**
* @dev Returns whether `tokenId` exists.
*
* Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
*
* Tokens start existing when they are minted (`_mint`),
* and stop existing when they are burned (`_burn`).
*/
function _exists(uint256 tokenId) internal view virtual returns (bool) {
return _owners[tokenId] != address(0);
}
/**
* @dev Returns whether `spender` is allowed to manage `tokenId`.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
require(_exists(tokenId), "ERC721: operator query for nonexistent token");
address owner = ERC721.ownerOf(tokenId);
return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
}
/**
* @dev Safely mints `tokenId` and transfers it to `to`.
*
* Requirements:
*
* - `tokenId` must not exist.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function _safeMint(address to, uint256 tokenId) internal virtual {
_safeMint(to, tokenId, "");
}
/**
* @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
* forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
*/
function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {
_mint(to, tokenId);
require(_checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
}
/**
* @dev Mints `tokenId` and transfers it to `to`.
*
* WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
*
* Requirements:
*
* - `tokenId` must not exist.
* - `to` cannot be the zero address.
*
* Emits a {Transfer} event.
*/
function _mint(address to, uint256 tokenId) internal virtual {
require(to != address(0), "ERC721: mint to the zero address");
require(!_exists(tokenId), "ERC721: token already minted");
_beforeTokenTransfer(address(0), to, tokenId);
_balances[to] += 1;
_owners[tokenId] = to;
emit Transfer(address(0), to, tokenId);
}
/**
* @dev Destroys `tokenId`.
* The approval is cleared when the token is burned.
*
* Requirements:
*
* - `tokenId` must exist.
*
* Emits a {Transfer} event.
*/
function _burn(uint256 tokenId) internal virtual {
address owner = ERC721.ownerOf(tokenId);
_beforeTokenTransfer(owner, address(0), tokenId);
// Clear approvals
_approve(address(0), tokenId);
_balances[owner] -= 1;
delete _owners[tokenId];
emit Transfer(owner, address(0), tokenId);
}
/**
* @dev Transfers `tokenId` from `from` to `to`.
* As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
*
* Emits a {Transfer} event.
*/
function _transfer(address from, address to, uint256 tokenId) internal virtual {
require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
require(to != address(0), "ERC721: transfer to the zero address");
_beforeTokenTransfer(from, to, tokenId);
// Clear approvals from the previous owner
_approve(address(0), tokenId);
_balances[from] -= 1;
_balances[to] += 1;
_owners[tokenId] = to;
emit Transfer(from, to, tokenId);
}
/**
* @dev Approve `to` to operate on `tokenId`
*
* Emits a {Approval} event.
*/
function _approve(address to, uint256 tokenId) internal virtual {
_tokenApprovals[tokenId] = to;
emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
}
/**
* @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
* The call is not executed if the target address is not a contract.
*
* @param from address representing the previous owner of the given token ID
* @param to target address that will receive the tokens
* @param tokenId uint256 ID of the token to be transferred
* @param _data bytes optional data to send along with the call
* @return bool whether the call correctly returned the expected magic value
*/
function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)
private returns (bool)
{
if (to.isContract()) {
try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
return retval == IERC721Receiver(to).onERC721Received.selector;
} catch (bytes memory reason) {
if (reason.length == 0) {
revert("ERC721: transfer to non ERC721Receiver implementer");
} else {
// solhint-disable-next-line no-inline-assembly
assembly {
revert(add(32, reason), mload(reason))
}
}
}
} else {
return true;
}
}
/**
* @dev Hook that is called before any token transfer. This includes minting
* and burning.
*
* Calling conditions:
*
* - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
* transferred to `to`.
* - When `from` is zero, `tokenId` will be minted for `to`.
* - When `to` is zero, ``from``'s `tokenId` will be burned.
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { }
}
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);
}
pragma solidity ^0.8.0;
/**
* @dev This implements an optional extension of {ERC721} defined in the EIP that adds
* enumerability of all the token ids in the contract as well as all token ids owned by each
* account.
*/
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
// Mapping from owner to list of owned token IDs
mapping(address => mapping(uint256 => uint256)) private _ownedTokens;
// Mapping from token ID to index of the owner tokens list
mapping(uint256 => uint256) private _ownedTokensIndex;
// Array with all token ids, used for enumeration
uint256[] private _allTokens;
// Mapping from token id to position in the allTokens array
mapping(uint256 => uint256) private _allTokensIndex;
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
return interfaceId == type(IERC721Enumerable).interfaceId
|| super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
*/
function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
return _ownedTokens[owner][index];
}
/**
* @dev See {IERC721Enumerable-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _allTokens.length;
}
/**
* @dev See {IERC721Enumerable-tokenByIndex}.
*/
function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
return _allTokens[index];
}
/**
* @dev Hook that is called before any token transfer. This includes minting
* and burning.
*
* Calling conditions:
*
* - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
* transferred to `to`.
* - When `from` is zero, `tokenId` will be minted for `to`.
* - When `to` is zero, ``from``'s `tokenId` will be burned.
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override {
super._beforeTokenTransfer(from, to, tokenId);
if (from == address(0)) {
_addTokenToAllTokensEnumeration(tokenId);
} else if (from != to) {
_removeTokenFromOwnerEnumeration(from, tokenId);
}
if (to == address(0)) {
_removeTokenFromAllTokensEnumeration(tokenId);
} else if (to != from) {
_addTokenToOwnerEnumeration(to, tokenId);
}
}
/**
* @dev Private function to add a token to this extension's ownership-tracking data structures.
* @param to address representing the new owner of the given token ID
* @param tokenId uint256 ID of the token to be added to the tokens list of the given address
*/
function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
uint256 length = ERC721.balanceOf(to);
_ownedTokens[to][length] = tokenId;
_ownedTokensIndex[tokenId] = length;
}
/**
* @dev Private function to add a token to this extension's token tracking data structures.
* @param tokenId uint256 ID of the token to be added to the tokens list
*/
function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
_allTokensIndex[tokenId] = _allTokens.length;
_allTokens.push(tokenId);
}
/**
* @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that
* while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for
* gas optimizations e.g. when performing a transfer operation (avoiding double writes).
* This has O(1) time complexity, but alters the order of the _ownedTokens array.
* @param from address representing the previous owner of the given token ID
* @param tokenId uint256 ID of the token to be removed from the tokens list of the given address
*/
function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
// To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
// then delete the last slot (swap and pop).
uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
uint256 tokenIndex = _ownedTokensIndex[tokenId];
// When the token to delete is the last token, the swap operation is unnecessary
if (tokenIndex != lastTokenIndex) {
uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];
_ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
_ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
}
// This also deletes the contents at the last position of the array
delete _ownedTokensIndex[tokenId];
delete _ownedTokens[from][lastTokenIndex];
}
/**
* @dev Private function to remove a token from this extension's token tracking data structures.
* This has O(1) time complexity, but alters the order of the _allTokens array.
* @param tokenId uint256 ID of the token to be removed from the tokens list
*/
function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
// To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
// then delete the last slot (swap and pop).
uint256 lastTokenIndex = _allTokens.length - 1;
uint256 tokenIndex = _allTokensIndex[tokenId];
// When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
// rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
// an 'if' statement (like in _removeTokenFromOwnerEnumeration)
uint256 lastTokenId = _allTokens[lastTokenIndex];
_allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
_allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
// This also deletes the contents at the last position of the array
delete _allTokensIndex[tokenId];
_allTokens.pop();
}
}
// File: contracts/ThoughtsNFT.sol
pragma solidity ^0.8.0;
contract SpaceShibasTest is ERC721Enumerable {
address public owner;
uint256 public constant MAX_SUPPLY = 10000;
uint256 public minPrice = 1 ether / 20;
bool public saleEnabled;
uint256 public counter = 1;
constructor(string memory name, string memory symbol) ERC721(name, symbol) {
owner = msg.sender;
}
function mintBunch(uint256[] memory toMint) public {
require(msg.sender == owner, "Only owner can mint before sale");
for (uint256 i = 0; i < toMint.length; i++) {
require(toMint[i] != 0 && toMint[i] <= MAX_SUPPLY, "Invalid tokenId");
_mint(msg.sender, toMint[i]);
}
}
function buy(uint256 amountToBuy) public payable {
require(saleEnabled, "Sale has ended");
require(amountToBuy > 0 && amountToBuy <= 10, "Invalid amount");
require(msg.value >= minPrice * amountToBuy, "Not enough ether to buy");
uint256[10] memory tokenIdsToMint;
uint256 tokensToMint;
uint256 i = counter;
while (tokensToMint < amountToBuy) {
if (counter > 10000) {
saleEnabled = false;
break;
}
if (!_exists(i)) {
tokenIdsToMint[tokensToMint] = i;
tokensToMint++;
}
counter = i++;
}
for (uint256 j = 0; j < tokensToMint; j++) {
_mint(msg.sender, tokenIdsToMint[j]);
}
}
function withdraw() public {
require(msg.sender == owner, "Only owner can withdraw");
payable(msg.sender).transfer(address(this).balance);
}
function setSaleEnabled(bool to) public {
require(msg.sender == owner, "Only owner can toggle sale state");
saleEnabled = to;
}
function setCounter(uint256 to) public {
require(msg.sender == owner, "Only owner can set counter");
counter = to;
}
function setMinPrice(uint256 to) public {
require(msg.sender == owner, "Only owner can set prices");
minPrice = to;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_SUPPLY","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":"uint256","name":"amountToBuy","type":"uint256"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"counter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"toMint","type":"uint256[]"}],"name":"mintBunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"saleEnabled","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":"uint256","name":"to","type":"uint256"}],"name":"setCounter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"to","type":"uint256"}],"name":"setMinPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"to","type":"bool"}],"name":"setSaleEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405266b1a2bc2ec50000600b556001600d553480156200002157600080fd5b5060405162002cf938038062002cf98339810160408190526200004491620001ee565b8151829082906200005d90600090602085019062000091565b5080516200007390600190602084019062000091565b5050600a80546001600160a01b0319163317905550620002ab915050565b8280546200009f9062000258565b90600052602060002090601f016020900481019282620000c357600085556200010e565b82601f10620000de57805160ff19168380011785556200010e565b828001600101855582156200010e579182015b828111156200010e578251825591602001919060010190620000f1565b506200011c92915062000120565b5090565b5b808211156200011c576000815560010162000121565b600082601f8301126200014957600080fd5b81516001600160401b038082111562000166576200016662000295565b604051601f8301601f19908116603f0116810190828211818310171562000191576200019162000295565b81604052838152602092508683858801011115620001ae57600080fd5b600091505b83821015620001d25785820183015181830184015290820190620001b3565b83821115620001e45760008385830101525b9695505050505050565b600080604083850312156200020257600080fd5b82516001600160401b03808211156200021a57600080fd5b620002288683870162000137565b935060208501519150808211156200023f57600080fd5b506200024e8582860162000137565b9150509250929050565b600181811c908216806200026d57607f821691505b602082108114156200028f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b612a3e80620002bb6000396000f3fe6080604052600436106101ac5760003560e01c80635ea8cd12116100ec57806395d89b411161008a578063c87b56dd11610064578063c87b56dd146104ab578063d96a094a146104cb578063e45be8eb146104de578063e985e9c5146104f457600080fd5b806395d89b4114610456578063a22cb4651461046b578063b88d4fde1461048b57600080fd5b806370a08231116100c657806370a08231146103cf57806371b9b646146103ef5780638bb5d9c3146104095780638da5cb5b1461042957600080fd5b80635ea8cd121461037957806361bc221a146103995780636352211e146103af57600080fd5b80632ca0dd0d1161015957806332cb6b0c1161013357806332cb6b0c1461030e5780633ccfd60b1461032457806342842e0e146103395780634f6ccce71461035957600080fd5b80632ca0dd0d146102ae5780632f745c59146102ce5780633020a18e146102ee57600080fd5b8063095ea7b31161018a578063095ea7b31461024d57806318160ddd1461026f57806323b872dd1461028e57600080fd5b806301ffc9a7146101b157806306fdde03146101e6578063081812fc14610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc36600461262b565b61054a565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b506101fb6105a6565b6040516101dd9190612740565b34801561021457600080fd5b50610228610223366004612665565b610638565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dd565b34801561025957600080fd5b5061026d610268366004612539565b610717565b005b34801561027b57600080fd5b506008545b6040519081526020016101dd565b34801561029a57600080fd5b5061026d6102a93660046123f5565b6108a4565b3480156102ba57600080fd5b5061026d6102c9366004612563565b610945565b3480156102da57600080fd5b506102806102e9366004612539565b610ab6565b3480156102fa57600080fd5b5061026d610309366004612610565b610b85565b34801561031a57600080fd5b5061028061271081565b34801561033057600080fd5b5061026d610c37565b34801561034557600080fd5b5061026d6103543660046123f5565b610ce7565b34801561036557600080fd5b50610280610374366004612665565b610d02565b34801561038557600080fd5b5061026d610394366004612665565b610dc0565b3480156103a557600080fd5b50610280600d5481565b3480156103bb57600080fd5b506102286103ca366004612665565b610e46565b3480156103db57600080fd5b506102806103ea3660046123a7565b610ef8565b3480156103fb57600080fd5b50600c546101d19060ff1681565b34801561041557600080fd5b5061026d610424366004612665565b610fc6565b34801561043557600080fd5b50600a546102289073ffffffffffffffffffffffffffffffffffffffff1681565b34801561046257600080fd5b506101fb61104c565b34801561047757600080fd5b5061026d61048636600461250f565b61105b565b34801561049757600080fd5b5061026d6104a6366004612431565b611172565b3480156104b757600080fd5b506101fb6104c6366004612665565b61121a565b61026d6104d9366004612665565b611337565b3480156104ea57600080fd5b50610280600b5481565b34801561050057600080fd5b506101d161050f3660046123c2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d630000000000000000000000000000000000000000000000000000000014806105a057506105a08261158b565b92915050565b6060600080546105b59061284e565b80601f01602080910402602001604051908101604052809291908181526020018280546105e19061284e565b801561062e5780601f106106035761010080835404028352916020019161062e565b820191906000526020600020905b81548152906001019060200180831161061157829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061072282610e46565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b3373ffffffffffffffffffffffffffffffffffffffff821614806108095750610809813361050f565b610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016106e5565b61089f838361166e565b505050565b6108ae338261170e565b61093a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016106e5565b61089f83838361187e565b600a5473ffffffffffffffffffffffffffffffffffffffff1633146109c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4f6e6c79206f776e65722063616e206d696e74206265666f72652073616c650060448201526064016106e5565b60005b8151811015610ab2578181815181106109e4576109e461297c565b6020026020010151600014158015610a175750612710828281518110610a0c57610a0c61297c565b602002602001015111155b610a7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f496e76616c696420746f6b656e4964000000000000000000000000000000000060448201526064016106e5565b610aa033838381518110610a9357610a9361297c565b6020026020010151611af0565b80610aaa816128a2565b9150506109c9565b5050565b6000610ac183610ef8565b8210610b4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084016106e5565b5073ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205490565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610c06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f6e6c79206f776e65722063616e20746f67676c652073616c6520737461746560448201526064016106e5565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610cb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4f6e6c79206f776e65722063616e20776974686472617700000000000000000060448201526064016106e5565b60405133904780156108fc02916000818181858888f19350505050158015610ce4573d6000803e3d6000fd5b50565b61089f83838360405180602001604052806000815250611172565b6000610d0d60085490565b8210610d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016106e5565b60088281548110610dae57610dae61297c565b90600052602060002001549050919050565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610e41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f6e6c79206f776e65722063616e20736574207072696365730000000000000060448201526064016106e5565b600b55565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806105a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016106e5565b600073ffffffffffffffffffffffffffffffffffffffff8216610f9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016106e5565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b600a5473ffffffffffffffffffffffffffffffffffffffff163314611047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f6e6c79206f776e65722063616e2073657420636f756e74657200000000000060448201526064016106e5565b600d55565b6060600180546105b59061284e565b73ffffffffffffffffffffffffffffffffffffffff82163314156110db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106e5565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61117c338361170e565b611208576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016106e5565b61121484848484611cbe565b50505050565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166112ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e000000000000000000000000000000000060648201526084016106e5565b60006112e560408051602081019091526000815290565b905060008151116113055760405180602001604052806000815250611330565b8061130f84611d61565b6040516020016113209291906126c8565b6040516020818303038152906040525b9392505050565b600c5460ff166113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f53616c652068617320656e64656400000000000000000000000000000000000060448201526064016106e5565b6000811180156113b45750600a8111155b61141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c696420616d6f756e7400000000000000000000000000000000000060448201526064016106e5565b80600b5461142891906127ce565b341015611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f7420656e6f75676820657468657220746f2062757900000000000000000060448201526064016106e5565b61149961234f565b600d546000905b8382101561154757612710600d5411156114e157600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055611547565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1661153057808383600a811061151d5761151d61297c565b60200201528161152c816128a2565b9250505b8061153a816128a2565b9150600d819055506114a0565b60005b8281101561158457611572338583600a81106115685761156861297c565b6020020151611af0565b8061157c816128a2565b91505061154a565b5050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061161e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806105a057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146105a0565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906116c882610e46565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166117bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016106e5565b60006117ca83610e46565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061183957508373ffffffffffffffffffffffffffffffffffffffff1661182184610638565b73ffffffffffffffffffffffffffffffffffffffff16145b80611876575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff1661189e82610e46565b73ffffffffffffffffffffffffffffffffffffffff1614611941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e000000000000000000000000000000000000000000000060648201526084016106e5565b73ffffffffffffffffffffffffffffffffffffffff82166119e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106e5565b6119ee838383611e93565b6119f960008261166e565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290611a2f90849061280b565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290611a6a9084906127a2565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b73ffffffffffffffffffffffffffffffffffffffff8216611b6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106e5565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611bf9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106e5565b611c0560008383611e93565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290611c3b9084906127a2565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b611cc984848461187e565b611cd584848484611f99565b611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106e5565b606081611da157505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611dcb5780611db5816128a2565b9150611dc49050600a836127ba565b9150611da5565b60008167ffffffffffffffff811115611de657611de66129ab565b6040519080825280601f01601f191660200182016040528015611e10576020820181803683370190505b5090505b841561187657611e2560018361280b565b9150611e32600a866128db565b611e3d9060306127a2565b60f81b818381518110611e5257611e5261297c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611e8c600a866127ba565b9450611e14565b73ffffffffffffffffffffffffffffffffffffffff8316611efb57611ef681600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611f38565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f3857611f388382612198565b73ffffffffffffffffffffffffffffffffffffffff8216611f5c5761089f8161224f565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461089f5761089f82826122fe565b600073ffffffffffffffffffffffffffffffffffffffff84163b1561218d576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906120109033908990889088906004016126f7565b602060405180830381600087803b15801561202a57600080fd5b505af1925050508015612078575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261207591810190612648565b60015b612142573d8080156120a6576040519150601f19603f3d011682016040523d82523d6000602084013e6120ab565b606091505b50805161213a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106e5565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611876565b506001949350505050565b600060016121a584610ef8565b6121af919061280b565b60008381526007602052604090205490915080821461220f5773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b50600091825260076020908152604080842084905573ffffffffffffffffffffffffffffffffffffffff9094168352600681528383209183525290812055565b6008546000906122619060019061280b565b600083815260096020526040812054600880549394509092849081106122895761228961297c565b9060005260206000200154905080600883815481106122aa576122aa61297c565b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806122e2576122e261294d565b6001900381819060005260206000200160009055905550505050565b600061230983610ef8565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b604051806101400160405280600a906020820280368337509192915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461239257600080fd5b919050565b8035801515811461239257600080fd5b6000602082840312156123b957600080fd5b6113308261236e565b600080604083850312156123d557600080fd5b6123de8361236e565b91506123ec6020840161236e565b90509250929050565b60008060006060848603121561240a57600080fd5b6124138461236e565b92506124216020850161236e565b9150604084013590509250925092565b6000806000806080858703121561244757600080fd5b6124508561236e565b9350602061245f81870161236e565b935060408601359250606086013567ffffffffffffffff8082111561248357600080fd5b818801915088601f83011261249757600080fd5b8135818111156124a9576124a96129ab565b6124d9847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612753565b915080825289848285010111156124ef57600080fd5b808484018584013760008482840101525080935050505092959194509250565b6000806040838503121561252257600080fd5b61252b8361236e565b91506123ec60208401612397565b6000806040838503121561254c57600080fd5b6125558361236e565b946020939093013593505050565b6000602080838503121561257657600080fd5b823567ffffffffffffffff8082111561258e57600080fd5b818501915085601f8301126125a257600080fd5b8135818111156125b4576125b46129ab565b8060051b91506125c5848301612753565b8181528481019084860184860187018a10156125e057600080fd5b600095505b838610156126035780358352600195909501949186019186016125e5565b5098975050505050505050565b60006020828403121561262257600080fd5b61133082612397565b60006020828403121561263d57600080fd5b8135611330816129da565b60006020828403121561265a57600080fd5b8151611330816129da565b60006020828403121561267757600080fd5b5035919050565b60008151808452612696816020860160208601612822565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600083516126da818460208801612822565b8351908301906126ee818360208801612822565b01949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152612736608083018461267e565b9695505050505050565b602081526000611330602083018461267e565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561279a5761279a6129ab565b604052919050565b600082198211156127b5576127b56128ef565b500190565b6000826127c9576127c961291e565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612806576128066128ef565b500290565b60008282101561281d5761281d6128ef565b500390565b60005b8381101561283d578181015183820152602001612825565b838111156112145750506000910152565b600181811c9082168061286257607f821691505b6020821081141561289c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128d4576128d46128ef565b5060010190565b6000826128ea576128ea61291e565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610ce457600080fdfea26469706673582212201156f820d765d74dd98fbf87d2bfd3d27abdf6888c2dbb160e5da9fa3889e58264736f6c63430008060033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000004546573740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045465737400000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101ac5760003560e01c80635ea8cd12116100ec57806395d89b411161008a578063c87b56dd11610064578063c87b56dd146104ab578063d96a094a146104cb578063e45be8eb146104de578063e985e9c5146104f457600080fd5b806395d89b4114610456578063a22cb4651461046b578063b88d4fde1461048b57600080fd5b806370a08231116100c657806370a08231146103cf57806371b9b646146103ef5780638bb5d9c3146104095780638da5cb5b1461042957600080fd5b80635ea8cd121461037957806361bc221a146103995780636352211e146103af57600080fd5b80632ca0dd0d1161015957806332cb6b0c1161013357806332cb6b0c1461030e5780633ccfd60b1461032457806342842e0e146103395780634f6ccce71461035957600080fd5b80632ca0dd0d146102ae5780632f745c59146102ce5780633020a18e146102ee57600080fd5b8063095ea7b31161018a578063095ea7b31461024d57806318160ddd1461026f57806323b872dd1461028e57600080fd5b806301ffc9a7146101b157806306fdde03146101e6578063081812fc14610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc36600461262b565b61054a565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b506101fb6105a6565b6040516101dd9190612740565b34801561021457600080fd5b50610228610223366004612665565b610638565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dd565b34801561025957600080fd5b5061026d610268366004612539565b610717565b005b34801561027b57600080fd5b506008545b6040519081526020016101dd565b34801561029a57600080fd5b5061026d6102a93660046123f5565b6108a4565b3480156102ba57600080fd5b5061026d6102c9366004612563565b610945565b3480156102da57600080fd5b506102806102e9366004612539565b610ab6565b3480156102fa57600080fd5b5061026d610309366004612610565b610b85565b34801561031a57600080fd5b5061028061271081565b34801561033057600080fd5b5061026d610c37565b34801561034557600080fd5b5061026d6103543660046123f5565b610ce7565b34801561036557600080fd5b50610280610374366004612665565b610d02565b34801561038557600080fd5b5061026d610394366004612665565b610dc0565b3480156103a557600080fd5b50610280600d5481565b3480156103bb57600080fd5b506102286103ca366004612665565b610e46565b3480156103db57600080fd5b506102806103ea3660046123a7565b610ef8565b3480156103fb57600080fd5b50600c546101d19060ff1681565b34801561041557600080fd5b5061026d610424366004612665565b610fc6565b34801561043557600080fd5b50600a546102289073ffffffffffffffffffffffffffffffffffffffff1681565b34801561046257600080fd5b506101fb61104c565b34801561047757600080fd5b5061026d61048636600461250f565b61105b565b34801561049757600080fd5b5061026d6104a6366004612431565b611172565b3480156104b757600080fd5b506101fb6104c6366004612665565b61121a565b61026d6104d9366004612665565b611337565b3480156104ea57600080fd5b50610280600b5481565b34801561050057600080fd5b506101d161050f3660046123c2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d630000000000000000000000000000000000000000000000000000000014806105a057506105a08261158b565b92915050565b6060600080546105b59061284e565b80601f01602080910402602001604051908101604052809291908181526020018280546105e19061284e565b801561062e5780601f106106035761010080835404028352916020019161062e565b820191906000526020600020905b81548152906001019060200180831161061157829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061072282610e46565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b3373ffffffffffffffffffffffffffffffffffffffff821614806108095750610809813361050f565b610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016106e5565b61089f838361166e565b505050565b6108ae338261170e565b61093a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016106e5565b61089f83838361187e565b600a5473ffffffffffffffffffffffffffffffffffffffff1633146109c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4f6e6c79206f776e65722063616e206d696e74206265666f72652073616c650060448201526064016106e5565b60005b8151811015610ab2578181815181106109e4576109e461297c565b6020026020010151600014158015610a175750612710828281518110610a0c57610a0c61297c565b602002602001015111155b610a7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f496e76616c696420746f6b656e4964000000000000000000000000000000000060448201526064016106e5565b610aa033838381518110610a9357610a9361297c565b6020026020010151611af0565b80610aaa816128a2565b9150506109c9565b5050565b6000610ac183610ef8565b8210610b4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084016106e5565b5073ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205490565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610c06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f6e6c79206f776e65722063616e20746f67676c652073616c6520737461746560448201526064016106e5565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610cb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4f6e6c79206f776e65722063616e20776974686472617700000000000000000060448201526064016106e5565b60405133904780156108fc02916000818181858888f19350505050158015610ce4573d6000803e3d6000fd5b50565b61089f83838360405180602001604052806000815250611172565b6000610d0d60085490565b8210610d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016106e5565b60088281548110610dae57610dae61297c565b90600052602060002001549050919050565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610e41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f6e6c79206f776e65722063616e20736574207072696365730000000000000060448201526064016106e5565b600b55565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806105a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016106e5565b600073ffffffffffffffffffffffffffffffffffffffff8216610f9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016106e5565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b600a5473ffffffffffffffffffffffffffffffffffffffff163314611047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f6e6c79206f776e65722063616e2073657420636f756e74657200000000000060448201526064016106e5565b600d55565b6060600180546105b59061284e565b73ffffffffffffffffffffffffffffffffffffffff82163314156110db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106e5565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61117c338361170e565b611208576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016106e5565b61121484848484611cbe565b50505050565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166112ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e000000000000000000000000000000000060648201526084016106e5565b60006112e560408051602081019091526000815290565b905060008151116113055760405180602001604052806000815250611330565b8061130f84611d61565b6040516020016113209291906126c8565b6040516020818303038152906040525b9392505050565b600c5460ff166113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f53616c652068617320656e64656400000000000000000000000000000000000060448201526064016106e5565b6000811180156113b45750600a8111155b61141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c696420616d6f756e7400000000000000000000000000000000000060448201526064016106e5565b80600b5461142891906127ce565b341015611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f7420656e6f75676820657468657220746f2062757900000000000000000060448201526064016106e5565b61149961234f565b600d546000905b8382101561154757612710600d5411156114e157600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055611547565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1661153057808383600a811061151d5761151d61297c565b60200201528161152c816128a2565b9250505b8061153a816128a2565b9150600d819055506114a0565b60005b8281101561158457611572338583600a81106115685761156861297c565b6020020151611af0565b8061157c816128a2565b91505061154a565b5050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061161e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806105a057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146105a0565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906116c882610e46565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166117bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016106e5565b60006117ca83610e46565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061183957508373ffffffffffffffffffffffffffffffffffffffff1661182184610638565b73ffffffffffffffffffffffffffffffffffffffff16145b80611876575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff1661189e82610e46565b73ffffffffffffffffffffffffffffffffffffffff1614611941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e000000000000000000000000000000000000000000000060648201526084016106e5565b73ffffffffffffffffffffffffffffffffffffffff82166119e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106e5565b6119ee838383611e93565b6119f960008261166e565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290611a2f90849061280b565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290611a6a9084906127a2565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b73ffffffffffffffffffffffffffffffffffffffff8216611b6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106e5565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611bf9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106e5565b611c0560008383611e93565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290611c3b9084906127a2565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b611cc984848461187e565b611cd584848484611f99565b611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106e5565b606081611da157505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611dcb5780611db5816128a2565b9150611dc49050600a836127ba565b9150611da5565b60008167ffffffffffffffff811115611de657611de66129ab565b6040519080825280601f01601f191660200182016040528015611e10576020820181803683370190505b5090505b841561187657611e2560018361280b565b9150611e32600a866128db565b611e3d9060306127a2565b60f81b818381518110611e5257611e5261297c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611e8c600a866127ba565b9450611e14565b73ffffffffffffffffffffffffffffffffffffffff8316611efb57611ef681600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611f38565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f3857611f388382612198565b73ffffffffffffffffffffffffffffffffffffffff8216611f5c5761089f8161224f565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461089f5761089f82826122fe565b600073ffffffffffffffffffffffffffffffffffffffff84163b1561218d576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906120109033908990889088906004016126f7565b602060405180830381600087803b15801561202a57600080fd5b505af1925050508015612078575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261207591810190612648565b60015b612142573d8080156120a6576040519150601f19603f3d011682016040523d82523d6000602084013e6120ab565b606091505b50805161213a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106e5565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611876565b506001949350505050565b600060016121a584610ef8565b6121af919061280b565b60008381526007602052604090205490915080821461220f5773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b50600091825260076020908152604080842084905573ffffffffffffffffffffffffffffffffffffffff9094168352600681528383209183525290812055565b6008546000906122619060019061280b565b600083815260096020526040812054600880549394509092849081106122895761228961297c565b9060005260206000200154905080600883815481106122aa576122aa61297c565b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806122e2576122e261294d565b6001900381819060005260206000200160009055905550505050565b600061230983610ef8565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b604051806101400160405280600a906020820280368337509192915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461239257600080fd5b919050565b8035801515811461239257600080fd5b6000602082840312156123b957600080fd5b6113308261236e565b600080604083850312156123d557600080fd5b6123de8361236e565b91506123ec6020840161236e565b90509250929050565b60008060006060848603121561240a57600080fd5b6124138461236e565b92506124216020850161236e565b9150604084013590509250925092565b6000806000806080858703121561244757600080fd5b6124508561236e565b9350602061245f81870161236e565b935060408601359250606086013567ffffffffffffffff8082111561248357600080fd5b818801915088601f83011261249757600080fd5b8135818111156124a9576124a96129ab565b6124d9847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612753565b915080825289848285010111156124ef57600080fd5b808484018584013760008482840101525080935050505092959194509250565b6000806040838503121561252257600080fd5b61252b8361236e565b91506123ec60208401612397565b6000806040838503121561254c57600080fd5b6125558361236e565b946020939093013593505050565b6000602080838503121561257657600080fd5b823567ffffffffffffffff8082111561258e57600080fd5b818501915085601f8301126125a257600080fd5b8135818111156125b4576125b46129ab565b8060051b91506125c5848301612753565b8181528481019084860184860187018a10156125e057600080fd5b600095505b838610156126035780358352600195909501949186019186016125e5565b5098975050505050505050565b60006020828403121561262257600080fd5b61133082612397565b60006020828403121561263d57600080fd5b8135611330816129da565b60006020828403121561265a57600080fd5b8151611330816129da565b60006020828403121561267757600080fd5b5035919050565b60008151808452612696816020860160208601612822565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600083516126da818460208801612822565b8351908301906126ee818360208801612822565b01949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152612736608083018461267e565b9695505050505050565b602081526000611330602083018461267e565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561279a5761279a6129ab565b604052919050565b600082198211156127b5576127b56128ef565b500190565b6000826127c9576127c961291e565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612806576128066128ef565b500290565b60008282101561281d5761281d6128ef565b500390565b60005b8381101561283d578181015183820152602001612825565b838111156112145750506000910152565b600181811c9082168061286257607f821691505b6020821081141561289c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128d4576128d46128ef565b5060010190565b6000826128ea576128ea61291e565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610ce457600080fdfea26469706673582212201156f820d765d74dd98fbf87d2bfd3d27abdf6888c2dbb160e5da9fa3889e58264736f6c63430008060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000004546573740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045465737400000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name (string): Test
Arg [1] : symbol (string): Test
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [3] : 5465737400000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 5465737400000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
40398:1946:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34204:237;;;;;;;;;;-1:-1:-1;34204:237:0;;;;;:::i;:::-;;:::i;:::-;;;6275:14:1;;6268:22;6250:41;;6238:2;6223:18;34204:237:0;;;;;;;;21584:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;23044:221::-;;;;;;;;;;-1:-1:-1;23044:221:0;;;;;:::i;:::-;;:::i;:::-;;;5539:42:1;5527:55;;;5509:74;;5497:2;5482:18;23044:221:0;5464:125:1;22581:397:0;;;;;;;;;;-1:-1:-1;22581:397:0;;;;;:::i;:::-;;:::i;:::-;;34857:113;;;;;;;;;;-1:-1:-1;34945:10:0;:17;34857:113;;;16275:25:1;;;16263:2;16248:18;34857:113:0;16230:76:1;23934:305:0;;;;;;;;;;-1:-1:-1;23934:305:0;;;;;:::i;:::-;;:::i;40740:301::-;;;;;;;;;;-1:-1:-1;40740:301:0;;;;;:::i;:::-;;:::i;34525:256::-;;;;;;;;;;-1:-1:-1;34525:256:0;;;;;:::i;:::-;;:::i;41926:140::-;;;;;;;;;;-1:-1:-1;41926:140:0;;;;;:::i;:::-;;:::i;40475:42::-;;;;;;;;;;;;40512:5;40475:42;;41766:154;;;;;;;;;;;;;:::i;24310:151::-;;;;;;;;;;-1:-1:-1;24310:151:0;;;;;:::i;:::-;;:::i;35047:233::-;;;;;;;;;;-1:-1:-1;35047:233:0;;;;;:::i;:::-;;:::i;42207:130::-;;;;;;;;;;-1:-1:-1;42207:130:0;;;;;:::i;:::-;;:::i;40593:26::-;;;;;;;;;;;;;;;;21278:239;;;;;;;;;;-1:-1:-1;21278:239:0;;;;;:::i;:::-;;:::i;21008:208::-;;;;;;;;;;-1:-1:-1;21008:208:0;;;;;:::i;:::-;;:::i;40565:23::-;;;;;;;;;;-1:-1:-1;40565:23:0;;;;;;;;42072:129;;;;;;;;;;-1:-1:-1;42072:129:0;;;;;:::i;:::-;;:::i;40450:20::-;;;;;;;;;;-1:-1:-1;40450:20:0;;;;;;;;21753:104;;;;;;;;;;;;;:::i;23337:295::-;;;;;;;;;;-1:-1:-1;23337:295:0;;;;;:::i;:::-;;:::i;24532:285::-;;;;;;;;;;-1:-1:-1;24532:285:0;;;;;:::i;:::-;;:::i;21928:360::-;;;;;;;;;;-1:-1:-1;21928:360:0;;;;;:::i;:::-;;:::i;41047:713::-;;;;;;:::i;:::-;;:::i;40522:38::-;;;;;;;;;;;;;;;;23703:164;;;;;;;;;;-1:-1:-1;23703:164:0;;;;;:::i;:::-;23824:25;;;;23800:4;23824:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;23703:164;34204:237;34306:4;34330:50;;;34345:35;34330:50;;:103;;;34397:36;34421:11;34397:23;:36::i;:::-;34323:110;34204:237;-1:-1:-1;;34204:237:0:o;21584:100::-;21638:13;21671:5;21664:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21584:100;:::o;23044:221::-;23120:7;26373:16;;;:7;:16;;;;;;:30;:16;23140:73;;;;;;;13152:2:1;23140:73:0;;;13134:21:1;13191:2;13171:18;;;13164:30;13230:34;13210:18;;;13203:62;13301:14;13281:18;;;13274:42;13333:19;;23140:73:0;;;;;;;;;-1:-1:-1;23233:24:0;;;;:15;:24;;;;;;;;;23044:221::o;22581:397::-;22662:13;22678:23;22693:7;22678:14;:23::i;:::-;22662:39;;22726:5;22720:11;;:2;:11;;;;22712:57;;;;;;;14746:2:1;22712:57:0;;;14728:21:1;14785:2;14765:18;;;14758:30;14824:34;14804:18;;;14797:62;14895:3;14875:18;;;14868:31;14916:19;;22712:57:0;14718:223:1;22712:57:0;16026:10;22790:21;;;;;:62;;-1:-1:-1;22815:37:0;22832:5;16026:10;23703:164;:::i;22815:37::-;22782:154;;;;;;;11545:2:1;22782:154:0;;;11527:21:1;11584:2;11564:18;;;11557:30;11623:34;11603:18;;;11596:62;11694:26;11674:18;;;11667:54;11738:19;;22782:154:0;11517:246:1;22782:154:0;22949:21;22958:2;22962:7;22949:8;:21::i;:::-;22651:327;22581:397;;:::o;23934:305::-;24095:41;16026:10;24128:7;24095:18;:41::i;:::-;24087:103;;;;;;;15148:2:1;24087:103:0;;;15130:21:1;15187:2;15167:18;;;15160:30;15226:34;15206:18;;;15199:62;15297:19;15277:18;;;15270:47;15334:19;;24087:103:0;15120:239:1;24087:103:0;24203:28;24213:4;24219:2;24223:7;24203:9;:28::i;40740:301::-;40820:5;;;;40806:10;:19;40798:63;;;;;;;6728:2:1;40798:63:0;;;6710:21:1;6767:2;6747:18;;;6740:30;6806:33;6786:18;;;6779:61;6857:18;;40798:63:0;6700:181:1;40798:63:0;40873:9;40868:168;40892:6;:13;40888:1;:17;40868:168;;;40929:6;40936:1;40929:9;;;;;;;;:::i;:::-;;;;;;;40942:1;40929:14;;:41;;;;;40512:5;40947:6;40954:1;40947:9;;;;;;;;:::i;:::-;;;;;;;:23;;40929:41;40921:69;;;;;;;10075:2:1;40921:69:0;;;10057:21:1;10114:2;10094:18;;;10087:30;10153:17;10133:18;;;10126:45;10188:18;;40921:69:0;10047:165:1;40921:69:0;40999:28;41005:10;41017:6;41024:1;41017:9;;;;;;;;:::i;:::-;;;;;;;40999:5;:28::i;:::-;40907:3;;;;:::i;:::-;;;;40868:168;;;;40740:301;:::o;34525:256::-;34622:7;34658:23;34675:5;34658:16;:23::i;:::-;34650:5;:31;34642:87;;;;;;;7088:2:1;34642:87:0;;;7070:21:1;7127:2;7107:18;;;7100:30;7166:34;7146:18;;;7139:62;7237:13;7217:18;;;7210:41;7268:19;;34642:87:0;7060:233:1;34642:87:0;-1:-1:-1;34747:19:0;;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;34525:256::o;41926:140::-;41995:5;;;;41981:10;:19;41973:64;;;;;;;11184:2:1;41973:64:0;;;11166:21:1;;;11203:18;;;11196:30;11262:34;11242:18;;;11235:62;11314:18;;41973:64:0;11156:182:1;41973:64:0;42044:11;:16;;;;;;;;;;;;;41926:140::o;41766:154::-;41822:5;;;;41808:10;:19;41800:55;;;;;;;10832:2:1;41800:55:0;;;10814:21:1;10871:2;10851:18;;;10844:30;10910:25;10890:18;;;10883:53;10953:18;;41800:55:0;10804:173:1;41800:55:0;41862:51;;41870:10;;41891:21;41862:51;;;;;;;;;41891:21;41870:10;41862:51;;;;;;;;;;;;;;;;;;;;;41766:154::o;24310:151::-;24414:39;24431:4;24437:2;24441:7;24414:39;;;;;;;;;;;;:16;:39::i;35047:233::-;35122:7;35158:30;34945:10;:17;;34857:113;35158:30;35150:5;:38;35142:95;;;;;;;15918:2:1;35142:95:0;;;15900:21:1;15957:2;15937:18;;;15930:30;15996:34;15976:18;;;15969:62;16067:14;16047:18;;;16040:42;16099:19;;35142:95:0;15890:234:1;35142:95:0;35255:10;35266:5;35255:17;;;;;;;;:::i;:::-;;;;;;;;;35248:24;;35047:233;;;:::o;42207:130::-;42276:5;;;;42262:10;:19;42254:57;;;;;;;7500:2:1;42254:57:0;;;7482:21:1;7539:2;7519:18;;;7512:30;7578:27;7558:18;;;7551:55;7623:18;;42254:57:0;7472:175:1;42254:57:0;42318:8;:13;42207:130::o;21278:239::-;21350:7;21386:16;;;:7;:16;;;;;;;;21421:19;21413:73;;;;;;;12381:2:1;21413:73:0;;;12363:21:1;12420:2;12400:18;;;12393:30;12459:34;12439:18;;;12432:62;12530:11;12510:18;;;12503:39;12559:19;;21413:73:0;12353:231:1;21008:208:0;21080:7;21108:19;;;21100:74;;;;;;;11970:2:1;21100:74:0;;;11952:21:1;12009:2;11989:18;;;11982:30;12048:34;12028:18;;;12021:62;12119:12;12099:18;;;12092:40;12149:19;;21100:74:0;11942:232:1;21100:74:0;-1:-1:-1;21192:16:0;;;;;;:9;:16;;;;;;;21008:208::o;42072:129::-;42140:5;;;;42126:10;:19;42118:58;;;;;;;13565:2:1;42118:58:0;;;13547:21:1;13604:2;13584:18;;;13577:30;13643:28;13623:18;;;13616:56;13689:18;;42118:58:0;13537:176:1;42118:58:0;42183:7;:12;42072:129::o;21753:104::-;21809:13;21842:7;21835:14;;;;;:::i;23337:295::-;23440:24;;;16026:10;23440:24;;23432:62;;;;;;;9721:2:1;23432:62:0;;;9703:21:1;9760:2;9740:18;;;9733:30;9799:27;9779:18;;;9772:55;9844:18;;23432:62:0;9693:175:1;23432:62:0;16026:10;23507:32;;;;:18;:32;;;;;;;;;:42;;;;;;;;;;;;:53;;;;;;;;;;;;;23576:48;;6250:41:1;;;23507:42:0;;16026:10;23576:48;;6223:18:1;23576:48:0;;;;;;;23337:295;;:::o;24532:285::-;24664:41;16026:10;24697:7;24664:18;:41::i;:::-;24656:103;;;;;;;15148:2:1;24656:103:0;;;15130:21:1;15187:2;15167:18;;;15160:30;15226:34;15206:18;;;15199:62;15297:19;15277:18;;;15270:47;15334:19;;24656:103:0;15120:239:1;24656:103:0;24770:39;24784:4;24790:2;24794:7;24803:5;24770:13;:39::i;:::-;24532:285;;;;:::o;21928:360::-;26349:4;26373:16;;;:7;:16;;;;;;22001:13;;26373:30;:16;22027:76;;;;;;;14330:2:1;22027:76:0;;;14312:21:1;14369:2;14349:18;;;14342:30;14408:34;14388:18;;;14381:62;14479:17;14459:18;;;14452:45;14514:19;;22027:76:0;14302:237:1;22027:76:0;22116:21;22140:10;22502:9;;;;;;;;;-1:-1:-1;22502:9:0;;;22425:94;22140:10;22116:34;;22192:1;22174:7;22168:21;:25;:112;;;;;;;;;;;;;;;;;22233:7;22242:18;:7;:16;:18::i;:::-;22216:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22168:112;22161:119;21928:360;-1:-1:-1;;;21928:360:0:o;41047:713::-;41111:11;;;;41103:38;;;;;;;8973:2:1;41103:38:0;;;8955:21:1;9012:2;8992:18;;;8985:30;9051:16;9031:18;;;9024:44;9085:18;;41103:38:0;8945:164:1;41103:38:0;41170:1;41156:11;:15;:36;;;;;41190:2;41175:11;:17;;41156:36;41148:63;;;;;;;8630:2:1;41148:63:0;;;8612:21:1;8669:2;8649:18;;;8642:30;8708:16;8688:18;;;8681:44;8742:18;;41148:63:0;8602:164:1;41148:63:0;41250:11;41239:8;;:22;;;;:::i;:::-;41226:9;:35;;41218:71;;;;;;;15566:2:1;41218:71:0;;;15548:21:1;15605:2;15585:18;;;15578:30;15644:25;15624:18;;;15617:53;15687:18;;41218:71:0;15538:173:1;41218:71:0;41298:33;;:::i;:::-;41377:7;;41338:20;;41391:253;41413:11;41398:12;:26;41391:253;;;41449:5;41439:7;;:15;41435:77;;;41467:11;:19;;;;;;41497:5;;41435:77;26349:4;26373:16;;;:7;:16;;;;;;:30;:16;41520:95;;41579:1;41548:14;41563:12;41548:28;;;;;;;:::i;:::-;;;;:32;41591:14;;;;:::i;:::-;;;;41520:95;41633:3;;;;:::i;:::-;;;41623:7;:13;;;;41391:253;;;41663:9;41658:97;41682:12;41678:1;:16;41658:97;;;41710:36;41716:10;41728:14;41743:1;41728:17;;;;;;;:::i;:::-;;;;;41710:5;:36::i;:::-;41696:3;;;;:::i;:::-;;;;41658:97;;;;41096:664;;;41047:713;:::o;20652:292::-;20754:4;20778:40;;;20793:25;20778:40;;:105;;-1:-1:-1;20835:48:0;;;20850:33;20835:48;20778:105;:158;;;-1:-1:-1;19276:25:0;19261:40;;;;20900:36;19152:157;30161:174;30236:24;;;;:15;:24;;;;;:29;;;;;;;;;;;;;:24;;30290:23;30236:24;30290:14;:23::i;:::-;30281:46;;;;;;;;;;;;30161:174;;:::o;26578:348::-;26671:4;26373:16;;;:7;:16;;;;;;:30;:16;26688:73;;;;;;;10419:2:1;26688:73:0;;;10401:21:1;10458:2;10438:18;;;10431:30;10497:34;10477:18;;;10470:62;10568:14;10548:18;;;10541:42;10600:19;;26688:73:0;10391:234:1;26688:73:0;26772:13;26788:23;26803:7;26788:14;:23::i;:::-;26772:39;;26841:5;26830:16;;:7;:16;;;:51;;;;26874:7;26850:31;;:20;26862:7;26850:11;:20::i;:::-;:31;;;26830:51;:87;;;-1:-1:-1;23824:25:0;;;;23800:4;23824:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;26885:32;26822:96;26578:348;-1:-1:-1;;;;26578:348:0:o;29499:544::-;29624:4;29597:31;;:23;29612:7;29597:14;:23::i;:::-;:31;;;29589:85;;;;;;;13920:2:1;29589:85:0;;;13902:21:1;13959:2;13939:18;;;13932:30;13998:34;13978:18;;;13971:62;14069:11;14049:18;;;14042:39;14098:19;;29589:85:0;13892:231:1;29589:85:0;29693:16;;;29685:65;;;;;;;9316:2:1;29685:65:0;;;9298:21:1;9355:2;9335:18;;;9328:30;9394:34;9374:18;;;9367:62;9465:6;9445:18;;;9438:34;9489:19;;29685:65:0;9288:226:1;29685:65:0;29763:39;29784:4;29790:2;29794:7;29763:20;:39::i;:::-;29867:29;29884:1;29888:7;29867:8;:29::i;:::-;29909:15;;;;;;;:9;:15;;;;;:20;;29928:1;;29909:15;:20;;29928:1;;29909:20;:::i;:::-;;;;-1:-1:-1;;29940:13:0;;;;;;;:9;:13;;;;;:18;;29957:1;;29940:13;:18;;29957:1;;29940:18;:::i;:::-;;;;-1:-1:-1;;29969:16:0;;;;:7;:16;;;;;;:21;;;;;;;;;;;;;;30008:27;;29969:16;;30008:27;;;;;;;29499:544;;;:::o;28191:382::-;28271:16;;;28263:61;;;;;;;12791:2:1;28263:61:0;;;12773:21:1;;;12810:18;;;12803:30;12869:34;12849:18;;;12842:62;12921:18;;28263:61:0;12763:182:1;28263:61:0;26349:4;26373:16;;;:7;:16;;;;;;:30;:16;:30;28335:58;;;;;;;8273:2:1;28335:58:0;;;8255:21:1;8312:2;8292:18;;;8285:30;8351;8331:18;;;8324:58;8399:18;;28335:58:0;8245:178:1;28335:58:0;28406:45;28435:1;28439:2;28443:7;28406:20;:45::i;:::-;28464:13;;;;;;;:9;:13;;;;;:18;;28481:1;;28464:13;:18;;28481:1;;28464:18;:::i;:::-;;;;-1:-1:-1;;28493:16:0;;;;:7;:16;;;;;;:21;;;;;;;;;;;;;28532:33;;28493:16;;;28532:33;;28493:16;;28532:33;28191:382;;:::o;25699:272::-;25813:28;25823:4;25829:2;25833:7;25813:9;:28::i;:::-;25860:48;25883:4;25889:2;25893:7;25902:5;25860:22;:48::i;:::-;25852:111;;;;;;;7854:2:1;25852:111:0;;;7836:21:1;7893:2;7873:18;;;7866:30;7932:34;7912:18;;;7905:62;8003:20;7983:18;;;7976:48;8041:19;;25852:111:0;7826:240:1;16599:723:0;16655:13;16876:10;16872:53;;-1:-1:-1;;16903:10:0;;;;;;;;;;;;;;;;;;16599:723::o;16872:53::-;16950:5;16935:12;16991:78;16998:9;;16991:78;;17024:8;;;;:::i;:::-;;-1:-1:-1;17047:10:0;;-1:-1:-1;17055:2:0;17047:10;;:::i;:::-;;;16991:78;;;17079:19;17111:6;17101:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17101:17:0;;17079:39;;17129:154;17136:10;;17129:154;;17163:11;17173:1;17163:11;;:::i;:::-;;-1:-1:-1;17232:10:0;17240:2;17232:5;:10;:::i;:::-;17219:24;;:2;:24;:::i;:::-;17206:39;;17189:6;17196;17189:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;17260:11:0;17269:2;17260:11;;:::i;:::-;;;17129:154;;35893:555;36065:18;;;36061:187;;36100:40;36132:7;37275:10;:17;;37248:24;;;;:15;:24;;;;;:44;;;37303:24;;;;;;;;;;;;37171:164;36100:40;36061:187;;;36170:2;36162:10;;:4;:10;;;36158:90;;36189:47;36222:4;36228:7;36189:32;:47::i;:::-;36262:16;;;36258:183;;36295:45;36332:7;36295:36;:45::i;36258:183::-;36368:4;36362:10;;:2;:10;;;36358:83;;36389:40;36417:2;36421:7;36389:27;:40::i;30900:843::-;31021:4;31047:13;;;8432:20;8471:8;31043:693;;31083:72;;;;;:36;;;;;;:72;;16026:10;;31134:4;;31140:7;;31149:5;;31083:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31083:72:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;31079:602;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31329:13:0;;31325:341;;31372:60;;;;;7854:2:1;31372:60:0;;;7836:21:1;7893:2;7873:18;;;7866:30;7932:34;7912:18;;;7905:62;8003:20;7983:18;;;7976:48;8041:19;;31372:60:0;7826:240:1;31325:341:0;31616:6;31610:13;31601:6;31597:2;31593:15;31586:38;31079:602;31206:55;;31216:45;31206:55;;-1:-1:-1;31199:62:0;;31043:693;-1:-1:-1;31720:4:0;30900:843;;;;;;:::o;37962:988::-;38228:22;38278:1;38253:22;38270:4;38253:16;:22::i;:::-;:26;;;;:::i;:::-;38290:18;38311:26;;;:17;:26;;;;;;38228:51;;-1:-1:-1;38444:28:0;;;38440:328;;38511:18;;;38489:19;38511:18;;;:12;:18;;;;;;;;:34;;;;;;;;;38562:30;;;;;;:44;;;38679:30;;:17;:30;;;;;:43;;;38440:328;-1:-1:-1;38864:26:0;;;;:17;:26;;;;;;;;38857:33;;;38908:18;;;;;;:12;:18;;;;;:34;;;;;;;38901:41;37962:988::o;39245:1079::-;39523:10;:17;39498:22;;39523:21;;39543:1;;39523:21;:::i;:::-;39555:18;39576:24;;;:15;:24;;;;;;39949:10;:26;;39498:46;;-1:-1:-1;39576:24:0;;39498:46;;39949:26;;;;;;:::i;:::-;;;;;;;;;39927:48;;40013:11;39988:10;39999;39988:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;40093:28;;;:15;:28;;;;;;;:41;;;40265:24;;;;;40258:31;40300:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;39316:1008;;;39245:1079;:::o;36749:221::-;36834:14;36851:20;36868:2;36851:16;:20::i;:::-;36882:16;;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;36927:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;36749:221:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:196:1:-;82:20;;142:42;131:54;;121:65;;111:2;;200:1;197;190:12;111:2;63:147;;;:::o;215:160::-;280:20;;336:13;;329:21;319:32;;309:2;;365:1;362;355:12;380:186;439:6;492:2;480:9;471:7;467:23;463:32;460:2;;;508:1;505;498:12;460:2;531:29;550:9;531:29;:::i;571:260::-;639:6;647;700:2;688:9;679:7;675:23;671:32;668:2;;;716:1;713;706:12;668:2;739:29;758:9;739:29;:::i;:::-;729:39;;787:38;821:2;810:9;806:18;787:38;:::i;:::-;777:48;;658:173;;;;;:::o;836:328::-;913:6;921;929;982:2;970:9;961:7;957:23;953:32;950:2;;;998:1;995;988:12;950:2;1021:29;1040:9;1021:29;:::i;:::-;1011:39;;1069:38;1103:2;1092:9;1088:18;1069:38;:::i;:::-;1059:48;;1154:2;1143:9;1139:18;1126:32;1116:42;;940:224;;;;;:::o;1169:1039::-;1264:6;1272;1280;1288;1341:3;1329:9;1320:7;1316:23;1312:33;1309:2;;;1358:1;1355;1348:12;1309:2;1381:29;1400:9;1381:29;:::i;:::-;1371:39;;1429:2;1450:38;1484:2;1473:9;1469:18;1450:38;:::i;:::-;1440:48;;1535:2;1524:9;1520:18;1507:32;1497:42;;1590:2;1579:9;1575:18;1562:32;1613:18;1654:2;1646:6;1643:14;1640:2;;;1670:1;1667;1660:12;1640:2;1708:6;1697:9;1693:22;1683:32;;1753:7;1746:4;1742:2;1738:13;1734:27;1724:2;;1775:1;1772;1765:12;1724:2;1811;1798:16;1833:2;1829;1826:10;1823:2;;;1839:18;;:::i;:::-;1881:112;1989:2;1920:66;1913:4;1909:2;1905:13;1901:86;1897:95;1881:112;:::i;:::-;1868:125;;2016:2;2009:5;2002:17;2056:7;2051:2;2046;2042;2038:11;2034:20;2031:33;2028:2;;;2077:1;2074;2067:12;2028:2;2132;2127;2123;2119:11;2114:2;2107:5;2103:14;2090:45;2176:1;2171:2;2166;2159:5;2155:14;2151:23;2144:34;;2197:5;2187:15;;;;;1299:909;;;;;;;:::o;2213:254::-;2278:6;2286;2339:2;2327:9;2318:7;2314:23;2310:32;2307:2;;;2355:1;2352;2345:12;2307:2;2378:29;2397:9;2378:29;:::i;:::-;2368:39;;2426:35;2457:2;2446:9;2442:18;2426:35;:::i;2472:254::-;2540:6;2548;2601:2;2589:9;2580:7;2576:23;2572:32;2569:2;;;2617:1;2614;2607:12;2569:2;2640:29;2659:9;2640:29;:::i;:::-;2630:39;2716:2;2701:18;;;;2688:32;;-1:-1:-1;;;2559:167:1:o;2731:957::-;2815:6;2846:2;2889;2877:9;2868:7;2864:23;2860:32;2857:2;;;2905:1;2902;2895:12;2857:2;2945:9;2932:23;2974:18;3015:2;3007:6;3004:14;3001:2;;;3031:1;3028;3021:12;3001:2;3069:6;3058:9;3054:22;3044:32;;3114:7;3107:4;3103:2;3099:13;3095:27;3085:2;;3136:1;3133;3126:12;3085:2;3172;3159:16;3194:2;3190;3187:10;3184:2;;;3200:18;;:::i;:::-;3246:2;3243:1;3239:10;3229:20;;3269:28;3293:2;3289;3285:11;3269:28;:::i;:::-;3331:15;;;3362:12;;;;3394:11;;;3424;;;3420:20;;3417:33;-1:-1:-1;3414:2:1;;;3463:1;3460;3453:12;3414:2;3485:1;3476:10;;3495:163;3509:2;3506:1;3503:9;3495:163;;;3566:17;;3554:30;;3527:1;3520:9;;;;;3604:12;;;;3636;;3495:163;;;-1:-1:-1;3677:5:1;2826:862;-1:-1:-1;;;;;;;;2826:862:1:o;3693:180::-;3749:6;3802:2;3790:9;3781:7;3777:23;3773:32;3770:2;;;3818:1;3815;3808:12;3770:2;3841:26;3857:9;3841:26;:::i;3878:245::-;3936:6;3989:2;3977:9;3968:7;3964:23;3960:32;3957:2;;;4005:1;4002;3995:12;3957:2;4044:9;4031:23;4063:30;4087:5;4063:30;:::i;4128:249::-;4197:6;4250:2;4238:9;4229:7;4225:23;4221:32;4218:2;;;4266:1;4263;4256:12;4218:2;4298:9;4292:16;4317:30;4341:5;4317:30;:::i;4382:180::-;4441:6;4494:2;4482:9;4473:7;4469:23;4465:32;4462:2;;;4510:1;4507;4500:12;4462:2;-1:-1:-1;4533:23:1;;4452:110;-1:-1:-1;4452:110:1:o;4567:316::-;4608:3;4646:5;4640:12;4673:6;4668:3;4661:19;4689:63;4745:6;4738:4;4733:3;4729:14;4722:4;4715:5;4711:16;4689:63;:::i;:::-;4797:2;4785:15;4802:66;4781:88;4772:98;;;;4872:4;4768:109;;4616:267;-1:-1:-1;;4616:267:1:o;4888:470::-;5067:3;5105:6;5099:13;5121:53;5167:6;5162:3;5155:4;5147:6;5143:17;5121:53;:::i;:::-;5237:13;;5196:16;;;;5259:57;5237:13;5196:16;5293:4;5281:17;;5259:57;:::i;:::-;5332:20;;5075:283;-1:-1:-1;;;;5075:283:1:o;5594:511::-;5788:4;5817:42;5898:2;5890:6;5886:15;5875:9;5868:34;5950:2;5942:6;5938:15;5933:2;5922:9;5918:18;5911:43;;5990:6;5985:2;5974:9;5970:18;5963:34;6033:3;6028:2;6017:9;6013:18;6006:31;6054:45;6094:3;6083:9;6079:19;6071:6;6054:45;:::i;:::-;6046:53;5797:308;-1:-1:-1;;;;;;5797:308:1:o;6302:219::-;6451:2;6440:9;6433:21;6414:4;6471:44;6511:2;6500:9;6496:18;6488:6;6471:44;:::i;16311:334::-;16382:2;16376:9;16438:2;16428:13;;16443:66;16424:86;16412:99;;16541:18;16526:34;;16562:22;;;16523:62;16520:2;;;16588:18;;:::i;:::-;16624:2;16617:22;16356:289;;-1:-1:-1;16356:289:1:o;16650:128::-;16690:3;16721:1;16717:6;16714:1;16711:13;16708:2;;;16727:18;;:::i;:::-;-1:-1:-1;16763:9:1;;16698:80::o;16783:120::-;16823:1;16849;16839:2;;16854:18;;:::i;:::-;-1:-1:-1;16888:9:1;;16829:74::o;16908:228::-;16948:7;17074:1;17006:66;17002:74;16999:1;16996:81;16991:1;16984:9;16977:17;16973:105;16970:2;;;17081:18;;:::i;:::-;-1:-1:-1;17121:9:1;;16960:176::o;17141:125::-;17181:4;17209:1;17206;17203:8;17200:2;;;17214:18;;:::i;:::-;-1:-1:-1;17251:9:1;;17190:76::o;17271:258::-;17343:1;17353:113;17367:6;17364:1;17361:13;17353:113;;;17443:11;;;17437:18;17424:11;;;17417:39;17389:2;17382:10;17353:113;;;17484:6;17481:1;17478:13;17475:2;;;-1:-1:-1;;17519:1:1;17501:16;;17494:27;17324:205::o;17534:437::-;17613:1;17609:12;;;;17656;;;17677:2;;17731:4;17723:6;17719:17;17709:27;;17677:2;17784;17776:6;17773:14;17753:18;17750:38;17747:2;;;17821:77;17818:1;17811:88;17922:4;17919:1;17912:15;17950:4;17947:1;17940:15;17747:2;;17589:382;;;:::o;17976:195::-;18015:3;18046:66;18039:5;18036:77;18033:2;;;18116:18;;:::i;:::-;-1:-1:-1;18163:1:1;18152:13;;18023:148::o;18176:112::-;18208:1;18234;18224:2;;18239:18;;:::i;:::-;-1:-1:-1;18273:9:1;;18214:74::o;18293:184::-;18345:77;18342:1;18335:88;18442:4;18439:1;18432:15;18466:4;18463:1;18456:15;18482:184;18534:77;18531:1;18524:88;18631:4;18628:1;18621:15;18655:4;18652:1;18645:15;18671:184;18723:77;18720:1;18713:88;18820:4;18817:1;18810:15;18844:4;18841:1;18834:15;18860:184;18912:77;18909:1;18902:88;19009:4;19006:1;18999:15;19033:4;19030:1;19023:15;19049:184;19101:77;19098:1;19091:88;19198:4;19195:1;19188:15;19222:4;19219:1;19212:15;19238:177;19323:66;19316:5;19312:78;19305:5;19302:89;19292:2;;19405:1;19402;19395:12
Swarm Source
ipfs://1156f820d765d74dd98fbf87d2bfd3d27abdf6888c2dbb160e5da9fa3889e582
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.