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 25 from a total of 62 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Set Approval For... | 15190259 | 1333 days ago | IN | 0 ETH | 0.00040596 | ||||
| Set Approval For... | 14442709 | 1453 days ago | IN | 0 ETH | 0.00082745 | ||||
| Set Approval For... | 14365965 | 1465 days ago | IN | 0 ETH | 0.00097829 | ||||
| Transfer From | 14328979 | 1471 days ago | IN | 0 ETH | 0.00474277 | ||||
| Set Approval For... | 14313363 | 1474 days ago | IN | 0 ETH | 0.00113624 | ||||
| Transfer From | 14308497 | 1474 days ago | IN | 0 ETH | 0.00462241 | ||||
| Set Approval For... | 14282959 | 1478 days ago | IN | 0 ETH | 0.00223077 | ||||
| Set Approval For... | 14281634 | 1479 days ago | IN | 0 ETH | 0.00133109 | ||||
| Withdraw | 14262020 | 1482 days ago | IN | 0 ETH | 0.00145354 | ||||
| Settle Current A... | 14260340 | 1482 days ago | IN | 0 ETH | 0.01224831 | ||||
| Auction Nft | 14260189 | 1482 days ago | IN | 0.4 ETH | 0.00291135 | ||||
| Auction Nft | 14260188 | 1482 days ago | IN | 0.4 ETH | 0.00444562 | ||||
| Auction Nft | 14260185 | 1482 days ago | IN | 0.34 ETH | 0.00317258 | ||||
| Auction Nft | 14259689 | 1482 days ago | IN | 0.21 ETH | 0.00360766 | ||||
| Auction Nft | 14259158 | 1482 days ago | IN | 0.15 ETH | 0.00680387 | ||||
| Settle Current A... | 14259118 | 1482 days ago | IN | 0 ETH | 0.00245741 | ||||
| Settle Current A... | 14259118 | 1482 days ago | IN | 0 ETH | 0.01102584 | ||||
| Auction Nft | 14259112 | 1482 days ago | IN | 0.44 ETH | 0.00253911 | ||||
| Auction Nft | 14259111 | 1482 days ago | IN | 0.44 ETH | 0.00318524 | ||||
| Auction Nft | 14259098 | 1482 days ago | IN | 0.38 ETH | 0.00474572 | ||||
| Auction Nft | 14257989 | 1482 days ago | IN | 0.3 ETH | 0.00409706 | ||||
| Auction Nft | 14257989 | 1482 days ago | IN | 0.3 ETH | 0.00834192 | ||||
| Settle Current A... | 14257986 | 1482 days ago | IN | 0 ETH | 0.02509419 | ||||
| Auction Nft | 14257976 | 1482 days ago | IN | 0.22 ETH | 0.00442605 | ||||
| Auction Nft | 14257975 | 1482 days ago | IN | 0.22 ETH | 0.00549838 |
Latest 18 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 14262020 | 1482 days ago | 2.16 ETH | ||||
| - | 14260188 | 1482 days ago | 0.34 ETH | ||||
| - | 14260185 | 1482 days ago | 0.21 ETH | ||||
| - | 14259689 | 1482 days ago | 0.15 ETH | ||||
| - | 14259111 | 1482 days ago | 0.38 ETH | ||||
| - | 14259098 | 1482 days ago | 0.3 ETH | ||||
| - | 14257975 | 1482 days ago | 0.16 ETH | ||||
| - | 14257102 | 1482 days ago | 0.1 ETH | ||||
| - | 14256807 | 1482 days ago | 0.13 ETH | ||||
| - | 14256731 | 1482 days ago | 0.07 ETH | ||||
| - | 14255724 | 1483 days ago | 0.12 ETH | ||||
| - | 14255262 | 1483 days ago | 0.06 ETH | ||||
| - | 14254676 | 1483 days ago | 0.06 ETH | ||||
| - | 14253586 | 1483 days ago | 0.13 ETH | ||||
| - | 14253520 | 1483 days ago | 0.06 ETH | ||||
| - | 14252494 | 1483 days ago | 0.18 ETH | ||||
| - | 14251803 | 1483 days ago | 0.12 ETH | ||||
| - | 14251711 | 1483 days ago | 0.06 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
GenesisPaws
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-02-21
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
////// Developer Info ///////
//Written by Sheraz Manzoor
//Email: info@blockchainguy.net
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_setOwner(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_setOwner(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_setOwner(newOwner);
}
function _setOwner(address newOwner) private {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and make it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}
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);
}
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;
}
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);
}
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);
}
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);
}
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
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
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
contract ERC721A is
Context,
ERC165,
IERC721,
IERC721Metadata,
IERC721Enumerable{
using Address for address;
using Strings for uint256;
struct TokenOwnership {
address addr;
uint64 startTimestamp;
}
struct AddressData {
uint128 balance;
uint128 numberMinted;
}
uint256 private currentIndex = 0;
uint256 internal immutable collectionSize;
uint256 internal immutable maxBatchSize;
// Token name
string private _name;
// Token symbol
string private _symbol;
// Mapping from token ID to ownership details
// An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details.
mapping(uint256 => TokenOwnership) private _ownerships;
// Mapping owner address to address data
mapping(address => AddressData) private _addressData;
// 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
* `maxBatchSize` refers to how much a minter can mint at a time.
* `collectionSize_` refers to how many tokens are in the collection.
*/
constructor(
string memory name_,
string memory symbol_,
uint256 maxBatchSize_,
uint256 collectionSize_
) {
require(
collectionSize_ > 0,
"ERC721A: collection must have a nonzero supply"
);
require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero");
_name = name_;
_symbol = symbol_;
maxBatchSize = maxBatchSize_;
collectionSize = collectionSize_;
}
/**
* @dev See {IERC721Enumerable-totalSupply}.
*/
function totalSupply() public view override returns (uint256) {
return currentIndex;
}
/**
* @dev See {IERC721Enumerable-tokenByIndex}.
*/
function tokenByIndex(uint256 index) public view override returns (uint256) {
require(index < totalSupply(), "ERC721A: global index out of bounds");
return index;
}
/**
* @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
* This read function is O(collectionSize). If calling from a separate contract, be sure to test gas first.
* It may also degrade with extremely large collection sizes (e.g >> 10000), test for your use case.
*/
function tokenOfOwnerByIndex(address owner, uint256 index)
public
view
override
returns (uint256)
{
require(index < balanceOf(owner), "ERC721A: owner index out of bounds");
uint256 numMintedSoFar = totalSupply();
uint256 tokenIdsIdx = 0;
address currOwnershipAddr = address(0);
for (uint256 i = 0; i < numMintedSoFar; i++) {
TokenOwnership memory ownership = _ownerships[i];
if (ownership.addr != address(0)) {
currOwnershipAddr = ownership.addr;
}
if (currOwnershipAddr == owner) {
if (tokenIdsIdx == index) {
return i;
}
tokenIdsIdx++;
}
}
revert("ERC721A: unable to get token of owner by index");
}
/**
* @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 ||
interfaceId == type(IERC721Enumerable).interfaceId ||
super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC721-balanceOf}.
*/
function balanceOf(address owner) public view override returns (uint256) {
require(owner != address(0), "ERC721A: balance query for the zero address");
return uint256(_addressData[owner].balance);
}
function _numberMinted(address owner) internal view returns (uint256) {
require(
owner != address(0),
"ERC721A: number minted query for the zero address"
);
return uint256(_addressData[owner].numberMinted);
}
function ownershipOf(uint256 tokenId)
internal
view
returns (TokenOwnership memory)
{
require(_exists(tokenId), "ERC721A: owner query for nonexistent token");
uint256 lowestTokenToCheck;
if (tokenId >= maxBatchSize) {
lowestTokenToCheck = tokenId - maxBatchSize + 1;
}
for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) {
TokenOwnership memory ownership = _ownerships[curr];
if (ownership.addr != address(0)) {
return ownership;
}
}
revert("ERC721A: unable to determine the owner of token");
}
/**
* @dev See {IERC721-ownerOf}.
*/
function ownerOf(uint256 tokenId) public view override returns (address) {
return ownershipOf(tokenId).addr;
}
/**
* @dev See {IERC721Metadata-name}.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev See {IERC721Metadata-symbol}.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev See {IERC721Metadata-tokenURI}.
*/
function tokenURI(uint256 tokenId)
public
view
virtual
override
returns (string memory)
{
require(
_exists(tokenId),
"ERC721Metadata: URI query for nonexistent token"
);
string memory baseURI = _baseURI();
return
bytes(baseURI).length > 0
? string(abi.encodePacked(baseURI, tokenId.toString()))
: "";
}
/**
* @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
* token will be the concatenation of the `baseURI` and the `tokenId`. Empty
* by default, can be overriden in child contracts.
*/
function _baseURI() internal view virtual returns (string memory) {
return "";
}
/**
* @dev See {IERC721-approve}.
*/
function approve(address to, uint256 tokenId) public override {
address owner = ERC721A.ownerOf(tokenId);
require(to != owner, "ERC721A: approval to current owner");
require(
_msgSender() == owner || isApprovedForAll(owner, _msgSender()),
"ERC721A: approve caller is not owner nor approved for all"
);
_approve(to, tokenId, owner);
}
/**
* @dev See {IERC721-getApproved}.
*/
function getApproved(uint256 tokenId) public view override returns (address) {
require(_exists(tokenId), "ERC721A: approved query for nonexistent token");
return _tokenApprovals[tokenId];
}
/**
* @dev See {IERC721-setApprovalForAll}.
*/
function setApprovalForAll(address operator, bool approved) public override {
require(operator != _msgSender(), "ERC721A: 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 override {
_transfer(from, to, tokenId);
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) public override {
safeTransferFrom(from, to, tokenId, "");
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId,
bytes memory _data
) public override {
_transfer(from, to, tokenId);
require(
_checkOnERC721Received(from, to, tokenId, _data),
"ERC721A: 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`),
*/
function _exists(uint256 tokenId) internal view returns (bool) {
return tokenId < currentIndex;
}
function _safeMint(address to, uint256 quantity) internal {
_safeMint(to, quantity, "");
}
/**
* @dev Mints `quantity` tokens and transfers them to `to`.
*
* Requirements:
*
* - there must be `quantity` tokens remaining unminted in the total collection.
* - `to` cannot be the zero address.
* - `quantity` cannot be larger than the max batch size.
*
* Emits a {Transfer} event.
*/
function _safeMint(
address to,
uint256 quantity,
bytes memory _data
) internal {
uint256 startTokenId = currentIndex;
require(to != address(0), "ERC721A: mint to the zero address");
// We know if the first token in the batch doesn't exist, the other ones don't as well, because of serial ordering.
require(!_exists(startTokenId), "ERC721A: token already minted");
require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high");
_beforeTokenTransfers(address(0), to, startTokenId, quantity);
AddressData memory addressData = _addressData[to];
_addressData[to] = AddressData(
addressData.balance + uint128(quantity),
addressData.numberMinted + uint128(quantity)
);
_ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));
uint256 updatedIndex = startTokenId;
for (uint256 i = 0; i < quantity; i++) {
emit Transfer(address(0), to, updatedIndex);
require(
_checkOnERC721Received(address(0), to, updatedIndex, _data),
"ERC721A: transfer to non ERC721Receiver implementer"
);
updatedIndex++;
}
currentIndex = updatedIndex;
_afterTokenTransfers(address(0), to, startTokenId, quantity);
}
/**
* @dev Transfers `tokenId` from `from` to `to`.
*
* 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
) private {
TokenOwnership memory prevOwnership = ownershipOf(tokenId);
bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
getApproved(tokenId) == _msgSender() ||
isApprovedForAll(prevOwnership.addr, _msgSender()));
require(
isApprovedOrOwner,
"ERC721A: transfer caller is not owner nor approved"
);
require(
prevOwnership.addr == from,
"ERC721A: transfer from incorrect owner"
);
require(to != address(0), "ERC721A: transfer to the zero address");
_beforeTokenTransfers(from, to, tokenId, 1);
// Clear approvals from the previous owner
_approve(address(0), tokenId, prevOwnership.addr);
_addressData[from].balance -= 1;
_addressData[to].balance += 1;
_ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp));
// If the ownership slot of tokenId+1 is not explicitly set, that means the transfer initiator owns it.
// Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls.
uint256 nextTokenId = tokenId + 1;
if (_ownerships[nextTokenId].addr == address(0)) {
if (_exists(nextTokenId)) {
_ownerships[nextTokenId] = TokenOwnership(
prevOwnership.addr,
prevOwnership.startTimestamp
);
}
}
emit Transfer(from, to, tokenId);
_afterTokenTransfers(from, to, tokenId, 1);
}
/**
* @dev Approve `to` to operate on `tokenId`
*
* Emits a {Approval} event.
*/
function _approve(
address to,
uint256 tokenId,
address owner
) private {
_tokenApprovals[tokenId] = to;
emit Approval(owner, to, tokenId);
}
uint256 public nextOwnerToExplicitlySet = 0;
/**
* @dev Explicitly set `owners` to eliminate loops in future calls of ownerOf().
*/
function _setOwnersExplicit(uint256 quantity) internal {
uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet;
require(quantity > 0, "quantity must be nonzero");
uint256 endIndex = oldNextOwnerToSet + quantity - 1;
if (endIndex > collectionSize - 1) {
endIndex = collectionSize - 1;
}
// We know if the last one in the group exists, all in the group exist, due to serial ordering.
require(_exists(endIndex), "not enough minted yet for this cleanup");
for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) {
if (_ownerships[i].addr == address(0)) {
TokenOwnership memory ownership = ownershipOf(i);
_ownerships[i] = TokenOwnership(
ownership.addr,
ownership.startTimestamp
);
}
}
nextOwnerToExplicitlySet = endIndex + 1;
}
/**
* @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("ERC721A: transfer to non ERC721Receiver implementer");
} else {
assembly {
revert(add(32, reason), mload(reason))
}
}
}
} else {
return true;
}
}
/**
* @dev Hook that is called before a set of serially-ordered token ids are about to be transferred. This includes minting.
*
* startTokenId - the first token id to be transferred
* quantity - the amount to be transferred
*
* 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`.
*/
function _beforeTokenTransfers(
address from,
address to,
uint256 startTokenId,
uint256 quantity
) internal virtual {}
/**
* @dev Hook that is called after a set of serially-ordered token ids have been transferred. This includes
* minting.
*
* startTokenId - the first token id to be transferred
* quantity - the amount to be transferred
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero.
* - `from` and `to` are never both zero.
*/
function _afterTokenTransfers(
address from,
address to,
uint256 startTokenId,
uint256 quantity
) internal virtual {}
}
library Strings {
bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
/**
* @dev Converts a `uint256` to its ASCII `string` decimal representation.
*/
function toString(uint256 value) internal pure returns (string memory) {
// Inspired by OraclizeAPI's implementation - MIT licence
// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol
if (value == 0) {
return "0";
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
}
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
value /= 10;
}
return string(buffer);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
*/
function toHexString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0x00";
}
uint256 temp = value;
uint256 length = 0;
while (temp != 0) {
length++;
temp >>= 8;
}
return toHexString(value, length);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
*/
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = _HEX_SYMBOLS[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
}
interface IAuctionHouse {
struct Auction {
// ID for the Nft (ERC721 token ID)
uint256 nftId;
// The current highest bid amount
uint256 amount;
// The time that the auction started
uint256 startTime;
// The time that the auction is scheduled to end
uint256 endTime;
// The address of the current highest bid
address payable bidder;
// Whether or not the auction has been settled
bool settled;
}
}
contract GenesisPaws is Ownable, ERC721A, ReentrancyGuard {
using Strings for uint256;
string private baseURI = "https://www.puffypawspack.com/api/genesis/";
uint256 public defaultIncrease = 0.05 ether;
uint256 public maxSupply = 10;
string public _extension;
// The duration of a single auction
uint256 public duration = 14400; //4 Hours
// The active auction
IAuctionHouse.Auction public auction;
bool public auctionStarted = false;
mapping(uint256 => IAuctionHouse.Auction) public auctionHistory;
constructor(string memory name,
string memory symbol, uint256 _maxBatchSize,
uint256 _collectionSize)
ERC721A(name, symbol, _maxBatchSize, _collectionSize)
{
}
function settleCurrentAndCreateNewAuction() external nonReentrant {
_settleAuction();
_createAuction();
}
function _settleAuction() internal {
IAuctionHouse.Auction memory _auction = auction;
require(totalSupply() < maxSupply, "Max Supply Reached.");
require(auctionStarted, "Auction Not Started Yet.");
require(_auction.startTime != 0, "Auction hasn't begun");
require(!_auction.settled, "Auction has already been settled");
require(block.timestamp >= _auction.endTime, "Auction hasn't completed");
_auction.settled = true;
if (_auction.bidder == address(0)) {
_auction.bidder = payable(owner());
_safeMint(owner(), 1);
}else{
_safeMint(_auction.bidder, 1);
}
auctionHistory[totalSupply() - 1] = _auction;
}
function _createAuction() internal {
if(totalSupply() < maxSupply){
uint256 _startTime = block.timestamp;
uint256 _endTime = _startTime + duration;
auction = IAuctionHouse.Auction({
nftId: totalSupply(),
amount: 0,
startTime: _startTime,
endTime: _endTime,
bidder: payable(0),
settled: false
});
auctionStarted = true;
}
}
function sendGift(address _reciever) public onlyOwner{
require(totalSupply() < maxSupply, "Max Supply Reached.");
IAuctionHouse.Auction memory _auction = IAuctionHouse.Auction({
nftId: totalSupply(),
amount: 0,
startTime: block.timestamp,
endTime: block.timestamp,
bidder: payable(_reciever),
settled: true
});
auctionHistory[totalSupply()] = _auction;
_safeMint(_reciever, 1);
}
function auctionNft() public payable {
require(totalSupply() < maxSupply, "Reaching max supply");
IAuctionHouse.Auction memory _auction = auction;
require(_auction.nftId == totalSupply(), "Nft not up for auction");
require(block.timestamp < _auction.endTime, "Auction expired");
require(msg.value > (_auction.amount + defaultIncrease),"Must send 0.12 more than last bid.");
address payable lastBidder = _auction.bidder;
// Refund the last bidder, if applicable
if (lastBidder != address(0)) {
payable(lastBidder).transfer(_auction.amount);
}
auction.amount = msg.value;
auction.bidder = payable(msg.sender);
}
function isAuctionEnded() public view returns (bool){
if(block.timestamp > auction.endTime){
return true;
}else{
return false;
}
}
function endAuction() public onlyOwner{
auction.endTime = block.timestamp;
}
//Adming Testing function
function extendAuction(uint256 _temp) public onlyOwner{
auction.endTime = block.timestamp + _temp;
}
function createAuction() external nonReentrant onlyOwner{
_createAuction();
}
function settleAuction() external nonReentrant onlyOwner{
_settleAuction();
}
function getAuctionHistory(uint256 _id) public view returns(IAuctionHouse.Auction memory){
return auctionHistory[_id];
}
function tokenURI(uint256 _tokenId) public view virtual override returns (string memory) {
require(
_exists(_tokenId),
"ERC721Metadata: URI set of nonexistent token"
);
return string(abi.encodePacked(baseURI, _tokenId.toString(), _extension));
}
function updateBaseURI(string memory _newBaseURI) onlyOwner public {
baseURI = _newBaseURI;
}
function updateExtension(string memory _temp) onlyOwner public {
_extension = _temp;
}
function getBaseURI() external view returns(string memory) {
return baseURI;
}
function setdefaultIncrease(uint256 _price) public onlyOwner() {
defaultIncrease = _price;
}
function setmaxSupply(uint256 _supply) public onlyOwner() {
require(_supply > maxSupply, "Provide a valid supply i.e. greater than current supply and less than/equal to max supply");
maxSupply = _supply;
}
function getBalance() public view returns(uint) {
return address(this).balance;
}
function withdraw(address _to) external onlyOwner nonReentrant{
(bool success, ) = _to.call{value: address(this).balance}("");
require(success, "Transfer failed.");
}
function getOwnershipData(uint256 tokenId)
external
view
returns (TokenOwnership memory)
{
return ownershipOf(tokenId);
}
receive() external payable {}
}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"},{"internalType":"uint256","name":"_maxBatchSize","type":"uint256"},{"internalType":"uint256","name":"_collectionSize","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_extension","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[],"name":"auction","outputs":[{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"address payable","name":"bidder","type":"address"},{"internalType":"bool","name":"settled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"auctionHistory","outputs":[{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"address payable","name":"bidder","type":"address"},{"internalType":"bool","name":"settled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"auctionNft","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"auctionStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultIncrease","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_temp","type":"uint256"}],"name":"extendAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getAuctionHistory","outputs":[{"components":[{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"address payable","name":"bidder","type":"address"},{"internalType":"bool","name":"settled","type":"bool"}],"internalType":"struct IAuctionHouse.Auction","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"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":"isAuctionEnded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_reciever","type":"address"}],"name":"sendGift","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setdefaultIncrease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"}],"name":"setmaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"settleAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"settleCurrentAndCreateNewAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"updateBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_temp","type":"string"}],"name":"updateExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60006001819055600855610120604052602a60c081815290620032ba60e03980516200003491600a91602090910190620001fa565b5066b1a2bc2ec50000600b55600a600c55613840600e556014805460ff191690553480156200006257600080fd5b50604051620032e4380380620032e4833981016040819052620000859162000357565b838383836200009433620001aa565b60008111620001015760405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060448201526d6e6f6e7a65726f20737570706c7960901b60648201526084015b60405180910390fd5b60008211620001635760405162461bcd60e51b815260206004820152602760248201527f455243373231413a206d61782062617463682073697a65206d757374206265206044820152666e6f6e7a65726f60c81b6064820152608401620000f8565b835162000178906002906020870190620001fa565b5082516200018e906003906020860190620001fa565b5060a09190915260805250506001600955506200042492505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200020890620003d1565b90600052602060002090601f0160209004810192826200022c576000855562000277565b82601f106200024757805160ff191683800117855562000277565b8280016001018555821562000277579182015b82811115620002775782518255916020019190600101906200025a565b506200028592915062000289565b5090565b5b808211156200028557600081556001016200028a565b600082601f830112620002b257600080fd5b81516001600160401b0380821115620002cf57620002cf6200040e565b604051601f8301601f19908116603f01168101908282118183101715620002fa57620002fa6200040e565b816040528381526020925086838588010111156200031757600080fd5b600091505b838210156200033b57858201830151818301840152908201906200031c565b838211156200034d5760008385830101525b9695505050505050565b600080600080608085870312156200036e57600080fd5b84516001600160401b03808211156200038657600080fd5b6200039488838901620002a0565b95506020870151915080821115620003ab57600080fd5b50620003ba87828801620002a0565b604087015160609097015195989097509350505050565b600181811c90821680620003e657607f821691505b602082108114156200040857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160a051612e656200045560003960008181611d6301528181611d8d0152612527015260005050612e656000f3fe60806040526004361061026b5760003560e01c80637d9f6db511610144578063d5abeb01116100b6578063e985e9c51161007a578063e985e9c5146107ed578063ee2679bc14610836578063f25efffc14610850578063f2fde38b14610865578063f581144714610885578063fe67a54b1461089a57600080fd5b8063d5abeb011461070f578063d7224ba014610725578063db4e299b1461073b578063de2e61361461075b578063e7f4c1271461077b57600080fd5b806395d89b411161010857806395d89b4114610665578063a22cb4651461067a578063a4d0a17e1461069a578063b88d4fde146106af578063c87b56dd146106cf578063ce5f9fb3146106ef57600080fd5b80637d9f6db51461057d5780637e6182d9146105b95780638da5cb5b146105d95780639231ab2a146105f7578063931688cb1461064557600080fd5b80632f745c59116101dd5780634f6ccce7116101a15780634f6ccce7146104d357806351cff8d9146104f35780636352211e1461051357806370a0823114610533578063714c539814610553578063715018a61461056857600080fd5b80632f745c59146103d257806331cde51a146103f25780633ae1dd9d1461048957806342842e0e1461049e57806343891f3a146104be57600080fd5b80630fb5a6b41161022f5780630fb5a6b41461034c57806312065fe0146103625780631696b4a81461037557806318160ddd1461037d578063228025e81461039257806323b872dd146103b257600080fd5b806301ffc9a71461027757806306375b9a146102ac57806306fdde03146102d0578063081812fc146102f2578063095ea7b31461032a57600080fd5b3661027257005b600080fd5b34801561028357600080fd5b506102976102923660046129da565b6108af565b60405190151581526020015b60405180910390f35b3480156102b857600080fd5b506102c2600b5481565b6040519081526020016102a3565b3480156102dc57600080fd5b506102e561091c565b6040516102a39190612bac565b3480156102fe57600080fd5b5061031261030d366004612a5d565b6109ae565b6040516001600160a01b0390911681526020016102a3565b34801561033657600080fd5b5061034a6103453660046129b0565b610a3e565b005b34801561035857600080fd5b506102c2600e5481565b34801561036e57600080fd5b50476102c2565b61034a610b56565b34801561038957600080fd5b506001546102c2565b34801561039e57600080fd5b5061034a6103ad366004612a5d565b610d4f565b3480156103be57600080fd5b5061034a6103cd3660046128bc565b610e1b565b3480156103de57600080fd5b506102c26103ed3660046129b0565b610e26565b3480156103fe57600080fd5b5061045161040d366004612a5d565b60156020526000908152604090208054600182015460028301546003840154600490940154929391929091906001600160a01b03811690600160a01b900460ff1686565b6040805196875260208701959095529385019290925260608401526001600160a01b03166080830152151560a082015260c0016102a3565b34801561049557600080fd5b506102e5610f9f565b3480156104aa57600080fd5b5061034a6104b93660046128bc565b61102d565b3480156104ca57600080fd5b50610297611048565b3480156104df57600080fd5b506102c26104ee366004612a5d565b611061565b3480156104ff57600080fd5b5061034a61050e366004612867565b6110ca565b34801561051f57600080fd5b5061031261052e366004612a5d565b6111b9565b34801561053f57600080fd5b506102c261054e366004612867565b6111cb565b34801561055f57600080fd5b506102e561125c565b34801561057457600080fd5b5061034a61126b565b34801561058957600080fd5b50600f5460105460115460125460135461045194939291906001600160a01b03811690600160a01b900460ff1686565b3480156105c557600080fd5b5061034a6105d4366004612a14565b6112a1565b3480156105e557600080fd5b506000546001600160a01b0316610312565b34801561060357600080fd5b50610617610612366004612a5d565b6112e2565b6040805182516001600160a01b0316815260209283015167ffffffffffffffff1692810192909252016102a3565b34801561065157600080fd5b5061034a610660366004612a14565b6112ff565b34801561067157600080fd5b506102e561133c565b34801561068657600080fd5b5061034a610695366004612974565b61134b565b3480156106a657600080fd5b5061034a611410565b3480156106bb57600080fd5b5061034a6106ca3660046128f8565b611471565b3480156106db57600080fd5b506102e56106ea366004612a5d565b6114aa565b3480156106fb57600080fd5b5061034a61070a366004612a5d565b61154d565b34801561071b57600080fd5b506102c2600c5481565b34801561073157600080fd5b506102c260085481565b34801561074757600080fd5b5061034a610756366004612a5d565b611587565b34801561076757600080fd5b5061034a610776366004612867565b6115b6565b34801561078757600080fd5b5061079b610796366004612a5d565b6116fa565b6040516102a39190815181526020808301519082015260408083015190820152606080830151908201526080808301516001600160a01b03169082015260a09182015115159181019190915260c00190565b3480156107f957600080fd5b50610297610808366004612889565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561084257600080fd5b506014546102979060ff1681565b34801561085c57600080fd5b5061034a6117a8565b34801561087157600080fd5b5061034a610880366004612867565b6117e0565b34801561089157600080fd5b5061034a61187b565b3480156108a657600080fd5b5061034a6118cd565b60006001600160e01b031982166380ac58cd60e01b14806108e057506001600160e01b03198216635b5e139f60e01b145b806108fb57506001600160e01b0319821663780e9d6360e01b145b8061091657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606002805461092b90612d57565b80601f016020809104026020016040519081016040528092919081815260200182805461095790612d57565b80156109a45780601f10610979576101008083540402835291602001916109a4565b820191906000526020600020905b81548152906001019060200180831161098757829003601f168201915b5050505050905090565b60006109bb826001541190565b610a225760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6000610a49826111b9565b9050806001600160a01b0316836001600160a01b03161415610ab85760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b6064820152608401610a19565b336001600160a01b0382161480610ad45750610ad48133610808565b610b465760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c000000000000006064820152608401610a19565b610b518383836118fd565b505050565b600c5460015410610b9f5760405162461bcd60e51b81526020600482015260136024820152725265616368696e67206d617820737570706c7960681b6044820152606401610a19565b6040805160c081018252600f54815260105460208201526011549181019190915260125460608201526013546001600160a01b0381166080830152600160a01b900460ff16151560a0820152600154815114610c365760405162461bcd60e51b815260206004820152601660248201527527333a103737ba103ab8103337b91030bab1ba34b7b760511b6044820152606401610a19565b80606001514210610c7b5760405162461bcd60e51b815260206004820152600f60248201526e105d58dd1a5bdb88195e1c1a5c9959608a1b6044820152606401610a19565b600b548160200151610c8d9190612ca9565b3411610ce65760405162461bcd60e51b815260206004820152602260248201527f4d7573742073656e6420302e3132206d6f7265207468616e206c617374206269604482015261321760f11b6064820152608401610a19565b60808101516001600160a01b03811615610d355760208201516040516001600160a01b0383169180156108fc02916000818181858888f19350505050158015610d33573d6000803e3d6000fd5b505b505034601055601380546001600160a01b03191633179055565b6000546001600160a01b03163314610d795760405162461bcd60e51b8152600401610a1990612bbf565b600c548111610e165760405162461bcd60e51b815260206004820152605960248201527f50726f7669646520612076616c696420737570706c7920692e652e206772656160448201527f746572207468616e2063757272656e7420737570706c7920616e64206c65737360648201527f207468616e2f657175616c20746f206d617820737570706c7900000000000000608482015260a401610a19565b600c55565b610b51838383611959565b6000610e31836111cb565b8210610e8a5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610a19565b6000610e9560015490565b905060008060005b83811015610f3f576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610ef057805192505b876001600160a01b0316836001600160a01b03161415610f2c5786841415610f1e5750935061091692505050565b83610f2881612d92565b9450505b5080610f3781612d92565b915050610e9d565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b6064820152608401610a19565b600d8054610fac90612d57565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd890612d57565b80156110255780601f10610ffa57610100808354040283529160200191611025565b820191906000526020600020905b81548152906001019060200180831161100857829003601f168201915b505050505081565b610b5183838360405180602001604052806000815250611471565b60125460009042111561105b5750600190565b50600090565b600061106c60015490565b82106110c65760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610a19565b5090565b6000546001600160a01b031633146110f45760405162461bcd60e51b8152600401610a1990612bbf565b600260095414156111175760405162461bcd60e51b8152600401610a1990612c47565b60026009556040516000906001600160a01b0383169047908381818185875af1925050503d8060008114611167576040519150601f19603f3d011682016040523d82523d6000602084013e61116c565b606091505b50509050806111b05760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610a19565b50506001600955565b60006111c482611ce1565b5192915050565b60006001600160a01b0382166112375760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610a19565b506001600160a01b03166000908152600560205260409020546001600160801b031690565b6060600a805461092b90612d57565b6000546001600160a01b031633146112955760405162461bcd60e51b8152600401610a1990612bbf565b61129f6000611e8b565b565b6000546001600160a01b031633146112cb5760405162461bcd60e51b8152600401610a1990612bbf565b80516112de90600d906020840190612745565b5050565b604080518082019091526000808252602082015261091682611ce1565b6000546001600160a01b031633146113295760405162461bcd60e51b8152600401610a1990612bbf565b80516112de90600a906020840190612745565b60606003805461092b90612d57565b6001600160a01b0382163314156113a45760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c65720000000000006044820152606401610a19565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600260095414156114335760405162461bcd60e51b8152600401610a1990612c47565b60026009556000546001600160a01b031633146114625760405162461bcd60e51b8152600401610a1990612bbf565b61146a611edb565b6001600955565b61147c848484611959565b61148884848484612185565b6114a45760405162461bcd60e51b8152600401610a1990612bf4565b50505050565b60606114b7826001541190565b6115185760405162461bcd60e51b815260206004820152602c60248201527f4552433732314d657461646174613a2055524920736574206f66206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a19565b600a61152383612293565b600d60405160200161153793929190612b3c565b6040516020818303038152906040529050919050565b6000546001600160a01b031633146115775760405162461bcd60e51b8152600401610a1990612bbf565b6115818142612ca9565b60125550565b6000546001600160a01b031633146115b15760405162461bcd60e51b8152600401610a1990612bbf565b600b55565b6000546001600160a01b031633146115e05760405162461bcd60e51b8152600401610a1990612bbf565b600c54600154106116295760405162461bcd60e51b815260206004820152601360248201527226b0bc1029bab838363c902932b0b1b432b21760691b6044820152606401610a19565b60006040518060c0016040528061163f60015490565b815260200160008152602001428152602001428152602001836001600160a01b03168152602001600115158152509050806015600061167d60015490565b8152602080820192909252604090810160002083518155918301516001808401919091559083015160028301556060830151600383015560808301516004909201805460a0909401511515600160a01b026001600160a81b03199094166001600160a01b03909316929092179290921790556112de908390612391565b61173e6040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681526020016000151581525090565b50600090815260156020908152604091829020825160c08101845281548152600182015492810192909252600281015492820192909252600382015460608201526004909101546001600160a01b0381166080830152600160a01b900460ff16151560a082015290565b600260095414156117cb5760405162461bcd60e51b8152600401610a1990612c47565b60026009556117d8611edb565b61146a6123ab565b6000546001600160a01b0316331461180a5760405162461bcd60e51b8152600401610a1990612bbf565b6001600160a01b03811661186f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a19565b61187881611e8b565b50565b6002600954141561189e5760405162461bcd60e51b8152600401610a1990612c47565b60026009556000546001600160a01b031633146117d85760405162461bcd60e51b8152600401610a1990612bbf565b6000546001600160a01b031633146118f75760405162461bcd60e51b8152600401610a1990612bbf565b42601255565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061196482611ce1565b80519091506000906001600160a01b0316336001600160a01b0316148061199b575033611990846109ae565b6001600160a01b0316145b806119ad575081516119ad9033610808565b905080611a175760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610a19565b846001600160a01b031682600001516001600160a01b031614611a8b5760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b6064820152608401610a19565b6001600160a01b038416611aef5760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610a19565b611aff60008484600001516118fd565b6001600160a01b0385166000908152600560205260408120805460019290611b319084906001600160801b0316612cd5565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b03861660009081526005602052604081208054600194509092611b7d91859116612c7e565b82546001600160801b039182166101009390930a9283029190920219909116179055506040805180820182526001600160a01b03808716825267ffffffffffffffff428116602080850191825260008981526004909152948520935184549151909216600160a01b026001600160e01b03199091169190921617179055611c05846001612ca9565b6000818152600460205260409020549091506001600160a01b0316611c9757611c2f816001541190565b15611c975760408051808201825284516001600160a01b03908116825260208087015167ffffffffffffffff9081168285019081526000878152600490935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6040805180820190915260008082526020820152611d00826001541190565b611d5f5760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b6064820152608401610a19565b60007f00000000000000000000000000000000000000000000000000000000000000008310611dc057611db27f000000000000000000000000000000000000000000000000000000000000000084612cfd565b611dbd906001612ca9565b90505b825b818110611e2a576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215611e1757949350505050565b5080611e2281612d40565b915050611dc2565b5060405162461bcd60e51b815260206004820152602f60248201527f455243373231413a20756e61626c6520746f2064657465726d696e652074686560448201526e1037bbb732b91037b3103a37b5b2b760891b6064820152608401610a19565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160c081018252600f54815260105460208201526011549181019190915260125460608201526013546001600160a01b0381166080830152600160a01b900460ff16151560a0820152600c5460015410611f705760405162461bcd60e51b815260206004820152601360248201527226b0bc1029bab838363c902932b0b1b432b21760691b6044820152606401610a19565b60145460ff16611fc25760405162461bcd60e51b815260206004820152601860248201527f41756374696f6e204e6f742053746172746564205965742e00000000000000006044820152606401610a19565b604081015161200a5760405162461bcd60e51b815260206004820152601460248201527320bab1ba34b7b7103430b9b713ba103132b3bab760611b6044820152606401610a19565b8060a001511561205c5760405162461bcd60e51b815260206004820181905260248201527f41756374696f6e2068617320616c7265616479206265656e20736574746c65646044820152606401610a19565b80606001514210156120b05760405162461bcd60e51b815260206004820152601860248201527f41756374696f6e206861736e277420636f6d706c6574656400000000000000006044820152606401610a19565b600160a082015260808101516001600160a01b03166120ec576000546001600160a01b0316608082018190526120e7906001612391565b6120fb565b6120fb81608001516001612391565b8060156000600161210b60015490565b6121159190612cfd565b815260208082019290925260409081016000208351815591830151600183015582015160028201556060820151600382015560808201516004909101805460a0909301511515600160a01b026001600160a81b03199093166001600160a01b039092169190911791909117905550565b60006001600160a01b0384163b1561228757604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906121c9903390899088908890600401612b6f565b602060405180830381600087803b1580156121e357600080fd5b505af1925050508015612213575060408051601f3d908101601f19168201909252612210918101906129f7565b60015b61226d573d808015612241576040519150601f19603f3d011682016040523d82523d6000602084013e612246565b606091505b5080516122655760405162461bcd60e51b8152600401610a1990612bf4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061228b565b5060015b949350505050565b6060816122b75750506040805180820190915260018152600360fc1b602082015290565b8160005b81156122e157806122cb81612d92565b91506122da9050600a83612cc1565b91506122bb565b60008167ffffffffffffffff8111156122fc576122fc612e03565b6040519080825280601f01601f191660200182016040528015612326576020820181803683370190505b5090505b841561228b5761233b600183612cfd565b9150612348600a86612dad565b612353906030612ca9565b60f81b81838151811061236857612368612ded565b60200101906001600160f81b031916908160001a90535061238a600a86612cc1565b945061232a565b6112de82826040518060200160405280600081525061246a565b600c54600154101561129f57600e5442906000906123c99083612ca9565b90506040518060c001604052806123df60015490565b815260006020808301829052604080840196909652606080840195909552608080840183905260a0938401929092528351600f558301516010559382015160115591810151601255918201516013805493909201511515600160a01b026001600160a81b03199093166001600160a01b0391909116179190911790556014805460ff19166001179055565b6001546001600160a01b0384166124cd5760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610a19565b6124d8816001541190565b156125255760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e7465640000006044820152606401610a19565b7f00000000000000000000000000000000000000000000000000000000000000008311156125a05760405162461bcd60e51b815260206004820152602260248201527f455243373231413a207175616e7469747920746f206d696e7420746f6f2068696044820152610ced60f31b6064820152608401610a19565b6001600160a01b0384166000908152600560209081526040918290208251808401845290546001600160801b038082168352600160801b90910416918101919091528151808301909252805190919081906125fc908790612c7e565b6001600160801b0316815260200185836020015161261a9190612c7e565b6001600160801b039081169091526001600160a01b0380881660008181526005602090815260408083208751978301518716600160801b0297909616969096179094558451808601865291825267ffffffffffffffff4281168386019081528883526004909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b8581101561273a5760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46126fe6000888488612185565b61271a5760405162461bcd60e51b8152600401610a1990612bf4565b8161272481612d92565b925050808061273290612d92565b9150506126b1565b506001819055611cd9565b82805461275190612d57565b90600052602060002090601f01602090048101928261277357600085556127b9565b82601f1061278c57805160ff19168380011785556127b9565b828001600101855582156127b9579182015b828111156127b957825182559160200191906001019061279e565b506110c69291505b808211156110c657600081556001016127c1565b600067ffffffffffffffff808411156127f0576127f0612e03565b604051601f8501601f19908116603f0116810190828211818310171561281857612818612e03565b8160405280935085815286868601111561283157600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461286257600080fd5b919050565b60006020828403121561287957600080fd5b6128828261284b565b9392505050565b6000806040838503121561289c57600080fd5b6128a58361284b565b91506128b36020840161284b565b90509250929050565b6000806000606084860312156128d157600080fd5b6128da8461284b565b92506128e86020850161284b565b9150604084013590509250925092565b6000806000806080858703121561290e57600080fd5b6129178561284b565b93506129256020860161284b565b925060408501359150606085013567ffffffffffffffff81111561294857600080fd5b8501601f8101871361295957600080fd5b612968878235602084016127d5565b91505092959194509250565b6000806040838503121561298757600080fd5b6129908361284b565b9150602083013580151581146129a557600080fd5b809150509250929050565b600080604083850312156129c357600080fd5b6129cc8361284b565b946020939093013593505050565b6000602082840312156129ec57600080fd5b813561288281612e19565b600060208284031215612a0957600080fd5b815161288281612e19565b600060208284031215612a2657600080fd5b813567ffffffffffffffff811115612a3d57600080fd5b8201601f81018413612a4e57600080fd5b61228b848235602084016127d5565b600060208284031215612a6f57600080fd5b5035919050565b60008151808452612a8e816020860160208601612d14565b601f01601f19169290920160200192915050565b8054600090600181811c9080831680612abc57607f831692505b6020808410821415612ade57634e487b7160e01b600052602260045260246000fd5b818015612af25760018114612b0357612b30565b60ff19861689528489019650612b30565b60008881526020902060005b86811015612b285781548b820152908501908301612b0f565b505084890196505b50505050505092915050565b6000612b488286612aa2565b8451612b58818360208901612d14565b612b6481830186612aa2565b979650505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612ba290830184612a76565b9695505050505050565b6020815260006128826020830184612a76565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60006001600160801b03808316818516808303821115612ca057612ca0612dc1565b01949350505050565b60008219821115612cbc57612cbc612dc1565b500190565b600082612cd057612cd0612dd7565b500490565b60006001600160801b0383811690831681811015612cf557612cf5612dc1565b039392505050565b600082821015612d0f57612d0f612dc1565b500390565b60005b83811015612d2f578181015183820152602001612d17565b838111156114a45750506000910152565b600081612d4f57612d4f612dc1565b506000190190565b600181811c90821680612d6b57607f821691505b60208210811415612d8c57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612da657612da6612dc1565b5060010190565b600082612dbc57612dbc612dd7565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461187857600080fdfea2646970667358221220093354d990f5930fa585b696277f3c9c22d79a8b10dcb636bd67fbfed90ddbf564736f6c6343000807003368747470733a2f2f7777772e7075666679706177737061636b2e636f6d2f6170692f67656e657369732f000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c47656e657369732050617773000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024750000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061026b5760003560e01c80637d9f6db511610144578063d5abeb01116100b6578063e985e9c51161007a578063e985e9c5146107ed578063ee2679bc14610836578063f25efffc14610850578063f2fde38b14610865578063f581144714610885578063fe67a54b1461089a57600080fd5b8063d5abeb011461070f578063d7224ba014610725578063db4e299b1461073b578063de2e61361461075b578063e7f4c1271461077b57600080fd5b806395d89b411161010857806395d89b4114610665578063a22cb4651461067a578063a4d0a17e1461069a578063b88d4fde146106af578063c87b56dd146106cf578063ce5f9fb3146106ef57600080fd5b80637d9f6db51461057d5780637e6182d9146105b95780638da5cb5b146105d95780639231ab2a146105f7578063931688cb1461064557600080fd5b80632f745c59116101dd5780634f6ccce7116101a15780634f6ccce7146104d357806351cff8d9146104f35780636352211e1461051357806370a0823114610533578063714c539814610553578063715018a61461056857600080fd5b80632f745c59146103d257806331cde51a146103f25780633ae1dd9d1461048957806342842e0e1461049e57806343891f3a146104be57600080fd5b80630fb5a6b41161022f5780630fb5a6b41461034c57806312065fe0146103625780631696b4a81461037557806318160ddd1461037d578063228025e81461039257806323b872dd146103b257600080fd5b806301ffc9a71461027757806306375b9a146102ac57806306fdde03146102d0578063081812fc146102f2578063095ea7b31461032a57600080fd5b3661027257005b600080fd5b34801561028357600080fd5b506102976102923660046129da565b6108af565b60405190151581526020015b60405180910390f35b3480156102b857600080fd5b506102c2600b5481565b6040519081526020016102a3565b3480156102dc57600080fd5b506102e561091c565b6040516102a39190612bac565b3480156102fe57600080fd5b5061031261030d366004612a5d565b6109ae565b6040516001600160a01b0390911681526020016102a3565b34801561033657600080fd5b5061034a6103453660046129b0565b610a3e565b005b34801561035857600080fd5b506102c2600e5481565b34801561036e57600080fd5b50476102c2565b61034a610b56565b34801561038957600080fd5b506001546102c2565b34801561039e57600080fd5b5061034a6103ad366004612a5d565b610d4f565b3480156103be57600080fd5b5061034a6103cd3660046128bc565b610e1b565b3480156103de57600080fd5b506102c26103ed3660046129b0565b610e26565b3480156103fe57600080fd5b5061045161040d366004612a5d565b60156020526000908152604090208054600182015460028301546003840154600490940154929391929091906001600160a01b03811690600160a01b900460ff1686565b6040805196875260208701959095529385019290925260608401526001600160a01b03166080830152151560a082015260c0016102a3565b34801561049557600080fd5b506102e5610f9f565b3480156104aa57600080fd5b5061034a6104b93660046128bc565b61102d565b3480156104ca57600080fd5b50610297611048565b3480156104df57600080fd5b506102c26104ee366004612a5d565b611061565b3480156104ff57600080fd5b5061034a61050e366004612867565b6110ca565b34801561051f57600080fd5b5061031261052e366004612a5d565b6111b9565b34801561053f57600080fd5b506102c261054e366004612867565b6111cb565b34801561055f57600080fd5b506102e561125c565b34801561057457600080fd5b5061034a61126b565b34801561058957600080fd5b50600f5460105460115460125460135461045194939291906001600160a01b03811690600160a01b900460ff1686565b3480156105c557600080fd5b5061034a6105d4366004612a14565b6112a1565b3480156105e557600080fd5b506000546001600160a01b0316610312565b34801561060357600080fd5b50610617610612366004612a5d565b6112e2565b6040805182516001600160a01b0316815260209283015167ffffffffffffffff1692810192909252016102a3565b34801561065157600080fd5b5061034a610660366004612a14565b6112ff565b34801561067157600080fd5b506102e561133c565b34801561068657600080fd5b5061034a610695366004612974565b61134b565b3480156106a657600080fd5b5061034a611410565b3480156106bb57600080fd5b5061034a6106ca3660046128f8565b611471565b3480156106db57600080fd5b506102e56106ea366004612a5d565b6114aa565b3480156106fb57600080fd5b5061034a61070a366004612a5d565b61154d565b34801561071b57600080fd5b506102c2600c5481565b34801561073157600080fd5b506102c260085481565b34801561074757600080fd5b5061034a610756366004612a5d565b611587565b34801561076757600080fd5b5061034a610776366004612867565b6115b6565b34801561078757600080fd5b5061079b610796366004612a5d565b6116fa565b6040516102a39190815181526020808301519082015260408083015190820152606080830151908201526080808301516001600160a01b03169082015260a09182015115159181019190915260c00190565b3480156107f957600080fd5b50610297610808366004612889565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561084257600080fd5b506014546102979060ff1681565b34801561085c57600080fd5b5061034a6117a8565b34801561087157600080fd5b5061034a610880366004612867565b6117e0565b34801561089157600080fd5b5061034a61187b565b3480156108a657600080fd5b5061034a6118cd565b60006001600160e01b031982166380ac58cd60e01b14806108e057506001600160e01b03198216635b5e139f60e01b145b806108fb57506001600160e01b0319821663780e9d6360e01b145b8061091657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606002805461092b90612d57565b80601f016020809104026020016040519081016040528092919081815260200182805461095790612d57565b80156109a45780601f10610979576101008083540402835291602001916109a4565b820191906000526020600020905b81548152906001019060200180831161098757829003601f168201915b5050505050905090565b60006109bb826001541190565b610a225760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6000610a49826111b9565b9050806001600160a01b0316836001600160a01b03161415610ab85760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b6064820152608401610a19565b336001600160a01b0382161480610ad45750610ad48133610808565b610b465760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c000000000000006064820152608401610a19565b610b518383836118fd565b505050565b600c5460015410610b9f5760405162461bcd60e51b81526020600482015260136024820152725265616368696e67206d617820737570706c7960681b6044820152606401610a19565b6040805160c081018252600f54815260105460208201526011549181019190915260125460608201526013546001600160a01b0381166080830152600160a01b900460ff16151560a0820152600154815114610c365760405162461bcd60e51b815260206004820152601660248201527527333a103737ba103ab8103337b91030bab1ba34b7b760511b6044820152606401610a19565b80606001514210610c7b5760405162461bcd60e51b815260206004820152600f60248201526e105d58dd1a5bdb88195e1c1a5c9959608a1b6044820152606401610a19565b600b548160200151610c8d9190612ca9565b3411610ce65760405162461bcd60e51b815260206004820152602260248201527f4d7573742073656e6420302e3132206d6f7265207468616e206c617374206269604482015261321760f11b6064820152608401610a19565b60808101516001600160a01b03811615610d355760208201516040516001600160a01b0383169180156108fc02916000818181858888f19350505050158015610d33573d6000803e3d6000fd5b505b505034601055601380546001600160a01b03191633179055565b6000546001600160a01b03163314610d795760405162461bcd60e51b8152600401610a1990612bbf565b600c548111610e165760405162461bcd60e51b815260206004820152605960248201527f50726f7669646520612076616c696420737570706c7920692e652e206772656160448201527f746572207468616e2063757272656e7420737570706c7920616e64206c65737360648201527f207468616e2f657175616c20746f206d617820737570706c7900000000000000608482015260a401610a19565b600c55565b610b51838383611959565b6000610e31836111cb565b8210610e8a5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610a19565b6000610e9560015490565b905060008060005b83811015610f3f576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610ef057805192505b876001600160a01b0316836001600160a01b03161415610f2c5786841415610f1e5750935061091692505050565b83610f2881612d92565b9450505b5080610f3781612d92565b915050610e9d565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b6064820152608401610a19565b600d8054610fac90612d57565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd890612d57565b80156110255780601f10610ffa57610100808354040283529160200191611025565b820191906000526020600020905b81548152906001019060200180831161100857829003601f168201915b505050505081565b610b5183838360405180602001604052806000815250611471565b60125460009042111561105b5750600190565b50600090565b600061106c60015490565b82106110c65760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610a19565b5090565b6000546001600160a01b031633146110f45760405162461bcd60e51b8152600401610a1990612bbf565b600260095414156111175760405162461bcd60e51b8152600401610a1990612c47565b60026009556040516000906001600160a01b0383169047908381818185875af1925050503d8060008114611167576040519150601f19603f3d011682016040523d82523d6000602084013e61116c565b606091505b50509050806111b05760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610a19565b50506001600955565b60006111c482611ce1565b5192915050565b60006001600160a01b0382166112375760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610a19565b506001600160a01b03166000908152600560205260409020546001600160801b031690565b6060600a805461092b90612d57565b6000546001600160a01b031633146112955760405162461bcd60e51b8152600401610a1990612bbf565b61129f6000611e8b565b565b6000546001600160a01b031633146112cb5760405162461bcd60e51b8152600401610a1990612bbf565b80516112de90600d906020840190612745565b5050565b604080518082019091526000808252602082015261091682611ce1565b6000546001600160a01b031633146113295760405162461bcd60e51b8152600401610a1990612bbf565b80516112de90600a906020840190612745565b60606003805461092b90612d57565b6001600160a01b0382163314156113a45760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c65720000000000006044820152606401610a19565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600260095414156114335760405162461bcd60e51b8152600401610a1990612c47565b60026009556000546001600160a01b031633146114625760405162461bcd60e51b8152600401610a1990612bbf565b61146a611edb565b6001600955565b61147c848484611959565b61148884848484612185565b6114a45760405162461bcd60e51b8152600401610a1990612bf4565b50505050565b60606114b7826001541190565b6115185760405162461bcd60e51b815260206004820152602c60248201527f4552433732314d657461646174613a2055524920736574206f66206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a19565b600a61152383612293565b600d60405160200161153793929190612b3c565b6040516020818303038152906040529050919050565b6000546001600160a01b031633146115775760405162461bcd60e51b8152600401610a1990612bbf565b6115818142612ca9565b60125550565b6000546001600160a01b031633146115b15760405162461bcd60e51b8152600401610a1990612bbf565b600b55565b6000546001600160a01b031633146115e05760405162461bcd60e51b8152600401610a1990612bbf565b600c54600154106116295760405162461bcd60e51b815260206004820152601360248201527226b0bc1029bab838363c902932b0b1b432b21760691b6044820152606401610a19565b60006040518060c0016040528061163f60015490565b815260200160008152602001428152602001428152602001836001600160a01b03168152602001600115158152509050806015600061167d60015490565b8152602080820192909252604090810160002083518155918301516001808401919091559083015160028301556060830151600383015560808301516004909201805460a0909401511515600160a01b026001600160a81b03199094166001600160a01b03909316929092179290921790556112de908390612391565b61173e6040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681526020016000151581525090565b50600090815260156020908152604091829020825160c08101845281548152600182015492810192909252600281015492820192909252600382015460608201526004909101546001600160a01b0381166080830152600160a01b900460ff16151560a082015290565b600260095414156117cb5760405162461bcd60e51b8152600401610a1990612c47565b60026009556117d8611edb565b61146a6123ab565b6000546001600160a01b0316331461180a5760405162461bcd60e51b8152600401610a1990612bbf565b6001600160a01b03811661186f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a19565b61187881611e8b565b50565b6002600954141561189e5760405162461bcd60e51b8152600401610a1990612c47565b60026009556000546001600160a01b031633146117d85760405162461bcd60e51b8152600401610a1990612bbf565b6000546001600160a01b031633146118f75760405162461bcd60e51b8152600401610a1990612bbf565b42601255565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061196482611ce1565b80519091506000906001600160a01b0316336001600160a01b0316148061199b575033611990846109ae565b6001600160a01b0316145b806119ad575081516119ad9033610808565b905080611a175760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610a19565b846001600160a01b031682600001516001600160a01b031614611a8b5760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b6064820152608401610a19565b6001600160a01b038416611aef5760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610a19565b611aff60008484600001516118fd565b6001600160a01b0385166000908152600560205260408120805460019290611b319084906001600160801b0316612cd5565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b03861660009081526005602052604081208054600194509092611b7d91859116612c7e565b82546001600160801b039182166101009390930a9283029190920219909116179055506040805180820182526001600160a01b03808716825267ffffffffffffffff428116602080850191825260008981526004909152948520935184549151909216600160a01b026001600160e01b03199091169190921617179055611c05846001612ca9565b6000818152600460205260409020549091506001600160a01b0316611c9757611c2f816001541190565b15611c975760408051808201825284516001600160a01b03908116825260208087015167ffffffffffffffff9081168285019081526000878152600490935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6040805180820190915260008082526020820152611d00826001541190565b611d5f5760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b6064820152608401610a19565b60007f00000000000000000000000000000000000000000000000000000000000000018310611dc057611db27f000000000000000000000000000000000000000000000000000000000000000184612cfd565b611dbd906001612ca9565b90505b825b818110611e2a576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215611e1757949350505050565b5080611e2281612d40565b915050611dc2565b5060405162461bcd60e51b815260206004820152602f60248201527f455243373231413a20756e61626c6520746f2064657465726d696e652074686560448201526e1037bbb732b91037b3103a37b5b2b760891b6064820152608401610a19565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160c081018252600f54815260105460208201526011549181019190915260125460608201526013546001600160a01b0381166080830152600160a01b900460ff16151560a0820152600c5460015410611f705760405162461bcd60e51b815260206004820152601360248201527226b0bc1029bab838363c902932b0b1b432b21760691b6044820152606401610a19565b60145460ff16611fc25760405162461bcd60e51b815260206004820152601860248201527f41756374696f6e204e6f742053746172746564205965742e00000000000000006044820152606401610a19565b604081015161200a5760405162461bcd60e51b815260206004820152601460248201527320bab1ba34b7b7103430b9b713ba103132b3bab760611b6044820152606401610a19565b8060a001511561205c5760405162461bcd60e51b815260206004820181905260248201527f41756374696f6e2068617320616c7265616479206265656e20736574746c65646044820152606401610a19565b80606001514210156120b05760405162461bcd60e51b815260206004820152601860248201527f41756374696f6e206861736e277420636f6d706c6574656400000000000000006044820152606401610a19565b600160a082015260808101516001600160a01b03166120ec576000546001600160a01b0316608082018190526120e7906001612391565b6120fb565b6120fb81608001516001612391565b8060156000600161210b60015490565b6121159190612cfd565b815260208082019290925260409081016000208351815591830151600183015582015160028201556060820151600382015560808201516004909101805460a0909301511515600160a01b026001600160a81b03199093166001600160a01b039092169190911791909117905550565b60006001600160a01b0384163b1561228757604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906121c9903390899088908890600401612b6f565b602060405180830381600087803b1580156121e357600080fd5b505af1925050508015612213575060408051601f3d908101601f19168201909252612210918101906129f7565b60015b61226d573d808015612241576040519150601f19603f3d011682016040523d82523d6000602084013e612246565b606091505b5080516122655760405162461bcd60e51b8152600401610a1990612bf4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061228b565b5060015b949350505050565b6060816122b75750506040805180820190915260018152600360fc1b602082015290565b8160005b81156122e157806122cb81612d92565b91506122da9050600a83612cc1565b91506122bb565b60008167ffffffffffffffff8111156122fc576122fc612e03565b6040519080825280601f01601f191660200182016040528015612326576020820181803683370190505b5090505b841561228b5761233b600183612cfd565b9150612348600a86612dad565b612353906030612ca9565b60f81b81838151811061236857612368612ded565b60200101906001600160f81b031916908160001a90535061238a600a86612cc1565b945061232a565b6112de82826040518060200160405280600081525061246a565b600c54600154101561129f57600e5442906000906123c99083612ca9565b90506040518060c001604052806123df60015490565b815260006020808301829052604080840196909652606080840195909552608080840183905260a0938401929092528351600f558301516010559382015160115591810151601255918201516013805493909201511515600160a01b026001600160a81b03199093166001600160a01b0391909116179190911790556014805460ff19166001179055565b6001546001600160a01b0384166124cd5760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610a19565b6124d8816001541190565b156125255760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e7465640000006044820152606401610a19565b7f00000000000000000000000000000000000000000000000000000000000000018311156125a05760405162461bcd60e51b815260206004820152602260248201527f455243373231413a207175616e7469747920746f206d696e7420746f6f2068696044820152610ced60f31b6064820152608401610a19565b6001600160a01b0384166000908152600560209081526040918290208251808401845290546001600160801b038082168352600160801b90910416918101919091528151808301909252805190919081906125fc908790612c7e565b6001600160801b0316815260200185836020015161261a9190612c7e565b6001600160801b039081169091526001600160a01b0380881660008181526005602090815260408083208751978301518716600160801b0297909616969096179094558451808601865291825267ffffffffffffffff4281168386019081528883526004909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b8581101561273a5760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46126fe6000888488612185565b61271a5760405162461bcd60e51b8152600401610a1990612bf4565b8161272481612d92565b925050808061273290612d92565b9150506126b1565b506001819055611cd9565b82805461275190612d57565b90600052602060002090601f01602090048101928261277357600085556127b9565b82601f1061278c57805160ff19168380011785556127b9565b828001600101855582156127b9579182015b828111156127b957825182559160200191906001019061279e565b506110c69291505b808211156110c657600081556001016127c1565b600067ffffffffffffffff808411156127f0576127f0612e03565b604051601f8501601f19908116603f0116810190828211818310171561281857612818612e03565b8160405280935085815286868601111561283157600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461286257600080fd5b919050565b60006020828403121561287957600080fd5b6128828261284b565b9392505050565b6000806040838503121561289c57600080fd5b6128a58361284b565b91506128b36020840161284b565b90509250929050565b6000806000606084860312156128d157600080fd5b6128da8461284b565b92506128e86020850161284b565b9150604084013590509250925092565b6000806000806080858703121561290e57600080fd5b6129178561284b565b93506129256020860161284b565b925060408501359150606085013567ffffffffffffffff81111561294857600080fd5b8501601f8101871361295957600080fd5b612968878235602084016127d5565b91505092959194509250565b6000806040838503121561298757600080fd5b6129908361284b565b9150602083013580151581146129a557600080fd5b809150509250929050565b600080604083850312156129c357600080fd5b6129cc8361284b565b946020939093013593505050565b6000602082840312156129ec57600080fd5b813561288281612e19565b600060208284031215612a0957600080fd5b815161288281612e19565b600060208284031215612a2657600080fd5b813567ffffffffffffffff811115612a3d57600080fd5b8201601f81018413612a4e57600080fd5b61228b848235602084016127d5565b600060208284031215612a6f57600080fd5b5035919050565b60008151808452612a8e816020860160208601612d14565b601f01601f19169290920160200192915050565b8054600090600181811c9080831680612abc57607f831692505b6020808410821415612ade57634e487b7160e01b600052602260045260246000fd5b818015612af25760018114612b0357612b30565b60ff19861689528489019650612b30565b60008881526020902060005b86811015612b285781548b820152908501908301612b0f565b505084890196505b50505050505092915050565b6000612b488286612aa2565b8451612b58818360208901612d14565b612b6481830186612aa2565b979650505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612ba290830184612a76565b9695505050505050565b6020815260006128826020830184612a76565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60006001600160801b03808316818516808303821115612ca057612ca0612dc1565b01949350505050565b60008219821115612cbc57612cbc612dc1565b500190565b600082612cd057612cd0612dd7565b500490565b60006001600160801b0383811690831681811015612cf557612cf5612dc1565b039392505050565b600082821015612d0f57612d0f612dc1565b500390565b60005b83811015612d2f578181015183820152602001612d17565b838111156114a45750506000910152565b600081612d4f57612d4f612dc1565b506000190190565b600181811c90821680612d6b57607f821691505b60208210811415612d8c57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612da657612da6612dc1565b5060010190565b600082612dbc57612dbc612dd7565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461187857600080fdfea2646970667358221220093354d990f5930fa585b696277f3c9c22d79a8b10dcb636bd67fbfed90ddbf564736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c47656e657369732050617773000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024750000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name (string): Genesis Paws
Arg [1] : symbol (string): GP
Arg [2] : _maxBatchSize (uint256): 1
Arg [3] : _collectionSize (uint256): 10
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [5] : 47656e6573697320506177730000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [7] : 4750000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
36913:5763:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22145:370;;;;;;;;;;-1:-1:-1;22145:370:0;;;;;:::i;:::-;;:::i;:::-;;;6820:14:1;;6813:22;6795:41;;6783:2;6768:18;22145:370:0;;;;;;;;37088:43;;;;;;;;;;;;;;;;;;;20647:25:1;;;20635:2;20620:18;37088:43:0;20501:177:1;23871:94:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25396:204::-;;;;;;;;;;-1:-1:-1;25396:204:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6118:32:1;;;6100:51;;6088:2;6073:18;25396:204:0;5954:203:1;24959:379:0;;;;;;;;;;-1:-1:-1;24959:379:0;;;;;:::i;:::-;;:::i;:::-;;37248:31;;;;;;;;;;;;;;;;42191:95;;;;;;;;;;-1:-1:-1;42257:21:0;42191:95;;39706:732;;;:::i;20706:94::-;;;;;;;;;;-1:-1:-1;20782:12:0;;20706:94;;41955:228;;;;;;;;;;-1:-1:-1;41955:228:0;;;;;:::i;:::-;;:::i;26246:142::-;;;;;;;;;;-1:-1:-1;26246:142:0;;;;;:::i;:::-;;:::i;21337:744::-;;;;;;;;;;-1:-1:-1;21337:744:0;;;;;:::i;:::-;;:::i;37411:63::-;;;;;;;;;;-1:-1:-1;37411:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37411:63:0;;;-1:-1:-1;;;37411:63:0;;;;;;;;;;20980:25:1;;;21036:2;21021:18;;21014:34;;;;21064:18;;;21057:34;;;;21122:2;21107:18;;21100:34;-1:-1:-1;;;;;21171:32:1;21165:3;21150:19;;21143:61;21248:14;21241:22;21191:3;21220:19;;21213:51;20967:3;20952:19;37411:63:0;20683:587:1;37174:24:0;;;;;;;;;;;;;:::i;26451:157::-;;;;;;;;;;-1:-1:-1;26451:157:0;;;;;:::i;:::-;;:::i;40446:174::-;;;;;;;;;;;;;:::i;20869:177::-;;;;;;;;;;-1:-1:-1;20869:177:0;;;;;:::i;:::-;;:::i;42294:181::-;;;;;;;;;;-1:-1:-1;42294:181:0;;;;;:::i;:::-;;:::i;23694:118::-;;;;;;;;;;-1:-1:-1;23694:118:0;;;;;:::i;:::-;;:::i;22571:211::-;;;;;;;;;;-1:-1:-1;22571:211:0;;;;;:::i;:::-;;:::i;41741:92::-;;;;;;;;;;;;;:::i;1459:94::-;;;;;;;;;;;;;:::i;37325:36::-;;;;;;;;;;-1:-1:-1;37325:36:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37325:36:0;;;-1:-1:-1;;;37325:36:0;;;;;;41633:100;;;;;;;;;;-1:-1:-1;41633:100:0;;;;;:::i;:::-;;:::i;808:87::-;;;;;;;;;;-1:-1:-1;854:7:0;881:6;-1:-1:-1;;;;;881:6:0;808:87;;42483:147;;;;;;;;;;-1:-1:-1;42483:147:0;;;;;:::i;:::-;;:::i;:::-;;;;20366:13:1;;-1:-1:-1;;;;;20362:39:1;20344:58;;20462:4;20450:17;;;20444:24;20470:18;20440:49;20418:20;;;20411:79;;;;20317:18;42483:147:0;20136:360:1;41520:107:0;;;;;;;;;;-1:-1:-1;41520:107:0;;;;;:::i;:::-;;:::i;24026:98::-;;;;;;;;;;;;;:::i;25664:274::-;;;;;;;;;;-1:-1:-1;25664:274:0;;;;;:::i;:::-;;:::i;40970:91::-;;;;;;;;;;;;;:::i;26671:311::-;;;;;;;;;;-1:-1:-1;26671:311:0;;;;;:::i;:::-;;:::i;41205:307::-;;;;;;;;;;-1:-1:-1;41205:307:0;;;;;:::i;:::-;;:::i;40753:112::-;;;;;;;;;;-1:-1:-1;40753:112:0;;;;;:::i;:::-;;:::i;37138:29::-;;;;;;;;;;;;;;;;31086:43;;;;;;;;;;;;;;;;41841:106;;;;;;;;;;-1:-1:-1;41841:106:0;;;;;:::i;:::-;;:::i;39145:555::-;;;;;;;;;;-1:-1:-1;39145:555:0;;;;;:::i;:::-;;:::i;41067:132::-;;;;;;;;;;-1:-1:-1;41067:132:0;;;;;:::i;:::-;;:::i;:::-;;;;;;19754:13:1;;19736:32;;19824:4;19812:17;;;19806:24;19784:20;;;19777:54;19887:4;19875:17;;;19869:24;19847:20;;;19840:54;19950:4;19938:17;;;19932:24;19910:20;;;19903:54;20017:4;20005:17;;;19999:24;-1:-1:-1;;;;;19995:50:1;19973:20;;;19966:80;20033:3;20104:17;;;20098:24;20091:32;20084:40;20062:20;;;20055:70;;;;19723:3;19708:19;;19539:592;26001:186:0;;;;;;;;;;-1:-1:-1;26001:186:0;;;;;:::i;:::-;-1:-1:-1;;;;;26146:25:0;;;26123:4;26146:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;26001:186;37368:34;;;;;;;;;;-1:-1:-1;37368:34:0;;;;;;;;37692:129;;;;;;;;;;;;;:::i;1708:192::-;;;;;;;;;;-1:-1:-1;1708:192:0;;;;;:::i;:::-;;:::i;40873:91::-;;;;;;;;;;;;;:::i;40628:88::-;;;;;;;;;;;;;:::i;22145:370::-;22272:4;-1:-1:-1;;;;;;22302:40:0;;-1:-1:-1;;;22302:40:0;;:99;;-1:-1:-1;;;;;;;22353:48:0;;-1:-1:-1;;;22353:48:0;22302:99;:160;;;-1:-1:-1;;;;;;;22412:50:0;;-1:-1:-1;;;22412:50:0;22302:160;:207;;;-1:-1:-1;;;;;;;;;;18871:40:0;;;22473:36;22288:221;22145:370;-1:-1:-1;;22145:370:0:o;23871:94::-;23925:13;23954:5;23947:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23871:94;:::o;25396:204::-;25464:7;25488:16;25496:7;27308:12;;-1:-1:-1;27298:22:0;27221:105;25488:16;25480:74;;;;-1:-1:-1;;;25480:74:0;;18924:2:1;25480:74:0;;;18906:21:1;18963:2;18943:18;;;18936:30;19002:34;18982:18;;;18975:62;-1:-1:-1;;;19053:18:1;;;19046:43;19106:19;;25480:74:0;;;;;;;;;-1:-1:-1;25570:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;25570:24:0;;25396:204::o;24959:379::-;25028:13;25044:24;25060:7;25044:15;:24::i;:::-;25028:40;;25089:5;-1:-1:-1;;;;;25083:11:0;:2;-1:-1:-1;;;;;25083:11:0;;;25075:58;;;;-1:-1:-1;;;25075:58:0;;14059:2:1;25075:58:0;;;14041:21:1;14098:2;14078:18;;;14071:30;14137:34;14117:18;;;14110:62;-1:-1:-1;;;14188:18:1;;;14181:32;14230:19;;25075:58:0;13857:398:1;25075:58:0;271:10;-1:-1:-1;;;;;25158:21:0;;;;:62;;-1:-1:-1;25183:37:0;25200:5;271:10;26001:186;:::i;25183:37::-;25142:153;;;;-1:-1:-1;;;25142:153:0;;10502:2:1;25142:153:0;;;10484:21:1;10541:2;10521:18;;;10514:30;10580:34;10560:18;;;10553:62;10651:27;10631:18;;;10624:55;10696:19;;25142:153:0;10300:421:1;25142:153:0;25304:28;25313:2;25317:7;25326:5;25304:8;:28::i;:::-;25021:317;24959:379;;:::o;39706:732::-;39778:9;;20782:12;;39762:25;39754:57;;;;-1:-1:-1;;;39754:57:0;;17463:2:1;39754:57:0;;;17445:21:1;17502:2;17482:18;;;17475:30;-1:-1:-1;;;17521:18:1;;;17514:49;17580:18;;39754:57:0;17261:343:1;39754:57:0;39822:47;;;;;;;;39862:7;39822:47;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39822:47:0;;;;;;-1:-1:-1;;;39822:47:0;;;;;;;;;;20782:12;;39890:14;;:31;39882:66;;;;-1:-1:-1;;;39882:66:0;;8992:2:1;39882:66:0;;;8974:21:1;9031:2;9011:18;;;9004:30;-1:-1:-1;;;9050:18:1;;;9043:52;9112:18;;39882:66:0;8790:346:1;39882:66:0;39985:8;:16;;;39967:15;:34;39959:62;;;;-1:-1:-1;;;39959:62:0;;18227:2:1;39959:62:0;;;18209:21:1;18266:2;18246:18;;;18239:30;-1:-1:-1;;;18285:18:1;;;18278:45;18340:18;;39959:62:0;18025:339:1;39959:62:0;40071:15;;40053:8;:15;;;:33;;;;:::i;:::-;40040:9;:47;40032:93;;;;-1:-1:-1;;;40032:93:0;;13656:2:1;40032:93:0;;;13638:21:1;13695:2;13675:18;;;13668:30;13734:34;13714:18;;;13707:62;-1:-1:-1;;;13785:18:1;;;13778:32;13827:19;;40032:93:0;13454:398:1;40032:93:0;40167:15;;;;-1:-1:-1;;;;;40249:24:0;;;40245:102;;40319:15;;;;40290:45;;-1:-1:-1;;;;;40290:28:0;;;:45;;;;;;;;;40319:15;40290:28;:45;;;;;;;;;;;;;;;;;;;;;40245:102;-1:-1:-1;;40374:9:0;40357:14;:26;40394:14;:36;;-1:-1:-1;;;;;;40394:36:0;40419:10;40394:36;;;39706:732::o;41955:228::-;854:7;881:6;-1:-1:-1;;;;;881:6:0;271:10;1028:23;1020:68;;;;-1:-1:-1;;;1020:68:0;;;;;;;:::i;:::-;42042:9:::1;;42032:7;:19;42024:121;;;::::0;-1:-1:-1;;;42024:121:0;;7676:2:1;42024:121:0::1;::::0;::::1;7658:21:1::0;7715:2;7695:18;;;7688:30;7754:34;7734:18;;;7727:62;7825:34;7805:18;;;7798:62;7897:27;7876:19;;;7869:56;7942:19;;42024:121:0::1;7474:493:1::0;42024:121:0::1;42156:9;:19:::0;41955:228::o;26246:142::-;26354:28;26364:4;26370:2;26374:7;26354:9;:28::i;21337:744::-;21446:7;21481:16;21491:5;21481:9;:16::i;:::-;21473:5;:24;21465:71;;;;-1:-1:-1;;;21465:71:0;;7273:2:1;21465:71:0;;;7255:21:1;7312:2;7292:18;;;7285:30;7351:34;7331:18;;;7324:62;-1:-1:-1;;;7402:18:1;;;7395:32;7444:19;;21465:71:0;7071:398:1;21465:71:0;21543:22;21568:13;20782:12;;;20706:94;21568:13;21543:38;;21588:19;21618:25;21668:9;21663:350;21687:14;21683:1;:18;21663:350;;;21717:31;21751:14;;;:11;:14;;;;;;;;;21717:48;;;;;;;;;-1:-1:-1;;;;;21717:48:0;;;;;-1:-1:-1;;;21717:48:0;;;;;;;;;;;;21778:28;21774:89;;21839:14;;;-1:-1:-1;21774:89:0;21896:5;-1:-1:-1;;;;;21875:26:0;:17;-1:-1:-1;;;;;21875:26:0;;21871:135;;;21933:5;21918:11;:20;21914:59;;;-1:-1:-1;21960:1:0;-1:-1:-1;21953:8:0;;-1:-1:-1;;;21953:8:0;21914:59;21983:13;;;;:::i;:::-;;;;21871:135;-1:-1:-1;21703:3:0;;;;:::i;:::-;;;;21663:350;;;-1:-1:-1;22019:56:0;;-1:-1:-1;;;22019:56:0;;16688:2:1;22019:56:0;;;16670:21:1;16727:2;16707:18;;;16700:30;16766:34;16746:18;;;16739:62;-1:-1:-1;;;16817:18:1;;;16810:44;16871:19;;22019:56:0;16486:410:1;37174:24:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26451:157::-;26563:39;26580:4;26586:2;26590:7;26563:39;;;;;;;;;;;;:16;:39::i;40446:174::-;40528:15;;40493:4;;40510:15;:33;40507:106;;;-1:-1:-1;40562:4:0;;40446:174::o;40507:106::-;-1:-1:-1;40598:5:0;;40446:174::o;20869:177::-;20936:7;20968:13;20782:12;;;20706:94;20968:13;20960:5;:21;20952:69;;;;-1:-1:-1;;;20952:69:0;;9343:2:1;20952:69:0;;;9325:21:1;9382:2;9362:18;;;9355:30;9421:34;9401:18;;;9394:62;-1:-1:-1;;;9472:18:1;;;9465:33;9515:19;;20952:69:0;9141:399:1;20952:69:0;-1:-1:-1;21035:5:0;20869:177::o;42294:181::-;854:7;881:6;-1:-1:-1;;;;;881:6:0;271:10;1028:23;1020:68;;;;-1:-1:-1;;;1020:68:0;;;;;;;:::i;:::-;2972:1:::1;3568:7;;:19;;3560:63;;;;-1:-1:-1::0;;;3560:63:0::1;;;;;;;:::i;:::-;2972:1;3701:7;:18:::0;42382:42:::2;::::0;42364:12:::2;::::0;-1:-1:-1;;;;;42382:8:0;::::2;::::0;42398:21:::2;::::0;42364:12;42382:42;42364:12;42382:42;42398:21;42382:8;:42:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42363:61;;;42439:7;42431:36;;;::::0;-1:-1:-1;;;42431:36:0;;14462:2:1;42431:36:0::2;::::0;::::2;14444:21:1::0;14501:2;14481:18;;;14474:30;-1:-1:-1;;;14520:18:1;;;14513:46;14576:18;;42431:36:0::2;14260:340:1::0;42431:36:0::2;-1:-1:-1::0;;2928:1:0::1;3880:7;:22:::0;42294:181::o;23694:118::-;23758:7;23781:20;23793:7;23781:11;:20::i;:::-;:25;;23694:118;-1:-1:-1;;23694:118:0:o;22571:211::-;22635:7;-1:-1:-1;;;;;22659:19:0;;22651:75;;;;-1:-1:-1;;;22651:75:0;;10928:2:1;22651:75:0;;;10910:21:1;10967:2;10947:18;;;10940:30;11006:34;10986:18;;;10979:62;-1:-1:-1;;;11057:18:1;;;11050:41;11108:19;;22651:75:0;10726:407:1;22651:75:0;-1:-1:-1;;;;;;22748:19:0;;;;;:12;:19;;;;;:27;-1:-1:-1;;;;;22748:27:0;;22571:211::o;41741:92::-;41785:13;41818:7;41811:14;;;;;:::i;1459:94::-;854:7;881:6;-1:-1:-1;;;;;881:6:0;271:10;1028:23;1020:68;;;;-1:-1:-1;;;1020:68:0;;;;;;;:::i;:::-;1524:21:::1;1542:1;1524:9;:21::i;:::-;1459:94::o:0;41633:100::-;854:7;881:6;-1:-1:-1;;;;;881:6:0;271:10;1028:23;1020:68;;;;-1:-1:-1;;;1020:68:0;;;;;;;:::i;:::-;41707:18;;::::1;::::0;:10:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;;41633:100:::0;:::o;42483:147::-;-1:-1:-1;;;;;;;;;;;;;;;;;42604:20:0;42616:7;42604:11;:20::i;41520:107::-;854:7;881:6;-1:-1:-1;;;;;881:6:0;271:10;1028:23;1020:68;;;;-1:-1:-1;;;1020:68:0;;;;;;;:::i;:::-;41598:21;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;24026:98::-:0;24082:13;24111:7;24104:14;;;;;:::i;25664:274::-;-1:-1:-1;;;;;25755:24:0;;271:10;25755:24;;25747:63;;;;-1:-1:-1;;;25747:63:0;;12882:2:1;25747:63:0;;;12864:21:1;12921:2;12901:18;;;12894:30;12960:28;12940:18;;;12933:56;13006:18;;25747:63:0;12680:350:1;25747:63:0;271:10;25819:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;25819:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;25819:53:0;;;;;;;;;;25884:48;;6795:41:1;;;25819:42:0;;271:10;25884:48;;6768:18:1;25884:48:0;;;;;;;25664:274;;:::o;40970:91::-;2972:1;3568:7;;:19;;3560:63;;;;-1:-1:-1;;;3560:63:0;;;;;;;:::i;:::-;2972:1;3701:7;:18;854:7;881:6;-1:-1:-1;;;;;881:6:0;271:10;1028:23:::1;1020:68;;;;-1:-1:-1::0;;;1020:68:0::1;;;;;;;:::i;:::-;41037:16:::2;:14;:16::i;:::-;2928:1:::0;3880:7;:22;40970:91::o;26671:311::-;26808:28;26818:4;26824:2;26828:7;26808:9;:28::i;:::-;26859:48;26882:4;26888:2;26892:7;26901:5;26859:22;:48::i;:::-;26843:133;;;;-1:-1:-1;;;26843:133:0;;;;;;;:::i;:::-;26671:311;;;;:::o;41205:307::-;41279:13;41327:17;41335:8;27308:12;;-1:-1:-1;27298:22:0;27221:105;41327:17;41305:111;;;;-1:-1:-1;;;41305:111:0;;11747:2:1;41305:111:0;;;11729:21:1;11786:2;11766:18;;;11759:30;11825:34;11805:18;;;11798:62;-1:-1:-1;;;11876:18:1;;;11869:42;11928:19;;41305:111:0;11545:408:1;41305:111:0;41460:7;41469:19;:8;:17;:19::i;:::-;41490:10;41443:58;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;41429:73;;41205:307;;;:::o;40753:112::-;854:7;881:6;-1:-1:-1;;;;;881:6:0;271:10;1028:23;1020:68;;;;-1:-1:-1;;;1020:68:0;;;;;;;:::i;:::-;40834:23:::1;40852:5:::0;40834:15:::1;:23;:::i;:::-;40816:15:::0;:41;-1:-1:-1;40753:112:0:o;41841:106::-;854:7;881:6;-1:-1:-1;;;;;881:6:0;271:10;1028:23;1020:68;;;;-1:-1:-1;;;1020:68:0;;;;;;;:::i;:::-;41915:15:::1;:24:::0;41841:106::o;39145:555::-;854:7;881:6;-1:-1:-1;;;;;881:6:0;271:10;1028:23;1020:68;;;;-1:-1:-1;;;1020:68:0;;;;;;;:::i;:::-;39237:9:::1;::::0;20782:12;;39221:25:::1;39213:57;;;::::0;-1:-1:-1;;;39213:57:0;;15987:2:1;39213:57:0::1;::::0;::::1;15969:21:1::0;16026:2;16006:18;;;15999:30;-1:-1:-1;;;16045:18:1;;;16038:49;16104:18;;39213:57:0::1;15785:343:1::0;39213:57:0::1;39287:37;39327:270;;;;;;;;39375:13;20782:12:::0;;;20706:94;39375:13:::1;39327:270;;;;39415:1;39327:270;;;;39446:15;39327:270;;;;39489:15;39327:270;;;;39539:9;-1:-1:-1::0;;;;;39327:270:0::1;;;;;39577:4;39327:270;;;;::::0;39287:310:::1;;39646:8;39614:14;:29;39629:13;20782:12:::0;;;20706:94;39629:13:::1;39614:29:::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;39614:29:0;:40;;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;;-1:-1:-1::0;;;39614:40:0::1;-1:-1:-1::0;;;;;;39614:40:0;;;-1:-1:-1;;;;;39614:40:0;;::::1;::::0;;;;;;;::::1;::::0;;39669:23:::1;::::0;39679:9;;39669::::1;:23::i;41067:132::-:0;41127:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41127:28:0;-1:-1:-1;41172:19:0;;;;:14;:19;;;;;;;;;41165:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41165:26:0;;;;;;-1:-1:-1;;;41165:26:0;;;;;;;;;;;41067:132::o;37692:129::-;2972:1;3568:7;;:19;;3560:63;;;;-1:-1:-1;;;3560:63:0;;;;;;;:::i;:::-;2972:1;3701:7;:18;37770:16:::1;:14;:16::i;:::-;37797;:14;:16::i;1708:192::-:0;854:7;881:6;-1:-1:-1;;;;;881:6:0;271:10;1028:23;1020:68;;;;-1:-1:-1;;;1020:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1797:22:0;::::1;1789:73;;;::::0;-1:-1:-1;;;1789:73:0;;8174:2:1;1789:73:0::1;::::0;::::1;8156:21:1::0;8213:2;8193:18;;;8186:30;8252:34;8232:18;;;8225:62;-1:-1:-1;;;8303:18:1;;;8296:36;8349:19;;1789:73:0::1;7972:402:1::0;1789:73:0::1;1873:19;1883:8;1873:9;:19::i;:::-;1708:192:::0;:::o;40873:91::-;2972:1;3568:7;;:19;;3560:63;;;;-1:-1:-1;;;3560:63:0;;;;;;;:::i;:::-;2972:1;3701:7;:18;854:7;881:6;-1:-1:-1;;;;;881:6:0;271:10;1028:23:::1;1020:68;;;;-1:-1:-1::0;;;1020:68:0::1;;;;;;;:::i;40628:88::-:0;854:7;881:6;-1:-1:-1;;;;;881:6:0;271:10;1028:23;1020:68;;;;-1:-1:-1;;;1020:68:0;;;;;;;:::i;:::-;40693:15:::1;40675::::0;:33;40628:88::o;30908:172::-;31005:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;31005:29:0;-1:-1:-1;;;;;31005:29:0;;;;;;;;;31046:28;;31005:24;;31046:28;;;;;;;30908:172;;;:::o;29273:1529::-;29370:35;29408:20;29420:7;29408:11;:20::i;:::-;29479:18;;29370:58;;-1:-1:-1;29437:22:0;;-1:-1:-1;;;;;29463:34:0;271:10;-1:-1:-1;;;;;29463:34:0;;:81;;;-1:-1:-1;271:10:0;29508:20;29520:7;29508:11;:20::i;:::-;-1:-1:-1;;;;;29508:36:0;;29463:81;:142;;;-1:-1:-1;29572:18:0;;29555:50;;271:10;26001:186;:::i;29555:50::-;29437:169;;29631:17;29615:101;;;;-1:-1:-1;;;29615:101:0;;13237:2:1;29615:101:0;;;13219:21:1;13276:2;13256:18;;;13249:30;13315:34;13295:18;;;13288:62;-1:-1:-1;;;13366:18:1;;;13359:48;13424:19;;29615:101:0;13035:414:1;29615:101:0;29763:4;-1:-1:-1;;;;;29741:26:0;:13;:18;;;-1:-1:-1;;;;;29741:26:0;;29725:98;;;;-1:-1:-1;;;29725:98:0;;11340:2:1;29725:98:0;;;11322:21:1;11379:2;11359:18;;;11352:30;11418:34;11398:18;;;11391:62;-1:-1:-1;;;11469:18:1;;;11462:36;11515:19;;29725:98:0;11138:402:1;29725:98:0;-1:-1:-1;;;;;29838:16:0;;29830:66;;;;-1:-1:-1;;;29830:66:0;;9747:2:1;29830:66:0;;;9729:21:1;9786:2;9766:18;;;9759:30;9825:34;9805:18;;;9798:62;-1:-1:-1;;;9876:18:1;;;9869:35;9921:19;;29830:66:0;9545:401:1;29830:66:0;30005:49;30022:1;30026:7;30035:13;:18;;;30005:8;:49::i;:::-;-1:-1:-1;;;;;30063:18:0;;;;;;:12;:18;;;;;:31;;30093:1;;30063:18;:31;;30093:1;;-1:-1:-1;;;;;30063:31:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;30063:31:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;30101:16:0;;-1:-1:-1;30101:16:0;;;:12;:16;;;;;:29;;-1:-1:-1;;;30101:16:0;;:29;;-1:-1:-1;;30101:29:0;;:::i;:::-;;;-1:-1:-1;;;;;30101:29:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30160:43:0;;;;;;;;-1:-1:-1;;;;;30160:43:0;;;;;;30186:15;30160:43;;;;;;;;;-1:-1:-1;30137:20:0;;;:11;:20;;;;;;:66;;;;;;;;;-1:-1:-1;;;30137:66:0;-1:-1:-1;;;;;;30137:66:0;;;;;;;;;;;30453:11;30149:7;-1:-1:-1;30453:11:0;:::i;:::-;30516:1;30475:24;;;:11;:24;;;;;:29;30431:33;;-1:-1:-1;;;;;;30475:29:0;30471:236;;30533:20;30541:11;27308:12;;-1:-1:-1;27298:22:0;27221:105;30533:20;30529:171;;;30593:97;;;;;;;;30620:18;;-1:-1:-1;;;;;30593:97:0;;;;;;30651:28;;;;30593:97;;;;;;;;;;-1:-1:-1;30566:24:0;;;:11;:24;;;;;;;:124;;;;;;;;;-1:-1:-1;;;30566:124:0;-1:-1:-1;;;;;;30566:124:0;;;;;;;;;;;;30529:171;30739:7;30735:2;-1:-1:-1;;;;;30720:27:0;30729:4;-1:-1:-1;;;;;30720:27:0;;;;;;;;;;;30754:42;29363:1439;;;29273:1529;;;:::o;23034:606::-;-1:-1:-1;;;;;;;;;;;;;;;;;23151:16:0;23159:7;27308:12;;-1:-1:-1;27298:22:0;27221:105;23151:16;23143:71;;;;-1:-1:-1;;;23143:71:0;;8581:2:1;23143:71:0;;;8563:21:1;8620:2;8600:18;;;8593:30;8659:34;8639:18;;;8632:62;-1:-1:-1;;;8710:18:1;;;8703:40;8760:19;;23143:71:0;8379:406:1;23143:71:0;23223:26;23271:12;23260:7;:23;23256:93;;23315:22;23325:12;23315:7;:22;:::i;:::-;:26;;23340:1;23315:26;:::i;:::-;23294:47;;23256:93;23377:7;23357:212;23394:18;23386:4;:26;23357:212;;23431:31;23465:17;;;:11;:17;;;;;;;;;23431:51;;;;;;;;;-1:-1:-1;;;;;23431:51:0;;;;;-1:-1:-1;;;23431:51:0;;;;;;;;;;;;23495:28;23491:71;;23543:9;23034:606;-1:-1:-1;;;;23034:606:0:o;23491:71::-;-1:-1:-1;23414:6:0;;;;:::i;:::-;;;;23357:212;;;-1:-1:-1;23577:57:0;;-1:-1:-1;;;23577:57:0;;17811:2:1;23577:57:0;;;17793:21:1;17850:2;17830:18;;;17823:30;17889:34;17869:18;;;17862:62;-1:-1:-1;;;17940:18:1;;;17933:45;17995:19;;23577:57:0;17609:411:1;1908:173:0;1964:16;1983:6;;-1:-1:-1;;;;;2000:17:0;;;-1:-1:-1;;;;;;2000:17:0;;;;;;2033:40;;1983:6;;;;;;;2033:40;;1964:16;2033:40;1953:128;1908:173;:::o;37829:758::-;37875:47;;;;;;;;37915:7;37875:47;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37875:47:0;;;;;;-1:-1:-1;;;37875:47:0;;;;;;;;;;37957:9;;20782:12;;37941:25;37933:57;;;;-1:-1:-1;;;37933:57:0;;15987:2:1;37933:57:0;;;15969:21:1;16026:2;16006:18;;;15999:30;-1:-1:-1;;;16045:18:1;;;16038:49;16104:18;;37933:57:0;15785:343:1;37933:57:0;38009:14;;;;38001:51;;;;-1:-1:-1;;;38001:51:0;;18571:2:1;38001:51:0;;;18553:21:1;18610:2;18590:18;;;18583:30;18649:26;18629:18;;;18622:54;18693:18;;38001:51:0;18369:348:1;38001:51:0;38071:18;;;;38063:56;;;;-1:-1:-1;;;38063:56:0;;10153:2:1;38063:56:0;;;10135:21:1;10192:2;10172:18;;;10165:30;-1:-1:-1;;;10211:18:1;;;10204:50;10271:18;;38063:56:0;9951:344:1;38063:56:0;38139:8;:16;;;38138:17;38130:62;;;;-1:-1:-1;;;38130:62:0;;12521:2:1;38130:62:0;;;12503:21:1;;;12540:18;;;12533:30;12599:34;12579:18;;;12572:62;12651:18;;38130:62:0;12319:356:1;38130:62:0;38230:8;:16;;;38211:15;:35;;38203:72;;;;-1:-1:-1;;;38203:72:0;;16335:2:1;38203:72:0;;;16317:21:1;16374:2;16354:18;;;16347:30;16413:26;16393:18;;;16386:54;16457:18;;38203:72:0;16133:348:1;38203:72:0;38307:4;38288:16;;;:23;38327:15;;;;-1:-1:-1;;;;;38327:29:0;38323:192;;854:7;881:6;-1:-1:-1;;;;;881:6:0;38373:15;;;:34;;;38422:21;;38441:1;38422:9;:21::i;:::-;38323:192;;;38474:29;38484:8;:15;;;38501:1;38474:9;:29::i;:::-;38563:8;38527:14;:33;38558:1;38542:13;20782:12;;;20706:94;38542:13;:17;;;;:::i;:::-;38527:33;;;;;;;;;;;;;;-1:-1:-1;38527:33:0;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;38527:44:0;-1:-1:-1;;;;;;38527:44:0;;;-1:-1:-1;;;;;38527:44:0;;;;;;;;;;;;;-1:-1:-1;37829:758:0:o;32623:690::-;32760:4;-1:-1:-1;;;;;32777:13:0;;11866:20;11914:8;32773:535;;32816:72;;-1:-1:-1;;;32816:72:0;;-1:-1:-1;;;;;32816:36:0;;;;;:72;;271:10;;32867:4;;32873:7;;32882:5;;32816:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32816:72:0;;;;;;;;-1:-1:-1;;32816:72:0;;;;;;;;;;;;:::i;:::-;;;32803:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33047:13:0;;33043:215;;33080:61;;-1:-1:-1;;;33080:61:0;;;;;;;:::i;33043:215::-;33226:6;33220:13;33211:6;33207:2;33203:15;33196:38;32803:464;-1:-1:-1;;;;;;32938:55:0;-1:-1:-1;;;32938:55:0;;-1:-1:-1;32931:62:0;;32773:535;-1:-1:-1;33296:4:0;32773:535;32623:690;;;;;;:::o;34637:723::-;34693:13;34914:10;34910:53;;-1:-1:-1;;34941:10:0;;;;;;;;;;;;-1:-1:-1;;;34941:10:0;;;;;34637:723::o;34910:53::-;34988:5;34973:12;35029:78;35036:9;;35029:78;;35062:8;;;;:::i;:::-;;-1:-1:-1;35085:10:0;;-1:-1:-1;35093:2:0;35085:10;;:::i;:::-;;;35029:78;;;35117:19;35149:6;35139:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35139:17:0;;35117:39;;35167:154;35174:10;;35167:154;;35201:11;35211:1;35201:11;;:::i;:::-;;-1:-1:-1;35270:10:0;35278:2;35270:5;:10;:::i;:::-;35257:24;;:2;:24;:::i;:::-;35244:39;;35227:6;35234;35227:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;35227:56:0;;;;;;;;-1:-1:-1;35298:11:0;35307:2;35298:11;;:::i;:::-;;;35167:154;;27332:98;27397:27;27407:2;27411:8;27397:27;;;;;;;;;;;;:9;:27::i;38595:544::-;38664:9;;20782:12;;38648:25;38645:487;;;38778:8;;38714:15;;38693:18;;38765:21;;38714:15;38765:21;:::i;:::-;38746:40;;38815:265;;;;;;;;38865:13;20782:12;;;20706:94;38865:13;38815:265;;38907:1;38815:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38805:275;;:7;:275;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;38805:275:0;-1:-1:-1;;;;;;38805:275:0;;;-1:-1:-1;;;;;38805:275:0;;;;;;;;;;;;39097:21;;-1:-1:-1;;39097:21:0;38815:265;39097:21;;;38595:544::o;27769:1272::-;27897:12;;-1:-1:-1;;;;;27924:16:0;;27916:62;;;;-1:-1:-1;;;27916:62:0;;15585:2:1;27916:62:0;;;15567:21:1;15624:2;15604:18;;;15597:30;15663:34;15643:18;;;15636:62;-1:-1:-1;;;15714:18:1;;;15707:31;15755:19;;27916:62:0;15383:397:1;27916:62:0;28115:21;28123:12;27308;;-1:-1:-1;27298:22:0;27221:105;28115:21;28114:22;28106:64;;;;-1:-1:-1;;;28106:64:0;;15227:2:1;28106:64:0;;;15209:21:1;15266:2;15246:18;;;15239:30;15305:31;15285:18;;;15278:59;15354:18;;28106:64:0;15025:353:1;28106:64:0;28197:12;28185:8;:24;;28177:71;;;;-1:-1:-1;;;28177:71:0;;19338:2:1;28177:71:0;;;19320:21:1;19377:2;19357:18;;;19350:30;19416:34;19396:18;;;19389:62;-1:-1:-1;;;19467:18:1;;;19460:32;19509:19;;28177:71:0;19136:398:1;28177:71:0;-1:-1:-1;;;;;28360:16:0;;28327:30;28360:16;;;:12;:16;;;;;;;;;28327:49;;;;;;;;;-1:-1:-1;;;;;28327:49:0;;;;;-1:-1:-1;;;28327:49:0;;;;;;;;;;;28402:119;;;;;;;;28422:19;;28327:49;;28402:119;;;28422:39;;28452:8;;28422:39;:::i;:::-;-1:-1:-1;;;;;28402:119:0;;;;;28505:8;28470:11;:24;;;:44;;;;:::i;:::-;-1:-1:-1;;;;;28402:119:0;;;;;;-1:-1:-1;;;;;28383:16:0;;;;;;;:12;:16;;;;;;;;:138;;;;;;;;-1:-1:-1;;;28383:138:0;;;;;;;;;;;;28556:43;;;;;;;;;;;28582:15;28556:43;;;;;;;;28528:25;;;:11;:25;;;;;;:71;;;;;;;;;-1:-1:-1;;;28528:71:0;-1:-1:-1;;;;;;28528:71:0;;;;;;;;;;;;;;;;;;28540:12;;28652:281;28676:8;28672:1;:12;28652:281;;;28705:38;;28730:12;;-1:-1:-1;;;;;28705:38:0;;;28722:1;;28705:38;;28722:1;;28705:38;28770:59;28801:1;28805:2;28809:12;28823:5;28770:22;:59::i;:::-;28752:150;;;;-1:-1:-1;;;28752:150:0;;;;;;;:::i;:::-;28911:14;;;;:::i;:::-;;;;28686:3;;;;;:::i;:::-;;;;28652:281;;;-1:-1:-1;28941:12:0;:27;;;28975:60;26671:311;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:186::-;887:6;940:2;928:9;919:7;915:23;911:32;908:52;;;956:1;953;946:12;908:52;979:29;998:9;979:29;:::i;:::-;969:39;828:186;-1:-1:-1;;;828:186:1:o;1019:260::-;1087:6;1095;1148:2;1136:9;1127:7;1123:23;1119:32;1116:52;;;1164:1;1161;1154:12;1116:52;1187:29;1206:9;1187:29;:::i;:::-;1177:39;;1235:38;1269:2;1258:9;1254:18;1235:38;:::i;:::-;1225:48;;1019:260;;;;;:::o;1284:328::-;1361:6;1369;1377;1430:2;1418:9;1409:7;1405:23;1401:32;1398:52;;;1446:1;1443;1436:12;1398:52;1469:29;1488:9;1469:29;:::i;:::-;1459:39;;1517:38;1551:2;1540:9;1536:18;1517:38;:::i;:::-;1507:48;;1602:2;1591:9;1587:18;1574:32;1564:42;;1284:328;;;;;:::o;1617:666::-;1712:6;1720;1728;1736;1789:3;1777:9;1768:7;1764:23;1760:33;1757:53;;;1806:1;1803;1796:12;1757:53;1829:29;1848:9;1829:29;:::i;:::-;1819:39;;1877:38;1911:2;1900:9;1896:18;1877:38;:::i;:::-;1867:48;;1962:2;1951:9;1947:18;1934:32;1924:42;;2017:2;2006:9;2002:18;1989:32;2044:18;2036:6;2033:30;2030:50;;;2076:1;2073;2066:12;2030:50;2099:22;;2152:4;2144:13;;2140:27;-1:-1:-1;2130:55:1;;2181:1;2178;2171:12;2130:55;2204:73;2269:7;2264:2;2251:16;2246:2;2242;2238:11;2204:73;:::i;:::-;2194:83;;;1617:666;;;;;;;:::o;2288:347::-;2353:6;2361;2414:2;2402:9;2393:7;2389:23;2385:32;2382:52;;;2430:1;2427;2420:12;2382:52;2453:29;2472:9;2453:29;:::i;:::-;2443:39;;2532:2;2521:9;2517:18;2504:32;2579:5;2572:13;2565:21;2558:5;2555:32;2545:60;;2601:1;2598;2591:12;2545:60;2624:5;2614:15;;;2288:347;;;;;:::o;2640:254::-;2708:6;2716;2769:2;2757:9;2748:7;2744:23;2740:32;2737:52;;;2785:1;2782;2775:12;2737:52;2808:29;2827:9;2808:29;:::i;:::-;2798:39;2884:2;2869:18;;;;2856:32;;-1:-1:-1;;;2640:254:1:o;2899:245::-;2957:6;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3065:9;3052:23;3084:30;3108:5;3084:30;:::i;3149:249::-;3218:6;3271:2;3259:9;3250:7;3246:23;3242:32;3239:52;;;3287:1;3284;3277:12;3239:52;3319:9;3313:16;3338:30;3362:5;3338:30;:::i;3403:450::-;3472:6;3525:2;3513:9;3504:7;3500:23;3496:32;3493:52;;;3541:1;3538;3531:12;3493:52;3581:9;3568:23;3614:18;3606:6;3603:30;3600:50;;;3646:1;3643;3636:12;3600:50;3669:22;;3722:4;3714:13;;3710:27;-1:-1:-1;3700:55:1;;3751:1;3748;3741:12;3700:55;3774:73;3839:7;3834:2;3821:16;3816:2;3812;3808:11;3774:73;:::i;3858:180::-;3917:6;3970:2;3958:9;3949:7;3945:23;3941:32;3938:52;;;3986:1;3983;3976:12;3938:52;-1:-1:-1;4009:23:1;;3858:180;-1:-1:-1;3858:180:1:o;4043:257::-;4084:3;4122:5;4116:12;4149:6;4144:3;4137:19;4165:63;4221:6;4214:4;4209:3;4205:14;4198:4;4191:5;4187:16;4165:63;:::i;:::-;4282:2;4261:15;-1:-1:-1;;4257:29:1;4248:39;;;;4289:4;4244:50;;4043:257;-1:-1:-1;;4043:257:1:o;4305:973::-;4390:12;;4355:3;;4445:1;4465:18;;;;4518;;;;4545:61;;4599:4;4591:6;4587:17;4577:27;;4545:61;4625:2;4673;4665:6;4662:14;4642:18;4639:38;4636:161;;;4719:10;4714:3;4710:20;4707:1;4700:31;4754:4;4751:1;4744:15;4782:4;4779:1;4772:15;4636:161;4813:18;4840:104;;;;4958:1;4953:319;;;;4806:466;;4840:104;-1:-1:-1;;4873:24:1;;4861:37;;4918:16;;;;-1:-1:-1;4840:104:1;;4953:319;21348:1;21341:14;;;21385:4;21372:18;;5047:1;5061:165;5075:6;5072:1;5069:13;5061:165;;;5153:14;;5140:11;;;5133:35;5196:16;;;;5090:10;;5061:165;;;5065:3;;5255:6;5250:3;5246:16;5239:23;;4806:466;;;;;;;4305:973;;;;:::o;5283:456::-;5504:3;5532:38;5566:3;5558:6;5532:38;:::i;:::-;5599:6;5593:13;5615:52;5660:6;5656:2;5649:4;5641:6;5637:17;5615:52;:::i;:::-;5683:50;5725:6;5721:2;5717:15;5709:6;5683:50;:::i;:::-;5676:57;5283:456;-1:-1:-1;;;;;;;5283:456:1:o;6162:488::-;-1:-1:-1;;;;;6431:15:1;;;6413:34;;6483:15;;6478:2;6463:18;;6456:43;6530:2;6515:18;;6508:34;;;6578:3;6573:2;6558:18;;6551:31;;;6356:4;;6599:45;;6624:19;;6616:6;6599:45;:::i;:::-;6591:53;6162:488;-1:-1:-1;;;;;;6162:488:1:o;6847:219::-;6996:2;6985:9;6978:21;6959:4;7016:44;7056:2;7045:9;7041:18;7033:6;7016:44;:::i;11958:356::-;12160:2;12142:21;;;12179:18;;;12172:30;12238:34;12233:2;12218:18;;12211:62;12305:2;12290:18;;11958:356::o;14605:415::-;14807:2;14789:21;;;14846:2;14826:18;;;14819:30;14885:34;14880:2;14865:18;;14858:62;-1:-1:-1;;;14951:2:1;14936:18;;14929:49;15010:3;14995:19;;14605:415::o;16901:355::-;17103:2;17085:21;;;17142:2;17122:18;;;17115:30;17181:33;17176:2;17161:18;;17154:61;17247:2;17232:18;;16901:355::o;21401:253::-;21441:3;-1:-1:-1;;;;;21530:2:1;21527:1;21523:10;21560:2;21557:1;21553:10;21591:3;21587:2;21583:12;21578:3;21575:21;21572:47;;;21599:18;;:::i;:::-;21635:13;;21401:253;-1:-1:-1;;;;21401:253:1:o;21659:128::-;21699:3;21730:1;21726:6;21723:1;21720:13;21717:39;;;21736:18;;:::i;:::-;-1:-1:-1;21772:9:1;;21659:128::o;21792:120::-;21832:1;21858;21848:35;;21863:18;;:::i;:::-;-1:-1:-1;21897:9:1;;21792:120::o;21917:246::-;21957:4;-1:-1:-1;;;;;22070:10:1;;;;22040;;22092:12;;;22089:38;;;22107:18;;:::i;:::-;22144:13;;21917:246;-1:-1:-1;;;21917:246:1:o;22168:125::-;22208:4;22236:1;22233;22230:8;22227:34;;;22241:18;;:::i;:::-;-1:-1:-1;22278:9:1;;22168:125::o;22298:258::-;22370:1;22380:113;22394:6;22391:1;22388:13;22380:113;;;22470:11;;;22464:18;22451:11;;;22444:39;22416:2;22409:10;22380:113;;;22511:6;22508:1;22505:13;22502:48;;;-1:-1:-1;;22546:1:1;22528:16;;22521:27;22298:258::o;22561:136::-;22600:3;22628:5;22618:39;;22637:18;;:::i;:::-;-1:-1:-1;;;22673:18:1;;22561:136::o;22702:380::-;22781:1;22777:12;;;;22824;;;22845:61;;22899:4;22891:6;22887:17;22877:27;;22845:61;22952:2;22944:6;22941:14;22921:18;22918:38;22915:161;;;22998:10;22993:3;22989:20;22986:1;22979:31;23033:4;23030:1;23023:15;23061:4;23058:1;23051:15;22915:161;;22702:380;;;:::o;23087:135::-;23126:3;-1:-1:-1;;23147:17:1;;23144:43;;;23167:18;;:::i;:::-;-1:-1:-1;23214:1:1;23203:13;;23087:135::o;23227:112::-;23259:1;23285;23275:35;;23290:18;;:::i;:::-;-1:-1:-1;23324:9:1;;23227:112::o;23344:127::-;23405:10;23400:3;23396:20;23393:1;23386:31;23436:4;23433:1;23426:15;23460:4;23457:1;23450:15;23476:127;23537:10;23532:3;23528:20;23525:1;23518:31;23568:4;23565:1;23558:15;23592:4;23589:1;23582:15;23608:127;23669:10;23664:3;23660:20;23657:1;23650:31;23700:4;23697:1;23690:15;23724:4;23721:1;23714:15;23740:127;23801:10;23796:3;23792:20;23789:1;23782:31;23832:4;23829:1;23822:15;23856:4;23853:1;23846:15;23872:131;-1:-1:-1;;;;;;23946:32:1;;23936:43;;23926:71;;23993:1;23990;23983:12
Swarm Source
ipfs://093354d990f5930fa585b696277f3c9c22d79a8b10dcb636bd67fbfed90ddbf5
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Token Allocations
POL
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| POL | 100.00% | $0.10092 | 0.01 | $0.001009 |
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.