ERC-721
Overview
Max Total Supply
444 WoF
Holders
218
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 WoFLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
WORLD_OF_FOOTBALL_NFT
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-05 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.7; library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; function toString(uint256 value) internal pure returns (string memory) { 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); } 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); } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } 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" ); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } 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" ); } 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); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } 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); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } 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 ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // IERC721.SOL //IERC721 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; } // IERC721Enumerable.sol interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // IERC721Reciver.sol /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } error ApprovalCallerNotOwnerNorApproved(); error ApprovalQueryForNonexistentToken(); error ApproveToCaller(); error ApprovalToCurrentOwner(); error BalanceQueryForZeroAddress(); error MintedQueryForZeroAddress(); error MintToZeroAddress(); error MintZeroQuantity(); error OwnerIndexOutOfBounds(); error OwnerQueryForNonexistentToken(); error TokenIndexOutOfBounds(); error TransferCallerNotOwnerNorApproved(); error TransferFromIncorrectOwner(); error TransferToNonERC721ReceiverImplementer(); error TransferToZeroAddress(); error UnableDetermineTokenOwner(); error URIQueryForNonexistentToken(); /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata and Enumerable extension. Built to optimize for lower gas during batch mints. * * Assumes serials are sequentially minted starting at 0 (e.g. 0, 1, 2, 3..). * * Does not support burning tokens to address(0). * * Assumes that an owner cannot have more than the 2**128 - 1 (max value of uint128) of supply */ 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 internal _currentIndex; // 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) internal _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; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @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) { if (index >= totalSupply()) revert TokenIndexOutOfBounds(); return index; } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. * This read function is O(totalSupply). 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 a) { if (index >= balanceOf(owner)) revert OwnerIndexOutOfBounds(); uint256 numMintedSoFar = totalSupply(); uint256 tokenIdsIdx; address currOwnershipAddr; // Counter overflow is impossible as the loop breaks when uint256 i is equal to another uint256 numMintedSoFar. unchecked { for (uint256 i; 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++; } } } // Execution should never reach this point. assert(false); } /** * @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) { if (owner == address(0)) revert BalanceQueryForZeroAddress(); return uint256(_addressData[owner].balance); } function _numberMinted(address owner) internal view returns (uint256) { if (owner == address(0)) revert MintedQueryForZeroAddress(); return uint256(_addressData[owner].numberMinted); } /** * Gas spent here starts off proportional to the maximum mint batch size. * It gradually moves to O(1) as tokens get transferred around in the collection over time. */ function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) { if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken(); unchecked { for (uint256 curr = tokenId; curr >= 0; curr--) { TokenOwnership memory ownership = _ownerships[curr]; if (ownership.addr != address(0)) { return ownership; } } } revert UnableDetermineTokenOwner(); } /** * @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) { if (!_exists(tokenId)) revert URIQueryForNonexistentToken(); 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); if (to == owner) revert ApprovalToCurrentOwner(); if (_msgSender() != owner && !isApprovedForAll(owner, _msgSender())) revert ApprovalCallerNotOwnerNorApproved(); _approve(to, tokenId, owner); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view override returns (address) { if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken(); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public override { if (operator == _msgSender()) revert ApproveToCaller(); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public override { _transfer(from, to, tokenId); if (!_checkOnERC721Received(from, to, tokenId, _data)) revert TransferToNonERC721ReceiverImplementer(); } /** * @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 Safely mints `quantity` tokens and transfers them to `to`. * * Requirements: * * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called for each safe transfer. * - `quantity` must be greater than 0. * * Emits a {Transfer} event. */ function _safeMint( address to, uint256 quantity, bytes memory _data ) internal { _mint(to, quantity, _data, true); } /** * @dev Mints `quantity` tokens and transfers them to `to`. * * Requirements: * * - `to` cannot be the zero address. * - `quantity` must be greater than 0. * * Emits a {Transfer} event. */ function _mint( address to, uint256 quantity, bytes memory _data, bool safe ) internal { uint256 startTokenId = _currentIndex; if (to == address(0)) revert MintToZeroAddress(); // if (quantity == 0) revert MintZeroQuantity(); //_beforeTokenTransfers(address(0), to, startTokenId, quantity); // Overflows are incredibly unrealistic. // balance or numberMinted overflow if current value of either + quantity > 3.4e38 (2**128) - 1 // updatedIndex overflows if _currentIndex + quantity > 1.56e77 (2**256) - 1 unchecked { _addressData[to].balance += uint128(quantity); _addressData[to].numberMinted += uint128(quantity); _ownerships[startTokenId].addr = to; _ownerships[startTokenId].startTimestamp = uint64(block.timestamp); uint256 updatedIndex = startTokenId; for (uint256 i; i < quantity; i++) { emit Transfer(address(0), to, updatedIndex); if ( safe && !_checkOnERC721Received(address(0), to, updatedIndex, _data) ) { revert TransferToNonERC721ReceiverImplementer(); } 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())); if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved(); if (prevOwnership.addr != from) revert TransferFromIncorrectOwner(); if (to == address(0)) revert TransferToZeroAddress(); // _beforeTokenTransfers(from, to, tokenId, 1); // Clear approvals from the previous owner _approve(address(0), tokenId, prevOwnership.addr); // Underflow of the sender's balance is impossible because we check for // ownership above and the recipient's balance can't realistically overflow. // Counter overflow is incredibly unrealistic as tokenId would have to be 2**256. unchecked { _addressData[from].balance -= 1; _addressData[to].balance += 1; _ownerships[tokenId].addr = to; _ownerships[tokenId].startTimestamp = 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].addr = prevOwnership.addr; _ownerships[nextTokenId].startTimestamp = 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); } /** * @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 TransferToNonERC721ReceiverImplementer(); 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 {} } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) computedHash = _efficientHash(proofElement, computedHash); } } return computedHash; } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } } contract WORLD_OF_FOOTBALL_NFT is ERC721A, Ownable { // variables using Strings for uint256; constructor(bytes32 finalRootHash, string memory _NotRevealedUri) ERC721A("World of Football NFT", "WoF") { rootHash = finalRootHash; setNotRevealedURI(_NotRevealedUri); } uint256 public maxsupply = 5555; uint256 public reserve = 55; uint256 public presaleprice = 0.17 ether; uint256 public price = 0.19 ether; uint256 public SaleMaxQuantity = 5; bool public isPreSalePaused = true; bool public isPaused = true; string public _baseURI1; bytes32 private rootHash; // revealed uri variables address private developerWallet = 0xb40185164121A79A638A877b22042af58825cE0b; bool public revealed = false; string public notRevealedUri; struct userAddress { address userAddress; uint256 counter; } mapping(address => userAddress) public _SaleAddresses; mapping(address => bool) public _SaleAddressExist; function flipPreSaleMinting() public onlyOwner { isPreSalePaused = !isPreSalePaused; } function flipPauseMinting() public onlyOwner { isPaused = !isPaused; } function setRootHash(bytes32 updatedRootHash) public onlyOwner { rootHash = updatedRootHash; } function setBaseURI(string memory _newBaseURI) public onlyOwner { _baseURI1 = _newBaseURI; } function _baseURI() internal view virtual override returns (string memory) { return _baseURI1; } function setReserve(uint256 _reserve) public onlyOwner { require(_reserve <= maxsupply, "the quantity exceeds"); reserve = _reserve; } function setPreSalePrice(uint256 _newCost) public onlyOwner { presaleprice = _newCost; } function setPrice(uint256 _newCost) public onlyOwner { price = _newCost; } // set reaveal uri just in case function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner { notRevealedUri = _notRevealedURI; } // setting reaveal only time can possible //only owner function reveal() public onlyOwner { revealed = !revealed; } function mintReservedTokens(uint256 quantity) public onlyOwner { require(quantity <= reserve, "All reserve tokens have bene minted"); reserve -= quantity; _safeMint(msg.sender, quantity); } function PreMint(bytes32[] calldata _merkleProof, uint256 chosenAmount) public payable { if (_SaleAddressExist[msg.sender] == false) { _SaleAddresses[msg.sender] = userAddress({ userAddress: msg.sender, counter: 0 }); _SaleAddressExist[msg.sender] = true; } require(isPreSalePaused == false, "turn on minting"); require( chosenAmount > 0, "Number Of Tokens Can Not Be Less Than Or Equal To 0" ); require( _SaleAddresses[msg.sender].counter + chosenAmount <= SaleMaxQuantity, "Quantity Must Be Lesser Than Max Supply" ); require( totalSupply() + chosenAmount <= maxsupply - reserve, "all tokens have been minted" ); bytes32 leaf = keccak256(abi.encodePacked(msg.sender)); require( MerkleProof.verify(_merkleProof, rootHash, leaf), "Invalid Proof" ); require( presaleprice * chosenAmount == msg.value, "Sent Ether Value Is Incorrect" ); _safeMint(msg.sender, chosenAmount); _SaleAddresses[msg.sender].counter += chosenAmount; } function Mint(uint256 chosenAmount) public payable { require(isPaused == false, "turn on minting"); require( chosenAmount > 0, "Number Of Tokens Can Not Be Less Than Or Equal To 0" ); require( totalSupply() + chosenAmount <= maxsupply - reserve, "all tokens have been minted" ); require( price * chosenAmount == msg.value, "Sent Ether Value Is Incorrect" ); _safeMint(msg.sender, chosenAmount); } // setting up the reaveal functionality function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); if (revealed == false) { return notRevealedUri; } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string( abi.encodePacked( currentBaseURI, tokenId.toString(), ".json" ) ) : ""; } function withdraw() public onlyOwner { uint256 totalbalance = address(this).balance; uint256 ownerBalance = (totalbalance * 99) / 100; uint256 developerBalance = (totalbalance * 1) / 100; payable(msg.sender).transfer(ownerBalance); payable(developerWallet).transfer(developerBalance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"bytes32","name":"finalRootHash","type":"bytes32"},{"internalType":"string","name":"_NotRevealedUri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"OwnerIndexOutOfBounds","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TokenIndexOutOfBounds","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"UnableDetermineTokenOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"chosenAmount","type":"uint256"}],"name":"Mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"chosenAmount","type":"uint256"}],"name":"PreMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"SaleMaxQuantity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_SaleAddressExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_SaleAddresses","outputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"counter","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_baseURI1","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":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipPauseMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPreSaleMinting","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":"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":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPreSalePaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxsupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mintReservedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleprice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reserve","type":"uint256"}],"name":"setReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"updatedRootHash","type":"bytes32"}],"name":"setRootHash","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":"a","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526115b3600855603760095567025bf6196bd10000600a556702a303fe4b530000600b556005600c55600d805461010161ffff19909116179055601080546001600160a81b03191673b40185164121a79a638a877b22042af58825ce0b1790553480156200007057600080fd5b5060405162002913380380620029138339810160408190526200009391620002b2565b604080518082018252601581527f576f726c64206f6620466f6f7462616c6c204e465400000000000000000000006020808301918252835180850190945260038452622bb7a360e91b908401528151919291620000f3916001916200020c565b508051620001099060029060208401906200020c565b50505062000126620001206200013e60201b60201c565b62000142565b600f829055620001368162000194565b5050620003ef565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6007546001600160a01b03163314620001f35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b8051620002089060119060208401906200020c565b5050565b8280546200021a906200039c565b90600052602060002090601f0160209004810192826200023e576000855562000289565b82601f106200025957805160ff191683800117855562000289565b8280016001018555821562000289579182015b82811115620002895782518255916020019190600101906200026c565b50620002979291506200029b565b5090565b5b808211156200029757600081556001016200029c565b60008060408385031215620002c657600080fd5b8251602080850151919350906001600160401b0380821115620002e857600080fd5b818601915086601f830112620002fd57600080fd5b815181811115620003125762000312620003d9565b604051601f8201601f19908116603f011681019083821181831017156200033d576200033d620003d9565b8160405282815289868487010111156200035657600080fd5b600093505b828410156200037a57848401860151818501870152928501926200035b565b828411156200038c5760008684830101525b8096505050505050509250929050565b600181811c90821680620003b157607f821691505b60208210811415620003d357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61251480620003ff6000396000f3fe6080604052600436106102675760003560e01c806355f804b311610144578063a22cb465116100b6578063c87b56dd1161007a578063c87b56dd14610713578063cd3293de14610733578063cfc08dfb14610749578063e985e9c51461075f578063f2c4ce1e146107a8578063f2fde38b146107c857600080fd5b8063a22cb46514610689578063a475b5dd146106a9578063b187bd26146106be578063b19df54b146106dd578063b88d4fde146106f357600080fd5b80637d7eee42116101085780637d7eee42146105a15780638164669e146105c15780638da5cb5b1461062057806391b7f5ed1461063e57806395d89b411461065e578063a035b1fe1461067357600080fd5b806355f804b31461050c5780636352211e1461052c57806370a082311461054c578063715018a61461056c5780637d5cb4e51461058157600080fd5b806323b872dd116101dd5780634256dbe3116101a15780634256dbe31461046257806342842e0e146104825780634b6406d1146104a25780634f6ccce7146104b857806351830227146104d857806353ceffa3146104f957600080fd5b806323b872dd146103d35780632d7eae66146103f35780632e280e32146104135780632f745c591461042d5780633ccfd60b1461044d57600080fd5b8063081c8c441161022f578063081c8c44146103255780630917c4e11461033a578063095ea7b31461034f57806311e0f0631461036f57806316f8a0d11461038457806318160ddd146103b457600080fd5b806301ffc9a71461026c57806304b13416146102a157806306fdde03146102b857806307883703146102da578063081812fc146102ed575b600080fd5b34801561027857600080fd5b5061028c61028736600461219c565b6107e8565b60405190151581526020015b60405180910390f35b3480156102ad57600080fd5b506102b6610855565b005b3480156102c457600080fd5b506102cd61089c565b60405161029891906122c7565b6102b66102e8366004612183565b61092e565b3480156102f957600080fd5b5061030d610308366004612183565b610a73565b6040516001600160a01b039091168152602001610298565b34801561033157600080fd5b506102cd610ab9565b34801561034657600080fd5b506102b6610b47565b34801561035b57600080fd5b506102b661036a3660046120de565b610b8e565b34801561037b57600080fd5b506102cd610c1c565b34801561039057600080fd5b5061028c61039f366004611f9c565b60136020526000908152604090205460ff1681565b3480156103c057600080fd5b506000545b604051908152602001610298565b3480156103df57600080fd5b506102b66103ee366004611fea565b610c29565b3480156103ff57600080fd5b506102b661040e366004612183565b610c34565b34801561041f57600080fd5b50600d5461028c9060ff1681565b34801561043957600080fd5b506103c56104483660046120de565b610c63565b34801561045957600080fd5b506102b6610d38565b34801561046e57600080fd5b506102b661047d366004612183565b610e08565b34801561048e57600080fd5b506102b661049d366004611fea565b610e80565b3480156104ae57600080fd5b506103c560085481565b3480156104c457600080fd5b506103c56104d3366004612183565b610e9b565b3480156104e457600080fd5b5060105461028c90600160a01b900460ff1681565b6102b6610507366004612108565b610ec2565b34801561051857600080fd5b506102b66105273660046121d6565b6111d2565b34801561053857600080fd5b5061030d610547366004612183565b611213565b34801561055857600080fd5b506103c5610567366004611f9c565b611225565b34801561057857600080fd5b506102b6611273565b34801561058d57600080fd5b506102b661059c366004612183565b6112a9565b3480156105ad57600080fd5b506102b66105bc366004612183565b611353565b3480156105cd57600080fd5b506106016105dc366004611f9c565b601260205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610298565b34801561062c57600080fd5b506007546001600160a01b031661030d565b34801561064a57600080fd5b506102b6610659366004612183565b611382565b34801561066a57600080fd5b506102cd6113b1565b34801561067f57600080fd5b506103c5600b5481565b34801561069557600080fd5b506102b66106a43660046120a2565b6113c0565b3480156106b557600080fd5b506102b6611456565b3480156106ca57600080fd5b50600d5461028c90610100900460ff1681565b3480156106e957600080fd5b506103c5600a5481565b3480156106ff57600080fd5b506102b661070e366004612026565b6114a1565b34801561071f57600080fd5b506102cd61072e366004612183565b6114d5565b34801561073f57600080fd5b506103c560095481565b34801561075557600080fd5b506103c5600c5481565b34801561076b57600080fd5b5061028c61077a366004611fb7565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b3480156107b457600080fd5b506102b66107c33660046121d6565b611645565b3480156107d457600080fd5b506102b66107e3366004611f9c565b611682565b60006001600160e01b031982166380ac58cd60e01b148061081957506001600160e01b03198216635b5e139f60e01b145b8061083457506001600160e01b0319821663780e9d6360e01b145b8061084f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6007546001600160a01b031633146108885760405162461bcd60e51b815260040161087f9061232d565b60405180910390fd5b600d805460ff19811660ff90911615179055565b6060600180546108ab906123f0565b80601f01602080910402602001604051908101604052809291908181526020018280546108d7906123f0565b80156109245780601f106108f957610100808354040283529160200191610924565b820191906000526020600020905b81548152906001019060200180831161090757829003601f168201915b5050505050905090565b600d54610100900460ff16156109785760405162461bcd60e51b815260206004820152600f60248201526e7475726e206f6e206d696e74696e6760881b604482015260640161087f565b600081116109985760405162461bcd60e51b815260040161087f906122da565b6009546008546109a891906123ad565b816109b260005490565b6109bc9190612362565b1115610a0a5760405162461bcd60e51b815260206004820152601b60248201527f616c6c20746f6b656e732068617665206265656e206d696e7465640000000000604482015260640161087f565b3481600b54610a19919061238e565b14610a665760405162461bcd60e51b815260206004820152601d60248201527f53656e742045746865722056616c756520497320496e636f7272656374000000604482015260640161087f565b610a70338261171a565b50565b6000610a80826000541190565b610a9d576040516333d1c03960e21b815260040160405180910390fd5b506000908152600560205260409020546001600160a01b031690565b60118054610ac6906123f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610af2906123f0565b8015610b3f5780601f10610b1457610100808354040283529160200191610b3f565b820191906000526020600020905b815481529060010190602001808311610b2257829003601f168201915b505050505081565b6007546001600160a01b03163314610b715760405162461bcd60e51b815260040161087f9061232d565b600d805461ff001981166101009182900460ff1615909102179055565b6000610b9982611213565b9050806001600160a01b0316836001600160a01b03161415610bce5760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b03821614801590610bee5750610bec813361077a565b155b15610c0c576040516367d9dca160e11b815260040160405180910390fd5b610c17838383611734565b505050565b600e8054610ac6906123f0565b610c17838383611790565b6007546001600160a01b03163314610c5e5760405162461bcd60e51b815260040161087f9061232d565b600f55565b6000610c6e83611225565b8210610c8d576040516306ed618760e11b815260040160405180910390fd5b600080549080805b83811015610d26576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610ce857805192505b876001600160a01b0316836001600160a01b03161415610d1d5786841415610d165750935061084f92505050565b6001909301925b50600101610c95565b50610d2f61245a565b50505092915050565b6007546001600160a01b03163314610d625760405162461bcd60e51b815260040161087f9061232d565b4760006064610d7283606361238e565b610d7c919061237a565b905060006064610d8d84600161238e565b610d97919061237a565b604051909150339083156108fc029084906000818181858888f19350505050158015610dc7573d6000803e3d6000fd5b506010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610e02573d6000803e3d6000fd5b50505050565b6007546001600160a01b03163314610e325760405162461bcd60e51b815260040161087f9061232d565b600854811115610e7b5760405162461bcd60e51b8152602060048201526014602482015273746865207175616e74697479206578636565647360601b604482015260640161087f565b600955565b610c17838383604051806020016040528060008152506114a1565b600080548210610ebe576040516329c8c00760e21b815260040160405180910390fd5b5090565b3360009081526013602052604090205460ff16610f3357604080518082018252338082526000602080840182815292825260128152848220935184546001600160a01b0319166001600160a01b039091161784559151600193840155601390915291909120805460ff191690911790555b600d5460ff1615610f785760405162461bcd60e51b815260206004820152600f60248201526e7475726e206f6e206d696e74696e6760881b604482015260640161087f565b60008111610f985760405162461bcd60e51b815260040161087f906122da565b600c5433600090815260126020526040902060010154610fb9908390612362565b11156110175760405162461bcd60e51b815260206004820152602760248201527f5175616e74697479204d757374204265204c6573736572205468616e204d617860448201526620537570706c7960c81b606482015260840161087f565b60095460085461102791906123ad565b8161103160005490565b61103b9190612362565b11156110895760405162461bcd60e51b815260206004820152601b60248201527f616c6c20746f6b656e732068617665206265656e206d696e7465640000000000604482015260640161087f565b6040516bffffffffffffffffffffffff193360601b16602082015260009060340160405160208183030381529060405280519060200120905061110384848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600f5491508490506119af565b61113f5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210283937b7b360991b604482015260640161087f565b3482600a5461114e919061238e565b1461119b5760405162461bcd60e51b815260206004820152601d60248201527f53656e742045746865722056616c756520497320496e636f7272656374000000604482015260640161087f565b6111a5338361171a565b33600090815260126020526040812060010180548492906111c7908490612362565b909155505050505050565b6007546001600160a01b031633146111fc5760405162461bcd60e51b815260040161087f9061232d565b805161120f90600e906020840190611e7a565b5050565b600061121e826119c5565b5192915050565b60006001600160a01b03821661124e576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600460205260409020546001600160801b031690565b6007546001600160a01b0316331461129d5760405162461bcd60e51b815260040161087f9061232d565b6112a76000611a5a565b565b6007546001600160a01b031633146112d35760405162461bcd60e51b815260040161087f9061232d565b6009548111156113315760405162461bcd60e51b815260206004820152602360248201527f416c6c207265736572766520746f6b656e7320686176652062656e65206d696e6044820152621d195960ea1b606482015260840161087f565b806009600082825461134391906123ad565b90915550610a709050338261171a565b6007546001600160a01b0316331461137d5760405162461bcd60e51b815260040161087f9061232d565b600a55565b6007546001600160a01b031633146113ac5760405162461bcd60e51b815260040161087f9061232d565b600b55565b6060600280546108ab906123f0565b6001600160a01b0382163314156113ea5760405163b06307db60e01b815260040160405180910390fd5b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6007546001600160a01b031633146114805760405162461bcd60e51b815260040161087f9061232d565b6010805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6114ac848484611790565b6114b884848484611aac565b610e02576040516368d2bf6b60e11b815260040160405180910390fd5b60606114e2826000541190565b6115465760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161087f565b601054600160a01b900460ff166115e95760118054611564906123f0565b80601f0160208091040260200160405190810160405280929190818152602001828054611590906123f0565b80156115dd5780601f106115b2576101008083540402835291602001916115dd565b820191906000526020600020905b8154815290600101906020018083116115c057829003601f168201915b50505050509050919050565b60006115f3611bbb565b90506000815111611613576040518060200160405280600081525061163e565b8061161d84611bca565b60405160200161162e92919061224b565b6040516020818303038152906040525b9392505050565b6007546001600160a01b0316331461166f5760405162461bcd60e51b815260040161087f9061232d565b805161120f906011906020840190611e7a565b6007546001600160a01b031633146116ac5760405162461bcd60e51b815260040161087f9061232d565b6001600160a01b0381166117115760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161087f565b610a7081611a5a565b61120f828260405180602001604052806000815250611cc8565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061179b826119c5565b80519091506000906001600160a01b0316336001600160a01b031614806117d25750336117c784610a73565b6001600160a01b0316145b806117e4575081516117e4903361077a565b90508061180457604051632ce44b5f60e11b815260040160405180910390fd5b846001600160a01b031682600001516001600160a01b0316146118395760405162a1148160e81b815260040160405180910390fd5b6001600160a01b03841661186057604051633a954ecd60e21b815260040160405180910390fd5b6118706000848460000151611734565b6001600160a01b03858116600090815260046020908152604080832080546001600160801b03198082166001600160801b03928316600019018316179092558986168086528386208054938416938316600190810190931693909317909255888552600390935281842080546001600160e01b031916909117600160a01b4267ffffffffffffffff160217905590860180835291205490911661196557611918816000541190565b15611965578251600082815260036020908152604090912080549186015167ffffffffffffffff16600160a01b026001600160e01b03199092166001600160a01b03909316929092171790555b5082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b5050505050565b6000826119bc8584611cd5565b14949350505050565b60408051808201909152600080825260208201526119e4826000541190565b611a0157604051636f96cda160e11b815260040160405180910390fd5b815b6000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215611a50579392505050565b5060001901611a03565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001600160a01b0384163b15611baf57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611af090339089908890889060040161228a565b602060405180830381600087803b158015611b0a57600080fd5b505af1925050508015611b3a575060408051601f3d908101601f19168201909252611b37918101906121b9565b60015b611b95573d808015611b68576040519150601f19603f3d011682016040523d82523d6000602084013e611b6d565b606091505b508051611b8d576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611bb3565b5060015b949350505050565b6060600e80546108ab906123f0565b606081611bee5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611c185780611c028161242b565b9150611c119050600a8361237a565b9150611bf2565b60008167ffffffffffffffff811115611c3357611c336124b2565b6040519080825280601f01601f191660200182016040528015611c5d576020820181803683370190505b5090505b8415611bb357611c726001836123ad565b9150611c7f600a86612446565b611c8a906030612362565b60f81b818381518110611c9f57611c9f61249c565b60200101906001600160f81b031916908160001a905350611cc1600a8661237a565b9450611c61565b610c178383836001611d49565b600081815b8451811015611d41576000858281518110611cf757611cf761249c565b60200260200101519050808311611d1d5760008381526020829052604090209250611d2e565b600081815260208490526040902092505b5080611d398161242b565b915050611cda565b509392505050565b6000546001600160a01b038516611d7257604051622e076360e81b815260040160405180910390fd5b6001600160a01b03851660008181526004602090815260408083208054600160801b6001600160801b031982166001600160801b039283168c01831690811782900483168c01909216021790558483526003909152812080546001600160e01b031916909217600160a01b4267ffffffffffffffff16021790915581905b85811015611e715760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4838015611e475750611e456000888488611aac565b155b15611e65576040516368d2bf6b60e11b815260040160405180910390fd5b60019182019101611df0565b506000556119a8565b828054611e86906123f0565b90600052602060002090601f016020900481019282611ea85760008555611eee565b82601f10611ec157805160ff1916838001178555611eee565b82800160010185558215611eee579182015b82811115611eee578251825591602001919060010190611ed3565b50610ebe9291505b80821115610ebe5760008155600101611ef6565b600067ffffffffffffffff80841115611f2557611f256124b2565b604051601f8501601f19908116603f01168101908282118183101715611f4d57611f4d6124b2565b81604052809350858152868686011115611f6657600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114611f9757600080fd5b919050565b600060208284031215611fae57600080fd5b61163e82611f80565b60008060408385031215611fca57600080fd5b611fd383611f80565b9150611fe160208401611f80565b90509250929050565b600080600060608486031215611fff57600080fd5b61200884611f80565b925061201660208501611f80565b9150604084013590509250925092565b6000806000806080858703121561203c57600080fd5b61204585611f80565b935061205360208601611f80565b925060408501359150606085013567ffffffffffffffff81111561207657600080fd5b8501601f8101871361208757600080fd5b61209687823560208401611f0a565b91505092959194509250565b600080604083850312156120b557600080fd5b6120be83611f80565b9150602083013580151581146120d357600080fd5b809150509250929050565b600080604083850312156120f157600080fd5b6120fa83611f80565b946020939093013593505050565b60008060006040848603121561211d57600080fd5b833567ffffffffffffffff8082111561213557600080fd5b818601915086601f83011261214957600080fd5b81358181111561215857600080fd5b8760208260051b850101111561216d57600080fd5b6020928301989097509590910135949350505050565b60006020828403121561219557600080fd5b5035919050565b6000602082840312156121ae57600080fd5b813561163e816124c8565b6000602082840312156121cb57600080fd5b815161163e816124c8565b6000602082840312156121e857600080fd5b813567ffffffffffffffff8111156121ff57600080fd5b8201601f8101841361221057600080fd5b611bb384823560208401611f0a565b600081518084526122378160208601602086016123c4565b601f01601f19169290920160200192915050565b6000835161225d8184602088016123c4565b8351908301906122718183602088016123c4565b64173539b7b760d91b9101908152600501949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906122bd9083018461221f565b9695505050505050565b60208152600061163e602083018461221f565b60208082526033908201527f4e756d626572204f6620546f6b656e732043616e204e6f74204265204c6573736040820152720205468616e204f7220457175616c20546f203606c1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561237557612375612470565b500190565b60008261238957612389612486565b500490565b60008160001904831182151516156123a8576123a8612470565b500290565b6000828210156123bf576123bf612470565b500390565b60005b838110156123df5781810151838201526020016123c7565b83811115610e025750506000910152565b600181811c9082168061240457607f821691505b6020821081141561242557634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561243f5761243f612470565b5060010190565b60008261245557612455612486565b500690565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610a7057600080fdfea2646970667358221220377f8465ddb4c9b621c102f20d7aac5e553a768c7e0f3fc1a51d9fb8a8e8739564736f6c63430008070033d48ab38cd3595734d546c3ac4c7610492ba198cc83d9bb05cca51fdc293435830000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004e68747470733a2f2f776f662e6d7970696e6174612e636c6f75642f697066732f516d56597251484e6a724472504c5062567a33717242486a576a626d44444b4a33577152763978366964694a3636000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102675760003560e01c806355f804b311610144578063a22cb465116100b6578063c87b56dd1161007a578063c87b56dd14610713578063cd3293de14610733578063cfc08dfb14610749578063e985e9c51461075f578063f2c4ce1e146107a8578063f2fde38b146107c857600080fd5b8063a22cb46514610689578063a475b5dd146106a9578063b187bd26146106be578063b19df54b146106dd578063b88d4fde146106f357600080fd5b80637d7eee42116101085780637d7eee42146105a15780638164669e146105c15780638da5cb5b1461062057806391b7f5ed1461063e57806395d89b411461065e578063a035b1fe1461067357600080fd5b806355f804b31461050c5780636352211e1461052c57806370a082311461054c578063715018a61461056c5780637d5cb4e51461058157600080fd5b806323b872dd116101dd5780634256dbe3116101a15780634256dbe31461046257806342842e0e146104825780634b6406d1146104a25780634f6ccce7146104b857806351830227146104d857806353ceffa3146104f957600080fd5b806323b872dd146103d35780632d7eae66146103f35780632e280e32146104135780632f745c591461042d5780633ccfd60b1461044d57600080fd5b8063081c8c441161022f578063081c8c44146103255780630917c4e11461033a578063095ea7b31461034f57806311e0f0631461036f57806316f8a0d11461038457806318160ddd146103b457600080fd5b806301ffc9a71461026c57806304b13416146102a157806306fdde03146102b857806307883703146102da578063081812fc146102ed575b600080fd5b34801561027857600080fd5b5061028c61028736600461219c565b6107e8565b60405190151581526020015b60405180910390f35b3480156102ad57600080fd5b506102b6610855565b005b3480156102c457600080fd5b506102cd61089c565b60405161029891906122c7565b6102b66102e8366004612183565b61092e565b3480156102f957600080fd5b5061030d610308366004612183565b610a73565b6040516001600160a01b039091168152602001610298565b34801561033157600080fd5b506102cd610ab9565b34801561034657600080fd5b506102b6610b47565b34801561035b57600080fd5b506102b661036a3660046120de565b610b8e565b34801561037b57600080fd5b506102cd610c1c565b34801561039057600080fd5b5061028c61039f366004611f9c565b60136020526000908152604090205460ff1681565b3480156103c057600080fd5b506000545b604051908152602001610298565b3480156103df57600080fd5b506102b66103ee366004611fea565b610c29565b3480156103ff57600080fd5b506102b661040e366004612183565b610c34565b34801561041f57600080fd5b50600d5461028c9060ff1681565b34801561043957600080fd5b506103c56104483660046120de565b610c63565b34801561045957600080fd5b506102b6610d38565b34801561046e57600080fd5b506102b661047d366004612183565b610e08565b34801561048e57600080fd5b506102b661049d366004611fea565b610e80565b3480156104ae57600080fd5b506103c560085481565b3480156104c457600080fd5b506103c56104d3366004612183565b610e9b565b3480156104e457600080fd5b5060105461028c90600160a01b900460ff1681565b6102b6610507366004612108565b610ec2565b34801561051857600080fd5b506102b66105273660046121d6565b6111d2565b34801561053857600080fd5b5061030d610547366004612183565b611213565b34801561055857600080fd5b506103c5610567366004611f9c565b611225565b34801561057857600080fd5b506102b6611273565b34801561058d57600080fd5b506102b661059c366004612183565b6112a9565b3480156105ad57600080fd5b506102b66105bc366004612183565b611353565b3480156105cd57600080fd5b506106016105dc366004611f9c565b601260205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610298565b34801561062c57600080fd5b506007546001600160a01b031661030d565b34801561064a57600080fd5b506102b6610659366004612183565b611382565b34801561066a57600080fd5b506102cd6113b1565b34801561067f57600080fd5b506103c5600b5481565b34801561069557600080fd5b506102b66106a43660046120a2565b6113c0565b3480156106b557600080fd5b506102b6611456565b3480156106ca57600080fd5b50600d5461028c90610100900460ff1681565b3480156106e957600080fd5b506103c5600a5481565b3480156106ff57600080fd5b506102b661070e366004612026565b6114a1565b34801561071f57600080fd5b506102cd61072e366004612183565b6114d5565b34801561073f57600080fd5b506103c560095481565b34801561075557600080fd5b506103c5600c5481565b34801561076b57600080fd5b5061028c61077a366004611fb7565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b3480156107b457600080fd5b506102b66107c33660046121d6565b611645565b3480156107d457600080fd5b506102b66107e3366004611f9c565b611682565b60006001600160e01b031982166380ac58cd60e01b148061081957506001600160e01b03198216635b5e139f60e01b145b8061083457506001600160e01b0319821663780e9d6360e01b145b8061084f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6007546001600160a01b031633146108885760405162461bcd60e51b815260040161087f9061232d565b60405180910390fd5b600d805460ff19811660ff90911615179055565b6060600180546108ab906123f0565b80601f01602080910402602001604051908101604052809291908181526020018280546108d7906123f0565b80156109245780601f106108f957610100808354040283529160200191610924565b820191906000526020600020905b81548152906001019060200180831161090757829003601f168201915b5050505050905090565b600d54610100900460ff16156109785760405162461bcd60e51b815260206004820152600f60248201526e7475726e206f6e206d696e74696e6760881b604482015260640161087f565b600081116109985760405162461bcd60e51b815260040161087f906122da565b6009546008546109a891906123ad565b816109b260005490565b6109bc9190612362565b1115610a0a5760405162461bcd60e51b815260206004820152601b60248201527f616c6c20746f6b656e732068617665206265656e206d696e7465640000000000604482015260640161087f565b3481600b54610a19919061238e565b14610a665760405162461bcd60e51b815260206004820152601d60248201527f53656e742045746865722056616c756520497320496e636f7272656374000000604482015260640161087f565b610a70338261171a565b50565b6000610a80826000541190565b610a9d576040516333d1c03960e21b815260040160405180910390fd5b506000908152600560205260409020546001600160a01b031690565b60118054610ac6906123f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610af2906123f0565b8015610b3f5780601f10610b1457610100808354040283529160200191610b3f565b820191906000526020600020905b815481529060010190602001808311610b2257829003601f168201915b505050505081565b6007546001600160a01b03163314610b715760405162461bcd60e51b815260040161087f9061232d565b600d805461ff001981166101009182900460ff1615909102179055565b6000610b9982611213565b9050806001600160a01b0316836001600160a01b03161415610bce5760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b03821614801590610bee5750610bec813361077a565b155b15610c0c576040516367d9dca160e11b815260040160405180910390fd5b610c17838383611734565b505050565b600e8054610ac6906123f0565b610c17838383611790565b6007546001600160a01b03163314610c5e5760405162461bcd60e51b815260040161087f9061232d565b600f55565b6000610c6e83611225565b8210610c8d576040516306ed618760e11b815260040160405180910390fd5b600080549080805b83811015610d26576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610ce857805192505b876001600160a01b0316836001600160a01b03161415610d1d5786841415610d165750935061084f92505050565b6001909301925b50600101610c95565b50610d2f61245a565b50505092915050565b6007546001600160a01b03163314610d625760405162461bcd60e51b815260040161087f9061232d565b4760006064610d7283606361238e565b610d7c919061237a565b905060006064610d8d84600161238e565b610d97919061237a565b604051909150339083156108fc029084906000818181858888f19350505050158015610dc7573d6000803e3d6000fd5b506010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610e02573d6000803e3d6000fd5b50505050565b6007546001600160a01b03163314610e325760405162461bcd60e51b815260040161087f9061232d565b600854811115610e7b5760405162461bcd60e51b8152602060048201526014602482015273746865207175616e74697479206578636565647360601b604482015260640161087f565b600955565b610c17838383604051806020016040528060008152506114a1565b600080548210610ebe576040516329c8c00760e21b815260040160405180910390fd5b5090565b3360009081526013602052604090205460ff16610f3357604080518082018252338082526000602080840182815292825260128152848220935184546001600160a01b0319166001600160a01b039091161784559151600193840155601390915291909120805460ff191690911790555b600d5460ff1615610f785760405162461bcd60e51b815260206004820152600f60248201526e7475726e206f6e206d696e74696e6760881b604482015260640161087f565b60008111610f985760405162461bcd60e51b815260040161087f906122da565b600c5433600090815260126020526040902060010154610fb9908390612362565b11156110175760405162461bcd60e51b815260206004820152602760248201527f5175616e74697479204d757374204265204c6573736572205468616e204d617860448201526620537570706c7960c81b606482015260840161087f565b60095460085461102791906123ad565b8161103160005490565b61103b9190612362565b11156110895760405162461bcd60e51b815260206004820152601b60248201527f616c6c20746f6b656e732068617665206265656e206d696e7465640000000000604482015260640161087f565b6040516bffffffffffffffffffffffff193360601b16602082015260009060340160405160208183030381529060405280519060200120905061110384848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600f5491508490506119af565b61113f5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210283937b7b360991b604482015260640161087f565b3482600a5461114e919061238e565b1461119b5760405162461bcd60e51b815260206004820152601d60248201527f53656e742045746865722056616c756520497320496e636f7272656374000000604482015260640161087f565b6111a5338361171a565b33600090815260126020526040812060010180548492906111c7908490612362565b909155505050505050565b6007546001600160a01b031633146111fc5760405162461bcd60e51b815260040161087f9061232d565b805161120f90600e906020840190611e7a565b5050565b600061121e826119c5565b5192915050565b60006001600160a01b03821661124e576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600460205260409020546001600160801b031690565b6007546001600160a01b0316331461129d5760405162461bcd60e51b815260040161087f9061232d565b6112a76000611a5a565b565b6007546001600160a01b031633146112d35760405162461bcd60e51b815260040161087f9061232d565b6009548111156113315760405162461bcd60e51b815260206004820152602360248201527f416c6c207265736572766520746f6b656e7320686176652062656e65206d696e6044820152621d195960ea1b606482015260840161087f565b806009600082825461134391906123ad565b90915550610a709050338261171a565b6007546001600160a01b0316331461137d5760405162461bcd60e51b815260040161087f9061232d565b600a55565b6007546001600160a01b031633146113ac5760405162461bcd60e51b815260040161087f9061232d565b600b55565b6060600280546108ab906123f0565b6001600160a01b0382163314156113ea5760405163b06307db60e01b815260040160405180910390fd5b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6007546001600160a01b031633146114805760405162461bcd60e51b815260040161087f9061232d565b6010805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6114ac848484611790565b6114b884848484611aac565b610e02576040516368d2bf6b60e11b815260040160405180910390fd5b60606114e2826000541190565b6115465760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161087f565b601054600160a01b900460ff166115e95760118054611564906123f0565b80601f0160208091040260200160405190810160405280929190818152602001828054611590906123f0565b80156115dd5780601f106115b2576101008083540402835291602001916115dd565b820191906000526020600020905b8154815290600101906020018083116115c057829003601f168201915b50505050509050919050565b60006115f3611bbb565b90506000815111611613576040518060200160405280600081525061163e565b8061161d84611bca565b60405160200161162e92919061224b565b6040516020818303038152906040525b9392505050565b6007546001600160a01b0316331461166f5760405162461bcd60e51b815260040161087f9061232d565b805161120f906011906020840190611e7a565b6007546001600160a01b031633146116ac5760405162461bcd60e51b815260040161087f9061232d565b6001600160a01b0381166117115760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161087f565b610a7081611a5a565b61120f828260405180602001604052806000815250611cc8565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061179b826119c5565b80519091506000906001600160a01b0316336001600160a01b031614806117d25750336117c784610a73565b6001600160a01b0316145b806117e4575081516117e4903361077a565b90508061180457604051632ce44b5f60e11b815260040160405180910390fd5b846001600160a01b031682600001516001600160a01b0316146118395760405162a1148160e81b815260040160405180910390fd5b6001600160a01b03841661186057604051633a954ecd60e21b815260040160405180910390fd5b6118706000848460000151611734565b6001600160a01b03858116600090815260046020908152604080832080546001600160801b03198082166001600160801b03928316600019018316179092558986168086528386208054938416938316600190810190931693909317909255888552600390935281842080546001600160e01b031916909117600160a01b4267ffffffffffffffff160217905590860180835291205490911661196557611918816000541190565b15611965578251600082815260036020908152604090912080549186015167ffffffffffffffff16600160a01b026001600160e01b03199092166001600160a01b03909316929092171790555b5082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b5050505050565b6000826119bc8584611cd5565b14949350505050565b60408051808201909152600080825260208201526119e4826000541190565b611a0157604051636f96cda160e11b815260040160405180910390fd5b815b6000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215611a50579392505050565b5060001901611a03565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001600160a01b0384163b15611baf57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611af090339089908890889060040161228a565b602060405180830381600087803b158015611b0a57600080fd5b505af1925050508015611b3a575060408051601f3d908101601f19168201909252611b37918101906121b9565b60015b611b95573d808015611b68576040519150601f19603f3d011682016040523d82523d6000602084013e611b6d565b606091505b508051611b8d576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611bb3565b5060015b949350505050565b6060600e80546108ab906123f0565b606081611bee5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611c185780611c028161242b565b9150611c119050600a8361237a565b9150611bf2565b60008167ffffffffffffffff811115611c3357611c336124b2565b6040519080825280601f01601f191660200182016040528015611c5d576020820181803683370190505b5090505b8415611bb357611c726001836123ad565b9150611c7f600a86612446565b611c8a906030612362565b60f81b818381518110611c9f57611c9f61249c565b60200101906001600160f81b031916908160001a905350611cc1600a8661237a565b9450611c61565b610c178383836001611d49565b600081815b8451811015611d41576000858281518110611cf757611cf761249c565b60200260200101519050808311611d1d5760008381526020829052604090209250611d2e565b600081815260208490526040902092505b5080611d398161242b565b915050611cda565b509392505050565b6000546001600160a01b038516611d7257604051622e076360e81b815260040160405180910390fd5b6001600160a01b03851660008181526004602090815260408083208054600160801b6001600160801b031982166001600160801b039283168c01831690811782900483168c01909216021790558483526003909152812080546001600160e01b031916909217600160a01b4267ffffffffffffffff16021790915581905b85811015611e715760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4838015611e475750611e456000888488611aac565b155b15611e65576040516368d2bf6b60e11b815260040160405180910390fd5b60019182019101611df0565b506000556119a8565b828054611e86906123f0565b90600052602060002090601f016020900481019282611ea85760008555611eee565b82601f10611ec157805160ff1916838001178555611eee565b82800160010185558215611eee579182015b82811115611eee578251825591602001919060010190611ed3565b50610ebe9291505b80821115610ebe5760008155600101611ef6565b600067ffffffffffffffff80841115611f2557611f256124b2565b604051601f8501601f19908116603f01168101908282118183101715611f4d57611f4d6124b2565b81604052809350858152868686011115611f6657600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114611f9757600080fd5b919050565b600060208284031215611fae57600080fd5b61163e82611f80565b60008060408385031215611fca57600080fd5b611fd383611f80565b9150611fe160208401611f80565b90509250929050565b600080600060608486031215611fff57600080fd5b61200884611f80565b925061201660208501611f80565b9150604084013590509250925092565b6000806000806080858703121561203c57600080fd5b61204585611f80565b935061205360208601611f80565b925060408501359150606085013567ffffffffffffffff81111561207657600080fd5b8501601f8101871361208757600080fd5b61209687823560208401611f0a565b91505092959194509250565b600080604083850312156120b557600080fd5b6120be83611f80565b9150602083013580151581146120d357600080fd5b809150509250929050565b600080604083850312156120f157600080fd5b6120fa83611f80565b946020939093013593505050565b60008060006040848603121561211d57600080fd5b833567ffffffffffffffff8082111561213557600080fd5b818601915086601f83011261214957600080fd5b81358181111561215857600080fd5b8760208260051b850101111561216d57600080fd5b6020928301989097509590910135949350505050565b60006020828403121561219557600080fd5b5035919050565b6000602082840312156121ae57600080fd5b813561163e816124c8565b6000602082840312156121cb57600080fd5b815161163e816124c8565b6000602082840312156121e857600080fd5b813567ffffffffffffffff8111156121ff57600080fd5b8201601f8101841361221057600080fd5b611bb384823560208401611f0a565b600081518084526122378160208601602086016123c4565b601f01601f19169290920160200192915050565b6000835161225d8184602088016123c4565b8351908301906122718183602088016123c4565b64173539b7b760d91b9101908152600501949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906122bd9083018461221f565b9695505050505050565b60208152600061163e602083018461221f565b60208082526033908201527f4e756d626572204f6620546f6b656e732043616e204e6f74204265204c6573736040820152720205468616e204f7220457175616c20546f203606c1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561237557612375612470565b500190565b60008261238957612389612486565b500490565b60008160001904831182151516156123a8576123a8612470565b500290565b6000828210156123bf576123bf612470565b500390565b60005b838110156123df5781810151838201526020016123c7565b83811115610e025750506000910152565b600181811c9082168061240457607f821691505b6020821081141561242557634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561243f5761243f612470565b5060010190565b60008261245557612455612486565b500690565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610a7057600080fdfea2646970667358221220377f8465ddb4c9b621c102f20d7aac5e553a768c7e0f3fc1a51d9fb8a8e8739564736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
d48ab38cd3595734d546c3ac4c7610492ba198cc83d9bb05cca51fdc293435830000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004e68747470733a2f2f776f662e6d7970696e6174612e636c6f75642f697066732f516d56597251484e6a724472504c5062567a33717242486a576a626d44444b4a33577152763978366964694a3636000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : finalRootHash (bytes32): 0xd48ab38cd3595734d546c3ac4c7610492ba198cc83d9bb05cca51fdc29343583
Arg [1] : _NotRevealedUri (string): https://wof.mypinata.cloud/ipfs/QmVYrQHNjrDrPLPbVz3qrBHjWjbmDDKJ3WqRv9x6idiJ66
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : d48ab38cd3595734d546c3ac4c7610492ba198cc83d9bb05cca51fdc29343583
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 000000000000000000000000000000000000000000000000000000000000004e
Arg [3] : 68747470733a2f2f776f662e6d7970696e6174612e636c6f75642f697066732f
Arg [4] : 516d56597251484e6a724472504c5062567a33717242486a576a626d44444b4a
Arg [5] : 33577152763978366964694a3636000000000000000000000000000000000000
Deployed Bytecode Sourcemap
34803:5541:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17676:422;;;;;;;;;;-1:-1:-1;17676:422:0;;;;;:::i;:::-;;:::i;:::-;;;7205:14:1;;7198:22;7180:41;;7168:2;7153:18;17676:422:0;;;;;;;;35871:100;;;;;;;;;;;;;:::i;:::-;;19574;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;38668:555::-;;;;;;:::i;:::-;;:::i;21165:245::-;;;;;;;;;;-1:-1:-1;21165:245:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6224:32:1;;;6206:51;;6194:2;6179:18;21165:245:0;6060:203:1;35625:28:0;;;;;;;;;;;;;:::i;35979:84::-;;;;;;;;;;;;;:::i;20741:358::-;;;;;;;;;;-1:-1:-1;20741:358:0;;;;;:::i;:::-;;:::i;35406:23::-;;;;;;;;;;;;;:::i;35813:49::-;;;;;;;;;;-1:-1:-1;35813:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15859:101;;;;;;;;;;-1:-1:-1;15912:7:0;15939:13;15859:101;;;11767:25:1;;;11755:2;11740:18;15859:101:0;11621:177:1;22136:170:0;;;;;;;;;;-1:-1:-1;22136:170:0;;;;;:::i;:::-;;:::i;36071:108::-;;;;;;;;;;-1:-1:-1;36071:108:0;;;;;:::i;:::-;;:::i;35331:34::-;;;;;;;;;;-1:-1:-1;35331:34:0;;;;;;;;16554:1050;;;;;;;;;;-1:-1:-1;16554:1050:0;;;;;:::i;:::-;;:::i;40005:336::-;;;;;;;;;;;;;:::i;36419:157::-;;;;;;;;;;-1:-1:-1;36419:157:0;;;;;:::i;:::-;;:::i;22377:185::-;;;;;;;;;;-1:-1:-1;22377:185:0;;;;;:::i;:::-;;:::i;35129:31::-;;;;;;;;;;;;;;;;16037:217;;;;;;;;;;-1:-1:-1;16037:217:0;;;;;:::i;:::-;;:::i;35590:28::-;;;;;;;;;;-1:-1:-1;35590:28:0;;;;-1:-1:-1;;;35590:28:0;;;;;;37339:1321;;;;;;:::i;:::-;;:::i;36187:106::-;;;;;;;;;;-1:-1:-1;36187:106:0;;;;;:::i;:::-;;:::i;19383:124::-;;;;;;;;;;-1:-1:-1;19383:124:0;;;;;:::i;:::-;;:::i;18162:206::-;;;;;;;;;;-1:-1:-1;18162:206:0;;;;;:::i;:::-;;:::i;32059:103::-;;;;;;;;;;;;;:::i;37110:221::-;;;;;;;;;;-1:-1:-1;37110:221:0;;;;;:::i;:::-;;:::i;36584:102::-;;;;;;;;;;-1:-1:-1;36584:102:0;;;;;:::i;:::-;;:::i;35753:53::-;;;;;;;;;;-1:-1:-1;35753:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35753:53:0;;;;;;;;;;-1:-1:-1;;;;;6953:32:1;;;6935:51;;7017:2;7002:18;;6995:34;;;;6908:18;35753:53:0;6761:274:1;31408:87:0;;;;;;;;;;-1:-1:-1;31481:6:0;;-1:-1:-1;;;;;31481:6:0;31408:87;;36694:88;;;;;;;;;;-1:-1:-1;36694:88:0;;;;;:::i;:::-;;:::i;19743:104::-;;;;;;;;;;;;;:::i;35248:33::-;;;;;;;;;;;;;;;;21482:302;;;;;;;;;;-1:-1:-1;21482:302:0;;;;;:::i;:::-;;:::i;37028:74::-;;;;;;;;;;;;;:::i;35372:27::-;;;;;;;;;;-1:-1:-1;35372:27:0;;;;;;;;;;;35201:40;;;;;;;;;;;;;;;;22633:321;;;;;;;;;;-1:-1:-1;22633:321:0;;;;;:::i;:::-;;:::i;39278:719::-;;;;;;;;;;-1:-1:-1;39278:719:0;;;;;:::i;:::-;;:::i;35167:27::-;;;;;;;;;;;;;;;;35288:34;;;;;;;;;;;;;;;;21855:214;;;;;;;;;;-1:-1:-1;21855:214:0;;;;;:::i;:::-;-1:-1:-1;;;;;22026:25:0;;;21997:4;22026:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;21855:214;36829:126;;;;;;;;;;-1:-1:-1;36829:126:0;;;;;:::i;:::-;;:::i;32317:238::-;;;;;;;;;;-1:-1:-1;32317:238:0;;;;;:::i;:::-;;:::i;17676:422::-;17823:4;-1:-1:-1;;;;;;17865:40:0;;-1:-1:-1;;;17865:40:0;;:105;;-1:-1:-1;;;;;;;17922:48:0;;-1:-1:-1;;;17922:48:0;17865:105;:172;;;-1:-1:-1;;;;;;;17987:50:0;;-1:-1:-1;;;17987:50:0;17865:172;:225;;;-1:-1:-1;;;;;;;;;;6337:40:0;;;18054:36;17845:245;17676:422;-1:-1:-1;;17676:422:0:o;35871:100::-;31481:6;;-1:-1:-1;;;;;31481:6:0;1744:10;31628:23;31620:68;;;;-1:-1:-1;;;31620:68:0;;;;;;;:::i;:::-;;;;;;;;;35948:15:::1;::::0;;-1:-1:-1;;35929:34:0;::::1;35948:15;::::0;;::::1;35947:16;35929:34;::::0;;35871:100::o;19574:::-;19628:13;19661:5;19654:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19574:100;:::o;38668:555::-;38738:8;;;;;;;:17;38730:45;;;;-1:-1:-1;;;38730:45:0;;10423:2:1;38730:45:0;;;10405:21:1;10462:2;10442:18;;;10435:30;-1:-1:-1;;;10481:18:1;;;10474:45;10536:18;;38730:45:0;10221:339:1;38730:45:0;38823:1;38808:12;:16;38786:117;;;;-1:-1:-1;;;38786:117:0;;;;;;;:::i;:::-;38980:7;;38968:9;;:19;;;;:::i;:::-;38952:12;38936:13;15912:7;15939:13;;15859:101;38936:13;:28;;;;:::i;:::-;:51;;38914:128;;;;-1:-1:-1;;;38914:128:0;;10767:2:1;38914:128:0;;;10749:21:1;10806:2;10786:18;;;10779:30;10845:29;10825:18;;;10818:57;10892:18;;38914:128:0;10565:351:1;38914:128:0;39101:9;39085:12;39077:5;;:20;;;;:::i;:::-;:33;39055:112;;;;-1:-1:-1;;;39055:112:0;;11465:2:1;39055:112:0;;;11447:21:1;11504:2;11484:18;;;11477:30;11543:31;11523:18;;;11516:59;11592:18;;39055:112:0;11263:353:1;39055:112:0;39180:35;39190:10;39202:12;39180:9;:35::i;:::-;38668:555;:::o;21165:245::-;21269:7;21299:16;21307:7;23266:4;23300:13;-1:-1:-1;23290:23:0;23209:112;21299:16;21294:64;;21324:34;;-1:-1:-1;;;21324:34:0;;;;;;;;;;;21294:64;-1:-1:-1;21378:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;21378:24:0;;21165:245::o;35625:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;35979:84::-;31481:6;;-1:-1:-1;;;;;31481:6:0;1744:10;31628:23;31620:68;;;;-1:-1:-1;;;31620:68:0;;;;;;;:::i;:::-;36047:8:::1;::::0;;-1:-1:-1;;36035:20:0;::::1;36047:8;::::0;;;::::1;;;36046:9;36035:20:::0;;::::1;;::::0;;35979:84::o;20741:358::-;20814:13;20830:24;20846:7;20830:15;:24::i;:::-;20814:40;;20875:5;-1:-1:-1;;;;;20869:11:0;:2;-1:-1:-1;;;;;20869:11:0;;20865:48;;;20889:24;;-1:-1:-1;;;20889:24:0;;;;;;;;;;;20865:48;1744:10;-1:-1:-1;;;;;20930:21:0;;;;;;:63;;-1:-1:-1;20956:37:0;20973:5;1744:10;21855:214;:::i;20956:37::-;20955:38;20930:63;20926:124;;;21015:35;;-1:-1:-1;;;21015:35:0;;;;;;;;;;;20926:124;21063:28;21072:2;21076:7;21085:5;21063:8;:28::i;:::-;20803:296;20741:358;;:::o;35406:23::-;;;;;;;:::i;22136:170::-;22270:28;22280:4;22286:2;22290:7;22270:9;:28::i;36071:108::-;31481:6;;-1:-1:-1;;;;;31481:6:0;1744:10;31628:23;31620:68;;;;-1:-1:-1;;;31620:68:0;;;;;;;:::i;:::-;36145:8:::1;:26:::0;36071:108::o;16554:1050::-;16679:9;16719:16;16729:5;16719:9;:16::i;:::-;16710:5;:25;16706:61;;16744:23;;-1:-1:-1;;;16744:23:0;;;;;;;;;;;16706:61;16778:22;15939:13;;;16778:22;;17041:466;17061:14;17057:1;:18;17041:466;;;17101:31;17135:14;;;:11;:14;;;;;;;;;17101:48;;;;;;;;;-1:-1:-1;;;;;17101:48:0;;;;;-1:-1:-1;;;17101:48:0;;;;;;;;;;;;17172:28;17168:111;;17245:14;;;-1:-1:-1;17168:111:0;17322:5;-1:-1:-1;;;;;17301:26:0;:17;-1:-1:-1;;;;;17301:26:0;;17297:195;;;17371:5;17356:11;:20;17352:85;;;-1:-1:-1;17412:1:0;-1:-1:-1;17405:8:0;;-1:-1:-1;;;17405:8:0;17352:85;17459:13;;;;;17297:195;-1:-1:-1;17077:3:0;;17041:466;;;-1:-1:-1;17583:13:0;;:::i;:::-;16695:909;;;16554:1050;;;;:::o;40005:336::-;31481:6;;-1:-1:-1;;;;;31481:6:0;1744:10;31628:23;31620:68;;;;-1:-1:-1;;;31620:68:0;;;;;;;:::i;:::-;40076:21:::1;40053:20;40153:3;40132:17;40076:21:::0;40147:2:::1;40132:17;:::i;:::-;40131:25;;;;:::i;:::-;40108:48:::0;-1:-1:-1;40167:24:0::1;40215:3;40195:16;:12:::0;40210:1:::1;40195:16;:::i;:::-;40194:24;;;;:::i;:::-;40229:42;::::0;40167:51;;-1:-1:-1;40237:10:0::1;::::0;40229:42;::::1;;;::::0;40258:12;;40229:42:::1;::::0;;;40258:12;40237:10;40229:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;40290:15:0::1;::::0;40282:51:::1;::::0;-1:-1:-1;;;;;40290:15:0;;::::1;::::0;40282:51;::::1;;;::::0;40316:16;;40290:15:::1;40282:51:::0;40290:15;40282:51;40316:16;40290:15;40282:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;40042:299;;;40005:336::o:0;36419:157::-;31481:6;;-1:-1:-1;;;;;31481:6:0;1744:10;31628:23;31620:68;;;;-1:-1:-1;;;31620:68:0;;;;;;;:::i;:::-;36505:9:::1;;36493:8;:21;;36485:54;;;::::0;-1:-1:-1;;;36485:54:0;;8893:2:1;36485:54:0::1;::::0;::::1;8875:21:1::0;8932:2;8912:18;;;8905:30;-1:-1:-1;;;8951:18:1;;;8944:50;9011:18;;36485:54:0::1;8691:344:1::0;36485:54:0::1;36550:7;:18:::0;36419:157::o;22377:185::-;22515:39;22532:4;22538:2;22542:7;22515:39;;;;;;;;;;;;:16;:39::i;16037:217::-;16140:7;15939:13;;16169:5;:22;16165:58;;16200:23;;-1:-1:-1;;;16200:23:0;;;;;;;;;;;16165:58;-1:-1:-1;16241:5:0;16037:217::o;37339:1321::-;37482:10;37464:29;;;;:17;:29;;;;;;;;37460:250;;37548:99;;;;;;;;37592:10;37548:99;;;-1:-1:-1;37548:99:0;;;;;;;37519:26;;;:14;:26;;;;;:128;;;;-1:-1:-1;;;;;;37519:128:0;-1:-1:-1;;;;;37519:128:0;;;;;;;;-1:-1:-1;37519:128:0;;;;37662:17;:29;;;;;;;:36;;-1:-1:-1;;37662:36:0;;;;;;37460:250;37728:15;;;;:24;37720:52;;;;-1:-1:-1;;;37720:52:0;;10423:2:1;37720:52:0;;;10405:21:1;10462:2;10442:18;;;10435:30;-1:-1:-1;;;10481:18:1;;;10474:45;10536:18;;37720:52:0;10221:339:1;37720:52:0;37820:1;37805:12;:16;37783:117;;;;-1:-1:-1;;;37783:117:0;;;;;;;:::i;:::-;38003:15;;37948:10;37933:26;;;;:14;:26;;;;;:34;;;:49;;37970:12;;37933:49;:::i;:::-;:85;;37911:174;;;;-1:-1:-1;;;37911:174:0;;8485:2:1;37911:174:0;;;8467:21:1;8524:2;8504:18;;;8497:30;8563:34;8543:18;;;8536:62;-1:-1:-1;;;8614:18:1;;;8607:37;8661:19;;37911:174:0;8283:403:1;37911:174:0;38162:7;;38150:9;;:19;;;;:::i;:::-;38134:12;38118:13;15912:7;15939:13;;15859:101;38118:13;:28;;;;:::i;:::-;:51;;38096:128;;;;-1:-1:-1;;;38096:128:0;;10767:2:1;38096:128:0;;;10749:21:1;10806:2;10786:18;;;10779:30;10845:29;10825:18;;;10818:57;10892:18;;38096:128:0;10565:351:1;38096:128:0;38260:28;;-1:-1:-1;;38277:10:0;5333:2:1;5329:15;5325:53;38260:28:0;;;5313:66:1;38235:12:0;;5395::1;;38260:28:0;;;;;;;;;;;;38250:39;;;;;;38235:54;;38322:48;38341:12;;38322:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;38355:8:0;;;-1:-1:-1;38365:4:0;;-1:-1:-1;38322:18:0;:48::i;:::-;38300:111;;;;-1:-1:-1;;;38300:111:0;;11123:2:1;38300:111:0;;;11105:21:1;11162:2;11142:18;;;11135:30;-1:-1:-1;;;11181:18:1;;;11174:43;11234:18;;38300:111:0;10921:337:1;38300:111:0;38477:9;38461:12;38446;;:27;;;;:::i;:::-;:40;38424:119;;;;-1:-1:-1;;;38424:119:0;;11465:2:1;38424:119:0;;;11447:21:1;11504:2;11484:18;;;11477:30;11543:31;11523:18;;;11516:59;11592:18;;38424:119:0;11263:353:1;38424:119:0;38556:35;38566:10;38578:12;38556:9;:35::i;:::-;38617:10;38602:26;;;;:14;:26;;;;;:34;;:50;;38640:12;;38602:26;:50;;38640:12;;38602:50;:::i;:::-;;;;-1:-1:-1;;;;;;37339:1321:0:o;36187:106::-;31481:6;;-1:-1:-1;;;;;31481:6:0;1744:10;31628:23;31620:68;;;;-1:-1:-1;;;31620:68:0;;;;;;;:::i;:::-;36262:23;;::::1;::::0;:9:::1;::::0;:23:::1;::::0;::::1;::::0;::::1;:::i;:::-;;36187:106:::0;:::o;19383:124::-;19447:7;19474:20;19486:7;19474:11;:20::i;:::-;:25;;19383:124;-1:-1:-1;;19383:124:0:o;18162:206::-;18226:7;-1:-1:-1;;;;;18250:19:0;;18246:60;;18278:28;;-1:-1:-1;;;18278:28:0;;;;;;;;;;;18246:60;-1:-1:-1;;;;;;18332:19:0;;;;;:12;:19;;;;;:27;-1:-1:-1;;;;;18332:27:0;;18162:206::o;32059:103::-;31481:6;;-1:-1:-1;;;;;31481:6:0;1744:10;31628:23;31620:68;;;;-1:-1:-1;;;31620:68:0;;;;;;;:::i;:::-;32124:30:::1;32151:1;32124:18;:30::i;:::-;32059:103::o:0;37110:221::-;31481:6;;-1:-1:-1;;;;;31481:6:0;1744:10;31628:23;31620:68;;;;-1:-1:-1;;;31620:68:0;;;;;;;:::i;:::-;37204:7:::1;;37192:8;:19;;37184:67;;;::::0;-1:-1:-1;;;37184:67:0;;10019:2:1;37184:67:0::1;::::0;::::1;10001:21:1::0;10058:2;10038:18;;;10031:30;10097:34;10077:18;;;10070:62;-1:-1:-1;;;10148:18:1;;;10141:33;10191:19;;37184:67:0::1;9817:399:1::0;37184:67:0::1;37273:8;37262:7;;:19;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;37292:31:0::1;::::0;-1:-1:-1;37302:10:0::1;37314:8:::0;37292:9:::1;:31::i;36584:102::-:0;31481:6;;-1:-1:-1;;;;;31481:6:0;1744:10;31628:23;31620:68;;;;-1:-1:-1;;;31620:68:0;;;;;;;:::i;:::-;36655:12:::1;:23:::0;36584:102::o;36694:88::-;31481:6;;-1:-1:-1;;;;;31481:6:0;1744:10;31628:23;31620:68;;;;-1:-1:-1;;;31620:68:0;;;;;;;:::i;:::-;36758:5:::1;:16:::0;36694:88::o;19743:104::-;19799:13;19832:7;19825:14;;;;;:::i;21482:302::-;-1:-1:-1;;;;;21596:24:0;;1744:10;21596:24;21592:54;;;21629:17;;-1:-1:-1;;;21629:17:0;;;;;;;;;;;21592:54;1744:10;21659:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;21659:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;21659:53:0;;;;;;;;;;21728:48;;7180:41:1;;;21659:42:0;;1744:10;21728:48;;7153:18:1;21728:48:0;;;;;;;21482:302;;:::o;37028:74::-;31481:6;;-1:-1:-1;;;;;31481:6:0;1744:10;31628:23;31620:68;;;;-1:-1:-1;;;31620:68:0;;;;;;;:::i;:::-;37086:8:::1;::::0;;-1:-1:-1;;;;37074:20:0;::::1;-1:-1:-1::0;;;37086:8:0;;;::::1;;;37085:9;37074:20:::0;;::::1;;::::0;;37028:74::o;22633:321::-;22792:28;22802:4;22808:2;22812:7;22792:9;:28::i;:::-;22836:48;22859:4;22865:2;22869:7;22878:5;22836:22;:48::i;:::-;22831:115;;22906:40;;-1:-1:-1;;;22906:40:0;;;;;;;;;;;39278:719;39396:13;39449:16;39457:7;23266:4;23300:13;-1:-1:-1;23290:23:0;23209:112;39449:16;39427:113;;;;-1:-1:-1;;;39427:113:0;;9603:2:1;39427:113:0;;;9585:21:1;9642:2;9622:18;;;9615:30;9681:34;9661:18;;;9654:62;-1:-1:-1;;;9732:18:1;;;9725:45;9787:19;;39427:113:0;9401:411:1;39427:113:0;39557:8;;-1:-1:-1;;;39557:8:0;;;;39553:71;;39598:14;39591:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39278:719;;;:::o;39553:71::-;39636:28;39667:10;:8;:10::i;:::-;39636:41;;39739:1;39714:14;39708:28;:32;:281;;;;;;;;;;;;;;;;;39832:14;39873:18;:7;:16;:18::i;:::-;39789:159;;;;;;;;;:::i;:::-;;;;;;;;;;;;;39708:281;39688:301;39278:719;-1:-1:-1;;;39278:719:0:o;36829:126::-;31481:6;;-1:-1:-1;;;;;31481:6:0;1744:10;31628:23;31620:68;;;;-1:-1:-1;;;31620:68:0;;;;;;;:::i;:::-;36915:32;;::::1;::::0;:14:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;32317:238::-:0;31481:6;;-1:-1:-1;;;;;31481:6:0;1744:10;31628:23;31620:68;;;;-1:-1:-1;;;31620:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32420:22:0;::::1;32398:110;;;::::0;-1:-1:-1;;;32398:110:0;;7658:2:1;32398:110:0::1;::::0;::::1;7640:21:1::0;7697:2;7677:18;;;7670:30;7736:34;7716:18;;;7709:62;-1:-1:-1;;;7787:18:1;;;7780:36;7833:19;;32398:110:0::1;7456:402:1::0;32398:110:0::1;32519:28;32538:8;32519:18;:28::i;23329:104::-:0;23398:27;23408:2;23412:8;23398:27;;;;;;;;;;;;:9;:27::i;28067:196::-;28182:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;28182:29:0;-1:-1:-1;;;;;28182:29:0;;;;;;;;;28227:28;;28182:24;;28227:28;;;;;;;28067:196;;;:::o;25958:1991::-;26073:35;26111:20;26123:7;26111:11;:20::i;:::-;26186:18;;26073:58;;-1:-1:-1;26144:22:0;;-1:-1:-1;;;;;26170:34:0;1744:10;-1:-1:-1;;;;;26170:34:0;;:87;;;-1:-1:-1;1744:10:0;26221:20;26233:7;26221:11;:20::i;:::-;-1:-1:-1;;;;;26221:36:0;;26170:87;:154;;;-1:-1:-1;26291:18:0;;26274:50;;1744:10;21855:214;:::i;26274:50::-;26144:181;;26343:17;26338:66;;26369:35;;-1:-1:-1;;;26369:35:0;;;;;;;;;;;26338:66;26441:4;-1:-1:-1;;;;;26419:26:0;:13;:18;;;-1:-1:-1;;;;;26419:26:0;;26415:67;;26454:28;;-1:-1:-1;;;26454:28:0;;;;;;;;;;;26415:67;-1:-1:-1;;;;;26497:16:0;;26493:52;;26522:23;;-1:-1:-1;;;26522:23:0;;;;;;;;;;;26493:52;26669:49;26686:1;26690:7;26699:13;:18;;;26669:8;:49::i;:::-;-1:-1:-1;;;;;27014:18:0;;;;;;;:12;:18;;;;;;;;:31;;-1:-1:-1;;;;;;27014:31:0;;;-1:-1:-1;;;;;27014:31:0;;;-1:-1:-1;;27014:31:0;;;;;;;27060:16;;;;;;;;;:29;;;;;;;;-1:-1:-1;27060:29:0;;;;;;;;;;;;;27106:20;;;:11;:20;;;;;;:30;;-1:-1:-1;;;;;;27151:61:0;;;;-1:-1:-1;;;27196:15:0;27151:61;;;;;;27486:11;;;27516:24;;;;;:29;27486:11;;27516:29;27512:321;;27584:20;27592:11;23266:4;23300:13;-1:-1:-1;23290:23:0;23209:112;27584:20;27580:238;;;27661:18;;;27629:24;;;:11;:24;;;;;;;;:50;;27744:54;;;;27702:96;;-1:-1:-1;;;27702:96:0;-1:-1:-1;;;;;;27702:96:0;;;-1:-1:-1;;;;;27629:50:0;;;27702:96;;;;;;;27580:238;26989:855;27880:7;27876:2;-1:-1:-1;;;;;27861:27:0;27870:4;-1:-1:-1;;;;;27861:27:0;;;;;;;;;;;27899:42;26062:1887;;25958:1991;;;:::o;33274:190::-;33399:4;33452;33423:25;33436:5;33443:4;33423:12;:25::i;:::-;:33;;33274:190;-1:-1:-1;;;;33274:190:0:o;18785:536::-;-1:-1:-1;;;;;;;;;;;;;;;;;18917:16:0;18925:7;23266:4;23300:13;-1:-1:-1;23290:23:0;23209:112;18917:16;18912:61;;18942:31;;-1:-1:-1;;;18942:31:0;;;;;;;;;;;18912:61;19031:7;19011:245;19078:31;19112:17;;;:11;:17;;;;;;;;;19078:51;;;;;;;;;-1:-1:-1;;;;;19078:51:0;;;;;-1:-1:-1;;;19078:51:0;;;;;;;;;;;;19152:28;19148:93;;19212:9;18785:536;-1:-1:-1;;;18785:536:0:o;19148:93::-;-1:-1:-1;;;19051:6:0;19011:245;;32715:191;32808:6;;;-1:-1:-1;;;;;32825:17:0;;;-1:-1:-1;;;;;;32825:17:0;;;;;;;32858:40;;32808:6;;;32825:17;32808:6;;32858:40;;32789:16;;32858:40;32778:128;32715:191;:::o;28828:919::-;28983:4;-1:-1:-1;;;;;29004:13:0;;1985:19;:23;29000:740;;29057:175;;-1:-1:-1;;;29057:175:0;;-1:-1:-1;;;;;29057:36:0;;;;;:175;;1744:10;;29151:4;;29178:7;;29208:5;;29057:175;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29057:175:0;;;;;;;;-1:-1:-1;;29057:175:0;;;;;;;;;;;;:::i;:::-;;;29036:649;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29419:13:0;;29415:255;;29467:40;;-1:-1:-1;;;29467:40:0;;;;;;;;;;;29415:255;29620:6;29614:13;29605:6;29601:2;29597:15;29590:38;29036:649;-1:-1:-1;;;;;;29296:55:0;-1:-1:-1;;;29296:55:0;;-1:-1:-1;29289:62:0;;29000:740;-1:-1:-1;29724:4:0;29000:740;28828:919;;;;;;:::o;36301:110::-;36361:13;36394:9;36387:16;;;;;:::i;151:532::-;207:13;237:10;233:53;;-1:-1:-1;;264:10:0;;;;;;;;;;;;-1:-1:-1;;;264:10:0;;;;;151:532::o;233:53::-;311:5;296:12;352:78;359:9;;352:78;;385:8;;;;:::i;:::-;;-1:-1:-1;408:10:0;;-1:-1:-1;416:2:0;408:10;;:::i;:::-;;;352:78;;;440:19;472:6;462:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;462:17:0;;440:39;;490:154;497:10;;490:154;;524:11;534:1;524:11;;:::i;:::-;;-1:-1:-1;593:10:0;601:2;593:5;:10;:::i;:::-;580:24;;:2;:24;:::i;:::-;567:39;;550:6;557;550:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;550:56:0;;;;;;;;-1:-1:-1;621:11:0;630:2;621:11;;:::i;:::-;;;490:154;;23796:163;23919:32;23925:2;23929:8;23939:5;23946:4;23919:5;:32::i;33825:707::-;33935:7;33983:4;33935:7;33998:497;34022:5;:12;34018:1;:16;33998:497;;;34056:20;34079:5;34085:1;34079:8;;;;;;;;:::i;:::-;;;;;;;34056:31;;34122:12;34106;:28;34102:382;;34635:13;34690:15;;;34726:4;34719:15;;;34773:4;34757:21;;34234:57;;34102:382;;;34635:13;34690:15;;;34726:4;34719:15;;;34773:4;34757:21;;34411:57;;34102:382;-1:-1:-1;34036:3:0;;;;:::i;:::-;;;;33998:497;;;-1:-1:-1;34512:12:0;33825:707;-1:-1:-1;;;33825:707:0:o;24218:1486::-;24357:20;24380:13;-1:-1:-1;;;;;24408:16:0;;24404:48;;24433:19;;-1:-1:-1;;;24433:19:0;;;;;;;;;;;24404:48;-1:-1:-1;;;;;24865:16:0;;;;;;:12;:16;;;;;;;;:45;;-1:-1:-1;;;;;;;;;24865:45:0;;-1:-1:-1;;;;;24865:45:0;;;;;;;;;;24925:50;;;;;;;;;;;;;;24992:25;;;:11;:25;;;;;:35;;-1:-1:-1;;;;;;25042:66:0;;;;-1:-1:-1;;;25092:15:0;25042:66;;;;;;;24992:25;;25177:391;25197:8;25193:1;:12;25177:391;;;25236:38;;25261:12;;-1:-1:-1;;;;;25236:38:0;;;25253:1;;25236:38;;25253:1;;25236:38;25319:4;:89;;;;;25349:59;25380:1;25384:2;25388:12;25402:5;25349:22;:59::i;:::-;25348:60;25319:89;25293:225;;;25458:40;;-1:-1:-1;;;25458:40:0;;;;;;;;;;;25293:225;25538:14;;;;;25207:3;25177:391;;;-1:-1:-1;25584:13:0;:28;25636:60;40005:336;-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;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:689::-;2994:6;3002;3010;3063:2;3051:9;3042:7;3038:23;3034:32;3031:52;;;3079:1;3076;3069:12;3031:52;3119:9;3106:23;3148:18;3189:2;3181:6;3178:14;3175:34;;;3205:1;3202;3195:12;3175:34;3243:6;3232:9;3228:22;3218:32;;3288:7;3281:4;3277:2;3273:13;3269:27;3259:55;;3310:1;3307;3300:12;3259:55;3350:2;3337:16;3376:2;3368:6;3365:14;3362:34;;;3392:1;3389;3382:12;3362:34;3447:7;3440:4;3430:6;3427:1;3423:14;3419:2;3415:23;3411:34;3408:47;3405:67;;;3468:1;3465;3458:12;3405:67;3499:4;3491:13;;;;3523:6;;-1:-1:-1;3561:20:1;;;;3548:34;;2899:689;-1:-1:-1;;;;2899:689:1:o;3593:180::-;3652:6;3705:2;3693:9;3684:7;3680:23;3676:32;3673:52;;;3721:1;3718;3711:12;3673:52;-1:-1:-1;3744:23:1;;3593:180;-1:-1:-1;3593:180:1:o;3778:245::-;3836:6;3889:2;3877:9;3868:7;3864:23;3860:32;3857:52;;;3905:1;3902;3895:12;3857:52;3944:9;3931:23;3963:30;3987:5;3963:30;:::i;4028:249::-;4097:6;4150:2;4138:9;4129:7;4125:23;4121:32;4118:52;;;4166:1;4163;4156:12;4118:52;4198:9;4192:16;4217:30;4241:5;4217:30;:::i;4282:450::-;4351:6;4404:2;4392:9;4383:7;4379:23;4375:32;4372:52;;;4420:1;4417;4410:12;4372:52;4460:9;4447:23;4493:18;4485:6;4482:30;4479:50;;;4525:1;4522;4515:12;4479:50;4548:22;;4601:4;4593:13;;4589:27;-1:-1:-1;4579:55:1;;4630:1;4627;4620:12;4579:55;4653:73;4718:7;4713:2;4700:16;4695:2;4691;4687:11;4653:73;:::i;4922:257::-;4963:3;5001:5;4995:12;5028:6;5023:3;5016:19;5044:63;5100:6;5093:4;5088:3;5084:14;5077:4;5070:5;5066:16;5044:63;:::i;:::-;5161:2;5140:15;-1:-1:-1;;5136:29:1;5127:39;;;;5168:4;5123:50;;4922:257;-1:-1:-1;;4922:257:1:o;5418:637::-;5698:3;5736:6;5730:13;5752:53;5798:6;5793:3;5786:4;5778:6;5774:17;5752:53;:::i;:::-;5868:13;;5827:16;;;;5890:57;5868:13;5827:16;5924:4;5912:17;;5890:57;:::i;:::-;-1:-1:-1;;;5969:20:1;;5998:22;;;6047:1;6036:13;;5418:637;-1:-1:-1;;;;5418:637:1:o;6268:488::-;-1:-1:-1;;;;;6537:15:1;;;6519:34;;6589:15;;6584:2;6569:18;;6562:43;6636:2;6621:18;;6614:34;;;6684:3;6679:2;6664:18;;6657:31;;;6462:4;;6705:45;;6730:19;;6722:6;6705:45;:::i;:::-;6697:53;6268:488;-1:-1:-1;;;;;;6268:488:1:o;7232:219::-;7381:2;7370:9;7363:21;7344:4;7401:44;7441:2;7430:9;7426:18;7418:6;7401:44;:::i;7863:415::-;8065:2;8047:21;;;8104:2;8084:18;;;8077:30;8143:34;8138:2;8123:18;;8116:62;-1:-1:-1;;;8209:2:1;8194:18;;8187:49;8268:3;8253:19;;7863:415::o;9040:356::-;9242:2;9224:21;;;9261:18;;;9254:30;9320:34;9315:2;9300:18;;9293:62;9387:2;9372:18;;9040:356::o;11803:128::-;11843:3;11874:1;11870:6;11867:1;11864:13;11861:39;;;11880:18;;:::i;:::-;-1:-1:-1;11916:9:1;;11803:128::o;11936:120::-;11976:1;12002;11992:35;;12007:18;;:::i;:::-;-1:-1:-1;12041:9:1;;11936:120::o;12061:168::-;12101:7;12167:1;12163;12159:6;12155:14;12152:1;12149:21;12144:1;12137:9;12130:17;12126:45;12123:71;;;12174:18;;:::i;:::-;-1:-1:-1;12214:9:1;;12061:168::o;12234:125::-;12274:4;12302:1;12299;12296:8;12293:34;;;12307:18;;:::i;:::-;-1:-1:-1;12344:9:1;;12234:125::o;12364:258::-;12436:1;12446:113;12460:6;12457:1;12454:13;12446:113;;;12536:11;;;12530:18;12517:11;;;12510:39;12482:2;12475:10;12446:113;;;12577:6;12574:1;12571:13;12568:48;;;-1:-1:-1;;12612:1:1;12594:16;;12587:27;12364:258::o;12627:380::-;12706:1;12702:12;;;;12749;;;12770:61;;12824:4;12816:6;12812:17;12802:27;;12770:61;12877:2;12869:6;12866:14;12846:18;12843:38;12840:161;;;12923:10;12918:3;12914:20;12911:1;12904:31;12958:4;12955:1;12948:15;12986:4;12983:1;12976:15;12840:161;;12627:380;;;:::o;13012:135::-;13051:3;-1:-1:-1;;13072:17:1;;13069:43;;;13092:18;;:::i;:::-;-1:-1:-1;13139:1:1;13128:13;;13012:135::o;13152:112::-;13184:1;13210;13200:35;;13215:18;;:::i;:::-;-1:-1:-1;13249:9:1;;13152:112::o;13269:127::-;13330:10;13325:3;13321:20;13318:1;13311:31;13361:4;13358:1;13351:15;13385:4;13382:1;13375:15;13401:127;13462:10;13457:3;13453:20;13450:1;13443:31;13493:4;13490:1;13483:15;13517:4;13514:1;13507:15;13533:127;13594:10;13589:3;13585:20;13582:1;13575:31;13625:4;13622:1;13615:15;13649:4;13646:1;13639:15;13665:127;13726:10;13721:3;13717:20;13714:1;13707:31;13757:4;13754:1;13747:15;13781:4;13778:1;13771:15;13797:127;13858:10;13853:3;13849:20;13846:1;13839:31;13889:4;13886:1;13879:15;13913:4;13910:1;13903:15;13929:131;-1:-1:-1;;;;;;14003:32:1;;13993:43;;13983:71;;14050:1;14047;14040:12
Swarm Source
ipfs://377f8465ddb4c9b621c102f20d7aac5e553a768c7e0f3fc1a51d9fb8a8e87395
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.