Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ERC721SinglePerToken
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 9999999 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.28;import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";import {ERC721Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol";import {ERC2981} from "@openzeppelin/contracts/token/common/ERC2981.sol";import {IERC2981} from "@openzeppelin/contracts/interfaces/IERC2981.sol";import {Strings} from "@openzeppelin/contracts/utils/Strings.sol";import {Registry} from "../Registry.sol";import {IFactoryNFT} from "../IFactoryNFT.sol";import {ILaunchpadNFT} from "../../interfaces/ILaunchpadNFT.sol";contract ERC721SinglePerToken is OwnableUpgradeable, ILaunchpadNFT, IFactoryNFT, ERC2981, ERC721Upgradeable {using Strings for uint256;error StorageSlotIncorrect();error NotLaunchpad();error NotOwned();uint16 public totalSupply;uint16 private _royaltyPercentage; // 3%address private _royaltyRecipient;address internal _launchpad;Registry internal _registry;string private _baseTokenURI;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)pragma solidity ^0.8.20;import {ContextUpgradeable} from "../utils/ContextUpgradeable.sol";import {Initializable} from "../proxy/utils/Initializable.sol";/*** @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.** The initial owner is set to the address provided by the deployer. 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 OwnableUpgradeable is Initializable, ContextUpgradeable {/// @custom:storage-location erc7201:openzeppelin.storage.Ownablestruct OwnableStorage {address _owner;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)pragma solidity ^0.8.20;/*** @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed* behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an* external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer* function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.** The initialization functions use a version number. Once a version number is used, it is consumed and cannot be* reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in* case an upgrade adds a module that needs to be initialized.** For example:** [.hljs-theme-light.nopadding]* ```solidity* contract MyToken is ERC20Upgradeable {* function initialize() initializer public {* __ERC20_init("MyToken", "MTK");* }* }** contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)pragma solidity ^0.8.20;import {IERC1822Proxiable} from "@openzeppelin/contracts/interfaces/draft-IERC1822.sol";import {ERC1967Utils} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol";import {Initializable} from "./Initializable.sol";/*** @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an* {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.** A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is* reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing* `UUPSUpgradeable` with a custom implementation of upgrades.** The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.*/abstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {/// @custom:oz-upgrades-unsafe-allow state-variable-immutableaddress private immutable __self = address(this);/*** @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`* and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/ERC721.sol)pragma solidity ^0.8.20;import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";import {IERC721Metadata} from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";import {ContextUpgradeable} from "../../utils/ContextUpgradeable.sol";import {Strings} from "@openzeppelin/contracts/utils/Strings.sol";import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";import {ERC165Upgradeable} from "../../utils/introspection/ERC165Upgradeable.sol";import {IERC721Errors} from "@openzeppelin/contracts/interfaces/draft-IERC6093.sol";import {Initializable} from "../../proxy/utils/Initializable.sol";/*** @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}.*/abstract contract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721, IERC721Metadata, IERC721Errors {using Strings for uint256;/// @custom:storage-location erc7201:openzeppelin.storage.ERC721struct ERC721Storage {// Token name
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)pragma solidity ^0.8.20;import {Initializable} from "../proxy/utils/Initializable.sol";/*** @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 ContextUpgradeable is Initializable {function __Context_init() internal onlyInitializing {}function __Context_init_unchained() internal onlyInitializing {}function _msgSender() internal view virtual returns (address) {return msg.sender;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol)pragma solidity ^0.8.20;import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";import {Initializable} from "../../proxy/utils/Initializable.sol";/*** @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);* }* ```*/abstract contract ERC165Upgradeable is Initializable, IERC165 {function __ERC165_init() internal onlyInitializing {}function __ERC165_init_unchained() internal onlyInitializing {}
1234567891011121314151617181920// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)pragma solidity ^0.8.20;/*** @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified* proxy whose upgrades are fully controlled by the current implementation.*/interface IERC1822Proxiable {/*** @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation* address.** IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks* bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this* function revert if invoked through a proxy.*/function proxiableUUID() external view returns (bytes32);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)pragma solidity ^0.8.20;/*** @dev Standard ERC20 Errors* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.*/interface IERC20Errors {/*** @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.* @param sender Address whose tokens are being transferred.* @param balance Current balance for the interacting account.* @param needed Minimum amount required to perform a transfer.*/error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);/*** @dev Indicates a failure with the token `sender`. Used in transfers.* @param sender Address whose tokens are being transferred.*/error ERC20InvalidSender(address sender);/*** @dev Indicates a failure with the token `receiver`. Used in transfers.* @param receiver Address to which tokens are being transferred.
1234567891011121314151617181920212223// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC2981.sol)pragma solidity ^0.8.20;import {IERC165} from "../utils/introspection/IERC165.sol";/*** @dev Interface for the NFT Royalty Standard.** A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal* support for royalty payments across all NFT marketplaces and ecosystem participants.*/interface IERC2981 is IERC165 {/*** @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of* exchange. The royalty amount is denominated and should be paid in that same unit of exchange.*/function royaltyInfo(uint256 tokenId,uint256 salePrice) external view returns (address receiver, uint256 royaltyAmount);}
12345678910111213141516// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)pragma solidity ^0.8.20;/*** @dev This is the interface that {BeaconProxy} expects of its beacon.*/interface IBeacon {/*** @dev Must return an address that can be used as a delegate call target.** {UpgradeableBeacon} will check that this address is a contract.*/function implementation() external view returns (address);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)pragma solidity ^0.8.20;import {IBeacon} from "../beacon/IBeacon.sol";import {Address} from "../../utils/Address.sol";import {StorageSlot} from "../../utils/StorageSlot.sol";/*** @dev This abstract contract provides getters and event emitting update functions for* https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.*/library ERC1967Utils {// We re-declare ERC-1967 events here because they can't be used directly from IERC1967.// This will be fixed in Solidity 0.8.21. At that point we should remove these events./*** @dev Emitted when the implementation is upgraded.*/event Upgraded(address indexed implementation);/*** @dev Emitted when the admin account has changed.*/event AdminChanged(address previousAdmin, address newAdmin);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/common/ERC2981.sol)pragma solidity ^0.8.20;import {IERC2981} from "../../interfaces/IERC2981.sol";import {IERC165, ERC165} from "../../utils/introspection/ERC165.sol";/*** @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information.** Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for* specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first.** Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the* fee is specified in basis points by default.** IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See* https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to* voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.*/abstract contract ERC2981 is IERC2981, ERC165 {struct RoyaltyInfo {address receiver;uint96 royaltyFraction;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)pragma solidity ^0.8.20;import {IERC721} from "../IERC721.sol";/*** @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);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721.sol)pragma solidity ^0.8.20;import {IERC165} from "../../utils/introspection/IERC165.sol";/*** @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);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721Receiver.sol)pragma solidity ^0.8.20;/*** @title ERC721 token receiver interface* @dev Interface for any contract that wants to support safeTransfers* from ERC721 asset contracts.*/interface IERC721Receiver {/*** @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}* by `operator` from `from`, this function is called.** It must return its Solidity selector to confirm the token transfer.* If any other value is returned or the interface is not implemented by the recipient, the transfer will be* reverted.** The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.*/function onERC721Received(address operator,address from,uint256 tokenId,bytes calldata data
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)pragma solidity ^0.8.20;/*** @dev Collection of functions related to the address type*/library Address {/*** @dev The ETH balance of the account is not enough to perform the operation.*/error AddressInsufficientBalance(address account);/*** @dev There's no code at `target` (it is not a contract).*/error AddressEmptyCode(address target);/*** @dev A call to an address target failed. The target may have reverted.*/error FailedInnerCall();/*** @dev Replacement for Solidity's `transfer`: sends `amount` wei to
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol)pragma solidity ^0.8.20;import {IERC165} from "./IERC165.sol";/*** @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);* }* ```*/abstract contract ERC165 is IERC165 {/*** @dev See {IERC165-supportsInterface}.*/function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {return interfaceId == type(IERC165).interfaceId;}
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)pragma solidity ^0.8.20;/*** @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);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol)pragma solidity ^0.8.20;/*** @dev Standard math utilities missing in the Solidity language.*/library Math {/*** @dev Muldiv operation overflow.*/error MathOverflowedMulDiv();enum Rounding {Floor, // Toward negative infinityCeil, // Toward positive infinityTrunc, // Toward zeroExpand // Away from zero}/*** @dev Returns the addition of two unsigned integers, with an overflow flag.*/function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {unchecked {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SignedMath.sol)pragma solidity ^0.8.20;/*** @dev Standard signed math utilities missing in the Solidity language.*/library SignedMath {/*** @dev Returns the largest of two signed numbers.*/function max(int256 a, int256 b) internal pure returns (int256) {return a > b ? a : b;}/*** @dev Returns the smallest of two signed numbers.*/function min(int256 a, int256 b) internal pure returns (int256) {return a < b ? a : b;}/*** @dev Returns the average of two signed numbers without overflow.* The result is rounded towards zero.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.pragma solidity ^0.8.20;/*** @dev Library for reading and writing primitive types to specific storage slots.** Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.* This library helps with reading and writing to such slots without the need for inline assembly.** The functions in this library return Slot structs that contain a `value` member that can be used to read or write.** Example usage to set ERC1967 implementation slot:* ```solidity* contract ERC1967 {* bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;** function _getImplementation() internal view returns (address) {* return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;* }** function _setImplementation(address newImplementation) internal {* require(newImplementation.code.length > 0);* StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/Strings.sol)pragma solidity ^0.8.20;import {Math} from "./math/Math.sol";import {SignedMath} from "./math/SignedMath.sol";/*** @dev String operations.*/library Strings {bytes16 private constant HEX_DIGITS = "0123456789abcdef";uint8 private constant ADDRESS_LENGTH = 20;/*** @dev The `value` string doesn't fit in the specified `length`.*/error StringsInsufficientHexLength(uint256 value, uint256 length);/*** @dev Converts a `uint256` to its ASCII `string` decimal representation.*/function toString(uint256 value) internal pure returns (string memory) {unchecked {uint256 length = Math.log10(value) + 1;
123456789101112131415// SPDX-License-Identifier: MITpragma solidity ^0.8.28;interface IFactoryNFT {function initialize(address registry,address launchpad,string calldata baseTokenURI,string calldata nftName,string calldata nftSymbol,uint16 royaltyPercentage,address royaltyRecipient,address owner) external;}
123456789101112131415161718192021// SPDX-License-Identifier: MITpragma solidity ^0.8.28;import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";// This is a contract that is shared with all the NFT beacon proxies to upgrade them with some shared statecontract Registry is UUPSUpgradeable, OwnableUpgradeable {/// @custom:oz-upgrades-unsafe-allow constructorconstructor() {_disableInitializers();}function initialize() external initializer {__UUPSUpgradeable_init();__Ownable_init(_msgSender());}// solhint-disable-next-line no-empty-blocksfunction _authorizeUpgrade(address newImplementation) internal override onlyOwner {}}
12345678// SPDX-License-Identifier: MITpragma solidity ^0.8.28;// This is an interface any NFT contract must implement to be used by the Launchpadinterface ILaunchpadNFT {function mint(address to, uint256[] calldata tokenIds, uint256[] calldata amounts) external;function setDetails(string calldata baseTokenURI) external;}
123456789101112131415161718192021222324{"evmVersion": "cancun","optimizer": {"enabled": true,"runs": 9999999,"details": {"yul": true}},"viaIR": true,"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"]}},"libraries": {}}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"ERC2981InvalidDefaultRoyalty","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC2981InvalidDefaultRoyaltyReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"ERC2981InvalidTokenRoyalty","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC2981InvalidTokenRoyaltyReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotLaunchpad","type":"error"},{"inputs":[],"name":"NotOwned","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"StorageSlotIncorrect","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"registry","type":"address"},{"internalType":"address","name":"launchpad","type":"address"},{"internalType":"string","name":"baseTokenURI","type":"string"},{"internalType":"string","name":"nftName","type":"string"},{"internalType":"string","name":"nftSymbol","type":"string"},{"internalType":"uint16","name":"royaltyPercentage","type":"uint16"},{"internalType":"address","name":"royaltyRecipient","type":"address"},{"internalType":"address","name":"contractOwner","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"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":"baseTokenURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseTokenURI","type":"string"}],"name":"setDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"royaltyPercentage","type":"uint16"},{"internalType":"address","name":"royaltyRecipient","type":"address"}],"name":"setRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080806040523460aa575f5160206130a45f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b604051612ff590816100af8239f35b6001600160401b0319166001600160401b039081175f5160206130a45f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611e7c575080630608bdf814611dd857806306fdde0314611cd7578063081812fc14611c52578063095ea7b314611a9257806312d27371146110de57806318160ddd1461109f57806323b872dd146110885780632a55205a14610fe15780633e8a800914610f6a57806342842e0e14610f4157806342966c6814610f0657806355f804b314610ea65780636352211e14610e4c57806370a0823114610d7b578063715018a614610ca15780638da5cb5b14610c3157806395d89b4114610aed5780639727756a1461074a578063a22cb4651461062c578063b88d4fde146105ae578063c87b56dd14610227578063e985e9c5146101715763f2fde38b14610124575f80fd5b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5761016b61015e611fbf565b610166612ae0565b6129f3565b005b5f80fd5b3461016d5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576101a8611fbf565b73ffffffffffffffffffffffffffffffffffffffff61020c6101c8611f9c565b9273ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930560205260405f2090565b91165f52602052602060ff60405f2054166040519015158152f35b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760043561026281612b4c565b5060405160055490915f83610276846121de565b9182825260208201946001811690815f146105745750600114610515575b6102a0925003846120c5565b5f81807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008110156104ea575b50806d04ee2d6d415b85acef8100000000600a9210156104cf575b662386f26fc100008110156104bb575b6305f5e1008110156104aa575b61271081101561049b575b606481101561048d575b1015610485575b6001810191600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60216103676103518761216e565b9661035f60405198896120c5565b80885261216e565b947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06020880196013687378601015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a8353049081156103f157600a907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90610396565b6104818561046d6005896020888a6040519687945180918587015e840190838201905f8252519283915e01017f2e6a736f6e0000000000000000000000000000000000000000000000000000008152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe58101845201826120c5565b604051918291602083526020830190611fe2565b0390f35b60010161031b565b606460029104920191610314565b6127106004910492019161030a565b6305f5e100600891049201916102ff565b662386f26fc10000601091049201916102f2565b6d04ee2d6d415b85acef8100000000602091049201916102e2565b604092507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a6102c7565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b8183106105585750509060206102a092820101610294565b6020919350806001915483858a01015201910190918592610540565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168652506102a092151560051b82016020019050610294565b3461016d5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576105e5611fbf565b6105ed611f9c565b6064359167ffffffffffffffff831161016d573660238401121561016d5761062261016b9336906024816004013591016121a8565b9160443591612817565b3461016d5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57610663611fbf565b6024359081151580920361016d5773ffffffffffffffffffffffffffffffffffffffff1690811561071e57335f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930560205260409020825f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b507f5b08ba18000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461016d5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57610781611fbf565b60243567ffffffffffffffff811161016d576107a1903690600401612106565b60443567ffffffffffffffff811161016d576107c1903690600401612106565b5073ffffffffffffffffffffffffffffffffffffffff600354163303610ac557905f9073ffffffffffffffffffffffffffffffffffffffff811680158015935b855181101561016b5760208160051b8701015191610a995784610862835f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205273ffffffffffffffffffffffffffffffffffffffff60405f20541690565b73ffffffffffffffffffffffffffffffffffffffff81169385851595861594856109cf575b61097c575b825f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260405f20827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4505f92610943575b61091757600101610801565b7f73c6ac6e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b6002547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000061ffff6001818416011691161760025561090b565b6109c38973ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930360205260405f2090565b6001815401905561088c565b50610a26835f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260405f207fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b89610a6e8573ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930360205260405f2090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055610887565b7f64a0ae92000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fed6fcad9000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576040515f7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930154610b4a816121de565b8084529060018116908115610bef5750600114610b72575b6104818361046d818503826120c5565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793015f9081527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e939250905b808210610bd55750909150810160200161046d610b62565b919260018160209254838588010152019101909291610bbd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061046d9050610b62565b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57610cd7612ae0565b5f73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57610db2611fbf565b73ffffffffffffffffffffffffffffffffffffffff811615610e2057610e1760209173ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930360205260405f2090565b54604051908152f35b7f89c62b64000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576020610e88600435612b4c565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760043567ffffffffffffffff811161016d57610ef861016b913690600401612025565b90610f01612ae0565b6126e2565b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5761016b33600435612be0565b3461016d5761016b610f5236612053565b9060405192610f626020856120c5565b5f8452612817565b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760043567ffffffffffffffff811161016d57610fb9903690600401612025565b73ffffffffffffffffffffffffffffffffffffffff600354163303610ac55761016b916126e2565b3461016d5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760243560025461ffff8160101c169182810292818404149015171561105b5761271060409273ffffffffffffffffffffffffffffffffffffffff84519360201c168352046020820152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b3461016d5761016b61109936612053565b9161227f565b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602061ffff60025416604051908152f35b3461016d576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57611116611fbf565b61111e611f9c565b9060443567ffffffffffffffff811161016d5761113f903690600401612025565b91909260643567ffffffffffffffff811161016d57611162903690600401612025565b93909260843567ffffffffffffffff811161016d57611185903690600401612025565b60a4359591949161ffff8716870361016d5760c4359573ffffffffffffffffffffffffffffffffffffffff8716870361016d5760e43573ffffffffffffffffffffffffffffffffffffffff8116810361016d577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549260ff8460401c16159a67ffffffffffffffff851680159081611a8a575b6001149081611a80575b159081611a77575b50611a4f576112996112a093868e60017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006112a89a16177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00556119fa575b50611291612f68565b610166612f68565b36916121a8565b9236916121a8565b906112b1612f68565b6112b9612f68565b80519067ffffffffffffffff82116116bc576112f57f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300546121de565b601f8111611978575b50602090601f831160011461187a5761134c92915f918361186f575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300555b80519067ffffffffffffffff82116116bc576113ab7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079301546121de565b601f81116117ed575b50602090601f83116001146116f4578273ffffffffffffffffffffffffffffffffffffffff95949293869461141b935f926116e95750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079301555b167fffffffffffffffffffffffff00000000000000000000000000000000000000006003541617600355167fffffffffffffffffffffffff0000000000000000000000000000000000000000600454161760045567ffffffffffffffff81116116bc576114b5816114b06005546121de565b61222f565b5f601f82116001146115fd578190611502939495965f926115f25750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b6005555b7fffffffffffffffff00000000000000000000000000000000000000000000ffff63ffff000077ffffffffffffffffffffffffffffffffffffffff000000006002549360201b169360101b169116171760025561155f57005b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b01359050868061131a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082169560055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f5b8881106116a45750836001959697981061166c575b505050811b01600555611506565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c1991013516905585808061165e565b90926020600181928686013581550194019101611649565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b015190508c8061131a565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08316917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793015f52815f20925f5b8181106117d5575092600192859273ffffffffffffffffffffffffffffffffffffffff9897959689971061179e575b505050811b017f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793015561143e565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690558b8080611771565b92936020600181928786015181550195019301611742565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793015f527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e601f840160051c81019160208510611865575b601f0160051c01905b81811061185a57506113b4565b5f815560010161184d565b9091508190611844565b015190508b8061131a565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08316917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793005f527f37c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81925f5b8181106119605750908460019594939210611929575b505050811b017f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793005561136f565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690558a80806118fc565b929360206001819287860151815501950193016118e6565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793005f527f37c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81601f840160051c810191602085106119f0575b601f0160051c01905b8181106119e557506112fe565b5f81556001016119d8565b90915081906119cf565b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00558f611288565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050158e61122a565b303b159150611222565b8d9150611218565b3461016d5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57611ac9611fbf565b602435611ad581612b4c565b33151580611c32575b80611bc0575b611b9457819073ffffffffffffffffffffffffffffffffffffffff80851691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a45f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205273ffffffffffffffffffffffffffffffffffffffff60405f2091167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790555f80f35b7fa9fbf51f000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b50611c088173ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930560205260405f2090565b73ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f20541615611ae4565b503373ffffffffffffffffffffffffffffffffffffffff82161415611ade565b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576020610e88600435611c9281612b4c565b505f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205273ffffffffffffffffffffffffffffffffffffffff60405f20541690565b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576040515f7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930054611d34816121de565b8084529060018116908115610bef5750600114611d5b576104818361046d818503826120c5565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793005f9081527f37c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81939250905b808210611dbe5750909150810160200161046d610b62565b919260018160209254838588010152019101909291611da6565b3461016d5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760043561ffff8116810361016d57611e1d611f9c565b611e25612ae0565b7fffffffffffffffff00000000000000000000000000000000000000000000ffff63ffff000077ffffffffffffffffffffffffffffffffffffffff000000006002549360201b169360101b16911617176002555f80f35b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361016d57817f2a55205a0000000000000000000000000000000000000000000000000000000060209314908115611f0e575b5015158152f35b7f80ac58cd00000000000000000000000000000000000000000000000000000000811491508115611f72575b8115611f48575b5083611f07565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483611f41565b7f5b5e139f0000000000000000000000000000000000000000000000000000000081149150611f3a565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361016d57565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361016d57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9181601f8401121561016d5782359167ffffffffffffffff831161016d576020838186019501011161016d57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc606091011261016d5760043573ffffffffffffffffffffffffffffffffffffffff8116810361016d579060243573ffffffffffffffffffffffffffffffffffffffff8116810361016d579060443590565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176116bc57604052565b9080601f8301121561016d5781359167ffffffffffffffff83116116bc578260051b906040519361213a60208401866120c5565b845260208085019282010192831161016d57602001905b82821061215e5750505090565b8135815260209182019101612151565b67ffffffffffffffff81116116bc57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926121b48261216e565b916121c260405193846120c5565b82948184528183011161016d578281602093845f960137010152565b90600182811c92168015612225575b60208310146121f857565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916121ed565b601f811161223b575050565b60055f5260205f20906020601f840160051c83019310612275575b601f0160051c01905b81811061226a575050565b5f815560010161225f565b9091508190612256565b73ffffffffffffffffffffffffffffffffffffffff821692918315610a99576122e6835f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205273ffffffffffffffffffffffffffffffffffffffff60405f20541690565b3315158061255e575b5090818473ffffffffffffffffffffffffffffffffffffffff809594169661235c88159485156124585773ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930360205260405f2090565b60018154019055815f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260405f20817fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a45061241f575b168083036123ee57505050565b7f64283d7b000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b6002547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000061ffff600181841601169116176002556123e1565b6124ae845f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260405f207fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b6124f58573ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930360205260405f2090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff815401905573ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930360205260405f2090565b806125e5575b1561256f575f6122ef565b839073ffffffffffffffffffffffffffffffffffffffff166125b6577f7e273289000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f177e802f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b503373ffffffffffffffffffffffffffffffffffffffff8216148015612671575b8061256457503373ffffffffffffffffffffffffffffffffffffffff61266a865f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205273ffffffffffffffffffffffffffffffffffffffff60405f20541690565b1614612564565b506126b98173ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930560205260405f2090565b73ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f205416612606565b919067ffffffffffffffff81116116bc57612702816114b06005546121de565b5f601f821160011461275d57819061274d93945f926127525750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b600555565b013590505f8061131a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082169360055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f5b8681106127ff57508360019596106127c7575b505050811b01600555565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c199101351690555f80806127bc565b909260206001819286860135815501940191016127a9565b9061282383828461227f565b803b612830575b50505050565b60209161289c73ffffffffffffffffffffffffffffffffffffffff8093169560405195869485947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701521660248501526044840152608060648401526084830190611fe2565b03815f865af15f9181612996575b5061291857503d15612911573d6128c08161216e565b906128ce60405192836120c5565b81523d5f602083013e5b8051908161290c57827f64a0ae92000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b602001fd5b60606128d8565b7fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091160361296b57505f80808061282a565b7f64a0ae92000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9091506020813d6020116129eb575b816129b2602093836120c5565b8101031261016d57517fffffffff000000000000000000000000000000000000000000000000000000008116810361016d57905f6128aa565b3d91506129a5565b73ffffffffffffffffffffffffffffffffffffffff168015612ab45773ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054827fffffffffffffffffffffffff00000000000000000000000000000000000000008216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054163303612b2057565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b612b94815f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205273ffffffffffffffffffffffffffffffffffffffff60405f20541690565b9073ffffffffffffffffffffffffffffffffffffffff821615612bb5575090565b7f7e273289000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff612c3d825f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205273ffffffffffffffffffffffffffffffffffffffff60405f20541690565b921680151580612dfb575b50505f73ffffffffffffffffffffffffffffffffffffffff831680612d33575b8282527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604082207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4906002547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000061ffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8184160116911617600255565b612d89835f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260405f207fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b612dd08473ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930360205260405f2090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055612c68565b80612e81575b15612e0c5780612c48565b73ffffffffffffffffffffffffffffffffffffffff8316612e5357507f7e273289000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f177e802f000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b508073ffffffffffffffffffffffffffffffffffffffff8416148015612f0d575b80612e0157508073ffffffffffffffffffffffffffffffffffffffff612f06845f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205273ffffffffffffffffffffffffffffffffffffffff60405f20541690565b1614612e01565b50612f558373ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930560205260405f2090565b815f5260205260ff60405f205416612ea2565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615612f9757565b7fd7e6bcf8000000000000000000000000000000000000000000000000000000005f5260045ffdfea26469706673582212200f4abe4b85a6be69d73d6ac1aebee5fb191dd08598d247fc001ce92c53001ae764736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00
Deployed Bytecode
0x6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611e7c575080630608bdf814611dd857806306fdde0314611cd7578063081812fc14611c52578063095ea7b314611a9257806312d27371146110de57806318160ddd1461109f57806323b872dd146110885780632a55205a14610fe15780633e8a800914610f6a57806342842e0e14610f4157806342966c6814610f0657806355f804b314610ea65780636352211e14610e4c57806370a0823114610d7b578063715018a614610ca15780638da5cb5b14610c3157806395d89b4114610aed5780639727756a1461074a578063a22cb4651461062c578063b88d4fde146105ae578063c87b56dd14610227578063e985e9c5146101715763f2fde38b14610124575f80fd5b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5761016b61015e611fbf565b610166612ae0565b6129f3565b005b5f80fd5b3461016d5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576101a8611fbf565b73ffffffffffffffffffffffffffffffffffffffff61020c6101c8611f9c565b9273ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930560205260405f2090565b91165f52602052602060ff60405f2054166040519015158152f35b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760043561026281612b4c565b5060405160055490915f83610276846121de565b9182825260208201946001811690815f146105745750600114610515575b6102a0925003846120c5565b5f81807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008110156104ea575b50806d04ee2d6d415b85acef8100000000600a9210156104cf575b662386f26fc100008110156104bb575b6305f5e1008110156104aa575b61271081101561049b575b606481101561048d575b1015610485575b6001810191600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60216103676103518761216e565b9661035f60405198896120c5565b80885261216e565b947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06020880196013687378601015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a8353049081156103f157600a907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90610396565b6104818561046d6005896020888a6040519687945180918587015e840190838201905f8252519283915e01017f2e6a736f6e0000000000000000000000000000000000000000000000000000008152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe58101845201826120c5565b604051918291602083526020830190611fe2565b0390f35b60010161031b565b606460029104920191610314565b6127106004910492019161030a565b6305f5e100600891049201916102ff565b662386f26fc10000601091049201916102f2565b6d04ee2d6d415b85acef8100000000602091049201916102e2565b604092507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a6102c7565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b8183106105585750509060206102a092820101610294565b6020919350806001915483858a01015201910190918592610540565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168652506102a092151560051b82016020019050610294565b3461016d5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576105e5611fbf565b6105ed611f9c565b6064359167ffffffffffffffff831161016d573660238401121561016d5761062261016b9336906024816004013591016121a8565b9160443591612817565b3461016d5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57610663611fbf565b6024359081151580920361016d5773ffffffffffffffffffffffffffffffffffffffff1690811561071e57335f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930560205260409020825f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b507f5b08ba18000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461016d5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57610781611fbf565b60243567ffffffffffffffff811161016d576107a1903690600401612106565b60443567ffffffffffffffff811161016d576107c1903690600401612106565b5073ffffffffffffffffffffffffffffffffffffffff600354163303610ac557905f9073ffffffffffffffffffffffffffffffffffffffff811680158015935b855181101561016b5760208160051b8701015191610a995784610862835f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205273ffffffffffffffffffffffffffffffffffffffff60405f20541690565b73ffffffffffffffffffffffffffffffffffffffff81169385851595861594856109cf575b61097c575b825f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260405f20827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4505f92610943575b61091757600101610801565b7f73c6ac6e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b6002547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000061ffff6001818416011691161760025561090b565b6109c38973ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930360205260405f2090565b6001815401905561088c565b50610a26835f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260405f207fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b89610a6e8573ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930360205260405f2090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055610887565b7f64a0ae92000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fed6fcad9000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576040515f7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930154610b4a816121de565b8084529060018116908115610bef5750600114610b72575b6104818361046d818503826120c5565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793015f9081527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e939250905b808210610bd55750909150810160200161046d610b62565b919260018160209254838588010152019101909291610bbd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061046d9050610b62565b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57610cd7612ae0565b5f73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57610db2611fbf565b73ffffffffffffffffffffffffffffffffffffffff811615610e2057610e1760209173ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930360205260405f2090565b54604051908152f35b7f89c62b64000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576020610e88600435612b4c565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760043567ffffffffffffffff811161016d57610ef861016b913690600401612025565b90610f01612ae0565b6126e2565b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5761016b33600435612be0565b3461016d5761016b610f5236612053565b9060405192610f626020856120c5565b5f8452612817565b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760043567ffffffffffffffff811161016d57610fb9903690600401612025565b73ffffffffffffffffffffffffffffffffffffffff600354163303610ac55761016b916126e2565b3461016d5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760243560025461ffff8160101c169182810292818404149015171561105b5761271060409273ffffffffffffffffffffffffffffffffffffffff84519360201c168352046020820152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b3461016d5761016b61109936612053565b9161227f565b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602061ffff60025416604051908152f35b3461016d576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57611116611fbf565b61111e611f9c565b9060443567ffffffffffffffff811161016d5761113f903690600401612025565b91909260643567ffffffffffffffff811161016d57611162903690600401612025565b93909260843567ffffffffffffffff811161016d57611185903690600401612025565b60a4359591949161ffff8716870361016d5760c4359573ffffffffffffffffffffffffffffffffffffffff8716870361016d5760e43573ffffffffffffffffffffffffffffffffffffffff8116810361016d577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549260ff8460401c16159a67ffffffffffffffff851680159081611a8a575b6001149081611a80575b159081611a77575b50611a4f576112996112a093868e60017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006112a89a16177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00556119fa575b50611291612f68565b610166612f68565b36916121a8565b9236916121a8565b906112b1612f68565b6112b9612f68565b80519067ffffffffffffffff82116116bc576112f57f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300546121de565b601f8111611978575b50602090601f831160011461187a5761134c92915f918361186f575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300555b80519067ffffffffffffffff82116116bc576113ab7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079301546121de565b601f81116117ed575b50602090601f83116001146116f4578273ffffffffffffffffffffffffffffffffffffffff95949293869461141b935f926116e95750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079301555b167fffffffffffffffffffffffff00000000000000000000000000000000000000006003541617600355167fffffffffffffffffffffffff0000000000000000000000000000000000000000600454161760045567ffffffffffffffff81116116bc576114b5816114b06005546121de565b61222f565b5f601f82116001146115fd578190611502939495965f926115f25750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b6005555b7fffffffffffffffff00000000000000000000000000000000000000000000ffff63ffff000077ffffffffffffffffffffffffffffffffffffffff000000006002549360201b169360101b169116171760025561155f57005b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b01359050868061131a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082169560055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f5b8881106116a45750836001959697981061166c575b505050811b01600555611506565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c1991013516905585808061165e565b90926020600181928686013581550194019101611649565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b015190508c8061131a565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08316917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793015f52815f20925f5b8181106117d5575092600192859273ffffffffffffffffffffffffffffffffffffffff9897959689971061179e575b505050811b017f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793015561143e565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690558b8080611771565b92936020600181928786015181550195019301611742565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793015f527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e601f840160051c81019160208510611865575b601f0160051c01905b81811061185a57506113b4565b5f815560010161184d565b9091508190611844565b015190508b8061131a565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08316917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793005f527f37c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81925f5b8181106119605750908460019594939210611929575b505050811b017f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793005561136f565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690558a80806118fc565b929360206001819287860151815501950193016118e6565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793005f527f37c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81601f840160051c810191602085106119f0575b601f0160051c01905b8181106119e557506112fe565b5f81556001016119d8565b90915081906119cf565b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00558f611288565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050158e61122a565b303b159150611222565b8d9150611218565b3461016d5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57611ac9611fbf565b602435611ad581612b4c565b33151580611c32575b80611bc0575b611b9457819073ffffffffffffffffffffffffffffffffffffffff80851691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a45f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205273ffffffffffffffffffffffffffffffffffffffff60405f2091167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790555f80f35b7fa9fbf51f000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b50611c088173ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930560205260405f2090565b73ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f20541615611ae4565b503373ffffffffffffffffffffffffffffffffffffffff82161415611ade565b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576020610e88600435611c9281612b4c565b505f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205273ffffffffffffffffffffffffffffffffffffffff60405f20541690565b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576040515f7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930054611d34816121de565b8084529060018116908115610bef5750600114611d5b576104818361046d818503826120c5565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793005f9081527f37c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81939250905b808210611dbe5750909150810160200161046d610b62565b919260018160209254838588010152019101909291611da6565b3461016d5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760043561ffff8116810361016d57611e1d611f9c565b611e25612ae0565b7fffffffffffffffff00000000000000000000000000000000000000000000ffff63ffff000077ffffffffffffffffffffffffffffffffffffffff000000006002549360201b169360101b16911617176002555f80f35b3461016d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361016d57817f2a55205a0000000000000000000000000000000000000000000000000000000060209314908115611f0e575b5015158152f35b7f80ac58cd00000000000000000000000000000000000000000000000000000000811491508115611f72575b8115611f48575b5083611f07565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483611f41565b7f5b5e139f0000000000000000000000000000000000000000000000000000000081149150611f3a565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361016d57565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361016d57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9181601f8401121561016d5782359167ffffffffffffffff831161016d576020838186019501011161016d57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc606091011261016d5760043573ffffffffffffffffffffffffffffffffffffffff8116810361016d579060243573ffffffffffffffffffffffffffffffffffffffff8116810361016d579060443590565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176116bc57604052565b9080601f8301121561016d5781359167ffffffffffffffff83116116bc578260051b906040519361213a60208401866120c5565b845260208085019282010192831161016d57602001905b82821061215e5750505090565b8135815260209182019101612151565b67ffffffffffffffff81116116bc57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926121b48261216e565b916121c260405193846120c5565b82948184528183011161016d578281602093845f960137010152565b90600182811c92168015612225575b60208310146121f857565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916121ed565b601f811161223b575050565b60055f5260205f20906020601f840160051c83019310612275575b601f0160051c01905b81811061226a575050565b5f815560010161225f565b9091508190612256565b73ffffffffffffffffffffffffffffffffffffffff821692918315610a99576122e6835f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205273ffffffffffffffffffffffffffffffffffffffff60405f20541690565b3315158061255e575b5090818473ffffffffffffffffffffffffffffffffffffffff809594169661235c88159485156124585773ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930360205260405f2090565b60018154019055815f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260405f20817fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a45061241f575b168083036123ee57505050565b7f64283d7b000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b6002547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000061ffff600181841601169116176002556123e1565b6124ae845f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260405f207fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b6124f58573ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930360205260405f2090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff815401905573ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930360205260405f2090565b806125e5575b1561256f575f6122ef565b839073ffffffffffffffffffffffffffffffffffffffff166125b6577f7e273289000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f177e802f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b503373ffffffffffffffffffffffffffffffffffffffff8216148015612671575b8061256457503373ffffffffffffffffffffffffffffffffffffffff61266a865f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205273ffffffffffffffffffffffffffffffffffffffff60405f20541690565b1614612564565b506126b98173ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930560205260405f2090565b73ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f205416612606565b919067ffffffffffffffff81116116bc57612702816114b06005546121de565b5f601f821160011461275d57819061274d93945f926127525750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b600555565b013590505f8061131a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082169360055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f5b8681106127ff57508360019596106127c7575b505050811b01600555565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c199101351690555f80806127bc565b909260206001819286860135815501940191016127a9565b9061282383828461227f565b803b612830575b50505050565b60209161289c73ffffffffffffffffffffffffffffffffffffffff8093169560405195869485947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701521660248501526044840152608060648401526084830190611fe2565b03815f865af15f9181612996575b5061291857503d15612911573d6128c08161216e565b906128ce60405192836120c5565b81523d5f602083013e5b8051908161290c57827f64a0ae92000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b602001fd5b60606128d8565b7fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091160361296b57505f80808061282a565b7f64a0ae92000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9091506020813d6020116129eb575b816129b2602093836120c5565b8101031261016d57517fffffffff000000000000000000000000000000000000000000000000000000008116810361016d57905f6128aa565b3d91506129a5565b73ffffffffffffffffffffffffffffffffffffffff168015612ab45773ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054827fffffffffffffffffffffffff00000000000000000000000000000000000000008216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054163303612b2057565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b612b94815f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205273ffffffffffffffffffffffffffffffffffffffff60405f20541690565b9073ffffffffffffffffffffffffffffffffffffffff821615612bb5575090565b7f7e273289000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff612c3d825f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205273ffffffffffffffffffffffffffffffffffffffff60405f20541690565b921680151580612dfb575b50505f73ffffffffffffffffffffffffffffffffffffffff831680612d33575b8282527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604082207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4906002547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000061ffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8184160116911617600255565b612d89835f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260405f207fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b612dd08473ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930360205260405f2090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055612c68565b80612e81575b15612e0c5780612c48565b73ffffffffffffffffffffffffffffffffffffffff8316612e5357507f7e273289000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f177e802f000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b508073ffffffffffffffffffffffffffffffffffffffff8416148015612f0d575b80612e0157508073ffffffffffffffffffffffffffffffffffffffff612f06845f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205273ffffffffffffffffffffffffffffffffffffffff60405f20541690565b1614612e01565b50612f558373ffffffffffffffffffffffffffffffffffffffff165f527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930560205260405f2090565b815f5260205260ff60405f205416612ea2565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615612f9757565b7fd7e6bcf8000000000000000000000000000000000000000000000000000000005f5260045ffdfea26469706673582212200f4abe4b85a6be69d73d6ac1aebee5fb191dd08598d247fc001ce92c53001ae764736f6c634300081c0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.