ERC-1155
Overview
Max Total Supply
119 DIRTONCHAIN
Holders
62
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DIRTONCHAIN
Compiler Version
v0.8.15+commit.e14f2714
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.15; /*////////////////////////////////////////////////////////////// EXTERNAL IMPORTS //////////////////////////////////////////////////////////////*/ import "solmate/utils/MerkleProofLib.sol"; import {ERC1155} from "solmate/tokens/ERC1155.sol"; import {Owned} from "solmate/auth/Owned.sol"; /*////////////////////////////////////////////////////////////// INTERNAL IMPORTS //////////////////////////////////////////////////////////////*/ import "./LilBase64.sol"; /*////////////////////////////////////////////////////////////// STRUCTURES //////////////////////////////////////////////////////////////*/ library Structures { /// @notice Structure for royalty info per token ID /// @param creator for token /// @param royaltyBasisPoints for token struct RoyaltyReceiver { address creator; uint16 royaltyBasisPoints; } } /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ library Events { /// @notice Emitted after Merkle root is changed /// @param tokenId for which Merkle root was set or updated /// @param oldMerkleRoot used for validating claims against a token ID /// @param newMerkleRoot used for validating claims against a token ID event MerkleRootChanged( uint256 tokenId, bytes32 oldMerkleRoot, bytes32 newMerkleRoot ); /// @notice Emitted after contract is enabled or disabled /// @param oldEnabled status of contract /// @param newEnabled status of contract event EnabledChanged(bool oldEnabled, bool newEnabled); /// @notice Emitted after image data is changed /// @param tokenId for which image data was set or updated /// @param oldImageData used for a token ID /// @param newImageData used for a token ID event ImageDataChanged( uint256 tokenId, string oldImageData, string newImageData ); /// @notice Emitted after name is changed /// @param tokenId for which name was set or updated /// @param oldName used for a token ID /// @param newName used for a token ID event NameChanged(uint256 tokenId, string oldName, string newName); /// @notice Emitted after description is changed /// @param tokenId for which description was set or updated /// @param oldDescription used for a token ID /// @param newDescription used for a token ID event DescriptionChanged( uint256 tokenId, string oldDescription, string newDescription ); /// @notice Emitted after contract name is changed /// @param oldName of contract /// @param newName of contract event NameChanged(string oldName, string newName); /// @notice Emitted after royalties are changed /// @param tokenId for which royalty was set or updated /// @param oldRoyalties of ID /// @param newRoyalties of ID event RoyaltyChanged( uint256 tokenId, Structures.RoyaltyReceiver oldRoyalties, Structures.RoyaltyReceiver newRoyalties ); /// @notice Emitted after contract symbol is changed /// @param oldSymbol of contract /// @param newSymbol of contract event SymbolChanged(string oldSymbol, string newSymbol); } /*////////////////////////////////////////////////////////////// CONTRACT //////////////////////////////////////////////////////////////*/ /// @title DIRTONCHAIN /// @notice Commemorative Dirt tokens claimable by members of a Merkle tree /// @author DefDAO <https://definitely.shop/> contract DIRTONCHAIN is Owned, ERC1155 { /*////////////////////////////////////////////////////////////// MUTABLE STORAGE //////////////////////////////////////////////////////////////*/ /// @notice Token name (not in ERC1155 standard but still used) string public name; /// @notice Token symbol (not in ERC1155 standard but still used) string public symbol; /// @notice Overall contract status bool public enabled; /// @notice Mapping of Merkle roots for different NFTs mapping(uint256 => bytes32) public merkleRoots; /// @notice Mapping of image data mapping(uint256 => string) public imageData; /// @notice Mapping of descriptions mapping(uint256 => string) public descriptions; /// @notice Mapping of names mapping(uint256 => string) public names; /// @notice Mapping of mint status for hashed address + ID combos (as integers) mapping(uint256 => bool) public mintStatus; /// @notice Mapping of royalty rates mapping(uint256 => Structures.RoyaltyReceiver) public mintRoyalties; /*////////////////////////////////////////////////////////////// MODIFIERS //////////////////////////////////////////////////////////////*/ /// @notice Throws if called when minting is not enabled modifier mintingEnabled() { if (!enabled) { revert MintingNotEnabled(); } _; } /// @notice Throws if mint attempted on a token that was already minted modifier tokenNotYetClaimed(uint256 tokenId) { if ( mintStatus[uint256(keccak256(abi.encode(msg.sender, tokenId)))] != false ) { revert NotAllowedToMintAgain(); } _; } /// @notice Throws if mint attempted on a token that does not exists modifier tokenExists(uint256 tokenId) { if (merkleRoots[tokenId] == 0) { revert TokenDoesNotExist(); } _; } /// @notice Throws if burn attempted on a token not owned by sender modifier hasToken(uint256 tokenId, address burner) { if (balanceOf[burner][tokenId] == 0) { revert NotAllowedToBurn(); } _; } /*////////////////////////////////////////////////////////////// ERRORS //////////////////////////////////////////////////////////////*/ /// @notice Thrown if minting attempted when contract not enabled error MintingNotEnabled(); /// @notice Thrown if burn attempted on token not owned by address error NotAllowedToBurn(); /// @notice Thrown if address has already minted its token for token ID error NotAllowedToMintAgain(); /// @notice Thrown if address is not part of Merkle tree for token ID error NotInMerkle(); /// @notice Thrown if a non-existent token is queried error TokenDoesNotExist(); /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ /// @notice Creates a new DIRTONCHAIN contract /// @param _enabled to start /// @param _initialMerkleRoot to start /// @param _initialImageData to start constructor( bool _enabled, bytes32 _initialMerkleRoot, string memory _initialImageData, string memory _initialName, string memory _initialDescription, address _initialCreator, uint16 _initialRoyalty ) Owned(msg.sender) { enabled = _enabled; merkleRoots[1] = _initialMerkleRoot; imageData[1] = _initialImageData; names[1] = _initialName; descriptions[1] = _initialDescription; mintRoyalties[1] = Structures.RoyaltyReceiver({ creator: _initialCreator, royaltyBasisPoints: _initialRoyalty }); name = "DIRTONCHAIN"; symbol = "DIRTONCHAIN"; } /* solhint-disable quotes */ /// @notice Generates base64 payload for token /// @param tokenId for this specific token /// @return generatedTokenURIBase64 for this specific token function generateTokenURIBase64(uint256 tokenId) public view returns (string memory generatedTokenURIBase64) { generatedTokenURIBase64 = LilBase64.encode( bytes( string.concat( '{"name": "', names[tokenId], '", "description": "', descriptions[tokenId], '", "image": "', imageData[tokenId], '"}' ) ) ); } /* solhint-enable quotes */ /// @notice Mint a token /// @param tokenId of token being minted /// @param proof of mint eligibility function mint(uint256 tokenId, bytes32[] calldata proof) external tokenExists(tokenId) tokenNotYetClaimed(tokenId) mintingEnabled { bytes32 leaf = keccak256(abi.encodePacked(msg.sender)); bool isValidLeaf = MerkleProofLib.verify( proof, merkleRoots[tokenId], leaf ); if (!isValidLeaf) revert NotInMerkle(); mintStatus[uint256(keccak256(abi.encode(msg.sender, tokenId)))] = true; _mint(msg.sender, tokenId, 1, ""); } /// @notice Burn a token /// @param tokenId of token being burned function burn(uint256 tokenId) external hasToken(tokenId, msg.sender) { _burn(msg.sender, tokenId, 1); } /// @notice Gets URI for a specific token /// @param tokenId of token being queried /// @return base64 URI of token being queried function uri(uint256 tokenId) public view override tokenExists(tokenId) returns (string memory) { return string( abi.encodePacked( "data:application/json;base64,", generateTokenURIBase64(tokenId) ) ); } /// @notice Set a new Merkle root for a given token ID /// @param tokenId to get a new or updated Merkle root /// @param _merkleRoot to be used for validating claims function ownerSetMerkleRoot(uint256 tokenId, bytes32 _merkleRoot) public onlyOwner { emit Events.MerkleRootChanged( tokenId, merkleRoots[tokenId], _merkleRoot ); merkleRoots[tokenId] = _merkleRoot; } /// @notice Set new image data for a given token ID /// @param tokenId to get new or updated image data /// @param _imageData to be used function ownerSetImageData(uint256 tokenId, string calldata _imageData) public onlyOwner { emit Events.ImageDataChanged(tokenId, imageData[tokenId], _imageData); imageData[tokenId] = _imageData; } /// @notice Set new name for a given token ID /// @param tokenId to get new or updated name /// @param _name to be used function ownerSetName(uint256 tokenId, string calldata _name) public onlyOwner { emit Events.NameChanged(tokenId, names[tokenId], _name); names[tokenId] = _name; } /// @notice Set new description for a given token ID /// @param tokenId to get new or updated description /// @param _description to be used function ownerSetDescription(uint256 tokenId, string calldata _description) public onlyOwner { emit Events.DescriptionChanged( tokenId, descriptions[tokenId], _description ); descriptions[tokenId] = _description; } /// @notice Update the contract's enabled status /// @param _enabled status for the contract function ownerSetEnabled(bool _enabled) public onlyOwner { emit Events.EnabledChanged(enabled, _enabled); enabled = _enabled; } /// @notice Update the contract's name /// @param _name for the contract function ownerSetName(string calldata _name) public onlyOwner { emit Events.NameChanged(name, _name); name = _name; } /// @notice Update the royalty info for a mint /// @param tokenId to get new or updated royalty info /// @param _creator to get royalty /// @param _royalty amount as percentage function ownerSetRoyaltyInfo( uint256 tokenId, address _creator, uint16 _royalty ) public onlyOwner { Structures.RoyaltyReceiver memory newRoyalty = Structures .RoyaltyReceiver({creator: _creator, royaltyBasisPoints: _royalty}); emit Events.RoyaltyChanged(tokenId, mintRoyalties[tokenId], newRoyalty); mintRoyalties[tokenId] = newRoyalty; } /// @notice Update the contract's symbol /// @param _symbol for the contract function ownerSetSymbol(string calldata _symbol) public onlyOwner { emit Events.SymbolChanged(symbol, _symbol); symbol = _symbol; } function royaltyInfo(uint256 tokenId, uint256 salePrice) public view returns (address receiver, uint256 royaltyAmount) { receiver = mintRoyalties[tokenId].creator; royaltyAmount = ((mintRoyalties[tokenId].royaltyBasisPoints / 100) * salePrice) / 100; } function supportsInterface(bytes4 interfaceId) public pure override returns (bool) { return interfaceId == 0x2a55205a || // ERC165 Interface ID for ERC2981 interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155 interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI } }
// SPDX-License-Identifier: MIT pragma solidity >=0.8.0; /// @notice Gas optimized merkle proof verification library. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/MerkleProofLib.sol) library MerkleProofLib { function verify( bytes32[] calldata proof, bytes32 root, bytes32 leaf ) internal pure returns (bool isValid) { assembly { let computedHash := leaf // The hash starts as the leaf hash. // Initialize data to the offset of the proof in the calldata. let data := proof.offset // Iterate over proof elements to compute root hash. for { // Left shifting by 5 is like multiplying by 32. let end := add(data, shl(5, proof.length)) } lt(data, end) { data := add(data, 32) // Shift 1 word per cycle. } { // Load the current proof element. let loadedData := calldataload(data) // Slot where computedHash should be put in scratch space. // If computedHash > loadedData: slot 32, otherwise: slot 0. let computedHashSlot := shl(5, gt(computedHash, loadedData)) // Store elements to hash contiguously in scratch space. // The xor puts loadedData in whichever slot computedHash is // not occupying, so 0 if computedHashSlot is 32, 32 otherwise. mstore(computedHashSlot, computedHash) mstore(xor(computedHashSlot, 32), loadedData) computedHash := keccak256(0, 64) // Hash both slots of scratch space. } isValid := eq(computedHash, root) // The proof is valid if the roots match. } } }
// SPDX-License-Identifier: MIT pragma solidity >=0.8.0; /// @notice Minimalist and gas efficient standard ERC1155 implementation. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol) abstract contract ERC1155 { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event TransferSingle( address indexed operator, address indexed from, address indexed to, uint256 id, uint256 amount ); event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] amounts ); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); event URI(string value, uint256 indexed id); /*////////////////////////////////////////////////////////////// ERC1155 STORAGE //////////////////////////////////////////////////////////////*/ mapping(address => mapping(uint256 => uint256)) public balanceOf; mapping(address => mapping(address => bool)) public isApprovedForAll; /*////////////////////////////////////////////////////////////// METADATA LOGIC //////////////////////////////////////////////////////////////*/ function uri(uint256 id) public view virtual returns (string memory); /*////////////////////////////////////////////////////////////// ERC1155 LOGIC //////////////////////////////////////////////////////////////*/ function setApprovalForAll(address operator, bool approved) public virtual { isApprovedForAll[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) public virtual { require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED"); balanceOf[from][id] -= amount; balanceOf[to][id] += amount; emit TransferSingle(msg.sender, from, to, id, amount); if (to.code.length != 0) { require( ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data) == ERC1155TokenReceiver.onERC1155Received.selector, "UNSAFE_RECIPIENT" ); } else require(to != address(0), "INVALID_RECIPIENT"); } function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) public virtual { require(ids.length == amounts.length, "LENGTH_MISMATCH"); require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED"); // Storing these outside the loop saves ~15 gas per iteration. uint256 id; uint256 amount; for (uint256 i = 0; i < ids.length; ) { id = ids[i]; amount = amounts[i]; balanceOf[from][id] -= amount; balanceOf[to][id] += amount; // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } emit TransferBatch(msg.sender, from, to, ids, amounts); if (to.code.length != 0) { require( ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data) == ERC1155TokenReceiver.onERC1155BatchReceived.selector, "UNSAFE_RECIPIENT" ); } else require(to != address(0), "INVALID_RECIPIENT"); } function balanceOfBatch(address[] calldata owners, uint256[] calldata ids) public view virtual returns (uint256[] memory balances) { require(owners.length == ids.length, "LENGTH_MISMATCH"); balances = new uint256[](owners.length); // Unchecked because the only math done is incrementing // the array index counter which cannot possibly overflow. unchecked { for (uint256 i = 0; i < owners.length; ++i) { balances[i] = balanceOf[owners[i]][ids[i]]; } } } /*////////////////////////////////////////////////////////////// ERC165 LOGIC //////////////////////////////////////////////////////////////*/ function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { return interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155 interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI } /*////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { balanceOf[to][id] += amount; emit TransferSingle(msg.sender, address(0), to, id, amount); if (to.code.length != 0) { require( ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data) == ERC1155TokenReceiver.onERC1155Received.selector, "UNSAFE_RECIPIENT" ); } else require(to != address(0), "INVALID_RECIPIENT"); } function _batchMint( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < idsLength; ) { balanceOf[to][ids[i]] += amounts[i]; // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } emit TransferBatch(msg.sender, address(0), to, ids, amounts); if (to.code.length != 0) { require( ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data) == ERC1155TokenReceiver.onERC1155BatchReceived.selector, "UNSAFE_RECIPIENT" ); } else require(to != address(0), "INVALID_RECIPIENT"); } function _batchBurn( address from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < idsLength; ) { balanceOf[from][ids[i]] -= amounts[i]; // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } emit TransferBatch(msg.sender, from, address(0), ids, amounts); } function _burn( address from, uint256 id, uint256 amount ) internal virtual { balanceOf[from][id] -= amount; emit TransferSingle(msg.sender, from, address(0), id, amount); } } /// @notice A generic interface for a contract which properly accepts ERC1155 tokens. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol) abstract contract ERC1155TokenReceiver { function onERC1155Received( address, address, uint256, uint256, bytes calldata ) external virtual returns (bytes4) { return ERC1155TokenReceiver.onERC1155Received.selector; } function onERC1155BatchReceived( address, address, uint256[] calldata, uint256[] calldata, bytes calldata ) external virtual returns (bytes4) { return ERC1155TokenReceiver.onERC1155BatchReceived.selector; } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Simple single owner authorization mixin. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/auth/Owned.sol) abstract contract Owned { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event OwnerUpdated(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 OwnerUpdated(address(0), _owner); } /*////////////////////////////////////////////////////////////// OWNERSHIP LOGIC //////////////////////////////////////////////////////////////*/ function setOwner(address newOwner) public virtual onlyOwner { owner = newOwner; emit OwnerUpdated(msg.sender, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.15; /// [MIT License] /// @title LilBase64 /// @notice Provides a function for encoding some bytes in base64 (no decode) /// @author Brecht Devos <[email protected]> library LilBase64 { bytes internal constant TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; /// @notice Encodes some bytes to the base64 representation function encode(bytes memory data) internal pure returns (string memory) { uint256 len = data.length; if (len == 0) return ""; // multiply by 4/3 rounded up uint256 encodedLen = 4 * ((len + 2) / 3); // Add some extra buffer at the end bytes memory result = new bytes(encodedLen + 32); bytes memory table = TABLE; /* solhint-disable no-inline-assembly, no-empty-blocks */ assembly { let tablePtr := add(table, 1) let resultPtr := add(result, 32) for { let i := 0 } lt(i, len) { } { i := add(i, 3) let input := and(mload(add(data, i)), 0xffffff) let out := mload(add(tablePtr, and(shr(18, input), 0x3F))) out := shl(8, out) out := add( out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF) ) out := shl(8, out) out := add( out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF) ) out := shl(8, out) out := add( out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF) ) out := shl(224, out) mstore(resultPtr, out) resultPtr := add(resultPtr, 4) } switch mod(len, 3) case 1 { mstore(sub(resultPtr, 2), shl(240, 0x3d3d)) } case 2 { mstore(sub(resultPtr, 1), shl(248, 0x3d)) } mstore(result, encodedLen) } /* solhint-enable no-inline-assembly, no-empty-blocks */ return string(result); } }
{ "remappings": [ "base64-sol/=packages/contracts/lib/base64/", "base64/=packages/contracts/lib/base64/", "ds-test/=packages/contracts/lib/solmate/lib/ds-test/src/", "forge-std/=packages/contracts/lib/forge-std/src/", "solmate/=packages/contracts/lib/solmate/src/" ], "optimizer": { "enabled": true, "runs": 1000000 }, "metadata": { "bytecodeHash": "none" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bytes32","name":"_initialMerkleRoot","type":"bytes32"},{"internalType":"string","name":"_initialImageData","type":"string"},{"internalType":"string","name":"_initialName","type":"string"},{"internalType":"string","name":"_initialDescription","type":"string"},{"internalType":"address","name":"_initialCreator","type":"address"},{"internalType":"uint16","name":"_initialRoyalty","type":"uint16"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"MintingNotEnabled","type":"error"},{"inputs":[],"name":"NotAllowedToBurn","type":"error"},{"inputs":[],"name":"NotAllowedToMintAgain","type":"error"},{"inputs":[],"name":"NotInMerkle","type":"error"},{"inputs":[],"name":"TokenDoesNotExist","type":"error"},{"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":"OwnerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"descriptions","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"generateTokenURIBase64","outputs":[{"internalType":"string","name":"generatedTokenURIBase64","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"imageData","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"uint256","name":"","type":"uint256"}],"name":"merkleRoots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"mintRoyalties","outputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint16","name":"royaltyBasisPoints","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"mintStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"names","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"},{"internalType":"string","name":"_description","type":"string"}],"name":"ownerSetDescription","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"ownerSetEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"_imageData","type":"string"}],"name":"ownerSetImageData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"ownerSetMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"_name","type":"string"}],"name":"ownerSetName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"}],"name":"ownerSetName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint16","name":"_royalty","type":"uint16"}],"name":"ownerSetRoyaltyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_symbol","type":"string"}],"name":"ownerSetSymbol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","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":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","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":"uint256","name":"amount","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":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620035cf380380620035cf83398101604081905262000034916200032c565b600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a3506005805460ff191688151517905560016000527f3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a3186905560076020527fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828620000de868262000495565b50600160005260096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a3662000116858262000495565b50600160005260086020527fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f6200014e848262000495565b506040805180820182526001600160a01b03808516825261ffff80851660208085019182526001600052600b80825294517f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf80549351909416600160a01b026001600160b01b031990931694169390931717905582518084019093529082526a2224a92a27a721a420a4a760a91b90820152600390620001ef908262000495565b5060408051808201909152600b81526a2224a92a27a721a420a4a760a91b602082015260049062000221908262000495565b505050505050505062000561565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200025757600080fd5b81516001600160401b03808211156200027457620002746200022f565b604051601f8301601f19908116603f011681019082821181831017156200029f576200029f6200022f565b81604052838152602092508683858801011115620002bc57600080fd5b600091505b83821015620002e05785820183015181830184015290820190620002c1565b83821115620002f25760008385830101525b9695505050505050565b80516001600160a01b03811681146200031457600080fd5b919050565b805161ffff811681146200031457600080fd5b600080600080600080600060e0888a0312156200034857600080fd5b875180151581146200035957600080fd5b602089015160408a015191985096506001600160401b03808211156200037e57600080fd5b6200038c8b838c0162000245565b965060608a0151915080821115620003a357600080fd5b620003b18b838c0162000245565b955060808a0151915080821115620003c857600080fd5b50620003d78a828b0162000245565b935050620003e860a08901620002fc565b9150620003f860c0890162000319565b905092959891949750929550565b600181811c908216806200041b57607f821691505b6020821081036200043c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200049057600081815260208120601f850160051c810160208610156200046b5750805b601f850160051c820191505b818110156200048c5782815560010162000477565b5050505b505050565b81516001600160401b03811115620004b157620004b16200022f565b620004c981620004c2845462000406565b8462000442565b602080601f831160018114620005015760008415620004e85750858301515b600019600386901b1c1916600185901b1785556200048c565b600085815260208120601f198616915b82811015620005325788860151825594840194600190910190840162000511565b5085821015620005515787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61305e80620005716000396000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c806355cdccc61161010f578063da3a222f116100a2578063eef0c77911610071578063eef0c779146104bb578063f242432a146104ce578063fbc1fbe7146104e1578063ff7473fc146104f457600080fd5b8063da3a222f14610454578063e6f859e714610467578063e985e9c51461047a578063eec8d84d146104a857600080fd5b806395d89b41116100de57806395d89b4114610413578063a22cb4651461041b578063ba41b0c61461042e578063ce1c95ee1461044157600080fd5b806355cdccc61461038857806371c5ecb11461039b578063824a72f7146103bb5780638da5cb5b146103ce57600080fd5b8063238dafe0116101875780633f1cdbdf116101565780633f1cdbdf1461031f57806342966c68146103425780634622ab03146103555780634e1273f41461036857600080fd5b8063238dafe0146102ad5780632a55205a146102ba5780632eb2c2d6146102f957806336730c1c1461030c57600080fd5b806306fdde03116101c357806306fdde031461026a57806309ba02e3146102725780630e89341c1461028757806313af40351461029a57600080fd5b8062fdd58e146101e957806301ffc9a714610227578063061ba2f11461024a575b600080fd5b6102146101f7366004612324565b600160209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61023a61023536600461237f565b610577565b604051901515815260200161021e565b61025d6102583660046123a3565b6106a8565b60405161021e9190612432565b61025d610742565b610285610280366004612445565b61074f565b005b61025d6102953660046123a3565b6108ef565b6102856102a836600461248c565b61096c565b60055461023a9060ff1681565b6102cd6102c83660046124a7565b610a5d565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520161021e565b610285610307366004612557565b610ad2565b61028561031a366004612612565b610f2a565b61023a61032d3660046123a3565b600a6020526000908152604090205460ff1681565b6102856103503660046123a3565b610ff9565b61025d6103633660046123a3565b61105a565b61037b610376366004612654565b611073565b60405161021e91906126c0565b6102856103963660046124a7565b6111eb565b6102146103a93660046123a3565b60066020526000908152604090205481565b6102856103c9366004612704565b6112cd565b6000546103ee9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021e565b61025d6113b9565b610285610429366004612760565b6113c6565b61028561043c36600461278a565b61145d565b61028561044f366004612704565b611681565b6102856104623660046127c9565b611767565b61025d6104753660046123a3565b61185c565b61023a6104883660046127e4565b600260209081526000928352604080842090915290825290205460ff1681565b6102856104b6366004612704565b611875565b61025d6104c93660046123a3565b61195b565b6102856104dc36600461280e565b6119a4565b6102856104ef366004612612565b611d11565b6105486105023660046123a3565b600b6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900461ffff1682565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835261ffff90911660208301520161021e565b60007f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061060a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061065657507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806106a257507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600760205260009081526040902080546106c190612886565b80601f01602080910402602001604051908101604052809291908181526020018280546106ed90612886565b801561073a5780601f1061070f5761010080835404028352916020019161073a565b820191906000526020600020905b81548152906001019060200180831161071d57829003601f168201915b505050505081565b600380546106c190612886565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60408051808201825273ffffffffffffffffffffffffffffffffffffffff848116825261ffff84811660208085019182526000898152600b825286902086518a815290548086169282019290925260a091821c841696810196909652845190931660608601525116608084015290917fe18786ec8c9119144e08345df5f8009d5f113a8e2ba24623b2bdaaa3f4486fe8910160405180910390a16000938452600b6020908152604090942081518154959092015161ffff1674010000000000000000000000000000000000000000027fffffffffffffffffffff0000000000000000000000000000000000000000000090951673ffffffffffffffffffffffffffffffffffffffff90921691909117939093179092555050565b6000818152600660205260408120546060918391900361093b576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109448361195b565b60405160200161095491906128d3565b60405160208183030381529060405291505b50919050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b6000828152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff811691906064908490610ab190839074010000000000000000000000000000000000000000900461ffff16612976565b61ffff16610abf9190612997565b610ac991906129d4565b90509250929050565b848314610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064016107cc565b3373ffffffffffffffffffffffffffffffffffffffff89161480610b8f575073ffffffffffffffffffffffffffffffffffffffff8816600090815260026020908152604080832033845290915290205460ff165b610bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016107cc565b60008060005b87811015610cce57888882818110610c1557610c156129e8565b905060200201359250868682818110610c3057610c306129e8565b73ffffffffffffffffffffffffffffffffffffffff8e16600090815260016020908152604080832089845282528220805493909102949094013595508593925090610c7c908490612a17565b909155505073ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020908152604080832086845290915281208054849290610cc1908490612a2e565b9091555050600101610bfb565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b604051610d499493929190612a95565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15610ea1576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c8190610dd09033908f908e908e908e908e908e908e90600401612b10565b6020604051808303816000875af1158015610def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e139190612b81565b7fffffffff000000000000000000000000000000000000000000000000000000001614610e9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016107cc565b610f1e565b73ffffffffffffffffffffffffffffffffffffffff8916610f1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016107cc565b50505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b7fd7ad744cc76ebad190995130eec8ba506b3605612d23b5b9cef8e27f14d138b460048383604051610fdf93929190612c39565b60405180910390a16004610ff4828483612cde565b505050565b3360008181526001602090815260408083208584529091528120548392910361104e576040517f225e797800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ff433846001611ddb565b600960205260009081526040902080546106c190612886565b60608382146110de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064016107cc565b8367ffffffffffffffff8111156110f7576110f7612c69565b604051908082528060200260200182016040528015611120578160200160208202803683370190505b50905060005b848110156111e25760016000878784818110611144576111446129e8565b9050602002016020810190611159919061248c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008585848181106111a7576111a76129e8565b905060200201358152602001908152602001600020548282815181106111cf576111cf6129e8565b6020908102919091010152600101611126565b50949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461126c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b600082815260066020908152604091829020548251858152918201529081018290527f04c9029ff6e1c93c237a73a6215b410b7d5da15081897c70baa40b4b70c9c5ba9060600160405180910390a160009182526006602052604090912055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461134e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b6000838152600960205260409081902090517fd03378e710a4f526d1030d6dd70e5c0999dcaf843ca8a83aadcb0946a251de8e916113929186919086908690612df9565b60405180910390a160008381526009602052604090206113b3828483612cde565b50505050565b600480546106c190612886565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000838152600660205260408120548491036114a5576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805133602080830191909152818301879052825180830384018152606090920183528151918101919091206000908152600a9091522054849060ff161561151a576040517ff5e79fe200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055460ff16611556576040517f3990ac6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602082015260009060340160405160208183030381529060405280519060200120905060006115c38686600660008b81526020019081526020016000205485611e7b565b9050806115fc576040517f8a585be200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080513360208083018290528284018b9052835180840385018152606084018086528151918301919091206000908152600a90925284822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155608090940190945283526116789290918a91611ebb565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611702576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b6000838152600760205260409081902090517fe05159d70cd0a8c0a2b560a013f275d63402060866a4c7d88939a171af3fa47a916117469186919086908690612df9565b60405180910390a160008381526007602052604090206113b3828483612cde565b60005473ffffffffffffffffffffffffffffffffffffffff1633146117e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b6005546040805160ff9092161515825282151560208301527f08aed1f06296396343441adcceab9d7976ec03393a50caa84e62c1f50c330141910160405180910390a1600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600860205260009081526040902080546106c190612886565b60005473ffffffffffffffffffffffffffffffffffffffff1633146118f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b6000838152600860205260409081902090517fbb899218462f97dbf31b80fa02f799d474b4e4674119081af62a1fcc938274339161193a9186919086908690612df9565b60405180910390a160008381526008602052604090206113b3828483612cde565b600081815260096020908152604080832060088352818420600784529382902091516060946106a29461199094919201612eb6565b60405160208183030381529060405261211e565b3373ffffffffffffffffffffffffffffffffffffffff871614806119f8575073ffffffffffffffffffffffffffffffffffffffff8616600090815260026020908152604080832033845290915290205460ff165b611a5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016107cc565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260016020908152604080832087845290915281208054859290611a9e908490612a17565b909155505073ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832087845290915281208054859290611ae3908490612a2e565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15611c8c576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e6190611bbb9033908b908a908a908a908a90600401612f7a565b6020604051808303816000875af1158015611bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfe9190612b81565b7fffffffff000000000000000000000000000000000000000000000000000000001614611c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016107cc565b611d09565b73ffffffffffffffffffffffffffffffffffffffff8516611d09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016107cc565b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b7f6c20b91d1723b78732eba64ff11ebd7966a6e4af568a00fa4f6b72c20f58b02a60038383604051611dc693929190612c39565b60405180910390a16003610ff4828483612cde565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020908152604080832085845290915281208054839290611e1b908490612a17565b9091555050604080518381526020810183905260009173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b600081858560051b81015b80821015611eae57813580841160051b93845260209384185260406000209290910190611e86565b5050909214949350505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832086845290915281208054849290611efb908490612a2e565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b156120a1576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e6190611fd0903390600090899089908990600401612fcc565b6020604051808303816000875af1158015611fef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120139190612b81565b7fffffffff00000000000000000000000000000000000000000000000000000000161461209c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016107cc565b6113b3565b73ffffffffffffffffffffffffffffffffffffffff84166113b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016107cc565b80516060906000819003612142575050604080516020810190915260008152919050565b60006003612151836002612a2e565b61215b91906129d4565b612166906004612997565b90506000612175826020612a2e565b67ffffffffffffffff81111561218d5761218d612c69565b6040519080825280601f01601f1916602001820160405280156121b7576020820181803683370190505b5090506000604051806060016040528060408152602001613012604091399050600181016020830160005b86811015612243576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b8352600490920191016121e2565b50600386066001811461225d57600281146122a7576122ed565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8301526122ed565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b505050918152949350505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461231f57600080fd5b919050565b6000806040838503121561233757600080fd5b612340836122fb565b946020939093013593505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461237c57600080fd5b50565b60006020828403121561239157600080fd5b813561239c8161234e565b9392505050565b6000602082840312156123b557600080fd5b5035919050565b60005b838110156123d75781810151838201526020016123bf565b838111156113b35750506000910152565b600081518084526124008160208601602086016123bc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061239c60208301846123e8565b60008060006060848603121561245a57600080fd5b8335925061246a602085016122fb565b9150604084013561ffff8116811461248157600080fd5b809150509250925092565b60006020828403121561249e57600080fd5b61239c826122fb565b600080604083850312156124ba57600080fd5b50508035926020909101359150565b60008083601f8401126124db57600080fd5b50813567ffffffffffffffff8111156124f357600080fd5b6020830191508360208260051b850101111561250e57600080fd5b9250929050565b60008083601f84011261252757600080fd5b50813567ffffffffffffffff81111561253f57600080fd5b60208301915083602082850101111561250e57600080fd5b60008060008060008060008060a0898b03121561257357600080fd5b61257c896122fb565b975061258a60208a016122fb565b9650604089013567ffffffffffffffff808211156125a757600080fd5b6125b38c838d016124c9565b909850965060608b01359150808211156125cc57600080fd5b6125d88c838d016124c9565b909650945060808b01359150808211156125f157600080fd5b506125fe8b828c01612515565b999c989b5096995094979396929594505050565b6000806020838503121561262557600080fd5b823567ffffffffffffffff81111561263c57600080fd5b61264885828601612515565b90969095509350505050565b6000806000806040858703121561266a57600080fd5b843567ffffffffffffffff8082111561268257600080fd5b61268e888389016124c9565b909650945060208701359150808211156126a757600080fd5b506126b4878288016124c9565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156126f8578351835292840192918401916001016126dc565b50909695505050505050565b60008060006040848603121561271957600080fd5b83359250602084013567ffffffffffffffff81111561273757600080fd5b61274386828701612515565b9497909650939450505050565b8035801515811461231f57600080fd5b6000806040838503121561277357600080fd5b61277c836122fb565b9150610ac960208401612750565b60008060006040848603121561279f57600080fd5b83359250602084013567ffffffffffffffff8111156127bd57600080fd5b612743868287016124c9565b6000602082840312156127db57600080fd5b61239c82612750565b600080604083850312156127f757600080fd5b612800836122fb565b9150610ac9602084016122fb565b60008060008060008060a0878903121561282757600080fd5b612830876122fb565b955061283e602088016122fb565b94506040870135935060608701359250608087013567ffffffffffffffff81111561286857600080fd5b61287489828a01612515565b979a9699509497509295939492505050565b600181811c9082168061289a57607f821691505b602082108103610966577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161290b81601d8501602087016123bc565b91909101601d0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff8084168061298b5761298b612918565b92169190910492915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129cf576129cf612947565b500290565b6000826129e3576129e3612918565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082821015612a2957612a29612947565b500390565b60008219821115612a4157612a41612947565b500190565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612a7857600080fd5b8260051b8083602087013760009401602001938452509192915050565b604081526000612aa9604083018688612a46565b8281036020840152612abc818587612a46565b979650505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a06040830152612b4a60a08301888a612a46565b8281036060840152612b5d818789612a46565b90508281036080840152612b72818587612ac7565b9b9a5050505050505050505050565b600060208284031215612b9357600080fd5b815161239c8161234e565b60008154612bab81612886565b808552602060018381168015612bc85760018114612c0057612c2e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838901528284151560051b8901019550612c2e565b866000528260002060005b85811015612c265781548a8201860152908301908401612c0b565b890184019650505b505050505092915050565b604081526000612c4c6040830186612b9e565b8281036020840152612c5f818587612ac7565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f821115610ff457600081815260208120601f850160051c81016020861015612cbf5750805b601f850160051c820191505b81811015611d0957828155600101612ccb565b67ffffffffffffffff831115612cf657612cf6612c69565b612d0a83612d048354612886565b83612c98565b6000601f841160018114612d5c5760008515612d265750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355612df2565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015612dab5786850135825560209485019460019092019101612d8b565b5086821015612de6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b848152606060208201526000612e126060830186612b9e565b8281036040840152612abc818587612ac7565b60008154612e3281612886565b60018281168015612e4a5760018114612e7d57612eac565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612eac565b8560005260208060002060005b85811015612ea35781548a820152908401908201612e8a565b50505082870194505b5050505092915050565b7f7b226e616d65223a20220000000000000000000000000000000000000000000081526000612ee8600a830186612e25565b7f222c20226465736372697074696f6e223a2022000000000000000000000000008152612f186013820186612e25565b90507f222c2022696d616765223a2022000000000000000000000000000000000000008152612f4a600d820185612e25565b7f227d00000000000000000000000000000000000000000000000000000000000081526002019695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a06080830152612fc060a083018486612ac7565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152612abc60a08301846123e856fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300080f000a0000000000000000000000000000000000000000000000000000000000000001ea8c0c04021f9d39fd5eb0ae11eadae6f293566dddb593bbfacc3a820034eac900000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000058407666cb296e79d69aa7b1e676a7b4f8bc039f00000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000042697066733a2f2f6261667962656963666b377a783676726969757636736e6e3276666875627637366a6c6f62656762376f626a336c376663727574357035726e6165000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001153657074656d6265722053686f7765727300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001455c2253657074656d6265722053686f776572735c22206973206120446972742044414f20636f6d6d697373696f6e2066726f6d204e6577204f726c65616e732d6261736564206172746973742c20536563726574736f7765722e2044726177696e67206f6e207468652076697375616c20766f636162756c61727920686520646576656c6f70656420666f722074686520312c313131206e6f6e2d66756e6769626c6520666c6f77657273206b6e6f776e20617320426c6f6f6d6572732c20536563726574736f77657220696d6167696e657320446972747920696e20746865206d69647374206f6620612053657074656d626572207261696e73746f726d2c20616e2065786f74696320666c6f77657220626c6f73736f6d696e672066726f6d2068697320666f7265686561642e205768617420636f756c64206265206265747465723f000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101e45760003560e01c806355cdccc61161010f578063da3a222f116100a2578063eef0c77911610071578063eef0c779146104bb578063f242432a146104ce578063fbc1fbe7146104e1578063ff7473fc146104f457600080fd5b8063da3a222f14610454578063e6f859e714610467578063e985e9c51461047a578063eec8d84d146104a857600080fd5b806395d89b41116100de57806395d89b4114610413578063a22cb4651461041b578063ba41b0c61461042e578063ce1c95ee1461044157600080fd5b806355cdccc61461038857806371c5ecb11461039b578063824a72f7146103bb5780638da5cb5b146103ce57600080fd5b8063238dafe0116101875780633f1cdbdf116101565780633f1cdbdf1461031f57806342966c68146103425780634622ab03146103555780634e1273f41461036857600080fd5b8063238dafe0146102ad5780632a55205a146102ba5780632eb2c2d6146102f957806336730c1c1461030c57600080fd5b806306fdde03116101c357806306fdde031461026a57806309ba02e3146102725780630e89341c1461028757806313af40351461029a57600080fd5b8062fdd58e146101e957806301ffc9a714610227578063061ba2f11461024a575b600080fd5b6102146101f7366004612324565b600160209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61023a61023536600461237f565b610577565b604051901515815260200161021e565b61025d6102583660046123a3565b6106a8565b60405161021e9190612432565b61025d610742565b610285610280366004612445565b61074f565b005b61025d6102953660046123a3565b6108ef565b6102856102a836600461248c565b61096c565b60055461023a9060ff1681565b6102cd6102c83660046124a7565b610a5d565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520161021e565b610285610307366004612557565b610ad2565b61028561031a366004612612565b610f2a565b61023a61032d3660046123a3565b600a6020526000908152604090205460ff1681565b6102856103503660046123a3565b610ff9565b61025d6103633660046123a3565b61105a565b61037b610376366004612654565b611073565b60405161021e91906126c0565b6102856103963660046124a7565b6111eb565b6102146103a93660046123a3565b60066020526000908152604090205481565b6102856103c9366004612704565b6112cd565b6000546103ee9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021e565b61025d6113b9565b610285610429366004612760565b6113c6565b61028561043c36600461278a565b61145d565b61028561044f366004612704565b611681565b6102856104623660046127c9565b611767565b61025d6104753660046123a3565b61185c565b61023a6104883660046127e4565b600260209081526000928352604080842090915290825290205460ff1681565b6102856104b6366004612704565b611875565b61025d6104c93660046123a3565b61195b565b6102856104dc36600461280e565b6119a4565b6102856104ef366004612612565b611d11565b6105486105023660046123a3565b600b6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900461ffff1682565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835261ffff90911660208301520161021e565b60007f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061060a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061065657507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806106a257507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600760205260009081526040902080546106c190612886565b80601f01602080910402602001604051908101604052809291908181526020018280546106ed90612886565b801561073a5780601f1061070f5761010080835404028352916020019161073a565b820191906000526020600020905b81548152906001019060200180831161071d57829003601f168201915b505050505081565b600380546106c190612886565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60408051808201825273ffffffffffffffffffffffffffffffffffffffff848116825261ffff84811660208085019182526000898152600b825286902086518a815290548086169282019290925260a091821c841696810196909652845190931660608601525116608084015290917fe18786ec8c9119144e08345df5f8009d5f113a8e2ba24623b2bdaaa3f4486fe8910160405180910390a16000938452600b6020908152604090942081518154959092015161ffff1674010000000000000000000000000000000000000000027fffffffffffffffffffff0000000000000000000000000000000000000000000090951673ffffffffffffffffffffffffffffffffffffffff90921691909117939093179092555050565b6000818152600660205260408120546060918391900361093b576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109448361195b565b60405160200161095491906128d3565b60405160208183030381529060405291505b50919050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b6000828152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff811691906064908490610ab190839074010000000000000000000000000000000000000000900461ffff16612976565b61ffff16610abf9190612997565b610ac991906129d4565b90509250929050565b848314610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064016107cc565b3373ffffffffffffffffffffffffffffffffffffffff89161480610b8f575073ffffffffffffffffffffffffffffffffffffffff8816600090815260026020908152604080832033845290915290205460ff165b610bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016107cc565b60008060005b87811015610cce57888882818110610c1557610c156129e8565b905060200201359250868682818110610c3057610c306129e8565b73ffffffffffffffffffffffffffffffffffffffff8e16600090815260016020908152604080832089845282528220805493909102949094013595508593925090610c7c908490612a17565b909155505073ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020908152604080832086845290915281208054849290610cc1908490612a2e565b9091555050600101610bfb565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b604051610d499493929190612a95565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15610ea1576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c8190610dd09033908f908e908e908e908e908e908e90600401612b10565b6020604051808303816000875af1158015610def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e139190612b81565b7fffffffff000000000000000000000000000000000000000000000000000000001614610e9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016107cc565b610f1e565b73ffffffffffffffffffffffffffffffffffffffff8916610f1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016107cc565b50505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b7fd7ad744cc76ebad190995130eec8ba506b3605612d23b5b9cef8e27f14d138b460048383604051610fdf93929190612c39565b60405180910390a16004610ff4828483612cde565b505050565b3360008181526001602090815260408083208584529091528120548392910361104e576040517f225e797800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ff433846001611ddb565b600960205260009081526040902080546106c190612886565b60608382146110de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064016107cc565b8367ffffffffffffffff8111156110f7576110f7612c69565b604051908082528060200260200182016040528015611120578160200160208202803683370190505b50905060005b848110156111e25760016000878784818110611144576111446129e8565b9050602002016020810190611159919061248c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008585848181106111a7576111a76129e8565b905060200201358152602001908152602001600020548282815181106111cf576111cf6129e8565b6020908102919091010152600101611126565b50949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461126c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b600082815260066020908152604091829020548251858152918201529081018290527f04c9029ff6e1c93c237a73a6215b410b7d5da15081897c70baa40b4b70c9c5ba9060600160405180910390a160009182526006602052604090912055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461134e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b6000838152600960205260409081902090517fd03378e710a4f526d1030d6dd70e5c0999dcaf843ca8a83aadcb0946a251de8e916113929186919086908690612df9565b60405180910390a160008381526009602052604090206113b3828483612cde565b50505050565b600480546106c190612886565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000838152600660205260408120548491036114a5576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805133602080830191909152818301879052825180830384018152606090920183528151918101919091206000908152600a9091522054849060ff161561151a576040517ff5e79fe200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055460ff16611556576040517f3990ac6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602082015260009060340160405160208183030381529060405280519060200120905060006115c38686600660008b81526020019081526020016000205485611e7b565b9050806115fc576040517f8a585be200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080513360208083018290528284018b9052835180840385018152606084018086528151918301919091206000908152600a90925284822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155608090940190945283526116789290918a91611ebb565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611702576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b6000838152600760205260409081902090517fe05159d70cd0a8c0a2b560a013f275d63402060866a4c7d88939a171af3fa47a916117469186919086908690612df9565b60405180910390a160008381526007602052604090206113b3828483612cde565b60005473ffffffffffffffffffffffffffffffffffffffff1633146117e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b6005546040805160ff9092161515825282151560208301527f08aed1f06296396343441adcceab9d7976ec03393a50caa84e62c1f50c330141910160405180910390a1600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600860205260009081526040902080546106c190612886565b60005473ffffffffffffffffffffffffffffffffffffffff1633146118f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b6000838152600860205260409081902090517fbb899218462f97dbf31b80fa02f799d474b4e4674119081af62a1fcc938274339161193a9186919086908690612df9565b60405180910390a160008381526008602052604090206113b3828483612cde565b600081815260096020908152604080832060088352818420600784529382902091516060946106a29461199094919201612eb6565b60405160208183030381529060405261211e565b3373ffffffffffffffffffffffffffffffffffffffff871614806119f8575073ffffffffffffffffffffffffffffffffffffffff8616600090815260026020908152604080832033845290915290205460ff165b611a5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016107cc565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260016020908152604080832087845290915281208054859290611a9e908490612a17565b909155505073ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832087845290915281208054859290611ae3908490612a2e565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15611c8c576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e6190611bbb9033908b908a908a908a908a90600401612f7a565b6020604051808303816000875af1158015611bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfe9190612b81565b7fffffffff000000000000000000000000000000000000000000000000000000001614611c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016107cc565b611d09565b73ffffffffffffffffffffffffffffffffffffffff8516611d09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016107cc565b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107cc565b7f6c20b91d1723b78732eba64ff11ebd7966a6e4af568a00fa4f6b72c20f58b02a60038383604051611dc693929190612c39565b60405180910390a16003610ff4828483612cde565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020908152604080832085845290915281208054839290611e1b908490612a17565b9091555050604080518381526020810183905260009173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b600081858560051b81015b80821015611eae57813580841160051b93845260209384185260406000209290910190611e86565b5050909214949350505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832086845290915281208054849290611efb908490612a2e565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b156120a1576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e6190611fd0903390600090899089908990600401612fcc565b6020604051808303816000875af1158015611fef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120139190612b81565b7fffffffff00000000000000000000000000000000000000000000000000000000161461209c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016107cc565b6113b3565b73ffffffffffffffffffffffffffffffffffffffff84166113b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016107cc565b80516060906000819003612142575050604080516020810190915260008152919050565b60006003612151836002612a2e565b61215b91906129d4565b612166906004612997565b90506000612175826020612a2e565b67ffffffffffffffff81111561218d5761218d612c69565b6040519080825280601f01601f1916602001820160405280156121b7576020820181803683370190505b5090506000604051806060016040528060408152602001613012604091399050600181016020830160005b86811015612243576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b8352600490920191016121e2565b50600386066001811461225d57600281146122a7576122ed565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8301526122ed565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b505050918152949350505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461231f57600080fd5b919050565b6000806040838503121561233757600080fd5b612340836122fb565b946020939093013593505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461237c57600080fd5b50565b60006020828403121561239157600080fd5b813561239c8161234e565b9392505050565b6000602082840312156123b557600080fd5b5035919050565b60005b838110156123d75781810151838201526020016123bf565b838111156113b35750506000910152565b600081518084526124008160208601602086016123bc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061239c60208301846123e8565b60008060006060848603121561245a57600080fd5b8335925061246a602085016122fb565b9150604084013561ffff8116811461248157600080fd5b809150509250925092565b60006020828403121561249e57600080fd5b61239c826122fb565b600080604083850312156124ba57600080fd5b50508035926020909101359150565b60008083601f8401126124db57600080fd5b50813567ffffffffffffffff8111156124f357600080fd5b6020830191508360208260051b850101111561250e57600080fd5b9250929050565b60008083601f84011261252757600080fd5b50813567ffffffffffffffff81111561253f57600080fd5b60208301915083602082850101111561250e57600080fd5b60008060008060008060008060a0898b03121561257357600080fd5b61257c896122fb565b975061258a60208a016122fb565b9650604089013567ffffffffffffffff808211156125a757600080fd5b6125b38c838d016124c9565b909850965060608b01359150808211156125cc57600080fd5b6125d88c838d016124c9565b909650945060808b01359150808211156125f157600080fd5b506125fe8b828c01612515565b999c989b5096995094979396929594505050565b6000806020838503121561262557600080fd5b823567ffffffffffffffff81111561263c57600080fd5b61264885828601612515565b90969095509350505050565b6000806000806040858703121561266a57600080fd5b843567ffffffffffffffff8082111561268257600080fd5b61268e888389016124c9565b909650945060208701359150808211156126a757600080fd5b506126b4878288016124c9565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156126f8578351835292840192918401916001016126dc565b50909695505050505050565b60008060006040848603121561271957600080fd5b83359250602084013567ffffffffffffffff81111561273757600080fd5b61274386828701612515565b9497909650939450505050565b8035801515811461231f57600080fd5b6000806040838503121561277357600080fd5b61277c836122fb565b9150610ac960208401612750565b60008060006040848603121561279f57600080fd5b83359250602084013567ffffffffffffffff8111156127bd57600080fd5b612743868287016124c9565b6000602082840312156127db57600080fd5b61239c82612750565b600080604083850312156127f757600080fd5b612800836122fb565b9150610ac9602084016122fb565b60008060008060008060a0878903121561282757600080fd5b612830876122fb565b955061283e602088016122fb565b94506040870135935060608701359250608087013567ffffffffffffffff81111561286857600080fd5b61287489828a01612515565b979a9699509497509295939492505050565b600181811c9082168061289a57607f821691505b602082108103610966577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161290b81601d8501602087016123bc565b91909101601d0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff8084168061298b5761298b612918565b92169190910492915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129cf576129cf612947565b500290565b6000826129e3576129e3612918565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082821015612a2957612a29612947565b500390565b60008219821115612a4157612a41612947565b500190565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612a7857600080fd5b8260051b8083602087013760009401602001938452509192915050565b604081526000612aa9604083018688612a46565b8281036020840152612abc818587612a46565b979650505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a06040830152612b4a60a08301888a612a46565b8281036060840152612b5d818789612a46565b90508281036080840152612b72818587612ac7565b9b9a5050505050505050505050565b600060208284031215612b9357600080fd5b815161239c8161234e565b60008154612bab81612886565b808552602060018381168015612bc85760018114612c0057612c2e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838901528284151560051b8901019550612c2e565b866000528260002060005b85811015612c265781548a8201860152908301908401612c0b565b890184019650505b505050505092915050565b604081526000612c4c6040830186612b9e565b8281036020840152612c5f818587612ac7565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f821115610ff457600081815260208120601f850160051c81016020861015612cbf5750805b601f850160051c820191505b81811015611d0957828155600101612ccb565b67ffffffffffffffff831115612cf657612cf6612c69565b612d0a83612d048354612886565b83612c98565b6000601f841160018114612d5c5760008515612d265750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355612df2565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015612dab5786850135825560209485019460019092019101612d8b565b5086821015612de6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b848152606060208201526000612e126060830186612b9e565b8281036040840152612abc818587612ac7565b60008154612e3281612886565b60018281168015612e4a5760018114612e7d57612eac565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612eac565b8560005260208060002060005b85811015612ea35781548a820152908401908201612e8a565b50505082870194505b5050505092915050565b7f7b226e616d65223a20220000000000000000000000000000000000000000000081526000612ee8600a830186612e25565b7f222c20226465736372697074696f6e223a2022000000000000000000000000008152612f186013820186612e25565b90507f222c2022696d616765223a2022000000000000000000000000000000000000008152612f4a600d820185612e25565b7f227d00000000000000000000000000000000000000000000000000000000000081526002019695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a06080830152612fc060a083018486612ac7565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152612abc60a08301846123e856fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300080f000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000001ea8c0c04021f9d39fd5eb0ae11eadae6f293566dddb593bbfacc3a820034eac900000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000058407666cb296e79d69aa7b1e676a7b4f8bc039f00000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000042697066733a2f2f6261667962656963666b377a783676726969757636736e6e3276666875627637366a6c6f62656762376f626a336c376663727574357035726e6165000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001153657074656d6265722053686f7765727300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001455c2253657074656d6265722053686f776572735c22206973206120446972742044414f20636f6d6d697373696f6e2066726f6d204e6577204f726c65616e732d6261736564206172746973742c20536563726574736f7765722e2044726177696e67206f6e207468652076697375616c20766f636162756c61727920686520646576656c6f70656420666f722074686520312c313131206e6f6e2d66756e6769626c6520666c6f77657273206b6e6f776e20617320426c6f6f6d6572732c20536563726574736f77657220696d6167696e657320446972747920696e20746865206d69647374206f6620612053657074656d626572207261696e73746f726d2c20616e2065786f74696320666c6f77657220626c6f73736f6d696e672066726f6d2068697320666f7265686561642e205768617420636f756c64206265206265747465723f000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _enabled (bool): True
Arg [1] : _initialMerkleRoot (bytes32): 0xea8c0c04021f9d39fd5eb0ae11eadae6f293566dddb593bbfacc3a820034eac9
Arg [2] : _initialImageData (string): ipfs://bafybeicfk7zx6vriiuv6snn2vfhubv76jlobegb7obj3l7fcrut5p5rnae
Arg [3] : _initialName (string): September Showers
Arg [4] : _initialDescription (string): \"September Showers\" is a Dirt DAO commission from New Orleans-based artist, Secretsower. Drawing on the visual vocabulary he developed for the 1,111 non-fungible flowers known as Bloomers, Secretsower imagines Dirty in the midst of a September rainstorm, an exotic flower blossoming from his forehead. What could be better?
Arg [5] : _initialCreator (address): 0x58407666Cb296E79D69Aa7B1E676a7b4F8Bc039F
Arg [6] : _initialRoyalty (uint16): 1000
-----Encoded View---------------
25 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [1] : ea8c0c04021f9d39fd5eb0ae11eadae6f293566dddb593bbfacc3a820034eac9
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [4] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [5] : 00000000000000000000000058407666cb296e79d69aa7b1e676a7b4f8bc039f
Arg [6] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000042
Arg [8] : 697066733a2f2f6261667962656963666b377a783676726969757636736e6e32
Arg [9] : 76666875627637366a6c6f62656762376f626a336c376663727574357035726e
Arg [10] : 6165000000000000000000000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000011
Arg [12] : 53657074656d6265722053686f77657273000000000000000000000000000000
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000145
Arg [14] : 5c2253657074656d6265722053686f776572735c222069732061204469727420
Arg [15] : 44414f20636f6d6d697373696f6e2066726f6d204e6577204f726c65616e732d
Arg [16] : 6261736564206172746973742c20536563726574736f7765722e204472617769
Arg [17] : 6e67206f6e207468652076697375616c20766f636162756c6172792068652064
Arg [18] : 6576656c6f70656420666f722074686520312c313131206e6f6e2d66756e6769
Arg [19] : 626c6520666c6f77657273206b6e6f776e20617320426c6f6f6d6572732c2053
Arg [20] : 6563726574736f77657220696d6167696e657320446972747920696e20746865
Arg [21] : 206d69647374206f6620612053657074656d626572207261696e73746f726d2c
Arg [22] : 20616e2065786f74696320666c6f77657220626c6f73736f6d696e672066726f
Arg [23] : 6d2068697320666f7265686561642e205768617420636f756c64206265206265
Arg [24] : 747465723f000000000000000000000000000000000000000000000000000000
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.