Polygon Sponsored slots available. Book your slot here!
Contract Overview
Balance:
0.7 MATIC
MATIC Value:
$0.55 (@ $0.79/MATIC)
[ Download CSV Export ]
Contract Name:
omniGoblintown
Compiler Version
v0.8.14+commit.80d49f37
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-05-22 */ pragma solidity >=0.5.0; interface ILayerZeroReceiver { // @notice LayerZero endpoint will invoke this function to deliver the message on the destination // @param _srcChainId - the source endpoint identifier // @param _srcAddress - the source sending contract address from the source chain // @param _nonce - the ordered message nonce // @param _payload - the signed payload is the UA bytes has encoded to be sent function lzReceive(uint16 _srcChainId, bytes calldata _srcAddress, uint64 _nonce, bytes calldata _payload) external; } // File: /ILayerZeroUserApplicationConfig.sol pragma solidity >=0.5.0; interface ILayerZeroUserApplicationConfig { // @notice set the configuration of the LayerZero messaging library of the specified version // @param _version - messaging library version // @param _chainId - the chainId for the pending config change // @param _configType - type of configuration. every messaging library has its own convention. // @param _config - configuration in the bytes. can encode arbitrary content. function setConfig(uint16 _version, uint16 _chainId, uint _configType, bytes calldata _config) external; // @notice set the send() LayerZero messaging library version to _version // @param _version - new messaging library version function setSendVersion(uint16 _version) external; // @notice set the lzReceive() LayerZero messaging library version to _version // @param _version - new messaging library version function setReceiveVersion(uint16 _version) external; // @notice Only when the UA needs to resume the message flow in blocking mode and clear the stored payload // @param _srcChainId - the chainId of the source chain // @param _srcAddress - the contract address of the source contract at the source chain function forceResumeReceive(uint16 _srcChainId, bytes calldata _srcAddress) external; } // File: /ILayerZeroEndpoint.sol pragma solidity >=0.5.0; interface ILayerZeroEndpoint is ILayerZeroUserApplicationConfig { // @notice send a LayerZero message to the specified address at a LayerZero endpoint. // @param _dstChainId - the destination chain identifier // @param _destination - the address on destination chain (in bytes). address length/format may vary by chains // @param _payload - a custom bytes payload to send to the destination contract // @param _refundAddress - if the source transaction is cheaper than the amount of value passed, refund the additional amount to this address // @param _zroPaymentAddress - the address of the ZRO token holder who would pay for the transaction // @param _adapterParams - parameters for custom functionality. e.g. receive airdropped native gas from the relayer on destination function send(uint16 _dstChainId, bytes calldata _destination, bytes calldata _payload, address payable _refundAddress, address _zroPaymentAddress, bytes calldata _adapterParams) external payable; // @notice used by the messaging library to publish verified payload // @param _srcChainId - the source chain identifier // @param _srcAddress - the source contract (as bytes) at the source chain // @param _dstAddress - the address on destination chain // @param _nonce - the unbound message ordering nonce // @param _gasLimit - the gas limit for external contract execution // @param _payload - verified payload to send to the destination contract function receivePayload(uint16 _srcChainId, bytes calldata _srcAddress, address _dstAddress, uint64 _nonce, uint _gasLimit, bytes calldata _payload) external; // @notice get the inboundNonce of a receiver from a source chain which could be EVM or non-EVM chain // @param _srcChainId - the source chain identifier // @param _srcAddress - the source chain contract address function getInboundNonce(uint16 _srcChainId, bytes calldata _srcAddress) external view returns (uint64); // @notice get the outboundNonce from this source chain which, consequently, is always an EVM // @param _srcAddress - the source chain contract address function getOutboundNonce(uint16 _dstChainId, address _srcAddress) external view returns (uint64); // @notice gets a quote in source native gas, for the amount that send() requires to pay for message delivery // @param _dstChainId - the destination chain identifier // @param _userApplication - the user app address on this EVM chain // @param _payload - the custom message to send over LayerZero // @param _payInZRO - if false, user app pays the protocol fee in native token // @param _adapterParam - parameters for the adapter service, e.g. send some dust native token to dstChain function estimateFees(uint16 _dstChainId, address _userApplication, bytes calldata _payload, bool _payInZRO, bytes calldata _adapterParam) external view returns (uint nativeFee, uint zroFee); // @notice get this Endpoint's immutable source identifier function getChainId() external view returns (uint16); // @notice the interface to retry failed message on this Endpoint destination // @param _srcChainId - the source chain identifier // @param _srcAddress - the source chain contract address // @param _payload - the payload to be retried function retryPayload(uint16 _srcChainId, bytes calldata _srcAddress, bytes calldata _payload) external; // @notice query if any STORED payload (message blocking) at the endpoint. // @param _srcChainId - the source chain identifier // @param _srcAddress - the source chain contract address function hasStoredPayload(uint16 _srcChainId, bytes calldata _srcAddress) external view returns (bool); // @notice query if the _libraryAddress is valid for sending msgs. // @param _userApplication - the user app address on this EVM chain function getSendLibraryAddress(address _userApplication) external view returns (address); // @notice query if the _libraryAddress is valid for receiving msgs. // @param _userApplication - the user app address on this EVM chain function getReceiveLibraryAddress(address _userApplication) external view returns (address); // @notice query if the non-reentrancy guard for send() is on // @return true if the guard is on. false otherwise function isSendingPayload() external view returns (bool); // @notice query if the non-reentrancy guard for receive() is on // @return true if the guard is on. false otherwise function isReceivingPayload() external view returns (bool); // @notice get the configuration of the LayerZero messaging library of the specified version // @param _version - messaging library version // @param _chainId - the chainId for the pending config change // @param _userApplication - the contract address of the user application // @param _configType - type of configuration. every messaging library has its own convention. function getConfig(uint16 _version, uint16 _chainId, address _userApplication, uint _configType) external view returns (bytes memory); // @notice get the send() LayerZero messaging library version // @param _userApplication - the contract address of the user application function getSendVersion(address _userApplication) external view returns (uint16); // @notice get the lzReceive() LayerZero messaging library version // @param _userApplication - the contract address of the user application function getReceiveVersion(address _userApplication) external view returns (uint16); } // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: /NonblockingReceiver.sol pragma solidity ^0.8.9; abstract contract NonblockingReceiver is Ownable, ILayerZeroReceiver { ILayerZeroEndpoint internal endpoint; struct FailedMessages { uint payloadLength; bytes32 payloadHash; } mapping(uint16 => mapping(bytes => mapping(uint => FailedMessages))) public failedMessages; mapping(uint16 => bytes) public trustedRemoteLookup; event MessageFailed(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload); function lzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload) external override { require(msg.sender == address(endpoint)); // boilerplate! lzReceive must be called by the endpoint for security require(_srcAddress.length == trustedRemoteLookup[_srcChainId].length && keccak256(_srcAddress) == keccak256(trustedRemoteLookup[_srcChainId]), "NonblockingReceiver: invalid source sending contract"); // try-catch all errors/exceptions // having failed messages does not block messages passing try this.onLzReceive(_srcChainId, _srcAddress, _nonce, _payload) { // do nothing } catch { // error / exception failedMessages[_srcChainId][_srcAddress][_nonce] = FailedMessages(_payload.length, keccak256(_payload)); emit MessageFailed(_srcChainId, _srcAddress, _nonce, _payload); } } function onLzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload) public { // only internal transaction require(msg.sender == address(this), "NonblockingReceiver: caller must be Bridge."); // handle incoming message _LzReceive( _srcChainId, _srcAddress, _nonce, _payload); } // abstract function function _LzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload) virtual internal; function _lzSend(uint16 _dstChainId, bytes memory _payload, address payable _refundAddress, address _zroPaymentAddress, bytes memory _txParam) internal { endpoint.send{value: msg.value}(_dstChainId, trustedRemoteLookup[_dstChainId], _payload, _refundAddress, _zroPaymentAddress, _txParam); } function retryMessage(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes calldata _payload) external payable { // assert there is message to retry FailedMessages storage failedMsg = failedMessages[_srcChainId][_srcAddress][_nonce]; require(failedMsg.payloadHash != bytes32(0), "NonblockingReceiver: no stored message"); require(_payload.length == failedMsg.payloadLength && keccak256(_payload) == failedMsg.payloadHash, "LayerZero: invalid payload"); // clear the stored message failedMsg.payloadLength = 0; failedMsg.payloadHash = bytes32(0); // execute the message. revert if it fails again this.onLzReceive(_srcChainId, _srcAddress, _nonce, _payload); } function setTrustedRemote(uint16 _chainId, bytes calldata _trustedRemote) external onlyOwner { trustedRemoteLookup[_chainId] = _trustedRemote; } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); _afterTokenTransfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); _afterTokenTransfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); _afterTokenTransfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } pragma solidity ^0.8.9; contract omniGoblintown is ERC721, NonblockingReceiver { string public baseURI = "https://ipfs.io/ipfs/QmTeJu6sQDatiL3s7HuLBas9FcJycm3MJ7D92cXx9Tc3ZS/"; string public contractURI = "http://ipfs.io/ipfs/QmdTcpzdmZNfruWJNyhBKdwYg2P1bpzFpcH68P3PsRqnST"; string public constant baseExtension = ".json"; uint256 nextTokenId; uint256 MAX_MINT; uint256 WHITELIST_MINT; uint256 gasForDestinationLzReceive = 350000; uint256 public constant MAX_PER_TX = 2; uint256 public constant MAX_PER_TX_2 = 2; uint256 public constant MAX_PER_WALLET = 10; mapping(address => uint256) public minted; bool public paused = false; constructor( address _endpoint, uint256 startId, uint256 _max, uint256 _wl_p ) ERC721("OmniGoblintown", "Goblintown.wtf") { endpoint = ILayerZeroEndpoint(_endpoint); nextTokenId = startId; MAX_MINT = _max; WHITELIST_MINT = _wl_p; } function mint(uint256 _amount) external payable { address _caller = _msgSender(); require(!paused, "omniGoblintown: Paused"); require(nextTokenId + _amount <= MAX_MINT, "omniGoblintown: Mint exceeds supply"); require(MAX_PER_TX >= _amount , "omniGoblintown: Excess max per tx"); require(MAX_PER_WALLET >= minted[_caller] + _amount, "omniGoblintown: Excess max per wallet"); minted[_caller] += _amount; for(uint256 i = 0; i < _amount; i++) { _safeMint(_caller, ++nextTokenId); } } function white_list_mint(uint256 _amount) external payable { address _caller = 0x8A0eFF1EA8b4356F8121d053fbFFe5427D594546; require(!paused, "omniGoblintown: Paused"); require(nextTokenId + _amount <= WHITELIST_MINT, "omniGoblintown: Mint exceeds supply"); require(MAX_PER_TX_2 >= _amount , "omniGoblintown: Excess max per tx"); minted[_caller] += _amount; for(uint256 i = 0; i < _amount; i++) { _safeMint(_caller, ++nextTokenId); } } // This function transfers the nft from your address on the // source chain to the same address on the destination chain function traverseChains(uint16 _chainId, uint256 tokenId) public payable { require( msg.sender == ownerOf(tokenId), "You must own the token to traverse" ); require( trustedRemoteLookup[_chainId].length > 0, "This chain is currently unavailable for travel" ); // burn NFT, eliminating it from circulation on src chain _burn(tokenId); // abi.encode() the payload with the values to send bytes memory payload = abi.encode(msg.sender, tokenId); // encode adapterParams to specify more gas for the destination uint16 version = 1; bytes memory adapterParams = abi.encodePacked( version, gasForDestinationLzReceive ); // get the fees we need to pay to LayerZero + Relayer to cover message delivery // you will be refunded for extra gas paid (uint256 messageFee, ) = endpoint.estimateFees( _chainId, address(this), payload, false, adapterParams ); require( msg.value >= messageFee, "omniGoblintown: msg.value not enough to cover messageFee. Send gas for message fees" ); endpoint.send{value: msg.value}( _chainId, // destination chainId trustedRemoteLookup[_chainId], // destination address of nft contract payload, // abi.encoded()'ed bytes payable(msg.sender), // refund address address(0x0), // 'zroPaymentAddress' unused for this adapterParams // txParameters ); } function getEstimatedFees(uint16 _chainId, uint256 tokenId) public view returns (uint) { bytes memory payload = abi.encode(msg.sender, tokenId); uint16 version = 1; bytes memory adapterParams = abi.encodePacked(version, gasForDestinationLzReceive); (uint quotedLayerZeroFee, ) = endpoint.estimateFees(_chainId, address(this), payload, false, adapterParams); return quotedLayerZeroFee; } function pause(bool _state) external onlyOwner { paused = _state; } function setBaseURI(string memory baseURI_) external onlyOwner { baseURI = baseURI_; } function setContractURI(string memory _contractURI) external onlyOwner { contractURI = _contractURI; } function tokenURI(uint256 _tokenId) public view override returns (string memory) { require(_exists(_tokenId), "Token does not exist."); return bytes(baseURI).length > 0 ? string( abi.encodePacked( baseURI, Strings.toString(_tokenId), baseExtension ) ) : ""; } function setGasForDestinationLzReceive(uint256 _gasForDestinationLzReceive) external onlyOwner { gasForDestinationLzReceive = _gasForDestinationLzReceive; } function withdraw() external onlyOwner { uint256 balance = address(this).balance; (bool success, ) = _msgSender().call{value: balance}(""); require(success, "Failed to send"); } // ------------------ // Internal Functions // ------------------ function _LzReceive( uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload ) internal override { // decode (address toAddr, uint256 tokenId) = abi.decode( _payload, (address, uint256) ); // mint the tokens back into existence on destination chain _safeMint(toAddr, tokenId); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_endpoint","type":"address"},{"internalType":"uint256","name":"startId","type":"uint256"},{"internalType":"uint256","name":"_max","type":"uint256"},{"internalType":"uint256","name":"_wl_p","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"indexed":false,"internalType":"uint64","name":"_nonce","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"MessageFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_TX_2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"failedMessages","outputs":[{"internalType":"uint256","name":"payloadLength","type":"uint256"},{"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_chainId","type":"uint16"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getEstimatedFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"onLzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"retryMessage","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_contractURI","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_gasForDestinationLzReceive","type":"uint256"}],"name":"setGasForDestinationLzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_chainId","type":"uint16"},{"internalType":"bytes","name":"_trustedRemote","type":"bytes"}],"name":"setTrustedRemote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_chainId","type":"uint16"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"traverseChains","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"trustedRemoteLookup","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"white_list_mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
61010060405260446080818152906200327260a03980516200002a91600a91602090910190620001bf565b50604051806080016040528060428152602001620032306042913980516200005b91600b91602090910190620001bf565b5062055730600f556011805460ff191690553480156200007a57600080fd5b50604051620032b6380380620032b68339810160408190526200009d9162000265565b6040518060400160405280600e81526020016d27b6b734a3b7b13634b73a37bbb760911b8152506040518060400160405280600e81526020016d23b7b13634b73a37bbb7173bba3360911b815250816000908051906020019062000103929190620001bf565b50805162000119906001906020840190620001bf565b50505062000136620001306200016960201b60201c565b6200016d565b600780546001600160a01b0319166001600160a01b039590951694909417909355600c91909155600d55600e55620002ee565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620001cd90620002b2565b90600052602060002090601f016020900481019282620001f157600085556200023c565b82601f106200020c57805160ff19168380011785556200023c565b828001600101855582156200023c579182015b828111156200023c5782518255916020019190600101906200021f565b506200024a9291506200024e565b5090565b5b808211156200024a57600081556001016200024f565b600080600080608085870312156200027c57600080fd5b84516001600160a01b03811681146200029457600080fd5b60208601516040870151606090970151919890975090945092505050565b600181811c90821680620002c757607f821691505b602082108103620002e857634e487b7160e01b600052602260045260246000fd5b50919050565b612f3280620002fe6000396000f3fe60806040526004361061022f5760003560e01c80637533d7881161012e578063c7afa661116100ab578063e8a3d4851161006f578063e8a3d4851461069e578063e985e9c5146106b3578063eb8d72b7146106fc578063f2fde38b1461071c578063f43a22dc146103ca57600080fd5b8063c7afa66114610625578063c87b56dd14610645578063cf89fa0314610665578063d1deba1f14610678578063d2b7fa181461068b57600080fd5b806395d89b41116100f257806395d89b411461058c578063a0712d68146105a1578063a22cb465146105b4578063b88d4fde146105d4578063c6682862146105f457600080fd5b80637533d788146104a35780638da5cb5b146104c35780638ee74912146104e1578063938e3d7b1461054c578063943fb8721461056c57600080fd5b806323b872dd116101bc5780635c975abb116101805780635c975abb1461041f5780636352211e146104395780636c0360eb1461045957806370a082311461046e578063715018a61461048e57600080fd5b806323b872dd146103955780633ccfd60b146103b55780633d15c152146103ca57806342842e0e146103df57806355f804b3146103ff57600080fd5b8063081812fc11610203578063081812fc146102cd578063095ea7b3146103055780630f2cdd6c146103255780631c37a822146103485780631e7269c51461036857600080fd5b80621d35671461023457806301ffc9a71461025657806302329a291461028b57806306fdde03146102ab575b600080fd5b34801561024057600080fd5b5061025461024f36600461247e565b61073c565b005b34801561026257600080fd5b50610276610271366004612518565b610936565b60405190151581526020015b60405180910390f35b34801561029757600080fd5b506102546102a6366004612545565b610988565b3480156102b757600080fd5b506102c06109c5565b60405161028291906125b8565b3480156102d957600080fd5b506102ed6102e83660046125cb565b610a57565b6040516001600160a01b039091168152602001610282565b34801561031157600080fd5b506102546103203660046125f9565b610aec565b34801561033157600080fd5b5061033a600a81565b604051908152602001610282565b34801561035457600080fd5b5061025461036336600461247e565b610c01565b34801561037457600080fd5b5061033a610383366004612625565b60106020526000908152604090205481565b3480156103a157600080fd5b506102546103b0366004612642565b610c70565b3480156103c157600080fd5b50610254610ca1565b3480156103d657600080fd5b5061033a600281565b3480156103eb57600080fd5b506102546103fa366004612642565b610d5a565b34801561040b57600080fd5b5061025461041a366004612683565b610d75565b34801561042b57600080fd5b506011546102769060ff1681565b34801561044557600080fd5b506102ed6104543660046125cb565b610db2565b34801561046557600080fd5b506102c0610e29565b34801561047a57600080fd5b5061033a610489366004612625565b610eb7565b34801561049a57600080fd5b50610254610f3e565b3480156104af57600080fd5b506102c06104be3660046126cb565b610f74565b3480156104cf57600080fd5b506006546001600160a01b03166102ed565b3480156104ed57600080fd5b506105376104fc3660046126e6565b600860209081526000938452604080852084518086018401805192815290840195840195909520945292905282529020805460019091015482565b60408051928352602083019190915201610282565b34801561055857600080fd5b50610254610567366004612683565b610f8d565b34801561057857600080fd5b506102546105873660046125cb565b610fca565b34801561059857600080fd5b506102c0610ff9565b6102546105af3660046125cb565b611008565b3480156105c057600080fd5b506102546105cf36600461273c565b611190565b3480156105e057600080fd5b506102546105ef366004612771565b61119b565b34801561060057600080fd5b506102c060405180604001604052806005815260200164173539b7b760d91b81525081565b34801561063157600080fd5b5061033a6106403660046127d0565b6111cd565b34801561065157600080fd5b506102c06106603660046125cb565b6112a0565b6102546106733660046127d0565b61137a565b610254610686366004612834565b611658565b6102546106993660046125cb565b6117e5565b3480156106aa57600080fd5b506102c06118f5565b3480156106bf57600080fd5b506102766106ce3660046128bf565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561070857600080fd5b506102546107173660046128f8565b611902565b34801561072857600080fd5b50610254610737366004612625565b61194a565b6007546001600160a01b0316331461075357600080fd5b61ffff8416600090815260096020526040902080546107719061294a565b905083511480156107b0575061ffff841660009081526009602052604090819020905161079e91906129f3565b60405180910390208380519060200120145b61081e5760405162461bcd60e51b815260206004820152603460248201527f4e6f6e626c6f636b696e6752656365697665723a20696e76616c696420736f756044820152731c98d9481cd95b991a5b99c818dbdb9d1c9858dd60621b60648201526084015b60405180910390fd5b604051630e1bd41160e11b81523090631c37a822906108479087908790879087906004016129ff565b600060405180830381600087803b15801561086157600080fd5b505af1925050508015610872575060015b610930576040518060400160405280825181526020018280519060200120815250600860008661ffff1661ffff168152602001908152602001600020846040516108bc9190612a48565b9081526040805191829003602090810183206001600160401b038716600090815290825291909120835181559201516001909201919091557fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d906109279086908690869086906129ff565b60405180910390a15b50505050565b60006001600160e01b031982166380ac58cd60e01b148061096757506001600160e01b03198216635b5e139f60e01b145b8061098257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6006546001600160a01b031633146109b25760405162461bcd60e51b815260040161081590612a64565b6011805460ff1916911515919091179055565b6060600080546109d49061294a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a009061294a565b8015610a4d5780601f10610a2257610100808354040283529160200191610a4d565b820191906000526020600020905b815481529060010190602001808311610a3057829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610ad05760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610815565b506000908152600460205260409020546001600160a01b031690565b6000610af782610db2565b9050806001600160a01b0316836001600160a01b031603610b645760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610815565b336001600160a01b0382161480610b805750610b8081336106ce565b610bf25760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610815565b610bfc83836119e5565b505050565b333014610c645760405162461bcd60e51b815260206004820152602b60248201527f4e6f6e626c6f636b696e6752656365697665723a2063616c6c6572206d75737460448201526a10313290213934b233b29760a91b6064820152608401610815565b61093084848484611a53565b610c7a3382611a80565b610c965760405162461bcd60e51b815260040161081590612a99565b610bfc838383611b77565b6006546001600160a01b03163314610ccb5760405162461bcd60e51b815260040161081590612a64565b6040514790600090339083908381818185875af1925050503d8060008114610d0f576040519150601f19603f3d011682016040523d82523d6000602084013e610d14565b606091505b5050905080610d565760405162461bcd60e51b815260206004820152600e60248201526d11985a5b1959081d1bc81cd95b9960921b6044820152606401610815565b5050565b610bfc8383836040518060200160405280600081525061119b565b6006546001600160a01b03163314610d9f5760405162461bcd60e51b815260040161081590612a64565b8051610d5690600a906020840190612291565b6000818152600260205260408120546001600160a01b0316806109825760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610815565b600a8054610e369061294a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e629061294a565b8015610eaf5780601f10610e8457610100808354040283529160200191610eaf565b820191906000526020600020905b815481529060010190602001808311610e9257829003601f168201915b505050505081565b60006001600160a01b038216610f225760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610815565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610f685760405162461bcd60e51b815260040161081590612a64565b610f726000611d13565b565b60096020526000908152604090208054610e369061294a565b6006546001600160a01b03163314610fb75760405162461bcd60e51b815260040161081590612a64565b8051610d5690600b906020840190612291565b6006546001600160a01b03163314610ff45760405162461bcd60e51b815260040161081590612a64565b600f55565b6060600180546109d49061294a565b601154339060ff16156110565760405162461bcd60e51b81526020600482015260166024820152751bdb5b9a51dbd89b1a5b9d1bdddb8e8814185d5cd95960521b6044820152606401610815565b600d5482600c546110679190612b00565b11156110855760405162461bcd60e51b815260040161081590612b18565b81600210156110a65760405162461bcd60e51b815260040161081590612b5b565b6001600160a01b0381166000908152601060205260409020546110ca908390612b00565b600a10156111285760405162461bcd60e51b815260206004820152602560248201527f6f6d6e69476f626c696e746f776e3a20457863657373206d6178207065722077604482015264185b1b195d60da1b6064820152608401610815565b6001600160a01b03811660009081526010602052604081208054849290611150908490612b00565b90915550600090505b82811015610bfc5761117e82600c6000815461117490612b9c565b9182905550611d65565b8061118881612b9c565b915050611159565b610d56338383611d7f565b6111a53383611a80565b6111c15760405162461bcd60e51b815260040161081590612a99565b61093084848484611e4d565b60408051336020820152808201839052815180820383018152606082018352600f54600160f01b60808401526082808401919091528351808403909101815260a283019384905260075463040a7bb160e41b909452600093919260019285916001600160a01b03909116906340a7bb1090611254908a90309089908790899060a601612bb5565b6040805180830381865afa158015611270573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112949190612c09565b50979650505050505050565b6000818152600260205260409020546060906001600160a01b03166112ff5760405162461bcd60e51b81526020600482015260156024820152742a37b5b2b7103237b2b9903737ba1032bc34b9ba1760591b6044820152606401610815565b6000600a805461130e9061294a565b90501161132a5760405180602001604052806000815250610982565b600a61133583611e80565b60405180604001604052806005815260200164173539b7b760d91b81525060405160200161136593929190612c2d565b60405160208183030381529060405292915050565b61138381610db2565b6001600160a01b0316336001600160a01b0316146113ee5760405162461bcd60e51b815260206004820152602260248201527f596f75206d757374206f776e2074686520746f6b656e20746f20747261766572604482015261736560f01b6064820152608401610815565b61ffff82166000908152600960205260408120805461140c9061294a565b9050116114725760405162461bcd60e51b815260206004820152602e60248201527f5468697320636861696e2069732063757272656e746c7920756e617661696c6160448201526d189b1948199bdc881d1c985d995b60921b6064820152608401610815565b61147b81611f80565b60408051336020820152808201839052815180820383018152606082018352600f54600160f01b60808401526082808401919091528351808403909101815260a283019384905260075463040a7bb160e41b90945290926001926000916001600160a01b0316906340a7bb10906114fe908990309089908790899060a601612bb5565b6040805180830381865afa15801561151a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153e9190612c09565b509050803410156115d35760405162461bcd60e51b815260206004820152605360248201527f6f6d6e69476f626c696e746f776e3a206d73672e76616c7565206e6f7420656e60448201527f6f75676820746f20636f766572206d6573736167654665652e2053656e642067606482015272617320666f72206d657373616765206665657360681b608482015260a401610815565b60075461ffff8716600090815260096020526040808220905162c5803160e81b81526001600160a01b039093169263c580310092349261161e928c928b913391908b90600401612c66565b6000604051808303818588803b15801561163757600080fd5b505af115801561164b573d6000803e3d6000fd5b5050505050505050505050565b61ffff85166000908152600860205260408082209051611679908790612a48565b90815260408051602092819003830190206001600160401b03871660009081529252902060018101549091506117005760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e6752656365697665723a206e6f2073746f726564206d60448201526565737361676560d01b6064820152608401610815565b80548214801561172a575080600101548383604051611720929190612d46565b6040518091039020145b6117765760405162461bcd60e51b815260206004820152601a60248201527f4c617965725a65726f3a20696e76616c6964207061796c6f61640000000000006044820152606401610815565b60008082556001820155604051630e1bd41160e11b81523090631c37a822906117ab9089908990899089908990600401612d56565b600060405180830381600087803b1580156117c557600080fd5b505af11580156117d9573d6000803e3d6000fd5b50505050505050505050565b601154738a0eff1ea8b4356f8121d053fbffe5427d5945469060ff16156118475760405162461bcd60e51b81526020600482015260166024820152751bdb5b9a51dbd89b1a5b9d1bdddb8e8814185d5cd95960521b6044820152606401610815565b600e5482600c546118589190612b00565b11156118765760405162461bcd60e51b815260040161081590612b18565b81600210156118975760405162461bcd60e51b815260040161081590612b5b565b6001600160a01b038116600090815260106020526040812080548492906118bf908490612b00565b90915550600090505b82811015610bfc576118e382600c6000815461117490612b9c565b806118ed81612b9c565b9150506118c8565b600b8054610e369061294a565b6006546001600160a01b0316331461192c5760405162461bcd60e51b815260040161081590612a64565b61ffff83166000908152600960205260409020610930908383612315565b6006546001600160a01b031633146119745760405162461bcd60e51b815260040161081590612a64565b6001600160a01b0381166119d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610815565b6119e281611d13565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611a1a82610db2565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008082806020019051810190611a6a9190612db7565b91509150611a788282611d65565b505050505050565b6000818152600260205260408120546001600160a01b0316611af95760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610815565b6000611b0483610db2565b9050806001600160a01b0316846001600160a01b03161480611b3f5750836001600160a01b0316611b3484610a57565b6001600160a01b0316145b80611b6f57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611b8a82610db2565b6001600160a01b031614611bee5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610815565b6001600160a01b038216611c505760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610815565b611c5b6000826119e5565b6001600160a01b0383166000908152600360205260408120805460019290611c84908490612de5565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cb2908490612b00565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610d5682826040518060200160405280600081525061201b565b816001600160a01b0316836001600160a01b031603611de05760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610815565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611e58848484611b77565b611e648484848461204e565b6109305760405162461bcd60e51b815260040161081590612dfc565b606081600003611ea75750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611ed15780611ebb81612b9c565b9150611eca9050600a83612e64565b9150611eab565b6000816001600160401b03811115611eeb57611eeb6123b5565b6040519080825280601f01601f191660200182016040528015611f15576020820181803683370190505b5090505b8415611b6f57611f2a600183612de5565b9150611f37600a86612e78565b611f42906030612b00565b60f81b818381518110611f5757611f57612e8c565b60200101906001600160f81b031916908160001a905350611f79600a86612e64565b9450611f19565b6000611f8b82610db2565b9050611f986000836119e5565b6001600160a01b0381166000908152600360205260408120805460019290611fc1908490612de5565b909155505060008281526002602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b612025838361214f565b612032600084848461204e565b610bfc5760405162461bcd60e51b815260040161081590612dfc565b60006001600160a01b0384163b1561214457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612092903390899088908890600401612ea2565b6020604051808303816000875af19250505080156120cd575060408051601f3d908101601f191682019092526120ca91810190612edf565b60015b61212a573d8080156120fb576040519150601f19603f3d011682016040523d82523d6000602084013e612100565b606091505b5080516000036121225760405162461bcd60e51b815260040161081590612dfc565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b6f565b506001949350505050565b6001600160a01b0382166121a55760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610815565b6000818152600260205260409020546001600160a01b03161561220a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610815565b6001600160a01b0382166000908152600360205260408120805460019290612233908490612b00565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461229d9061294a565b90600052602060002090601f0160209004810192826122bf5760008555612305565b82601f106122d857805160ff1916838001178555612305565b82800160010185558215612305579182015b828111156123055782518255916020019190600101906122ea565b50612311929150612389565b5090565b8280546123219061294a565b90600052602060002090601f0160209004810192826123435760008555612305565b82601f1061235c5782800160ff19823516178555612305565b82800160010185558215612305579182015b8281111561230557823582559160200191906001019061236e565b5b80821115612311576000815560010161238a565b803561ffff811681146123b057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b03808411156123e5576123e56123b5565b604051601f8501601f19908116603f0116810190828211818310171561240d5761240d6123b5565b8160405280935085815286868601111561242657600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261245157600080fd5b612460838335602085016123cb565b9392505050565b80356001600160401b03811681146123b057600080fd5b6000806000806080858703121561249457600080fd5b61249d8561239e565b935060208501356001600160401b03808211156124b957600080fd5b6124c588838901612440565b94506124d360408801612467565b935060608701359150808211156124e957600080fd5b506124f687828801612440565b91505092959194509250565b6001600160e01b0319811681146119e257600080fd5b60006020828403121561252a57600080fd5b813561246081612502565b803580151581146123b057600080fd5b60006020828403121561255757600080fd5b61246082612535565b60005b8381101561257b578181015183820152602001612563565b838111156109305750506000910152565b600081518084526125a4816020860160208601612560565b601f01601f19169290920160200192915050565b602081526000612460602083018461258c565b6000602082840312156125dd57600080fd5b5035919050565b6001600160a01b03811681146119e257600080fd5b6000806040838503121561260c57600080fd5b8235612617816125e4565b946020939093013593505050565b60006020828403121561263757600080fd5b8135612460816125e4565b60008060006060848603121561265757600080fd5b8335612662816125e4565b92506020840135612672816125e4565b929592945050506040919091013590565b60006020828403121561269557600080fd5b81356001600160401b038111156126ab57600080fd5b8201601f810184136126bc57600080fd5b611b6f848235602084016123cb565b6000602082840312156126dd57600080fd5b6124608261239e565b6000806000606084860312156126fb57600080fd5b6127048461239e565b925060208401356001600160401b0381111561271f57600080fd5b61272b86828701612440565b925050604084013590509250925092565b6000806040838503121561274f57600080fd5b823561275a816125e4565b915061276860208401612535565b90509250929050565b6000806000806080858703121561278757600080fd5b8435612792816125e4565b935060208501356127a2816125e4565b92506040850135915060608501356001600160401b038111156127c457600080fd5b6124f687828801612440565b600080604083850312156127e357600080fd5b6126178361239e565b60008083601f8401126127fe57600080fd5b5081356001600160401b0381111561281557600080fd5b60208301915083602082850101111561282d57600080fd5b9250929050565b60008060008060006080868803121561284c57600080fd5b6128558661239e565b945060208601356001600160401b038082111561287157600080fd5b61287d89838a01612440565b955061288b60408901612467565b945060608801359150808211156128a157600080fd5b506128ae888289016127ec565b969995985093965092949392505050565b600080604083850312156128d257600080fd5b82356128dd816125e4565b915060208301356128ed816125e4565b809150509250929050565b60008060006040848603121561290d57600080fd5b6129168461239e565b925060208401356001600160401b0381111561293157600080fd5b61293d868287016127ec565b9497909650939450505050565b600181811c9082168061295e57607f821691505b60208210810361297e57634e487b7160e01b600052602260045260246000fd5b50919050565b600081546129918161294a565b600182811680156129a957600181146129ba576129e9565b60ff198416875282870194506129e9565b8560005260208060002060005b858110156129e05781548a8201529084019082016129c7565b50505082870194505b5050505092915050565b60006124608284612984565b61ffff85168152608060208201526000612a1c608083018661258c565b6001600160401b03851660408401528281036060840152612a3d818561258c565b979650505050505050565b60008251612a5a818460208701612560565b9190910192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115612b1357612b13612aea565b500190565b60208082526023908201527f6f6d6e69476f626c696e746f776e3a204d696e74206578636565647320737570604082015262706c7960e81b606082015260800190565b60208082526021908201527f6f6d6e69476f626c696e746f776e3a20457863657373206d61782070657220746040820152600f60fb1b606082015260800190565b600060018201612bae57612bae612aea565b5060010190565b61ffff861681526001600160a01b038516602082015260a060408201819052600090612be39083018661258c565b84151560608401528281036080840152612bfd818561258c565b98975050505050505050565b60008060408385031215612c1c57600080fd5b505080516020909101519092909150565b6000612c398286612984565b8451612c49818360208901612560565b8451910190612c5c818360208801612560565b0195945050505050565b61ffff871681526000602060c08184015260008854612c848161294a565b8060c087015260e0600180841660008114612ca65760018114612cbb57612ce9565b60ff1985168984015261010089019550612ce9565b8d6000528660002060005b85811015612ce15781548b8201860152908301908801612cc6565b8a0184019650505b50505050508381036040850152612d00818961258c565b915050612d1860608401876001600160a01b03169052565b6001600160a01b038516608084015282810360a0840152612d39818561258c565b9998505050505050505050565b8183823760009101908152919050565b61ffff86168152608060208201526000612d73608083018761258c565b6001600160401b03861660408401528281036060840152838152838560208301376000602085830101526020601f19601f8601168201019150509695505050505050565b60008060408385031215612dca57600080fd5b8251612dd5816125e4565b6020939093015192949293505050565b600082821015612df757612df7612aea565b500390565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612e7357612e73612e4e565b500490565b600082612e8757612e87612e4e565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612ed59083018461258c565b9695505050505050565b600060208284031215612ef157600080fd5b81516124608161250256fea2646970667358221220f1ed9ba90e388a8fee2471d2f461bbcd0d0b0733c21f28620834538c94d1464164736f6c634300080e0033687474703a2f2f697066732e696f2f697066732f516d645463707a646d5a4e667275574a4e7968424b6477596732503162707a4670634836385033507352716e535468747470733a2f2f697066732e696f2f697066732f516d54654a75367351446174694c33733748754c4261733946634a79636d334d4a37443932635878395463335a532f000000000000000000000000107cd015ba0c3e0a0bf50aae2a27e71e3582cc4c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d600000000000000000000000000000000000000000000000000000000000001f4
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000107cd015ba0c3e0a0bf50aae2a27e71e3582cc4c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d600000000000000000000000000000000000000000000000000000000000001f4
-----Decoded View---------------
Arg [0] : _endpoint (address): 0x107cd015ba0c3e0a0bf50aae2a27e71e3582cc4c
Arg [1] : startId (uint256): 0
Arg [2] : _max (uint256): 470
Arg [3] : _wl_p (uint256): 500
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000107cd015ba0c3e0a0bf50aae2a27e71e3582cc4c
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 00000000000000000000000000000000000000000000000000000000000001d6
Arg [3] : 00000000000000000000000000000000000000000000000000000000000001f4
Deployed ByteCode Sourcemap
48231:5991:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13803:948;;;;;;;;;;-1:-1:-1;13803:948:0;;;;;:::i;:::-;;:::i;:::-;;35082:305;;;;;;;;;;-1:-1:-1;35082:305:0;;;;;:::i;:::-;;:::i;:::-;;;2587:14:1;;2580:22;2562:41;;2550:2;2535:18;35082:305:0;;;;;;;;52624:81;;;;;;;;;;-1:-1:-1;52624:81:0;;;;;:::i;:::-;;:::i;36027:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;37586:221::-;;;;;;;;;;-1:-1:-1;37586:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;4173:32:1;;;4155:51;;4143:2;4128:18;37586:221:0;4009:203:1;37109:411:0;;;;;;;;;;-1:-1:-1;37109:411:0;;;;;:::i;:::-;;:::i;48778:43::-;;;;;;;;;;;;48819:2;48778:43;;;;;4819:25:1;;;4807:2;4792:18;48778:43:0;4673:177:1;14759:356:0;;;;;;;;;;-1:-1:-1;14759:356:0;;;;;:::i;:::-;;:::i;48828:41::-;;;;;;;;;;-1:-1:-1;48828:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;38336:339;;;;;;;;;;-1:-1:-1;38336:339:0;;;;;:::i;:::-;;:::i;53493:209::-;;;;;;;;;;;;;:::i;48731:40::-;;;;;;;;;;;;48770:1;48731:40;;38746:185;;;;;;;;;;-1:-1:-1;38746:185:0;;;;;:::i;:::-;;:::i;52713:100::-;;;;;;;;;;-1:-1:-1;52713:100:0;;;;;:::i;:::-;;:::i;48878:26::-;;;;;;;;;;-1:-1:-1;48878:26:0;;;;;;;;35721:239;;;;;;;;;;-1:-1:-1;35721:239:0;;;;;:::i;:::-;;:::i;48295:94::-;;;;;;;;;;;;;:::i;35451:208::-;;;;;;;;;;-1:-1:-1;35451:208:0;;;;;:::i;:::-;;:::i;12439:103::-;;;;;;;;;;;;;:::i;13645:51::-;;;;;;;;;;-1:-1:-1;13645:51:0;;;;;:::i;:::-;;:::i;11788:87::-;;;;;;;;;;-1:-1:-1;11861:6:0;;-1:-1:-1;;;;;11861:6:0;11788:87;;13548:90;;;;;;;;;;-1:-1:-1;13548:90:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7074:25:1;;;7130:2;7115:18;;7108:34;;;;7047:18;13548:90:0;6900:248:1;52821:116:0;;;;;;;;;;-1:-1:-1;52821:116:0;;;;;:::i;:::-;;:::i;53315:170::-;;;;;;;;;;-1:-1:-1;53315:170:0;;;;;:::i;:::-;;:::i;36196:104::-;;;;;;;;;;;;;:::i;49234:571::-;;;;;;:::i;:::-;;:::i;37879:155::-;;;;;;;;;;-1:-1:-1;37879:155:0;;;;;:::i;:::-;;:::i;39002:328::-;;;;;;;;;;-1:-1:-1;39002:328:0;;;;;:::i;:::-;;:::i;48499:46::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;48499:46:0;;;;;52180:436;;;;;;;;;;-1:-1:-1;52180:436:0;;;;;:::i;:::-;;:::i;52945:362::-;;;;;;;;;;-1:-1:-1;52945:362:0;;;;;:::i;:::-;;:::i;50468:1704::-;;;;;;:::i;:::-;;:::i;15591:758::-;;;;;;:::i;:::-;;:::i;49813:516::-;;;;;;:::i;:::-;;:::i;48396:96::-;;;;;;;;;;;;;:::i;38105:164::-;;;;;;;;;;-1:-1:-1;38105:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;38226:25:0;;;38202:4;38226:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;38105:164;16357:158;;;;;;;;;;-1:-1:-1;16357:158:0;;;;;:::i;:::-;;:::i;12697:201::-;;;;;;;;;;-1:-1:-1;12697:201:0;;;;;:::i;:::-;;:::i;13803:948::-;13965:8;;-1:-1:-1;;;;;13965:8:0;13943:10;:31;13935:40;;;;;;14086:32;;;;;;;:19;:32;;;;;:39;;;;;:::i;:::-;;;14064:11;:18;:61;:134;;;;-1:-1:-1;14165:32:0;;;;;;;:19;:32;;;;;;;14155:43;;;;14165:32;14155:43;:::i;:::-;;;;;;;;14139:11;14129:22;;;;;;:69;14064:134;14056:212;;;;-1:-1:-1;;;14056:212:0;;11892:2:1;14056:212:0;;;11874:21:1;11931:2;11911:18;;;11904:30;11970:34;11950:18;;;11943:62;-1:-1:-1;;;12021:18:1;;;12014:50;12081:19;;14056:212:0;;;;;;;;;14396:60;;-1:-1:-1;;;14396:60:0;;:4;;:16;;:60;;14413:11;;14426;;14439:6;;14447:8;;14396:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14392:352;;14603:52;;;;;;;;14618:8;:15;14603:52;;;;14645:8;14635:19;;;;;;14603:52;;;14552:14;:27;14567:11;14552:27;;;;;;;;;;;;;;;14580:11;14552:40;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14552:48:0;;;;;;;;;;;;;:103;;;;;;;;;;;;;;;14675:57;;;;14689:11;;14702;;14593:6;;14723:8;;14675:57;:::i;:::-;;;;;;;;14392:352;13803:948;;;;:::o;35082:305::-;35184:4;-1:-1:-1;;;;;;35221:40:0;;-1:-1:-1;;;35221:40:0;;:105;;-1:-1:-1;;;;;;;35278:48:0;;-1:-1:-1;;;35278:48:0;35221:105;:158;;;-1:-1:-1;;;;;;;;;;27945:40:0;;;35343:36;35201:178;35082:305;-1:-1:-1;;35082:305:0:o;52624:81::-;11861:6;;-1:-1:-1;;;;;11861:6:0;10592:10;12008:23;12000:68;;;;-1:-1:-1;;;12000:68:0;;;;;;;:::i;:::-;52682:6:::1;:15:::0;;-1:-1:-1;;52682:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;52624:81::o;36027:100::-;36081:13;36114:5;36107:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36027:100;:::o;37586:221::-;37662:7;40929:16;;;:7;:16;;;;;;-1:-1:-1;;;;;40929:16:0;37682:73;;;;-1:-1:-1;;;37682:73:0;;13515:2:1;37682:73:0;;;13497:21:1;13554:2;13534:18;;;13527:30;13593:34;13573:18;;;13566:62;-1:-1:-1;;;13644:18:1;;;13637:42;13696:19;;37682:73:0;13313:408:1;37682:73:0;-1:-1:-1;37775:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;37775:24:0;;37586:221::o;37109:411::-;37190:13;37206:23;37221:7;37206:14;:23::i;:::-;37190:39;;37254:5;-1:-1:-1;;;;;37248:11:0;:2;-1:-1:-1;;;;;37248:11:0;;37240:57;;;;-1:-1:-1;;;37240:57:0;;13928:2:1;37240:57:0;;;13910:21:1;13967:2;13947:18;;;13940:30;14006:34;13986:18;;;13979:62;-1:-1:-1;;;14057:18:1;;;14050:31;14098:19;;37240:57:0;13726:397:1;37240:57:0;10592:10;-1:-1:-1;;;;;37332:21:0;;;;:62;;-1:-1:-1;37357:37:0;37374:5;10592:10;38105:164;:::i;37357:37::-;37310:168;;;;-1:-1:-1;;;37310:168:0;;14330:2:1;37310:168:0;;;14312:21:1;14369:2;14349:18;;;14342:30;14408:34;14388:18;;;14381:62;14479:26;14459:18;;;14452:54;14523:19;;37310:168:0;14128:420:1;37310:168:0;37491:21;37500:2;37504:7;37491:8;:21::i;:::-;37179:341;37109:411;;:::o;14759:356::-;14928:10;14950:4;14928:27;14920:83;;;;-1:-1:-1;;;14920:83:0;;14755:2:1;14920:83:0;;;14737:21:1;14794:2;14774:18;;;14767:30;14833:34;14813:18;;;14806:62;-1:-1:-1;;;14884:18:1;;;14877:41;14935:19;;14920:83:0;14553:407:1;14920:83:0;15052:55;15064:11;15077;15090:6;15098:8;15052:10;:55::i;38336:339::-;38531:41;10592:10;38564:7;38531:18;:41::i;:::-;38523:103;;;;-1:-1:-1;;;38523:103:0;;;;;;;:::i;:::-;38639:28;38649:4;38655:2;38659:7;38639:9;:28::i;53493:209::-;11861:6;;-1:-1:-1;;;;;11861:6:0;10592:10;12008:23;12000:68;;;;-1:-1:-1;;;12000:68:0;;;;;;;:::i;:::-;53612:37:::1;::::0;53561:21:::1;::::0;53543:15:::1;::::0;10592:10;;53561:21;;53543:15;53612:37;53543:15;53612:37;53561:21;10592:10;53612:37:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53593:56;;;53668:7;53660:34;;;::::0;-1:-1:-1;;;53660:34:0;;15795:2:1;53660:34:0::1;::::0;::::1;15777:21:1::0;15834:2;15814:18;;;15807:30;-1:-1:-1;;;15853:18:1;;;15846:44;15907:18;;53660:34:0::1;15593:338:1::0;53660:34:0::1;53532:170;;53493:209::o:0;38746:185::-;38884:39;38901:4;38907:2;38911:7;38884:39;;;;;;;;;;;;:16;:39::i;52713:100::-;11861:6;;-1:-1:-1;;;;;11861:6:0;10592:10;12008:23;12000:68;;;;-1:-1:-1;;;12000:68:0;;;;;;;:::i;:::-;52787:18;;::::1;::::0;:7:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;35721:239::-:0;35793:7;35829:16;;;:7;:16;;;;;;-1:-1:-1;;;;;35829:16:0;;35856:73;;;;-1:-1:-1;;;35856:73:0;;16138:2:1;35856:73:0;;;16120:21:1;16177:2;16157:18;;;16150:30;16216:34;16196:18;;;16189:62;-1:-1:-1;;;16267:18:1;;;16260:39;16316:19;;35856:73:0;15936:405:1;48295:94:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;35451:208::-;35523:7;-1:-1:-1;;;;;35551:19:0;;35543:74;;;;-1:-1:-1;;;35543:74:0;;16548:2:1;35543:74:0;;;16530:21:1;16587:2;16567:18;;;16560:30;16626:34;16606:18;;;16599:62;-1:-1:-1;;;16677:18:1;;;16670:40;16727:19;;35543:74:0;16346:406:1;35543:74:0;-1:-1:-1;;;;;;35635:16:0;;;;;:9;:16;;;;;;;35451:208::o;12439:103::-;11861:6;;-1:-1:-1;;;;;11861:6:0;10592:10;12008:23;12000:68;;;;-1:-1:-1;;;12000:68:0;;;;;;;:::i;:::-;12504:30:::1;12531:1;12504:18;:30::i;:::-;12439:103::o:0;13645:51::-;;;;;;;;;;;;;;;;:::i;52821:116::-;11861:6;;-1:-1:-1;;;;;11861:6:0;10592:10;12008:23;12000:68;;;;-1:-1:-1;;;12000:68:0;;;;;;;:::i;:::-;52903:26;;::::1;::::0;:11:::1;::::0;:26:::1;::::0;::::1;::::0;::::1;:::i;53315:170::-:0;11861:6;;-1:-1:-1;;;;;11861:6:0;10592:10;12008:23;12000:68;;;;-1:-1:-1;;;12000:68:0;;;;;;;:::i;:::-;53421:26:::1;:56:::0;53315:170::o;36196:104::-;36252:13;36285:7;36278:14;;;;;:::i;49234:571::-;49343:6;;10592:10;;49343:6;;49342:7;49334:42;;;;-1:-1:-1;;;49334:42:0;;16959:2:1;49334:42:0;;;16941:21:1;16998:2;16978:18;;;16971:30;-1:-1:-1;;;17017:18:1;;;17010:52;17079:18;;49334:42:0;16757:346:1;49334:42:0;49420:8;;49409:7;49395:11;;:21;;;;:::i;:::-;:33;;49387:81;;;;-1:-1:-1;;;49387:81:0;;;;;;;:::i;:::-;49501:7;48723:1;49487:21;;49479:68;;;;-1:-1:-1;;;49479:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;49584:15:0;;;;;;:6;:15;;;;;;:25;;49602:7;;49584:25;:::i;:::-;48819:2;49566:43;;49558:93;;;;-1:-1:-1;;;49558:93:0;;18381:2:1;49558:93:0;;;18363:21:1;18420:2;18400:18;;;18393:30;18459:34;18439:18;;;18432:62;-1:-1:-1;;;18510:18:1;;;18503:35;18555:19;;49558:93:0;18179:401:1;49558:93:0;-1:-1:-1;;;;;49662:15:0;;;;;;:6;:15;;;;;:26;;49681:7;;49662:15;:26;;49681:7;;49662:26;:::i;:::-;;;;-1:-1:-1;49705:9:0;;-1:-1:-1;49701:97:0;49724:7;49720:1;:11;49701:97;;;49753:33;49763:7;49774:11;;49772:13;;;;;:::i;:::-;;;;;-1:-1:-1;49753:9:0;:33::i;:::-;49733:3;;;;:::i;:::-;;;;49701:97;;37879:155;37974:52;10592:10;38007:8;38017;37974:18;:52::i;39002:328::-;39177:41;10592:10;39210:7;39177:18;:41::i;:::-;39169:103;;;;-1:-1:-1;;;39169:103:0;;;;;;;:::i;:::-;39283:39;39297:4;39303:2;39307:7;39316:5;39283:13;:39::i;52180:436::-;52301:31;;;52312:10;52301:31;;;18899:51:1;18966:18;;;18959:34;;;52301:31:0;;;;;;;;;18872:18:1;;;52301:31:0;;52427:26;;-1:-1:-1;;;52401:53:0;;;19159:51:1;19226:11;;;;19219:27;;;;52401:53:0;;;;;;;;;;19262:12:1;;;52401:53:0;;;;52495:8;;-1:-1:-1;;;52495:77:0;;;-1:-1:-1;;52301:31:0;;52360:1;;-1:-1:-1;;;;;;;52495:8:0;;;;:21;;:77;;52517:8;;52535:4;;52301:31;;-1:-1:-1;;52401:53:0;;52495:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;52465:107:0;52180:436;-1:-1:-1;;;;;;;52180:436:0:o;52945:362::-;40905:4;40929:16;;;:7;:16;;;;;;53011:13;;-1:-1:-1;;;;;40929:16:0;53037:51;;;;-1:-1:-1;;;53037:51:0;;20384:2:1;53037:51:0;;;20366:21:1;20423:2;20403:18;;;20396:30;-1:-1:-1;;;20442:18:1;;;20435:51;20503:18;;53037:51:0;20182:345:1;53037:51:0;53130:1;53112:7;53106:21;;;;;:::i;:::-;;;:25;:193;;;;;;;;;;;;;;;;;53188:7;53212:26;53229:8;53212:16;:26::i;:::-;53255:13;;;;;;;;;;;;;-1:-1:-1;;;53255:13:0;;;53155:128;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;53099:200;52945:362;-1:-1:-1;;52945:362:0:o;50468:1704::-;50588:16;50596:7;50588;:16::i;:::-;-1:-1:-1;;;;;50574:30:0;:10;-1:-1:-1;;;;;50574:30:0;;50552:114;;;;-1:-1:-1;;;50552:114:0;;21308:2:1;50552:114:0;;;21290:21:1;21347:2;21327:18;;;21320:30;21386:34;21366:18;;;21359:62;-1:-1:-1;;;21437:18:1;;;21430:32;21479:19;;50552:114:0;21106:398:1;50552:114:0;50699:29;;;50738:1;50699:29;;;:19;:29;;;;;:36;;;;;:::i;:::-;;;:40;50677:136;;;;-1:-1:-1;;;50677:136:0;;21711:2:1;50677:136:0;;;21693:21:1;21750:2;21730:18;;;21723:30;21789:34;21769:18;;;21762:62;-1:-1:-1;;;21840:18:1;;;21833:44;21894:19;;50677:136:0;21509:410:1;50677:136:0;50893:14;50899:7;50893:5;:14::i;:::-;51004:31;;;51015:10;51004:31;;;18899:51:1;18966:18;;;18959:34;;;51004:31:0;;;;;;;;;18872:18:1;;;51004:31:0;;51232:26;;-1:-1:-1;;;51179:90:0;;;19159:51:1;19226:11;;;;19219:27;;;;51179:90:0;;;;;;;;;;19262:12:1;;;51179:90:0;;;;51448:8;;-1:-1:-1;;;51448:153:0;;;51004:31;;51138:1;;-1:-1:-1;;;;;;;51448:8:0;;:21;;:153;;51484:8;;51515:4;;51004:31;;-1:-1:-1;;51179:90:0;;51448:153;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;51423:178;;;51649:10;51636:9;:23;;51614:156;;;;-1:-1:-1;;;51614:156:0;;22126:2:1;51614:156:0;;;22108:21:1;22165:2;22145:18;;;22138:30;22204:34;22184:18;;;22177:62;22275:34;22255:18;;;22248:62;-1:-1:-1;;;22326:19:1;;;22319:50;22386:19;;51614:156:0;21924:487:1;51614:156:0;51783:8;;51875:29;;;51783:8;51875:29;;;:19;:29;;;;;;51783:381;;-1:-1:-1;;;51783:381:0;;-1:-1:-1;;;;;51783:8:0;;;;:13;;51804:9;;51783:381;;51829:8;;51958:7;;52014:10;;51783:8;52124:13;;51783:381;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50541:1631;;;;50468:1704;;:::o;15591:758::-;15807:27;;;15772:32;15807:27;;;:14;:27;;;;;;:40;;;;15835:11;;15807:40;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15807:48:0;;;;;;;;;;15874:21;;;;15807:48;;-1:-1:-1;15866:86:0;;;;-1:-1:-1;;;15866:86:0;;24107:2:1;15866:86:0;;;24089:21:1;24146:2;24126:18;;;24119:30;24185:34;24165:18;;;24158:62;-1:-1:-1;;;24236:18:1;;;24229:36;24282:19;;15866:86:0;23905:402:1;15866:86:0;15990:23;;15971:42;;:90;;;;;16040:9;:21;;;16027:8;;16017:19;;;;;;;:::i;:::-;;;;;;;;:44;15971:90;15963:129;;;;-1:-1:-1;;;15963:129:0;;24790:2:1;15963:129:0;;;24772:21:1;24829:2;24809:18;;;24802:30;24868:28;24848:18;;;24841:56;24914:18;;15963:129:0;24588:350:1;15963:129:0;16166:1;16140:27;;;16178:21;;;:34;16281:60;;-1:-1:-1;;;16281:60:0;;:4;;:16;;:60;;16298:11;;16311;;16324:6;;16332:8;;;;16281:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15716:633;15591:758;;;;;:::o;49813:516::-;49963:6;;49901:42;;49963:6;;49962:7;49954:42;;;;-1:-1:-1;;;49954:42:0;;16959:2:1;49954:42:0;;;16941:21:1;16998:2;16978:18;;;16971:30;-1:-1:-1;;;17017:18:1;;;17010:52;17079:18;;49954:42:0;16757:346:1;49954:42:0;50040:14;;50029:7;50015:11;;:21;;;;:::i;:::-;:39;;50007:87;;;;-1:-1:-1;;;50007:87:0;;;;;;;:::i;:::-;50129:7;48770:1;50113:23;;50105:70;;;;-1:-1:-1;;;50105:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;50186:15:0;;;;;;:6;:15;;;;;:26;;50205:7;;50186:15;:26;;50205:7;;50186:26;:::i;:::-;;;;-1:-1:-1;50229:9:0;;-1:-1:-1;50225:97:0;50248:7;50244:1;:11;50225:97;;;50277:33;50287:7;50298:11;;50296:13;;;;;:::i;50277:33::-;50257:3;;;;:::i;:::-;;;;50225:97;;48396:96;;;;;;;:::i;16357:158::-;11861:6;;-1:-1:-1;;;;;11861:6:0;10592:10;12008:23;12000:68;;;;-1:-1:-1;;;12000:68:0;;;;;;;:::i;:::-;16461:29:::1;::::0;::::1;;::::0;;;:19:::1;:29;::::0;;;;:46:::1;::::0;16493:14;;16461:46:::1;:::i;12697:201::-:0;11861:6;;-1:-1:-1;;;;;11861:6:0;10592:10;12008:23;12000:68;;;;-1:-1:-1;;;12000:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12786:22:0;::::1;12778:73;;;::::0;-1:-1:-1;;;12778:73:0;;25868:2:1;12778:73:0::1;::::0;::::1;25850:21:1::0;25907:2;25887:18;;;25880:30;25946:34;25926:18;;;25919:62;-1:-1:-1;;;25997:18:1;;;25990:36;26043:19;;12778:73:0::1;25666:402:1::0;12778:73:0::1;12862:28;12881:8;12862:18;:28::i;:::-;12697:201:::0;:::o;44986:174::-;45061:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;45061:29:0;-1:-1:-1;;;;;45061:29:0;;;;;;;;:24;;45115:23;45061:24;45115:14;:23::i;:::-;-1:-1:-1;;;;;45106:46:0;;;;;;;;;;;44986:174;;:::o;53793:424::-;53989:14;54005:15;54049:8;54024:77;;;;;;;;;;;;:::i;:::-;53988:113;;;;54183:26;54193:6;54201:7;54183:9;:26::i;:::-;53958:259;;53793:424;;;;:::o;41134:348::-;41227:4;40929:16;;;:7;:16;;;;;;-1:-1:-1;;;;;40929:16:0;41244:73;;;;-1:-1:-1;;;41244:73:0;;26600:2:1;41244:73:0;;;26582:21:1;26639:2;26619:18;;;26612:30;26678:34;26658:18;;;26651:62;-1:-1:-1;;;26729:18:1;;;26722:42;26781:19;;41244:73:0;26398:408:1;41244:73:0;41328:13;41344:23;41359:7;41344:14;:23::i;:::-;41328:39;;41397:5;-1:-1:-1;;;;;41386:16:0;:7;-1:-1:-1;;;;;41386:16:0;;:51;;;;41430:7;-1:-1:-1;;;;;41406:31:0;:20;41418:7;41406:11;:20::i;:::-;-1:-1:-1;;;;;41406:31:0;;41386:51;:87;;;-1:-1:-1;;;;;;38226:25:0;;;38202:4;38226:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;41441:32;41378:96;41134:348;-1:-1:-1;;;;41134:348:0:o;44243:625::-;44402:4;-1:-1:-1;;;;;44375:31:0;:23;44390:7;44375:14;:23::i;:::-;-1:-1:-1;;;;;44375:31:0;;44367:81;;;;-1:-1:-1;;;44367:81:0;;27013:2:1;44367:81:0;;;26995:21:1;27052:2;27032:18;;;27025:30;27091:34;27071:18;;;27064:62;-1:-1:-1;;;27142:18:1;;;27135:35;27187:19;;44367:81:0;26811:401:1;44367:81:0;-1:-1:-1;;;;;44467:16:0;;44459:65;;;;-1:-1:-1;;;44459:65:0;;27419:2:1;44459:65:0;;;27401:21:1;27458:2;27438:18;;;27431:30;27497:34;27477:18;;;27470:62;-1:-1:-1;;;27548:18:1;;;27541:34;27592:19;;44459:65:0;27217:400:1;44459:65:0;44641:29;44658:1;44662:7;44641:8;:29::i;:::-;-1:-1:-1;;;;;44683:15:0;;;;;;:9;:15;;;;;:20;;44702:1;;44683:15;:20;;44702:1;;44683:20;:::i;:::-;;;;-1:-1:-1;;;;;;;44714:13:0;;;;;;:9;:13;;;;;:18;;44731:1;;44714:13;:18;;44731:1;;44714:18;:::i;:::-;;;;-1:-1:-1;;44743:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;44743:21:0;-1:-1:-1;;;;;44743:21:0;;;;;;;;;44782:27;;44743:16;;44782:27;;;;;;;37179:341;37109:411;;:::o;13058:191::-;13151:6;;;-1:-1:-1;;;;;13168:17:0;;;-1:-1:-1;;;;;;13168:17:0;;;;;;;13201:40;;13151:6;;;13168:17;13151:6;;13201:40;;13132:16;;13201:40;13121:128;13058:191;:::o;41824:110::-;41900:26;41910:2;41914:7;41900:26;;;;;;;;;;;;:9;:26::i;45302:315::-;45457:8;-1:-1:-1;;;;;45448:17:0;:5;-1:-1:-1;;;;;45448:17:0;;45440:55;;;;-1:-1:-1;;;45440:55:0;;27954:2:1;45440:55:0;;;27936:21:1;27993:2;27973:18;;;27966:30;28032:27;28012:18;;;28005:55;28077:18;;45440:55:0;27752:349:1;45440:55:0;-1:-1:-1;;;;;45506:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;45506:46:0;;;;;;;;;;45568:41;;2562::1;;;45568::0;;2535:18:1;45568:41:0;;;;;;;45302:315;;;:::o;40212:::-;40369:28;40379:4;40385:2;40389:7;40369:9;:28::i;:::-;40416:48;40439:4;40445:2;40449:7;40458:5;40416:22;:48::i;:::-;40408:111;;;;-1:-1:-1;;;40408:111:0;;;;;;;:::i;8074:723::-;8130:13;8351:5;8360:1;8351:10;8347:53;;-1:-1:-1;;8378:10:0;;;;;;;;;;;;-1:-1:-1;;;8378:10:0;;;;;8074:723::o;8347:53::-;8425:5;8410:12;8466:78;8473:9;;8466:78;;8499:8;;;;:::i;:::-;;-1:-1:-1;8522:10:0;;-1:-1:-1;8530:2:0;8522:10;;:::i;:::-;;;8466:78;;;8554:19;8586:6;-1:-1:-1;;;;;8576:17:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8576:17:0;;8554:39;;8604:154;8611:10;;8604:154;;8638:11;8648:1;8638:11;;:::i;:::-;;-1:-1:-1;8707:10:0;8715:2;8707:5;:10;:::i;:::-;8694:24;;:2;:24;:::i;:::-;8681:39;;8664:6;8671;8664:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;8664:56:0;;;;;;;;-1:-1:-1;8735:11:0;8744:2;8735:11;;:::i;:::-;;;8604:154;;43486:420;43546:13;43562:23;43577:7;43562:14;:23::i;:::-;43546:39;;43687:29;43704:1;43708:7;43687:8;:29::i;:::-;-1:-1:-1;;;;;43729:16:0;;;;;;:9;:16;;;;;:21;;43749:1;;43729:16;:21;;43749:1;;43729:21;:::i;:::-;;;;-1:-1:-1;;43768:16:0;;;;:7;:16;;;;;;43761:23;;-1:-1:-1;;;;;;43761:23:0;;;43802:36;43776:7;;43768:16;-1:-1:-1;;;;;43802:36:0;;;;;43768:16;;43802:36;53532:170:::1;;53493:209::o:0;42161:321::-;42291:18;42297:2;42301:7;42291:5;:18::i;:::-;42342:54;42373:1;42377:2;42381:7;42390:5;42342:22;:54::i;:::-;42320:154;;;;-1:-1:-1;;;42320:154:0;;;;;;;:::i;46182:799::-;46337:4;-1:-1:-1;;;;;46358:13:0;;18048:19;:23;46354:620;;46394:72;;-1:-1:-1;;;46394:72:0;;-1:-1:-1;;;;;46394:36:0;;;;;:72;;10592:10;;46445:4;;46451:7;;46460:5;;46394:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46394:72:0;;;;;;;;-1:-1:-1;;46394:72:0;;;;;;;;;;;;:::i;:::-;;;46390:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46636:6;:13;46653:1;46636:18;46632:272;;46679:60;;-1:-1:-1;;;46679:60:0;;;;;;;:::i;46632:272::-;46854:6;46848:13;46839:6;46835:2;46831:15;46824:38;46390:529;-1:-1:-1;;;;;;46517:51:0;-1:-1:-1;;;46517:51:0;;-1:-1:-1;46510:58:0;;46354:620;-1:-1:-1;46958:4:0;46182:799;;;;;;:::o;42818:439::-;-1:-1:-1;;;;;42898:16:0;;42890:61;;;;-1:-1:-1;;;42890:61:0;;29981:2:1;42890:61:0;;;29963:21:1;;;30000:18;;;29993:30;30059:34;30039:18;;;30032:62;30111:18;;42890:61:0;29779:356:1;42890:61:0;40905:4;40929:16;;;:7;:16;;;;;;-1:-1:-1;;;;;40929:16:0;:30;42962:58;;;;-1:-1:-1;;;42962:58:0;;30342:2:1;42962:58:0;;;30324:21:1;30381:2;30361:18;;;30354:30;30420;30400:18;;;30393:58;30468:18;;42962:58:0;30140:352:1;42962:58:0;-1:-1:-1;;;;;43091:13:0;;;;;;:9;:13;;;;;:18;;43108:1;;43091:13;:18;;43108:1;;43091:18;:::i;:::-;;;;-1:-1:-1;;43120:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;43120:21:0;-1:-1:-1;;;;;43120:21:0;;;;;;;;43159:33;;43120:16;;;43159:33;;43120:16;;43159:33;53532:170:::1;;53493:209::o:0;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:159:1;81:20;;141:6;130:18;;120:29;;110:57;;163:1;160;153:12;110:57;14:159;;;:::o;178:127::-;239:10;234:3;230:20;227:1;220:31;270:4;267:1;260:15;294:4;291:1;284:15;310:631;374:5;-1:-1:-1;;;;;445:2:1;437:6;434:14;431:40;;;451:18;;:::i;:::-;526:2;520:9;494:2;580:15;;-1:-1:-1;;576:24:1;;;602:2;572:33;568:42;556:55;;;626:18;;;646:22;;;623:46;620:72;;;672:18;;:::i;:::-;712:10;708:2;701:22;741:6;732:15;;771:6;763;756:22;811:3;802:6;797:3;793:16;790:25;787:45;;;828:1;825;818:12;787:45;878:6;873:3;866:4;858:6;854:17;841:44;933:1;926:4;917:6;909;905:19;901:30;894:41;;;;310:631;;;;;:::o;946:220::-;988:5;1041:3;1034:4;1026:6;1022:17;1018:27;1008:55;;1059:1;1056;1049:12;1008:55;1081:79;1156:3;1147:6;1134:20;1127:4;1119:6;1115:17;1081:79;:::i;:::-;1072:88;946:220;-1:-1:-1;;;946:220:1:o;1171:171::-;1238:20;;-1:-1:-1;;;;;1287:30:1;;1277:41;;1267:69;;1332:1;1329;1322:12;1347:684;1449:6;1457;1465;1473;1526:3;1514:9;1505:7;1501:23;1497:33;1494:53;;;1543:1;1540;1533:12;1494:53;1566:28;1584:9;1566:28;:::i;:::-;1556:38;;1645:2;1634:9;1630:18;1617:32;-1:-1:-1;;;;;1709:2:1;1701:6;1698:14;1695:34;;;1725:1;1722;1715:12;1695:34;1748:49;1789:7;1780:6;1769:9;1765:22;1748:49;:::i;:::-;1738:59;;1816:37;1849:2;1838:9;1834:18;1816:37;:::i;:::-;1806:47;;1906:2;1895:9;1891:18;1878:32;1862:48;;1935:2;1925:8;1922:16;1919:36;;;1951:1;1948;1941:12;1919:36;;1974:51;2017:7;2006:8;1995:9;1991:24;1974:51;:::i;:::-;1964:61;;;1347:684;;;;;;;:::o;2036:131::-;-1:-1:-1;;;;;;2110:32:1;;2100:43;;2090:71;;2157:1;2154;2147:12;2172:245;2230:6;2283:2;2271:9;2262:7;2258:23;2254:32;2251:52;;;2299:1;2296;2289:12;2251:52;2338:9;2325:23;2357:30;2381:5;2357:30;:::i;2614:160::-;2679:20;;2735:13;;2728:21;2718:32;;2708:60;;2764:1;2761;2754:12;2779:180;2835:6;2888:2;2876:9;2867:7;2863:23;2859:32;2856:52;;;2904:1;2901;2894:12;2856:52;2927:26;2943:9;2927:26;:::i;2964:258::-;3036:1;3046:113;3060:6;3057:1;3054:13;3046:113;;;3136:11;;;3130:18;3117:11;;;3110:39;3082:2;3075:10;3046:113;;;3177:6;3174:1;3171:13;3168:48;;;-1:-1:-1;;3212:1:1;3194:16;;3187:27;2964:258::o;3227:::-;3269:3;3307:5;3301:12;3334:6;3329:3;3322:19;3350:63;3406:6;3399:4;3394:3;3390:14;3383:4;3376:5;3372:16;3350:63;:::i;:::-;3467:2;3446:15;-1:-1:-1;;3442:29:1;3433:39;;;;3474:4;3429:50;;3227:258;-1:-1:-1;;3227:258:1:o;3490:220::-;3639:2;3628:9;3621:21;3602:4;3659:45;3700:2;3689:9;3685:18;3677:6;3659:45;:::i;3715:180::-;3774:6;3827:2;3815:9;3806:7;3802:23;3798:32;3795:52;;;3843:1;3840;3833:12;3795:52;-1:-1:-1;3866:23:1;;3715:180;-1:-1:-1;3715:180:1:o;4217:131::-;-1:-1:-1;;;;;4292:31:1;;4282:42;;4272:70;;4338:1;4335;4328:12;4353:315;4421:6;4429;4482:2;4470:9;4461:7;4457:23;4453:32;4450:52;;;4498:1;4495;4488:12;4450:52;4537:9;4524:23;4556:31;4581:5;4556:31;:::i;:::-;4606:5;4658:2;4643:18;;;;4630:32;;-1:-1:-1;;;4353:315:1:o;4855:247::-;4914:6;4967:2;4955:9;4946:7;4942:23;4938:32;4935:52;;;4983:1;4980;4973:12;4935:52;5022:9;5009:23;5041:31;5066:5;5041:31;:::i;5107:456::-;5184:6;5192;5200;5253:2;5241:9;5232:7;5228:23;5224:32;5221:52;;;5269:1;5266;5259:12;5221:52;5308:9;5295:23;5327:31;5352:5;5327:31;:::i;:::-;5377:5;-1:-1:-1;5434:2:1;5419:18;;5406:32;5447:33;5406:32;5447:33;:::i;:::-;5107:456;;5499:7;;-1:-1:-1;;;5553:2:1;5538:18;;;;5525:32;;5107:456::o;5568:450::-;5637:6;5690:2;5678:9;5669:7;5665:23;5661:32;5658:52;;;5706:1;5703;5696:12;5658:52;5746:9;5733:23;-1:-1:-1;;;;;5771:6:1;5768:30;5765:50;;;5811:1;5808;5801:12;5765:50;5834:22;;5887:4;5879:13;;5875:27;-1:-1:-1;5865:55:1;;5916:1;5913;5906:12;5865:55;5939:73;6004:7;5999:2;5986:16;5981:2;5977;5973:11;5939:73;:::i;6023:184::-;6081:6;6134:2;6122:9;6113:7;6109:23;6105:32;6102:52;;;6150:1;6147;6140:12;6102:52;6173:28;6191:9;6173:28;:::i;6435:460::-;6520:6;6528;6536;6589:2;6577:9;6568:7;6564:23;6560:32;6557:52;;;6605:1;6602;6595:12;6557:52;6628:28;6646:9;6628:28;:::i;:::-;6618:38;;6707:2;6696:9;6692:18;6679:32;-1:-1:-1;;;;;6726:6:1;6723:30;6720:50;;;6766:1;6763;6756:12;6720:50;6789:49;6830:7;6821:6;6810:9;6806:22;6789:49;:::i;:::-;6779:59;;;6885:2;6874:9;6870:18;6857:32;6847:42;;6435:460;;;;;:::o;7153:315::-;7218:6;7226;7279:2;7267:9;7258:7;7254:23;7250:32;7247:52;;;7295:1;7292;7285:12;7247:52;7334:9;7321:23;7353:31;7378:5;7353:31;:::i;:::-;7403:5;-1:-1:-1;7427:35:1;7458:2;7443:18;;7427:35;:::i;:::-;7417:45;;7153:315;;;;;:::o;7473:665::-;7568:6;7576;7584;7592;7645:3;7633:9;7624:7;7620:23;7616:33;7613:53;;;7662:1;7659;7652:12;7613:53;7701:9;7688:23;7720:31;7745:5;7720:31;:::i;:::-;7770:5;-1:-1:-1;7827:2:1;7812:18;;7799:32;7840:33;7799:32;7840:33;:::i;:::-;7892:7;-1:-1:-1;7946:2:1;7931:18;;7918:32;;-1:-1:-1;8001:2:1;7986:18;;7973:32;-1:-1:-1;;;;;8017:30:1;;8014:50;;;8060:1;8057;8050:12;8014:50;8083:49;8124:7;8115:6;8104:9;8100:22;8083:49;:::i;8143:252::-;8210:6;8218;8271:2;8259:9;8250:7;8246:23;8242:32;8239:52;;;8287:1;8284;8277:12;8239:52;8310:28;8328:9;8310:28;:::i;8400:347::-;8451:8;8461:6;8515:3;8508:4;8500:6;8496:17;8492:27;8482:55;;8533:1;8530;8523:12;8482:55;-1:-1:-1;8556:20:1;;-1:-1:-1;;;;;8588:30:1;;8585:50;;;8631:1;8628;8621:12;8585:50;8668:4;8660:6;8656:17;8644:29;;8720:3;8713:4;8704:6;8696;8692:19;8688:30;8685:39;8682:59;;;8737:1;8734;8727:12;8682:59;8400:347;;;;;:::o;8752:773::-;8856:6;8864;8872;8880;8888;8941:3;8929:9;8920:7;8916:23;8912:33;8909:53;;;8958:1;8955;8948:12;8909:53;8981:28;8999:9;8981:28;:::i;:::-;8971:38;;9060:2;9049:9;9045:18;9032:32;-1:-1:-1;;;;;9124:2:1;9116:6;9113:14;9110:34;;;9140:1;9137;9130:12;9110:34;9163:49;9204:7;9195:6;9184:9;9180:22;9163:49;:::i;:::-;9153:59;;9231:37;9264:2;9253:9;9249:18;9231:37;:::i;:::-;9221:47;;9321:2;9310:9;9306:18;9293:32;9277:48;;9350:2;9340:8;9337:16;9334:36;;;9366:1;9363;9356:12;9334:36;;9405:60;9457:7;9446:8;9435:9;9431:24;9405:60;:::i;:::-;8752:773;;;;-1:-1:-1;8752:773:1;;-1:-1:-1;9484:8:1;;9379:86;8752:773;-1:-1:-1;;;8752:773:1:o;9530:388::-;9598:6;9606;9659:2;9647:9;9638:7;9634:23;9630:32;9627:52;;;9675:1;9672;9665:12;9627:52;9714:9;9701:23;9733:31;9758:5;9733:31;:::i;:::-;9783:5;-1:-1:-1;9840:2:1;9825:18;;9812:32;9853:33;9812:32;9853:33;:::i;:::-;9905:7;9895:17;;;9530:388;;;;;:::o;9923:481::-;10001:6;10009;10017;10070:2;10058:9;10049:7;10045:23;10041:32;10038:52;;;10086:1;10083;10076:12;10038:52;10109:28;10127:9;10109:28;:::i;:::-;10099:38;;10188:2;10177:9;10173:18;10160:32;-1:-1:-1;;;;;10207:6:1;10204:30;10201:50;;;10247:1;10244;10237:12;10201:50;10286:58;10336:7;10327:6;10316:9;10312:22;10286:58;:::i;:::-;9923:481;;10363:8;;-1:-1:-1;10260:84:1;;-1:-1:-1;;;;9923:481:1:o;10409:380::-;10488:1;10484:12;;;;10531;;;10552:61;;10606:4;10598:6;10594:17;10584:27;;10552:61;10659:2;10651:6;10648:14;10628:18;10625:38;10622:161;;10705:10;10700:3;10696:20;10693:1;10686:31;10740:4;10737:1;10730:15;10768:4;10765:1;10758:15;10622:161;;10409:380;;;:::o;10794:692::-;10843:3;10884:5;10878:12;10913:36;10939:9;10913:36;:::i;:::-;10968:1;10985:18;;;11012:104;;;;11130:1;11125:355;;;;10978:502;;11012:104;-1:-1:-1;;11045:24:1;;11033:37;;11090:16;;;;-1:-1:-1;11012:104:1;;11125:355;11156:5;11153:1;11146:16;11185:4;11230:2;11227:1;11217:16;11255:1;11269:165;11283:6;11280:1;11277:13;11269:165;;;11361:14;;11348:11;;;11341:35;11404:16;;;;11298:10;;11269:165;;;11273:3;;;11463:6;11458:3;11454:16;11447:23;;10978:502;;;;;10794:692;;;;:::o;11491:194::-;11617:3;11642:37;11675:3;11667:6;11642:37;:::i;12111:557::-;12368:6;12360;12356:19;12345:9;12338:38;12412:3;12407:2;12396:9;12392:18;12385:31;12319:4;12439:46;12480:3;12469:9;12465:19;12457:6;12439:46;:::i;:::-;-1:-1:-1;;;;;12525:6:1;12521:31;12516:2;12505:9;12501:18;12494:59;12601:9;12593:6;12589:22;12584:2;12573:9;12569:18;12562:50;12629:33;12655:6;12647;12629:33;:::i;:::-;12621:41;12111:557;-1:-1:-1;;;;;;;12111:557:1:o;12673:274::-;12802:3;12840:6;12834:13;12856:53;12902:6;12897:3;12890:4;12882:6;12878:17;12856:53;:::i;:::-;12925:16;;;;;12673:274;-1:-1:-1;;12673:274:1:o;12952:356::-;13154:2;13136:21;;;13173:18;;;13166:30;13232:34;13227:2;13212:18;;13205:62;13299:2;13284:18;;12952:356::o;14965:413::-;15167:2;15149:21;;;15206:2;15186:18;;;15179:30;15245:34;15240:2;15225:18;;15218:62;-1:-1:-1;;;15311:2:1;15296:18;;15289:47;15368:3;15353:19;;14965:413::o;17108:127::-;17169:10;17164:3;17160:20;17157:1;17150:31;17200:4;17197:1;17190:15;17224:4;17221:1;17214:15;17240:128;17280:3;17311:1;17307:6;17304:1;17301:13;17298:39;;;17317:18;;:::i;:::-;-1:-1:-1;17353:9:1;;17240:128::o;17373:399::-;17575:2;17557:21;;;17614:2;17594:18;;;17587:30;17653:34;17648:2;17633:18;;17626:62;-1:-1:-1;;;17719:2:1;17704:18;;17697:33;17762:3;17747:19;;17373:399::o;17777:397::-;17979:2;17961:21;;;18018:2;17998:18;;;17991:30;18057:34;18052:2;18037:18;;18030:62;-1:-1:-1;;;18123:2:1;18108:18;;18101:31;18164:3;18149:19;;17777:397::o;18585:135::-;18624:3;18645:17;;;18642:43;;18665:18;;:::i;:::-;-1:-1:-1;18712:1:1;18701:13;;18585:135::o;19285:642::-;19566:6;19554:19;;19536:38;;-1:-1:-1;;;;;19610:32:1;;19605:2;19590:18;;19583:60;19630:3;19674:2;19659:18;;19652:31;;;-1:-1:-1;;19706:46:1;;19732:19;;19724:6;19706:46;:::i;:::-;19802:6;19795:14;19788:22;19783:2;19772:9;19768:18;19761:50;19860:9;19852:6;19848:22;19842:3;19831:9;19827:19;19820:51;19888:33;19914:6;19906;19888:33;:::i;:::-;19880:41;19285:642;-1:-1:-1;;;;;;;;19285:642:1:o;19932:245::-;20011:6;20019;20072:2;20060:9;20051:7;20047:23;20043:32;20040:52;;;20088:1;20085;20078:12;20040:52;-1:-1:-1;;20111:16:1;;20167:2;20152:18;;;20146:25;20111:16;;20146:25;;-1:-1:-1;19932:245:1:o;20532:569::-;20756:3;20784:37;20817:3;20809:6;20784:37;:::i;:::-;20850:6;20844:13;20866:52;20911:6;20907:2;20900:4;20892:6;20888:17;20866:52;:::i;:::-;20980:13;;20940:15;;;21002:57;20980:13;20940:15;21036:4;21024:17;;21002:57;:::i;:::-;21075:20;;20532:569;-1:-1:-1;;;;;20532:569:1:o;22416:1484::-;22762:6;22754;22750:19;22739:9;22732:38;22713:4;22789:2;22827:3;22822:2;22811:9;22807:18;22800:31;22851:1;22884:6;22878:13;22914:36;22940:9;22914:36;:::i;:::-;22987:6;22981:3;22970:9;22966:19;22959:35;23013:3;23035:1;23067:2;23056:9;23052:18;23084:1;23079:122;;;;23215:1;23210:354;;;;23045:519;;23079:122;-1:-1:-1;;23127:24:1;;23107:18;;;23100:52;23187:3;23172:19;;;-1:-1:-1;23079:122:1;;23210:354;23241:6;23238:1;23231:17;23289:2;23286:1;23276:16;23314:1;23328:180;23342:6;23339:1;23336:13;23328:180;;;23435:14;;23411:17;;;23407:26;;23400:50;23478:16;;;;23357:10;;23328:180;;;23532:17;;23528:26;;;-1:-1:-1;;23045:519:1;;;;;;23609:9;23604:3;23600:19;23595:2;23584:9;23580:18;23573:47;23643:30;23669:3;23661:6;23643:30;:::i;:::-;23629:44;;;23682:46;23724:2;23713:9;23709:18;23701:6;-1:-1:-1;;;;;3966:31:1;3954:44;;3900:104;23682:46;-1:-1:-1;;;;;3966:31:1;;23779:3;23764:19;;3954:44;23833:9;23825:6;23821:22;23815:3;23804:9;23800:19;23793:51;23861:33;23887:6;23879;23861:33;:::i;:::-;23853:41;22416:1484;-1:-1:-1;;;;;;;;;22416:1484:1:o;24312:271::-;24495:6;24487;24482:3;24469:33;24451:3;24521:16;;24546:13;;;24521:16;24312:271;-1:-1:-1;24312:271:1:o;24943:718::-;25210:6;25202;25198:19;25187:9;25180:38;25254:3;25249:2;25238:9;25234:18;25227:31;25161:4;25281:46;25322:3;25311:9;25307:19;25299:6;25281:46;:::i;:::-;-1:-1:-1;;;;;25367:6:1;25363:31;25358:2;25347:9;25343:18;25336:59;25443:9;25435:6;25431:22;25426:2;25415:9;25411:18;25404:50;25478:6;25470;25463:22;25532:6;25524;25519:2;25511:6;25507:15;25494:45;25585:1;25580:2;25571:6;25563;25559:19;25555:28;25548:39;25652:2;25645;25641:7;25636:2;25628:6;25624:15;25620:29;25612:6;25608:42;25604:51;25596:59;;;24943:718;;;;;;;;:::o;26073:320::-;26160:6;26168;26221:2;26209:9;26200:7;26196:23;26192:32;26189:52;;;26237:1;26234;26227:12;26189:52;26269:9;26263:16;26288:31;26313:5;26288:31;:::i;:::-;26383:2;26368:18;;;;26362:25;26338:5;;26362:25;;-1:-1:-1;;;26073:320:1:o;27622:125::-;27662:4;27690:1;27687;27684:8;27681:34;;;27695:18;;:::i;:::-;-1:-1:-1;27732:9:1;;27622:125::o;28106:414::-;28308:2;28290:21;;;28347:2;28327:18;;;28320:30;28386:34;28381:2;28366:18;;28359:62;-1:-1:-1;;;28452:2:1;28437:18;;28430:48;28510:3;28495:19;;28106:414::o;28525:127::-;28586:10;28581:3;28577:20;28574:1;28567:31;28617:4;28614:1;28607:15;28641:4;28638:1;28631:15;28657:120;28697:1;28723;28713:35;;28728:18;;:::i;:::-;-1:-1:-1;28762:9:1;;28657:120::o;28782:112::-;28814:1;28840;28830:35;;28845:18;;:::i;:::-;-1:-1:-1;28879:9:1;;28782:112::o;28899:127::-;28960:10;28955:3;28951:20;28948:1;28941:31;28991:4;28988:1;28981:15;29015:4;29012:1;29005:15;29031:489;-1:-1:-1;;;;;29300:15:1;;;29282:34;;29352:15;;29347:2;29332:18;;29325:43;29399:2;29384:18;;29377:34;;;29447:3;29442:2;29427:18;;29420:31;;;29225:4;;29468:46;;29494:19;;29486:6;29468:46;:::i;:::-;29460:54;29031:489;-1:-1:-1;;;;;;29031:489:1:o;29525:249::-;29594:6;29647:2;29635:9;29626:7;29622:23;29618:32;29615:52;;;29663:1;29660;29653:12;29615:52;29695:9;29689:16;29714:30;29738:5;29714:30;:::i
Swarm Source
ipfs://f1ed9ba90e388a8fee2471d2f461bbcd0d0b0733c21f28620834538c94d14641
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.