ERC-721
Overview
Max Total Supply
1,560 METALABEL-PM
Holders
721
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 METALABEL-PMLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PublicMint
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; /* ███╗░░░███╗███████╗████████╗░█████╗░██╗░░░░░░█████╗░██████╗░███████╗██╗░░░░░ ████╗░████║██╔════╝╚══██╔══╝██╔══██╗██║░░░░░██╔══██╗██╔══██╗██╔════╝██║░░░░░ ██╔████╔██║█████╗░░░░░██║░░░███████║██║░░░░░███████║██████╦╝█████╗░░██║░░░░░ ██║╚██╔╝██║██╔══╝░░░░░██║░░░██╔══██║██║░░░░░██╔══██║██╔══██╗██╔══╝░░██║░░░░░ ██║░╚═╝░██║███████╗░░░██║░░░██║░░██║███████╗██║░░██║██████╦╝███████╗███████╗ ╚═╝░░░░░╚═╝╚══════╝░░░╚═╝░░░╚═╝░░╚═╝╚══════╝╚═╝░░╚═╝╚═════╝░╚══════╝╚══════╝ ██████╗░██╗░░░██╗██████╗░██╗░░░░░██╗░█████╗░ ███╗░░░███╗██╗███╗░░██╗████████╗ ██╔══██╗██║░░░██║██╔══██╗██║░░░░░██║██╔══██╗ ████╗░████║██║████╗░██║╚══██╔══╝ ██████╔╝██║░░░██║██████╦╝██║░░░░░██║██║░░╚═╝ ██╔████╔██║██║██╔██╗██║░░░██║░░░ ██╔═══╝░██║░░░██║██╔══██╗██║░░░░░██║██║░░██╗ ██║╚██╔╝██║██║██║╚████║░░░██║░░░ ██║░░░░░╚██████╔╝██████╦╝███████╗██║╚█████╔╝ ██║░╚═╝░██║██║██║░╚███║░░░██║░░░ ╚═╝░░░░░░╚═════╝░╚═════╝░╚══════╝╚═╝░╚════╝░ ╚═╝░░░░░╚═╝╚═╝╚═╝░░╚══╝░░░╚═╝░░░ Metalabel - Public Mint Public Mint is a living collection of free-to-mint NFTs that celebrate releases and meaningful events in the Metalabel universe Deployed by Metalabel with 💖 as a permanent application on the Ethereum blockchain. https://public-mint.metalabel.xyz Anna Bulbrook (Curator) Austin Robey (Community) Brandon Valosek (Engineer) Ilya Yudanov (Designer) Lauren Dorman (Engineer) Rob Kalin (Board member) Yancey Strickler (CEO) */ import {ERC721} from "@metalabel/solmate/src/tokens/ERC721.sol"; import {Owned} from "@metalabel/solmate/src/auth/Owned.sol"; import {Strings} from "@openzeppelin/contracts/utils/Strings.sol"; import {IERC721} from "@openzeppelin/contracts/interfaces/IERC721.sol"; /// @notice Contract that can compute tokenURI values for a given token ID. interface IMetadataResolver { function resolve(address _contract, uint256 _id) external view returns (string memory); } /// @notice Data stored for each token series struct SeriesConfig { string metadataBaseURI; uint32 variationCount; IMetadataResolver metadataResolver; } /// @notice ERC721 NFT contract for Metalabel Public Mint contract PublicMint is ERC721, Owned { // --- // errors // --- /// @notice Minting is not allowed currently error MintingPaused(); /// @notice External mint from an invalid msg.sender error UnallowedExternalMinter(); // --- // events // --- /// @notice A token series was configured event SeriesConfigSet( uint16 indexed seriesId, string metadataBaseURI, uint32 variationCount, IMetadataResolver metadataResolver ); /// @notice An address was added or removed as an allowed minter for a /// series. event SeriesAllowedMinterSet( uint16 indexed seriesId, address indexed minter, bool isAllowed ); /// @notice The contract owner updated the current active mint. event ActiveMintSet(uint16 indexed seriesId, uint64 mintingPausesAt); // --- // storage // --- /// @notice Total number of minted tokens. uint256 public totalSupply; /// @notice The URI for the collection-level metadata, only set during /// deployment. Checked by OpenSea. string public contractURI; /// @notice The address of the ASSEMBLY 001 NFT contract IERC721 public immutable assemblyNFT; /// @notice The token series actively being minted from this contract. /// External minting contracts may mint from any series. uint16 public currentMintingSeries = 1; /// @notice Timestamp after which minting will be paused. External minting /// contracts can mint at any time. uint64 public mintingPausesAt = 0; /// @notice The token series configurations. mapping(uint16 => SeriesConfig) public seriesConfigs; /// @notice Addresses that are allowed to mint a specific token series. mapping(uint16 => mapping(address => bool)) public seriesAllowedMinters; /// @notice Flag to indicate if an address has claimed an NFT with their /// ASSEMBLY NFT already mapping(address => bool) public assemblyNFTClaimed; // --- // constructor // --- constructor( string memory _contractURI, address _contractOwner, IERC721 _assemblyNFT, SeriesConfig[] memory _initialSeries ) ERC721("Metalabel Public Mint", "METALABEL-PM") Owned(_contractOwner == address(0) ? msg.sender : _contractOwner) { contractURI = _contractURI; assemblyNFT = _assemblyNFT; // initialize the first series for (uint16 i = 0; i < _initialSeries.length; i++) { SeriesConfig memory config = _initialSeries[i]; seriesConfigs[i] = config; emit SeriesConfigSet( i, config.metadataBaseURI, config.variationCount, config.metadataResolver ); } } // --- // Owner functionality // --- /// @notice Set the active minting series and cutoff time. Only callable by /// owner. function setActiveMint(uint16 _seriesId, uint64 _mintingPausesAt) external onlyOwner { currentMintingSeries = _seriesId; mintingPausesAt = _mintingPausesAt; emit ActiveMintSet(_seriesId, _mintingPausesAt); } /// @notice Set the configuration for a specific token series. Only callable /// by owner. function setSeriesConfig( uint16 _seriesId, SeriesConfig memory _config, address[] memory _allowedMinters ) external onlyOwner { seriesConfigs[_seriesId] = _config; emit SeriesConfigSet( _seriesId, _config.metadataBaseURI, _config.variationCount, _config.metadataResolver ); setSeriesAllowedMinters(_seriesId, _allowedMinters, true); } /// @notice Set or unset the allowed minters for a specific token series. /// Only callable by owner. function setSeriesAllowedMinters( uint16 _seriesId, address[] memory _allowedMinters, bool isAllowed ) public onlyOwner { for (uint256 i = 0; i < _allowedMinters.length; i++) { seriesAllowedMinters[_seriesId][_allowedMinters[i]] = isAllowed; emit SeriesAllowedMinterSet( _seriesId, _allowedMinters[i], isAllowed ); } } // --- // external minter functionality // --- /// @notice Mint from an external allowed minting account with a prandom /// seed. function externalMint(address to, uint16 seriesId) external returns (uint256) { if (!seriesAllowedMinters[seriesId][msg.sender]) { revert UnallowedExternalMinter(); } return _mintToSeries(to, seriesId); } /// @notice Mint from an external allowed minting contract with a custom /// seed. function externalMint( address to, uint16 seriesId, uint48 seed ) external returns (uint256) { if (!seriesAllowedMinters[seriesId][msg.sender]) { revert UnallowedExternalMinter(); } uint256 tokenId = ++totalSupply; _mint(to, tokenId, seriesId, seed); return tokenId; } // --- // public functionality // --- /// @notice Mint a new token from the currently active series. /// @param to The address to mint the token to. /// @param mintBonusNFT If true, and "to" has an OG ASSEMBLY NFT they /// haven't yet used to mint an NFT from the ASSEMBLY series, then a bonus /// NFT will also be minted. function mint(address to, bool mintBonusNFT) external returns (uint256) { if (block.timestamp >= mintingPausesAt) revert MintingPaused(); // If the caller wants to also their bonus NFT for assembly, check to // see if they own the OG assembly NFT and havent yet claimed if ( mintBonusNFT && assemblyNFT.balanceOf(to) > 0 && // assemblyNFT is never 0x0 !assemblyNFTClaimed[to] ) { _mintToSeries( to, 0 /* assembly series */ ); assemblyNFTClaimed[to] = true; } return _mintToSeries(to, currentMintingSeries); } /// @notice Internal mint logic function _mintToSeries(address to, uint16 seriesId) internal returns (uint256) { uint256 tokenId = ++totalSupply; uint48 seed = uint48( uint256( keccak256( abi.encodePacked( tokenId, seriesId, msg.sender, blockhash(block.number - 1) ) ) ) ); _mint(to, tokenId, seriesId, seed); return tokenId; } // --- // metadata logic // --- /// @notice Return the metadata URI for a token. function tokenURI(uint256 tokenId) public view override returns (string memory) { SeriesConfig memory config = seriesConfigs[ _tokenData[tokenId].seriesId ]; // use an external resolver if set if (config.metadataResolver != IMetadataResolver(address(0))) { return config.metadataResolver.resolve(address(this), tokenId); } // determine the variation psuedorandomly as a function of token seed uint256 variation = uint256( keccak256(abi.encodePacked(_tokenData[tokenId].seed)) ) % config.variationCount; // otherwise concatenate the base URI and the token ID return string( abi.encodePacked( config.metadataBaseURI, "variation-", Strings.toString(variation), ".json" ) ); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Data stored per-token, fits into a single storage word struct TokenData { address owner; uint32 truncatedTimestamp; uint16 seriesId; uint48 seed; } /// @notice Modern, minimalist, and gas efficient ERC-721 implementation. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol) abstract contract ERC721 { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event Transfer(address indexed from, address indexed to, uint256 indexed id); event Approval(address indexed owner, address indexed spender, uint256 indexed id); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); event TokenDataSet(uint256 indexed id, uint16 indexed seriesId, uint48 indexed seed); /*////////////////////////////////////////////////////////////// METADATA STORAGE/LOGIC //////////////////////////////////////////////////////////////*/ string public name; string public symbol; function tokenURI(uint256 id) public view virtual returns (string memory); /*////////////////////////////////////////////////////////////// ERC721 BALANCE/OWNER STORAGE //////////////////////////////////////////////////////////////*/ mapping(uint256 => TokenData) internal _tokenData; mapping(address => uint256) internal _balanceOf; function ownerOf(uint256 id) public view virtual returns (address owner) { require((owner = _tokenData[id].owner) != address(0), "NOT_MINTED"); } function balanceOf(address owner) public view virtual returns (uint256) { require(owner != address(0), "ZERO_ADDRESS"); return _balanceOf[owner]; } /*////////////////////////////////////////////////////////////// ERC721 APPROVAL STORAGE //////////////////////////////////////////////////////////////*/ mapping(uint256 => address) public getApproved; mapping(address => mapping(address => bool)) public isApprovedForAll; /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor(string memory _name, string memory _symbol) { name = _name; symbol = _symbol; } /*////////////////////////////////////////////////////////////// ERC721 LOGIC //////////////////////////////////////////////////////////////*/ function approve(address spender, uint256 id) public virtual { address owner = _tokenData[id].owner; require(msg.sender == owner || isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED"); getApproved[id] = spender; emit Approval(owner, spender, id); } function setApprovalForAll(address operator, bool approved) public virtual { isApprovedForAll[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } function transferFrom( address from, address to, uint256 id ) public virtual { require(from == _tokenData[id].owner, "WRONG_FROM"); require(to != address(0), "INVALID_RECIPIENT"); require( msg.sender == from || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id], "NOT_AUTHORIZED" ); // Underflow of the sender's balance is impossible because we check for // ownership above and the recipient's balance can't realistically overflow. unchecked { _balanceOf[from]--; _balanceOf[to]++; } _tokenData[id].owner = to; delete getApproved[id]; emit Transfer(from, to, id); } function safeTransferFrom( address from, address to, uint256 id ) public virtual { transferFrom(from, to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } function safeTransferFrom( address from, address to, uint256 id, bytes calldata data ) public virtual { transferFrom(from, to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } /*////////////////////////////////////////////////////////////// ERC165 LOGIC //////////////////////////////////////////////////////////////*/ function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { return interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721 interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata } /*////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint(address to, uint256 id) internal virtual { return _mint(to, id, 0, 0); } function _mint(address to, uint256 id, uint16 seriesId, uint48 seed) internal virtual { require(to != address(0), "INVALID_RECIPIENT"); require(_tokenData[id].owner == address(0), "ALREADY_MINTED"); // Counter overflow is incredibly unrealistic. unchecked { _balanceOf[to]++; } _tokenData[id] = TokenData({ owner: to, truncatedTimestamp: uint32(block.timestamp / 10), seriesId: seriesId, seed: seed }); emit Transfer(address(0), to, id); emit TokenDataSet(id, seriesId, seed); } function _burn(uint256 id) internal virtual { address owner = _tokenData[id].owner; require(owner != address(0), "NOT_MINTED"); // Ownership check above ensures no underflow. unchecked { _balanceOf[owner]--; } delete _tokenData[id]; delete getApproved[id]; emit Transfer(owner, address(0), id); } /*////////////////////////////////////////////////////////////// INTERNAL SAFE MINT LOGIC //////////////////////////////////////////////////////////////*/ function _safeMint(address to, uint256 id) internal virtual { _mint(to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } function _safeMint( address to, uint256 id, bytes memory data ) internal virtual { _mint(to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } /*////////////////////////////////////////////////////////////// METALABEL ADDED FUNCTIONALITY //////////////////////////////////////////////////////////////*/ function getTokenData(uint256 id) external view virtual returns (TokenData memory) { TokenData memory data = _tokenData[id]; require(data.owner != address(0), "NOT_MINTED"); return data; } function getApproximateTokenMintTimestamp(uint256 id) external view virtual returns (uint256) { TokenData memory data = _tokenData[id]; require(data.owner != address(0), "NOT_MINTED"); return uint256(data.truncatedTimestamp) * 10; } } /// @notice A generic interface for a contract which properly accepts ERC721 tokens. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol) abstract contract ERC721TokenReceiver { function onERC721Received( address, address, uint256, bytes calldata ) external virtual returns (bytes4) { return ERC721TokenReceiver.onERC721Received.selector; } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Simple single owner authorization mixin. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol) abstract contract Owned { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event OwnershipTransferred(address indexed user, address indexed newOwner); /*////////////////////////////////////////////////////////////// OWNERSHIP STORAGE //////////////////////////////////////////////////////////////*/ address public owner; modifier onlyOwner() virtual { require(msg.sender == owner, "UNAUTHORIZED"); _; } /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor(address _owner) { owner = _owner; emit OwnershipTransferred(address(0), _owner); } /*////////////////////////////////////////////////////////////// OWNERSHIP LOGIC //////////////////////////////////////////////////////////////*/ function setOwner(address newOwner) public virtual onlyOwner { owner = newOwner; emit OwnershipTransferred(msg.sender, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; /** * @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); } /** * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation. */ function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (interfaces/IERC721.sol) pragma solidity ^0.8.0; import "../token/ERC721/IERC721.sol";
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../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); /** * @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`. * * 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; /** * @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 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 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 the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @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); }
// SPDX-License-Identifier: MIT // 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); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_contractURI","type":"string"},{"internalType":"address","name":"_contractOwner","type":"address"},{"internalType":"contract IERC721","name":"_assemblyNFT","type":"address"},{"components":[{"internalType":"string","name":"metadataBaseURI","type":"string"},{"internalType":"uint32","name":"variationCount","type":"uint32"},{"internalType":"contract IMetadataResolver","name":"metadataResolver","type":"address"}],"internalType":"struct SeriesConfig[]","name":"_initialSeries","type":"tuple[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"MintingPaused","type":"error"},{"inputs":[],"name":"UnallowedExternalMinter","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint16","name":"seriesId","type":"uint16"},{"indexed":false,"internalType":"uint64","name":"mintingPausesAt","type":"uint64"}],"name":"ActiveMintSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint16","name":"seriesId","type":"uint16"},{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"bool","name":"isAllowed","type":"bool"}],"name":"SeriesAllowedMinterSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint16","name":"seriesId","type":"uint16"},{"indexed":false,"internalType":"string","name":"metadataBaseURI","type":"string"},{"indexed":false,"internalType":"uint32","name":"variationCount","type":"uint32"},{"indexed":false,"internalType":"contract IMetadataResolver","name":"metadataResolver","type":"address"}],"name":"SeriesConfigSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"uint16","name":"seriesId","type":"uint16"},{"indexed":true,"internalType":"uint48","name":"seed","type":"uint48"}],"name":"TokenDataSet","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":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"assemblyNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"assemblyNFTClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMintingSeries","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint16","name":"seriesId","type":"uint16"},{"internalType":"uint48","name":"seed","type":"uint48"}],"name":"externalMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint16","name":"seriesId","type":"uint16"}],"name":"externalMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getApproximateTokenMintTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getTokenData","outputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint32","name":"truncatedTimestamp","type":"uint32"},{"internalType":"uint16","name":"seriesId","type":"uint16"},{"internalType":"uint48","name":"seed","type":"uint48"}],"internalType":"struct TokenData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"mintBonusNFT","type":"bool"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintingPausesAt","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","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":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","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":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"address","name":"","type":"address"}],"name":"seriesAllowedMinters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"seriesConfigs","outputs":[{"internalType":"string","name":"metadataBaseURI","type":"string"},{"internalType":"uint32","name":"variationCount","type":"uint32"},{"internalType":"contract IMetadataResolver","name":"metadataResolver","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_seriesId","type":"uint16"},{"internalType":"uint64","name":"_mintingPausesAt","type":"uint64"}],"name":"setActiveMint","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":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_seriesId","type":"uint16"},{"internalType":"address[]","name":"_allowedMinters","type":"address[]"},{"internalType":"bool","name":"isAllowed","type":"bool"}],"name":"setSeriesAllowedMinters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_seriesId","type":"uint16"},{"components":[{"internalType":"string","name":"metadataBaseURI","type":"string"},{"internalType":"uint32","name":"variationCount","type":"uint32"},{"internalType":"contract IMetadataResolver","name":"metadataResolver","type":"address"}],"internalType":"struct SeriesConfig","name":"_config","type":"tuple"},{"internalType":"address[]","name":"_allowedMinters","type":"address[]"}],"name":"setSeriesConfig","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":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a0604052600980546001600160501b03191660011790553480156200002457600080fd5b50604051620029083803806200290883398101604081905262000047916200043f565b6001600160a01b038316156200005e578262000060565b335b604080518082018252601581527f4d6574616c6162656c205075626c6963204d696e74000000000000000000000060208083019182528351808501909452600c84526b4d4554414c4142454c2d504d60a01b908401528151919291620000c99160009162000265565b508051620000df90600190602084019062000265565b5050600680546001600160a01b0319166001600160a01b0384169081179091556040519091506000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35083516200014390600890602087019062000265565b506001600160a01b03821660805260005b81518161ffff1610156200025a576000828261ffff16815181106200017d576200017d620005d4565b60209081029190910181015161ffff84166000908152600a8352604090208151805192945084939192620001b5928492019062000265565b50602082810151600190920180546040948501516001600160a01b0316640100000000026001600160c01b031990911663ffffffff909416939093179290921790915582519083015183830151925161ffff8616937f52da2742a4f5c7a457afe1b3278b2a76aa8e6bdb37206c2240514ac7f6e2d10c936200023c939092909190620005ea565b60405180910390a2508062000251816200063d565b91505062000154565b5050505050620006a9565b82805462000273906200066d565b90600052602060002090601f016020900481019282620002975760008555620002e2565b82601f10620002b257805160ff1916838001178555620002e2565b82800160010185558215620002e2579182015b82811115620002e2578251825591602001919060010190620002c5565b50620002f0929150620002f4565b5090565b5b80821115620002f05760008155600101620002f5565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156200034657620003466200030b565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200037757620003776200030b565b604052919050565b60005b838110156200039c57818101518382015260200162000382565b83811115620003ac576000848401525b50505050565b600082601f830112620003c457600080fd5b81516001600160401b03811115620003e057620003e06200030b565b620003f5601f8201601f19166020016200034c565b8181528460208386010111156200040b57600080fd5b6200041e8260208301602087016200037f565b949350505050565b6001600160a01b03811681146200043c57600080fd5b50565b600080600080608085870312156200045657600080fd5b84516001600160401b03808211156200046e57600080fd5b6200047c88838901620003b2565b955060208701519150620004908262000426565b6040870151919450620004a38262000426565b606087015191935080821115620004b957600080fd5b818701915087601f830112620004ce57600080fd5b815181811115620004e357620004e36200030b565b620004f460208260051b016200034c565b8082825260208201915060208360051b86010192508a8311156200051757600080fd5b602085015b83811015620005c4578051858111156200053557600080fd5b86016060818e03601f190112156200054c57600080fd5b6200055662000321565b6020820151878111156200056957600080fd5b6200057a8f602083860101620003b2565b825250604082015163ffffffff811681146200059557600080fd5b60208201526060919091015190620005ad8262000426565b60408101919091528352602092830192016200051c565b50979a9699509497505050505050565b634e487b7160e01b600052603260045260246000fd5b60608152600084518060608401526200060b8160808501602089016200037f565b63ffffffff949094166020830152506001600160a01b039190911660408201526080601f909201601f19160101919050565b600061ffff8083168181036200066357634e487b7160e01b600052601160045260246000fd5b6001019392505050565b600181811c908216806200068257607f821691505b602082108103620006a357634e487b7160e01b600052602260045260246000fd5b50919050565b60805161223c620006cc600039600081816104150152610855015261223c6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806387b862941161010f578063b88d4fde116100a2578063e10e769411610071578063e10e7694146104f3578063e8a3d48514610506578063e985e9c51461050e578063f5d1c95e1461053c57600080fd5b8063b88d4fde14610498578063c87b56dd146104ab578063cdfc597b146104be578063d014f27a146104e057600080fd5b80639c46d883116100de5780639c46d883146103ea578063a22cb465146103fd578063aa2af3a514610410578063b09afec11461043757600080fd5b806387b862941461037d5780638da5cb5b1461039e578063949b3fc6146103b157806395d89b41146103e257600080fd5b80631abcc4f21161018757806350c97dae1161015657806350c97dae146103215780636352211e1461034457806370a082311461035757806385412eb61461036a57600080fd5b80631abcc4f2146102ba5780632097d3fb146102e857806323b872dd146102fb57806342842e0e1461030e57600080fd5b8063081812fc116101c3578063081812fc14610248578063095ea7b31461028957806313af40351461029e57806318160ddd146102b157600080fd5b806301ffc9a7146101ea57806302a40b5f1461021257806306fdde0314610233575b600080fd5b6101fd6101f8366004611927565b61054f565b60405190151581526020015b60405180910390f35b61022561022036600461196b565b6105a1565b604051908152602001610209565b61023b61060c565b6040516102099190611a17565b610271610256366004611a2a565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610209565b61029c610297366004611a43565b61069a565b005b61029c6102ac366004611a6f565b610781565b61022560075481565b6101fd6102c8366004611a8c565b600b60209081526000928352604080842090915290825290205460ff1681565b6102256102f6366004611ad3565b6107f7565b61029c610309366004611b08565b610937565b61029c61031c366004611b08565b610afe565b6101fd61032f366004611a6f565b600c6020526000908152604090205460ff1681565b610271610352366004611a2a565b610bf6565b610225610365366004611a6f565b610c30565b610225610378366004611b49565b610c93565b60095461038b9061ffff1681565b60405161ffff9091168152602001610209565b600654610271906001600160a01b031681565b6009546103ca906201000090046001600160401b031681565b6040516001600160401b039091168152602001610209565b61023b610cdc565b61029c6103f8366004611cb1565b610ce9565b61029c61040b366004611ad3565b610dd6565b6102717f000000000000000000000000000000000000000000000000000000000000000081565b61044a610445366004611a2a565b610e42565b604051610209919081516001600160a01b0316815260208083015163ffffffff169082015260408083015161ffff169082015260609182015165ffffffffffff169181019190915260800190565b61029c6104a6366004611db5565b610ee6565b61023b6104b9366004611a2a565b610fce565b6104d16104cc366004611e53565b6111d8565b60405161020993929190611e6e565b61029c6104ee366004611ea7565b611296565b61029c610501366004611edf565b61132a565b61023b611444565b6101fd61051c366004611f3c565b600560209081526000928352604080842090915290825290205460ff1681565b61022561054a366004611a2a565b611451565b60006301ffc9a760e01b6001600160e01b03198316148061058057506380ac58cd60e01b6001600160e01b03198316145b8061059b5750635b5e139f60e01b6001600160e01b03198316145b92915050565b61ffff82166000908152600b6020908152604080832033845290915281205460ff166105e05760405163bce9cceb60e01b815260040160405180910390fd5b60006007600081546105f190611f70565b91829055509050610604858286866114e7565b949350505050565b6000805461061990611f89565b80601f016020809104026020016040519081016040528092919081815260200182805461064590611f89565b80156106925780601f1061066757610100808354040283529160200191610692565b820191906000526020600020905b81548152906001019060200180831161067557829003601f168201915b505050505081565b6000818152600260205260409020546001600160a01b0316338114806106e357506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6107255760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6006546001600160a01b031633146107ab5760405162461bcd60e51b815260040161071c90611fc3565b600680546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b6009546000906201000090046001600160401b0316421061082b576040516375ab03ab60e11b815260040160405180910390fd5b8180156108c457506040516370a0823160e01b81526001600160a01b0384811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa15801561089e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c29190611fe9565b115b80156108e957506001600160a01b0383166000908152600c602052604090205460ff16155b1561091e576108f98360006116d4565b506001600160a01b0383166000908152600c60205260409020805460ff191660011790555b60095461093090849061ffff166116d4565b9392505050565b6000818152600260205260409020546001600160a01b0384811691161461098d5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b604482015260640161071c565b6001600160a01b0382166109d75760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640161071c565b336001600160a01b0384161480610a1157506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b80610a3257506000818152600460205260409020546001600160a01b031633145b610a6f5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b604482015260640161071c565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610b09838383610937565b6001600160a01b0382163b1580610bb25750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba69190612002565b6001600160e01b031916145b610bf15760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b604482015260640161071c565b505050565b6000818152600260205260409020546001600160a01b031680610c2b5760405162461bcd60e51b815260040161071c9061201f565b919050565b60006001600160a01b038216610c775760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015260640161071c565b506001600160a01b031660009081526003602052604090205490565b61ffff81166000908152600b6020908152604080832033845290915281205460ff16610cd25760405163bce9cceb60e01b815260040160405180910390fd5b61093083836116d4565b6001805461061990611f89565b6006546001600160a01b03163314610d135760405162461bcd60e51b815260040161071c90611fc3565b61ffff83166000908152600a60209081526040909120835180518593610d3d928492910190611875565b50602082810151600190920180546040948501516001600160a01b0316640100000000026001600160c01b031990911663ffffffff909416939093179290921790915583519084015184830151925161ffff8716937f52da2742a4f5c7a457afe1b3278b2a76aa8e6bdb37206c2240514ac7f6e2d10c93610dc2939092909190611e6e565b60405180910390a2610bf18382600161132a565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b604080516080810182526000808252602082018190529181018290526060810191909152600082815260026020908152604091829020825160808101845290546001600160a01b038116808352600160a01b820463ffffffff1693830193909352600160c01b810461ffff1693820193909352600160d01b90920465ffffffffffff16606083015261059b5760405162461bcd60e51b815260040161071c9061201f565b610ef1858585610937565b6001600160a01b0384163b1580610f885750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290610f399033908a90899089908990600401612043565b6020604051808303816000875af1158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7c9190612002565b6001600160e01b031916145b610fc75760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b604482015260640161071c565b5050505050565b600081815260026020908152604080832054600160c01b900461ffff168352600a9091528082208151606080820190935281549293929091908290829061101490611f89565b80601f016020809104026020016040519081016040528092919081815260200182805461104090611f89565b801561108d5780601f106110625761010080835404028352916020019161108d565b820191906000526020600020905b81548152906001019060200180831161107057829003601f168201915b50505091835250506001919091015463ffffffff811660208301526001600160a01b03640100000000909104811660409283015290820151919250161561114757604080820151905163abadc6f560e01b8152306004820152602481018590526001600160a01b039091169063abadc6f590604401600060405180830381865afa15801561111f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109309190810190612097565b6020818101516000858152600283526040808220548151600160d01b90910460d01b6001600160d01b0319168186015281518082036006018152602690910190915280519301929092206111a19163ffffffff1690612123565b82519091506111af82611775565b6040516020016111c0929190612137565b60405160208183030381529060405292505050919050565b600a602052600090815260409020805481906111f390611f89565b80601f016020809104026020016040519081016040528092919081815260200182805461121f90611f89565b801561126c5780601f106112415761010080835404028352916020019161126c565b820191906000526020600020905b81548152906001019060200180831161124f57829003601f168201915b5050506001909301549192505063ffffffff8116906001600160a01b036401000000009091041683565b6006546001600160a01b031633146112c05760405162461bcd60e51b815260040161071c90611fc3565b6009805461ffff841669ffffffffffffffffffff199091168117620100006001600160401b03851690810291909117909255604051918252907fcfbefe3f366bbb4a493b14a3593708dded6b8142161c08294185d7025a413d4e9060200160405180910390a25050565b6006546001600160a01b031633146113545760405162461bcd60e51b815260040161071c90611fc3565b60005b825181101561143e5761ffff84166000908152600b60205260408120845184929086908590811061138a5761138a61218e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508281815181106113db576113db61218e565b60200260200101516001600160a01b03168461ffff167fca884cd40bb3d8b0870e71cefde9a92ea9280e51d293171937dc1a7fcd09311884604051611424911515815260200190565b60405180910390a38061143681611f70565b915050611357565b50505050565b6008805461061990611f89565b6000818152600260209081526040808320815160808101835290546001600160a01b038116808352600160a01b820463ffffffff1694830194909452600160c01b810461ffff1692820192909252600160d01b90910465ffffffffffff166060820152906114d15760405162461bcd60e51b815260040161071c9061201f565b60208101516109309063ffffffff16600a6121a4565b6001600160a01b0384166115315760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640161071c565b6000838152600260205260409020546001600160a01b0316156115875760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b604482015260640161071c565b6001600160a01b038416600081815260036020908152604091829020805460010190558151608081019092529181529081016115c4600a426121c3565b63ffffffff908116825261ffff80861660208085019190915265ffffffffffff8087166040958601526000898152600283528581208751815494890151898901516060909a0151909416600160d01b026001600160d01b0399909616600160c01b02989098166001600160c01b0393909616600160a01b026001600160c01b03199094166001600160a01b039889161793909317919091169390931791909117905590518592871691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a48065ffffffffffff168261ffff16847ffcffdff9d332a0ab8fd46670633891644ab14b6217e60961030eba90a26557e860405160405180910390a450505050565b6000806007600081546116e690611f70565b9182905550905060008184336116fd6001436121d7565b40604051602001611746949392919093845260f09290921b6001600160f01b031916602084015260601b6bffffffffffffffffffffffff19166022830152603682015260560190565b6040516020818303038152906040528051906020012060001c905061176d858386846114e7565b509392505050565b60608160000361179c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156117c657806117b081611f70565b91506117bf9050600a836121c3565b91506117a0565b6000816001600160401b038111156117e0576117e0611b75565b6040519080825280601f01601f19166020018201604052801561180a576020820181803683370190505b5090505b84156106045761181f6001836121d7565b915061182c600a86612123565b6118379060306121ee565b60f81b81838151811061184c5761184c61218e565b60200101906001600160f81b031916908160001a90535061186e600a866121c3565b945061180e565b82805461188190611f89565b90600052602060002090601f0160209004810192826118a357600085556118e9565b82601f106118bc57805160ff19168380011785556118e9565b828001600101855582156118e9579182015b828111156118e95782518255916020019190600101906118ce565b506118f59291506118f9565b5090565b5b808211156118f557600081556001016118fa565b6001600160e01b03198116811461192457600080fd5b50565b60006020828403121561193957600080fd5b81356109308161190e565b6001600160a01b038116811461192457600080fd5b803561ffff81168114610c2b57600080fd5b60008060006060848603121561198057600080fd5b833561198b81611944565b925061199960208501611959565b9150604084013565ffffffffffff811681146119b457600080fd5b809150509250925092565b60005b838110156119da5781810151838201526020016119c2565b8381111561143e5750506000910152565b60008151808452611a038160208601602086016119bf565b601f01601f19169290920160200192915050565b60208152600061093060208301846119eb565b600060208284031215611a3c57600080fd5b5035919050565b60008060408385031215611a5657600080fd5b8235611a6181611944565b946020939093013593505050565b600060208284031215611a8157600080fd5b813561093081611944565b60008060408385031215611a9f57600080fd5b611aa883611959565b91506020830135611ab881611944565b809150509250929050565b80358015158114610c2b57600080fd5b60008060408385031215611ae657600080fd5b8235611af181611944565b9150611aff60208401611ac3565b90509250929050565b600080600060608486031215611b1d57600080fd5b8335611b2881611944565b92506020840135611b3881611944565b929592945050506040919091013590565b60008060408385031215611b5c57600080fd5b8235611b6781611944565b9150611aff60208401611959565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715611bad57611bad611b75565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611bdb57611bdb611b75565b604052919050565b60006001600160401b03821115611bfc57611bfc611b75565b50601f01601f191660200190565b803563ffffffff81168114610c2b57600080fd5b8035610c2b81611944565b600082601f830112611c3a57600080fd5b813560206001600160401b03821115611c5557611c55611b75565b8160051b611c64828201611bb3565b9283528481018201928281019087851115611c7e57600080fd5b83870192505b84831015611ca6578235611c9781611944565b82529183019190830190611c84565b979650505050505050565b600080600060608486031215611cc657600080fd5b611ccf84611959565b92506020808501356001600160401b0380821115611cec57600080fd5b9086019060608289031215611d0057600080fd5b611d08611b8b565b823582811115611d1757600080fd5b8301601f81018a13611d2857600080fd5b8035611d3b611d3682611be3565b611bb3565b8181528b87838501011115611d4f57600080fd5b81878401888301376000878383010152808452505050611d70848401611c0a565b84820152611d8060408401611c1e565b6040820152809550506040870135925080831115611d9d57600080fd5b5050611dab86828701611c29565b9150509250925092565b600080600080600060808688031215611dcd57600080fd5b8535611dd881611944565b94506020860135611de881611944565b93506040860135925060608601356001600160401b0380821115611e0b57600080fd5b818801915088601f830112611e1f57600080fd5b813581811115611e2e57600080fd5b896020828501011115611e4057600080fd5b9699959850939650602001949392505050565b600060208284031215611e6557600080fd5b61093082611959565b606081526000611e8160608301866119eb565b63ffffffff949094166020830152506001600160a01b0391909116604090910152919050565b60008060408385031215611eba57600080fd5b611ec383611959565b915060208301356001600160401b0381168114611ab857600080fd5b600080600060608486031215611ef457600080fd5b611efd84611959565b925060208401356001600160401b03811115611f1857600080fd5b611f2486828701611c29565b925050611f3360408501611ac3565b90509250925092565b60008060408385031215611f4f57600080fd5b8235611aa881611944565b634e487b7160e01b600052601160045260246000fd5b600060018201611f8257611f82611f5a565b5060010190565b600181811c90821680611f9d57607f821691505b602082108103611fbd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b600060208284031215611ffb57600080fd5b5051919050565b60006020828403121561201457600080fd5b81516109308161190e565b6020808252600a90820152691393d517d3525395115160b21b604082015260600190565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156120a957600080fd5b81516001600160401b038111156120bf57600080fd5b8201601f810184136120d057600080fd5b80516120de611d3682611be3565b8181528560208385010111156120f357600080fd5b6121048260208301602086016119bf565b95945050505050565b634e487b7160e01b600052601260045260246000fd5b6000826121325761213261210d565b500690565b600083516121498184602088016119bf565b69766172696174696f6e2d60b01b908301908152835161217081600a8401602088016119bf565b64173539b7b760d91b600a9290910191820152600f01949350505050565b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156121be576121be611f5a565b500290565b6000826121d2576121d261210d565b500490565b6000828210156121e9576121e9611f5a565b500390565b6000821982111561220157612201611f5a565b50019056fea26469706673582212207634a301593f845d071d4d0caed39e029c0a5b6936faebce1f7b935c9c96cb1064736f6c634300080d00330000000000000000000000000000000000000000000000000000000000000080000000000000000000000000de8ec3ab24525439efa66fb44106605943f46499000000000000000000000000279c4e78e71614ef94516d24e39a6c0c6c7e68be00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d654a7035554a74504457334e7665677970746634656b5252356f5a7258756a32677137387061593164676531000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d636745534d32487036596274784a6b7a5a754c59584258313737744454647171676e4b614a315969764436792f000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d51696a3454364a38425673505155396b356d65795a5936484232745a366d7568354c737963375747347848522f000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d523432574c34466b68755637486936694a644a645238787068486d324d647975447832485a347a79796878622f00000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101e55760003560e01c806387b862941161010f578063b88d4fde116100a2578063e10e769411610071578063e10e7694146104f3578063e8a3d48514610506578063e985e9c51461050e578063f5d1c95e1461053c57600080fd5b8063b88d4fde14610498578063c87b56dd146104ab578063cdfc597b146104be578063d014f27a146104e057600080fd5b80639c46d883116100de5780639c46d883146103ea578063a22cb465146103fd578063aa2af3a514610410578063b09afec11461043757600080fd5b806387b862941461037d5780638da5cb5b1461039e578063949b3fc6146103b157806395d89b41146103e257600080fd5b80631abcc4f21161018757806350c97dae1161015657806350c97dae146103215780636352211e1461034457806370a082311461035757806385412eb61461036a57600080fd5b80631abcc4f2146102ba5780632097d3fb146102e857806323b872dd146102fb57806342842e0e1461030e57600080fd5b8063081812fc116101c3578063081812fc14610248578063095ea7b31461028957806313af40351461029e57806318160ddd146102b157600080fd5b806301ffc9a7146101ea57806302a40b5f1461021257806306fdde0314610233575b600080fd5b6101fd6101f8366004611927565b61054f565b60405190151581526020015b60405180910390f35b61022561022036600461196b565b6105a1565b604051908152602001610209565b61023b61060c565b6040516102099190611a17565b610271610256366004611a2a565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610209565b61029c610297366004611a43565b61069a565b005b61029c6102ac366004611a6f565b610781565b61022560075481565b6101fd6102c8366004611a8c565b600b60209081526000928352604080842090915290825290205460ff1681565b6102256102f6366004611ad3565b6107f7565b61029c610309366004611b08565b610937565b61029c61031c366004611b08565b610afe565b6101fd61032f366004611a6f565b600c6020526000908152604090205460ff1681565b610271610352366004611a2a565b610bf6565b610225610365366004611a6f565b610c30565b610225610378366004611b49565b610c93565b60095461038b9061ffff1681565b60405161ffff9091168152602001610209565b600654610271906001600160a01b031681565b6009546103ca906201000090046001600160401b031681565b6040516001600160401b039091168152602001610209565b61023b610cdc565b61029c6103f8366004611cb1565b610ce9565b61029c61040b366004611ad3565b610dd6565b6102717f000000000000000000000000279c4e78e71614ef94516d24e39a6c0c6c7e68be81565b61044a610445366004611a2a565b610e42565b604051610209919081516001600160a01b0316815260208083015163ffffffff169082015260408083015161ffff169082015260609182015165ffffffffffff169181019190915260800190565b61029c6104a6366004611db5565b610ee6565b61023b6104b9366004611a2a565b610fce565b6104d16104cc366004611e53565b6111d8565b60405161020993929190611e6e565b61029c6104ee366004611ea7565b611296565b61029c610501366004611edf565b61132a565b61023b611444565b6101fd61051c366004611f3c565b600560209081526000928352604080842090915290825290205460ff1681565b61022561054a366004611a2a565b611451565b60006301ffc9a760e01b6001600160e01b03198316148061058057506380ac58cd60e01b6001600160e01b03198316145b8061059b5750635b5e139f60e01b6001600160e01b03198316145b92915050565b61ffff82166000908152600b6020908152604080832033845290915281205460ff166105e05760405163bce9cceb60e01b815260040160405180910390fd5b60006007600081546105f190611f70565b91829055509050610604858286866114e7565b949350505050565b6000805461061990611f89565b80601f016020809104026020016040519081016040528092919081815260200182805461064590611f89565b80156106925780601f1061066757610100808354040283529160200191610692565b820191906000526020600020905b81548152906001019060200180831161067557829003601f168201915b505050505081565b6000818152600260205260409020546001600160a01b0316338114806106e357506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6107255760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6006546001600160a01b031633146107ab5760405162461bcd60e51b815260040161071c90611fc3565b600680546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b6009546000906201000090046001600160401b0316421061082b576040516375ab03ab60e11b815260040160405180910390fd5b8180156108c457506040516370a0823160e01b81526001600160a01b0384811660048301526000917f000000000000000000000000279c4e78e71614ef94516d24e39a6c0c6c7e68be909116906370a0823190602401602060405180830381865afa15801561089e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c29190611fe9565b115b80156108e957506001600160a01b0383166000908152600c602052604090205460ff16155b1561091e576108f98360006116d4565b506001600160a01b0383166000908152600c60205260409020805460ff191660011790555b60095461093090849061ffff166116d4565b9392505050565b6000818152600260205260409020546001600160a01b0384811691161461098d5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b604482015260640161071c565b6001600160a01b0382166109d75760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640161071c565b336001600160a01b0384161480610a1157506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b80610a3257506000818152600460205260409020546001600160a01b031633145b610a6f5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b604482015260640161071c565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610b09838383610937565b6001600160a01b0382163b1580610bb25750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba69190612002565b6001600160e01b031916145b610bf15760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b604482015260640161071c565b505050565b6000818152600260205260409020546001600160a01b031680610c2b5760405162461bcd60e51b815260040161071c9061201f565b919050565b60006001600160a01b038216610c775760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015260640161071c565b506001600160a01b031660009081526003602052604090205490565b61ffff81166000908152600b6020908152604080832033845290915281205460ff16610cd25760405163bce9cceb60e01b815260040160405180910390fd5b61093083836116d4565b6001805461061990611f89565b6006546001600160a01b03163314610d135760405162461bcd60e51b815260040161071c90611fc3565b61ffff83166000908152600a60209081526040909120835180518593610d3d928492910190611875565b50602082810151600190920180546040948501516001600160a01b0316640100000000026001600160c01b031990911663ffffffff909416939093179290921790915583519084015184830151925161ffff8716937f52da2742a4f5c7a457afe1b3278b2a76aa8e6bdb37206c2240514ac7f6e2d10c93610dc2939092909190611e6e565b60405180910390a2610bf18382600161132a565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b604080516080810182526000808252602082018190529181018290526060810191909152600082815260026020908152604091829020825160808101845290546001600160a01b038116808352600160a01b820463ffffffff1693830193909352600160c01b810461ffff1693820193909352600160d01b90920465ffffffffffff16606083015261059b5760405162461bcd60e51b815260040161071c9061201f565b610ef1858585610937565b6001600160a01b0384163b1580610f885750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290610f399033908a90899089908990600401612043565b6020604051808303816000875af1158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7c9190612002565b6001600160e01b031916145b610fc75760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b604482015260640161071c565b5050505050565b600081815260026020908152604080832054600160c01b900461ffff168352600a9091528082208151606080820190935281549293929091908290829061101490611f89565b80601f016020809104026020016040519081016040528092919081815260200182805461104090611f89565b801561108d5780601f106110625761010080835404028352916020019161108d565b820191906000526020600020905b81548152906001019060200180831161107057829003601f168201915b50505091835250506001919091015463ffffffff811660208301526001600160a01b03640100000000909104811660409283015290820151919250161561114757604080820151905163abadc6f560e01b8152306004820152602481018590526001600160a01b039091169063abadc6f590604401600060405180830381865afa15801561111f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109309190810190612097565b6020818101516000858152600283526040808220548151600160d01b90910460d01b6001600160d01b0319168186015281518082036006018152602690910190915280519301929092206111a19163ffffffff1690612123565b82519091506111af82611775565b6040516020016111c0929190612137565b60405160208183030381529060405292505050919050565b600a602052600090815260409020805481906111f390611f89565b80601f016020809104026020016040519081016040528092919081815260200182805461121f90611f89565b801561126c5780601f106112415761010080835404028352916020019161126c565b820191906000526020600020905b81548152906001019060200180831161124f57829003601f168201915b5050506001909301549192505063ffffffff8116906001600160a01b036401000000009091041683565b6006546001600160a01b031633146112c05760405162461bcd60e51b815260040161071c90611fc3565b6009805461ffff841669ffffffffffffffffffff199091168117620100006001600160401b03851690810291909117909255604051918252907fcfbefe3f366bbb4a493b14a3593708dded6b8142161c08294185d7025a413d4e9060200160405180910390a25050565b6006546001600160a01b031633146113545760405162461bcd60e51b815260040161071c90611fc3565b60005b825181101561143e5761ffff84166000908152600b60205260408120845184929086908590811061138a5761138a61218e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508281815181106113db576113db61218e565b60200260200101516001600160a01b03168461ffff167fca884cd40bb3d8b0870e71cefde9a92ea9280e51d293171937dc1a7fcd09311884604051611424911515815260200190565b60405180910390a38061143681611f70565b915050611357565b50505050565b6008805461061990611f89565b6000818152600260209081526040808320815160808101835290546001600160a01b038116808352600160a01b820463ffffffff1694830194909452600160c01b810461ffff1692820192909252600160d01b90910465ffffffffffff166060820152906114d15760405162461bcd60e51b815260040161071c9061201f565b60208101516109309063ffffffff16600a6121a4565b6001600160a01b0384166115315760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640161071c565b6000838152600260205260409020546001600160a01b0316156115875760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b604482015260640161071c565b6001600160a01b038416600081815260036020908152604091829020805460010190558151608081019092529181529081016115c4600a426121c3565b63ffffffff908116825261ffff80861660208085019190915265ffffffffffff8087166040958601526000898152600283528581208751815494890151898901516060909a0151909416600160d01b026001600160d01b0399909616600160c01b02989098166001600160c01b0393909616600160a01b026001600160c01b03199094166001600160a01b039889161793909317919091169390931791909117905590518592871691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a48065ffffffffffff168261ffff16847ffcffdff9d332a0ab8fd46670633891644ab14b6217e60961030eba90a26557e860405160405180910390a450505050565b6000806007600081546116e690611f70565b9182905550905060008184336116fd6001436121d7565b40604051602001611746949392919093845260f09290921b6001600160f01b031916602084015260601b6bffffffffffffffffffffffff19166022830152603682015260560190565b6040516020818303038152906040528051906020012060001c905061176d858386846114e7565b509392505050565b60608160000361179c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156117c657806117b081611f70565b91506117bf9050600a836121c3565b91506117a0565b6000816001600160401b038111156117e0576117e0611b75565b6040519080825280601f01601f19166020018201604052801561180a576020820181803683370190505b5090505b84156106045761181f6001836121d7565b915061182c600a86612123565b6118379060306121ee565b60f81b81838151811061184c5761184c61218e565b60200101906001600160f81b031916908160001a90535061186e600a866121c3565b945061180e565b82805461188190611f89565b90600052602060002090601f0160209004810192826118a357600085556118e9565b82601f106118bc57805160ff19168380011785556118e9565b828001600101855582156118e9579182015b828111156118e95782518255916020019190600101906118ce565b506118f59291506118f9565b5090565b5b808211156118f557600081556001016118fa565b6001600160e01b03198116811461192457600080fd5b50565b60006020828403121561193957600080fd5b81356109308161190e565b6001600160a01b038116811461192457600080fd5b803561ffff81168114610c2b57600080fd5b60008060006060848603121561198057600080fd5b833561198b81611944565b925061199960208501611959565b9150604084013565ffffffffffff811681146119b457600080fd5b809150509250925092565b60005b838110156119da5781810151838201526020016119c2565b8381111561143e5750506000910152565b60008151808452611a038160208601602086016119bf565b601f01601f19169290920160200192915050565b60208152600061093060208301846119eb565b600060208284031215611a3c57600080fd5b5035919050565b60008060408385031215611a5657600080fd5b8235611a6181611944565b946020939093013593505050565b600060208284031215611a8157600080fd5b813561093081611944565b60008060408385031215611a9f57600080fd5b611aa883611959565b91506020830135611ab881611944565b809150509250929050565b80358015158114610c2b57600080fd5b60008060408385031215611ae657600080fd5b8235611af181611944565b9150611aff60208401611ac3565b90509250929050565b600080600060608486031215611b1d57600080fd5b8335611b2881611944565b92506020840135611b3881611944565b929592945050506040919091013590565b60008060408385031215611b5c57600080fd5b8235611b6781611944565b9150611aff60208401611959565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715611bad57611bad611b75565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611bdb57611bdb611b75565b604052919050565b60006001600160401b03821115611bfc57611bfc611b75565b50601f01601f191660200190565b803563ffffffff81168114610c2b57600080fd5b8035610c2b81611944565b600082601f830112611c3a57600080fd5b813560206001600160401b03821115611c5557611c55611b75565b8160051b611c64828201611bb3565b9283528481018201928281019087851115611c7e57600080fd5b83870192505b84831015611ca6578235611c9781611944565b82529183019190830190611c84565b979650505050505050565b600080600060608486031215611cc657600080fd5b611ccf84611959565b92506020808501356001600160401b0380821115611cec57600080fd5b9086019060608289031215611d0057600080fd5b611d08611b8b565b823582811115611d1757600080fd5b8301601f81018a13611d2857600080fd5b8035611d3b611d3682611be3565b611bb3565b8181528b87838501011115611d4f57600080fd5b81878401888301376000878383010152808452505050611d70848401611c0a565b84820152611d8060408401611c1e565b6040820152809550506040870135925080831115611d9d57600080fd5b5050611dab86828701611c29565b9150509250925092565b600080600080600060808688031215611dcd57600080fd5b8535611dd881611944565b94506020860135611de881611944565b93506040860135925060608601356001600160401b0380821115611e0b57600080fd5b818801915088601f830112611e1f57600080fd5b813581811115611e2e57600080fd5b896020828501011115611e4057600080fd5b9699959850939650602001949392505050565b600060208284031215611e6557600080fd5b61093082611959565b606081526000611e8160608301866119eb565b63ffffffff949094166020830152506001600160a01b0391909116604090910152919050565b60008060408385031215611eba57600080fd5b611ec383611959565b915060208301356001600160401b0381168114611ab857600080fd5b600080600060608486031215611ef457600080fd5b611efd84611959565b925060208401356001600160401b03811115611f1857600080fd5b611f2486828701611c29565b925050611f3360408501611ac3565b90509250925092565b60008060408385031215611f4f57600080fd5b8235611aa881611944565b634e487b7160e01b600052601160045260246000fd5b600060018201611f8257611f82611f5a565b5060010190565b600181811c90821680611f9d57607f821691505b602082108103611fbd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b600060208284031215611ffb57600080fd5b5051919050565b60006020828403121561201457600080fd5b81516109308161190e565b6020808252600a90820152691393d517d3525395115160b21b604082015260600190565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156120a957600080fd5b81516001600160401b038111156120bf57600080fd5b8201601f810184136120d057600080fd5b80516120de611d3682611be3565b8181528560208385010111156120f357600080fd5b6121048260208301602086016119bf565b95945050505050565b634e487b7160e01b600052601260045260246000fd5b6000826121325761213261210d565b500690565b600083516121498184602088016119bf565b69766172696174696f6e2d60b01b908301908152835161217081600a8401602088016119bf565b64173539b7b760d91b600a9290910191820152600f01949350505050565b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156121be576121be611f5a565b500290565b6000826121d2576121d261210d565b500490565b6000828210156121e9576121e9611f5a565b500390565b6000821982111561220157612201611f5a565b50019056fea26469706673582212207634a301593f845d071d4d0caed39e029c0a5b6936faebce1f7b935c9c96cb1064736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000de8ec3ab24525439efa66fb44106605943f46499000000000000000000000000279c4e78e71614ef94516d24e39a6c0c6c7e68be00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d654a7035554a74504457334e7665677970746634656b5252356f5a7258756a32677137387061593164676531000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d636745534d32487036596274784a6b7a5a754c59584258313737744454647171676e4b614a315969764436792f000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d51696a3454364a38425673505155396b356d65795a5936484232745a366d7568354c737963375747347848522f000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d523432574c34466b68755637486936694a644a645238787068486d324d647975447832485a347a79796878622f00000000000000000000
-----Decoded View---------------
Arg [0] : _contractURI (string): ipfs://QmeJp5UJtPDW3Nvegyptf4ekRR5oZrXuj2gq78paY1dge1
Arg [1] : _contractOwner (address): 0xde8eC3Ab24525439EfA66Fb44106605943F46499
Arg [2] : _assemblyNFT (address): 0x279C4e78e71614EF94516d24e39a6c0c6C7e68Be
Arg [3] : _initialSeries (tuple[]): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput],System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput],System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
-----Encoded View---------------
29 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 000000000000000000000000de8ec3ab24525439efa66fb44106605943f46499
Arg [2] : 000000000000000000000000279c4e78e71614ef94516d24e39a6c0c6c7e68be
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000035
Arg [5] : 697066733a2f2f516d654a7035554a74504457334e7665677970746634656b52
Arg [6] : 52356f5a7258756a326771373870615931646765310000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [10] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [15] : 697066733a2f2f516d636745534d32487036596274784a6b7a5a754c59584258
Arg [16] : 313737744454647171676e4b614a315969764436792f00000000000000000000
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [19] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [20] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [21] : 697066733a2f2f516d51696a3454364a38425673505155396b356d65795a5936
Arg [22] : 484232745a366d7568354c737963375747347848522f00000000000000000000
Arg [23] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [24] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [26] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [27] : 697066733a2f2f516d523432574c34466b68755637486936694a644a64523878
Arg [28] : 7068486d324d647975447832485a347a79796878622f00000000000000000000
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.