ETH Price: $2,047.81 (+0.56%)

Contract

0x0fAED6DDeF3773f3Ee5828383AAeEaCA2a94564a
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Safe Transfer Fr...246297562026-03-10 21:29:2328 hrs ago1773178163IN
Quantum Unlocked: QKU Token
0 ETH0.000117882.04045969
Safe Transfer Fr...246226152026-03-09 21:31:352 days ago1773091895IN
Quantum Unlocked: QKU Token
0 ETH0.000007490.16468331
Transfer From246214792026-03-09 17:42:352 days ago1773078155IN
Quantum Unlocked: QKU Token
0 ETH0.000129822.18874936
Set Approval For...246203162026-03-09 13:48:112 days ago1773064091IN
Quantum Unlocked: QKU Token
0 ETH0.000030631.26885157
Set Approval For...246202152026-03-09 13:27:592 days ago1773062879IN
Quantum Unlocked: QKU Token
0 ETH0.000050032.0721281
Set Approval For...246151602026-03-08 20:33:113 days ago1773001991IN
Quantum Unlocked: QKU Token
0 ETH0.000001920.04174692
Safe Transfer Fr...246008282026-03-06 20:33:115 days ago1772829191IN
Quantum Unlocked: QKU Token
0 ETH0.000003030.04846203
Safe Transfer Fr...246008252026-03-06 20:32:355 days ago1772829155IN
Quantum Unlocked: QKU Token
0 ETH0.000002630.04207449
Safe Transfer Fr...246008222026-03-06 20:31:595 days ago1772829119IN
Quantum Unlocked: QKU Token
0 ETH0.000002230.04917452
Safe Transfer Fr...246004352026-03-06 19:14:115 days ago1772824451IN
Quantum Unlocked: QKU Token
0 ETH0.000137332.04850371
Safe Transfer Fr...245637082026-03-01 16:12:3510 days ago1772381555IN
Quantum Unlocked: QKU Token
0 ETH0.000002980.06652253
Set Approval For...245577282026-02-28 20:10:5911 days ago1772309459IN
Quantum Unlocked: QKU Token
0 ETH0.00009892.14732725
Set Approval For...245499412026-02-27 18:04:4712 days ago1772215487IN
Quantum Unlocked: QKU Token
0 ETH0.000098712.14320474
Safe Transfer Fr...245449792026-02-27 1:28:2313 days ago1772155703IN
Quantum Unlocked: QKU Token
0 ETH0.000092912.04279736
Set Approval For...245449602026-02-27 1:24:3513 days ago1772155475IN
Quantum Unlocked: QKU Token
0 ETH0.000094442.05052166
Safe Transfer Fr...245372032026-02-25 23:27:3514 days ago1772062055IN
Quantum Unlocked: QKU Token
0 ETH0.000094522.07757246
Safe Transfer Fr...245211972026-02-23 17:51:4716 days ago1771869107IN
Quantum Unlocked: QKU Token
0 ETH0.000131452.27452283
Safe Transfer Fr...245021332026-02-21 2:04:5918 days ago1771639499IN
Quantum Unlocked: QKU Token
0 ETH0.0000932.04486326
Safe Transfer Fr...245021192026-02-21 2:02:1118 days ago1771639331IN
Quantum Unlocked: QKU Token
0 ETH0.000127772.04198151
Safe Transfer Fr...244779532026-02-17 17:09:5922 days ago1771348199IN
Quantum Unlocked: QKU Token
0 ETH0.000106972.35184812
Set Approval For...244703442026-02-16 15:41:2323 days ago1771256483IN
Quantum Unlocked: QKU Token
0 ETH0.00009652.09530966
Safe Transfer Fr...244624442026-02-15 13:16:2324 days ago1771161383IN
Quantum Unlocked: QKU Token
0 ETH0.000118092.04378483
Safe Transfer Fr...244556282026-02-14 14:28:2325 days ago1771079303IN
Quantum Unlocked: QKU Token
0 ETH0.000083332.04829894
Set Approval For...244556112026-02-14 14:24:5925 days ago1771079099IN
Quantum Unlocked: QKU Token
0 ETH0.000093832.03730517
Set Approval For...244185062026-02-09 10:07:1130 days ago1770631631IN
Quantum Unlocked: QKU Token
0 ETH0.000095142.06581413
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
QuantumUnlocked

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

import {ERC721 as ERC721S} from "@rari-capital/solmate/src/tokens/ERC721.sol";
import "@rari-capital/solmate/src/auth/Auth.sol";
import "@openzeppelin/contracts/utils/structs/BitMaps.sol";
import "@openzeppelin/contracts/utils/Strings.sol";
import "./ERC2981V2.sol";


/// @title The Quantum Unlocked. Speciality drops for the quantum keys are released here
/// @author jcbdev
contract QuantumUnlocked is ERC721S, ERC2981, Auth {
    using Strings for uint256;
    using BitMaps for BitMaps.BitMap;

    /// >>>>>>>>>>>>>>>>>>>>>>>  EVENTS  <<<<<<<<<<<<<<<<<<<<<<<<<< ///

    event DropMint(address indexed to, uint256 indexed dropId, uint256 indexed variant, uint256 id);

    /// >>>>>>>>>>>>>>>>>>>>>>>  STATE  <<<<<<<<<<<<<<<<<<<<<<<<<< ///

    mapping (uint128 => string) public dropCID;
    mapping (uint128 => uint128) public dropSupply;
    mapping (uint256 => uint256) public tokenVariant;

    string private _baseURI = "https://core-api.quantum.art/v1/metadata/unlocked/";
    string private _ipfsURI = "ipfs://";
    address private _minter;

    /// >>>>>>>>>>>>>>>>>>>>>  CONSTRUCTOR  <<<<<<<<<<<<<<<<<<<<<< ///

	/// @notice Deploys QuantumUnlocked
    /// @dev Initiates the Auth module with no authority and the sender as the owner
    /// @param owner The owner of the contract
    /// @param authority address of the deployed authority
    constructor(address owner, address authority) ERC721S("QuantumUnlocked", "QKU") Auth(owner, Authority(authority)) {
        _baseURI = "https://core-api.quantum.art/v1/metadata/unlocked/";
        _ipfsURI = "ipfs://";
    }

    /// >>>>>>>>>>>>>>>>>>>>>  INTERNAL  <<<<<<<<<<<<<<<<<<<<<< ///
    /// @notice get the token id from the drop id and sequence number
    /// @param dropId The drop id
    /// @param sequence the sequence number of the minted token within the drop 
    /// @return tokenId the combined token id 
    function _tokenId(uint128 dropId, uint128 sequence) internal pure returns (uint256 tokenId) {
        tokenId |= uint256(dropId) << 128;
        tokenId |= uint256(sequence);
        return tokenId;
    }

    /// @notice extract the drop id and the sequence number from the token id
    /// @param tokenId The token id to extract the values from
    /// @return uint128 the drop id
    /// @return uint128 the sequence number
    function _splitTokenId(uint256 tokenId) internal pure returns (uint128, uint128) {
        return (uint128(tokenId >> 128), uint128(tokenId));
    }

    /// >>>>>>>>>>>>>>>>>>>>>  RESTRICTED  <<<<<<<<<<<<<<<<<<<<<< ///

    /// @notice set address of the minter
    /// @param minter The address of the minter - should be Sales Platform
    function setMinter(address minter) public requiresAuth {
        _minter = minter;
    }

    /// @notice set the baseURI
    /// @param baseURI new base
    function setBaseURI(string calldata baseURI) public requiresAuth {
        _baseURI = baseURI;
    }

    /// @notice set the base ipfs URI
    /// @param ipfsURI new base
    function setIpfsURI(string calldata ipfsURI) public requiresAuth {
        _ipfsURI = ipfsURI;
    }

    /// @notice set the IPFS CID
    /// @param dropId The drop id
    /// @param cid cid
    function setCID(uint128 dropId, string calldata cid) public requiresAuth {
        dropCID[dropId] = cid;
    }

    /// @notice sets the recipient of the royalties
    /// @param recipient address of the recipient
    function setRoyaltyRecipient(address recipient) public requiresAuth {
        _royaltyRecipient = recipient;
    }

    /// @notice sets the fee of royalties
    /// @dev The fee denominator is 10000 in BPS.
    /// @param fee fee
    /*
        Example

        This would set the fee at 5%
        ```
        KeyUnlocks.setRoyaltyFee(500)
        ```
    */
    function setRoyaltyFee(uint256 fee) public requiresAuth {
        _royaltyFee = fee;
    }

    /// @notice Mints new tokens
    /// @dev there is no check regarding limiting supply
    /// @param to recipient of newly minted tokens
    /// @param dropId id of the key
    function mint(address to, uint128 dropId, uint256 variant) public returns (uint256) {
        require(msg.sender == owner || msg.sender == _minter, "NOT_AUTHORIZED");

        dropSupply[dropId] += 1;
        uint256 tokenId = _tokenId(dropId, uint128(dropSupply[dropId]));
        _safeMint(to, tokenId);
        if (variant > 0) {
            tokenVariant[tokenId] = variant;
        }
        emit DropMint(to, dropId, variant, tokenId);
        return tokenId;
    }

    /// @notice Burns token that has been redeemed for something else
    /// @dev Sales platform only
    /// @param tokenId id of the tokens
    function redeemBurn(uint256 tokenId) public requiresAuth {
        _burn(tokenId);
    }

    /// >>>>>>>>>>>>>>>>>>>>>  VIEW  <<<<<<<<<<<<<<<<<<<<<< ///

    /// @notice Returns the URI of the token
    /// @param tokenId id of the token
    /// @return URI for the token ; expected to be ipfs://<cid>
    function tokenURI(uint256 tokenId) public view override returns (string memory) {
        (uint128 dropId, uint128 sequenceNumber) = _splitTokenId(tokenId);
        uint256 actualSequence = tokenVariant[tokenId] > 0 ? tokenVariant[tokenId] : sequenceNumber;
        if (bytes(dropCID[dropId]).length > 0)
            return string(abi.encodePacked(_ipfsURI, dropCID[dropId], "/" , actualSequence.toString()));
        else
            return string(abi.encodePacked(_baseURI, uint256(dropId).toString(), "/" , actualSequence.toString()));
    }

    /// >>>>>>>>>>>>>>>>>>>>>  EXTERNAL  <<<<<<<<<<<<<<<<<<<<<< ///

    /// @notice Burns token
    /// @dev Can be called by the owner or approved operator
    /// @param tokenId id of the tokens
    function burn(uint256 tokenId) public {
        address owner = ownerOf[tokenId];
        require(
            msg.sender == owner || msg.sender == getApproved[tokenId] || isApprovedForAll[owner][msg.sender],
            "NOT_AUTHORIZED"
        );
        _burn(tokenId);
    }

    function supportsInterface(bytes4 interfaceId) public pure virtual override(ERC721S, ERC2981) returns (bool) {
        return ERC721S.supportsInterface(interfaceId) || ERC2981.supportsInterface(interfaceId);
    }
}

// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
/// @dev Note that balanceOf does not revert if passed the zero address, in defiance of the ERC.
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);

    /*///////////////////////////////////////////////////////////////
                          METADATA STORAGE/LOGIC
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    function tokenURI(uint256 id) public view virtual returns (string memory);

    /*///////////////////////////////////////////////////////////////
                            ERC721 STORAGE                        
    //////////////////////////////////////////////////////////////*/

    mapping(address => uint256) public balanceOf;

    mapping(uint256 => address) public ownerOf;

    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 = ownerOf[id];

        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 == ownerOf[id], "WRONG_FROM");

        require(to != address(0), "INVALID_RECIPIENT");

        require(
            msg.sender == from || msg.sender == getApproved[id] || isApprovedForAll[from][msg.sender],
            "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]++;
        }

        ownerOf[id] = 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 memory 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 pure 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 {
        require(to != address(0), "INVALID_RECIPIENT");

        require(ownerOf[id] == address(0), "ALREADY_MINTED");

        // Counter overflow is incredibly unrealistic.
        unchecked {
            balanceOf[to]++;
        }

        ownerOf[id] = to;

        emit Transfer(address(0), to, id);
    }

    function _burn(uint256 id) internal virtual {
        address owner = ownerOf[id];

        require(ownerOf[id] != address(0), "NOT_MINTED");

        // Ownership check above ensures no underflow.
        unchecked {
            balanceOf[owner]--;
        }

        delete ownerOf[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"
        );
    }
}

/// @notice A generic interface for a contract which properly accepts ERC721 tokens.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
interface ERC721TokenReceiver {
    function onERC721Received(
        address operator,
        address from,
        uint256 id,
        bytes calldata data
    ) external returns (bytes4);
}

// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Provides a flexible and updatable auth pattern which is completely separate from application logic.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/auth/Auth.sol)
/// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol)
abstract contract Auth {
    event OwnerUpdated(address indexed user, address indexed newOwner);

    event AuthorityUpdated(address indexed user, Authority indexed newAuthority);

    address public owner;

    Authority public authority;

    constructor(address _owner, Authority _authority) {
        owner = _owner;
        authority = _authority;

        emit OwnerUpdated(msg.sender, _owner);
        emit AuthorityUpdated(msg.sender, _authority);
    }

    modifier requiresAuth() {
        require(isAuthorized(msg.sender, msg.sig), "UNAUTHORIZED");

        _;
    }

    function isAuthorized(address user, bytes4 functionSig) internal view virtual returns (bool) {
        Authority auth = authority; // Memoizing authority saves us a warm SLOAD, around 100 gas.

        // Checking if the caller is the owner only after calling the authority saves gas in most cases, but be
        // aware that this makes protected functions uncallable even to the owner if the authority is out of order.
        return (address(auth) != address(0) && auth.canCall(user, address(this), functionSig)) || user == owner;
    }

    function setAuthority(Authority newAuthority) public virtual {
        // We check if the caller is the owner first because we want to ensure they can
        // always swap out the authority even if it's reverting or using up a lot of gas.
        require(msg.sender == owner || authority.canCall(msg.sender, address(this), msg.sig));

        authority = newAuthority;

        emit AuthorityUpdated(msg.sender, newAuthority);
    }

    function setOwner(address newOwner) public virtual requiresAuth {
        owner = newOwner;

        emit OwnerUpdated(msg.sender, newOwner);
    }
}

/// @notice A generic interface for a contract which provides authorization data to an Auth instance.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/auth/Auth.sol)
/// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol)
interface Authority {
    function canCall(
        address user,
        address target,
        bytes4 functionSig
    ) external view returns (bool);
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/structs/BitMaps.sol)
pragma solidity ^0.8.0;

/**
 * @dev Library for managing uint256 to bool mapping in a compact and efficient way, providing the keys are sequential.
 * Largelly inspired by Uniswap's https://github.com/Uniswap/merkle-distributor/blob/master/contracts/MerkleDistributor.sol[merkle-distributor].
 */
library BitMaps {
    struct BitMap {
        mapping(uint256 => uint256) _data;
    }

    /**
     * @dev Returns whether the bit at `index` is set.
     */
    function get(BitMap storage bitmap, uint256 index) internal view returns (bool) {
        uint256 bucket = index >> 8;
        uint256 mask = 1 << (index & 0xff);
        return bitmap._data[bucket] & mask != 0;
    }

    /**
     * @dev Sets the bit at `index` to the boolean `value`.
     */
    function setTo(
        BitMap storage bitmap,
        uint256 index,
        bool value
    ) internal {
        if (value) {
            set(bitmap, index);
        } else {
            unset(bitmap, index);
        }
    }

    /**
     * @dev Sets the bit at `index`.
     */
    function set(BitMap storage bitmap, uint256 index) internal {
        uint256 bucket = index >> 8;
        uint256 mask = 1 << (index & 0xff);
        bitmap._data[bucket] |= mask;
    }

    /**
     * @dev Unsets the bit at `index`.
     */
    function unset(BitMap storage bitmap, uint256 index) internal {
        uint256 bucket = index >> 8;
        uint256 mask = 1 << (index & 0xff);
        bitmap._data[bucket] &= ~mask;
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

pragma solidity >=0.8.0;

/// @title Minimalist ERC2981 implementation.
/// @notice To be used within Quantum, as it was written for its needs.
/// @author exp.table
abstract contract ERC2981 {

    /// @dev one global fee for all royalties.
    uint256 internal _royaltyFee;
    /// @dev one global recipient for all royalties.
    address internal _royaltyRecipient;

    function royaltyInfo(uint256 tokenId, uint256 salePrice) public view virtual returns (
        address receiver,
        uint256 royaltyAmount
    ) {
        receiver = _royaltyRecipient;
        royaltyAmount = (salePrice * _royaltyFee) / 10000;
    }

    function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x2a55205a; // ERC165 Interface ID for ERC2981
    }

}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 10000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"authority","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"contract Authority","name":"newAuthority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"dropId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"variant","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"DropMint","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":"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":"authority","outputs":[{"internalType":"contract Authority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"","type":"uint128"}],"name":"dropCID","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint128","name":"","type":"uint128"}],"name":"dropSupply","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"uint128","name":"dropId","type":"uint128"},{"internalType":"uint256","name":"variant","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"redeemBurn","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":"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":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"dropId","type":"uint128"},{"internalType":"string","name":"cid","type":"string"}],"name":"setCID","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"ipfsURI","type":"string"}],"name":"setIpfsURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setRoyaltyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"setRoyaltyRecipient","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":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenVariant","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"}]

60e0604052603260808181529062002bdc60a03980516200002991600d91602090910190620001f7565b5060408051808201909152600780825266697066733a2f2f60c81b60209092019182526200005a91600e91620001f7565b503480156200006857600080fd5b5060405162002c0e38038062002c0e8339810160408190526200008b91620002ba565b604080518082018252600f81526e145d585b9d1d5b555b9b1bd8dad959608a1b602080830191825283518085019094526003845262514b5560e81b90840152815185938593929091620000e191600091620001f7565b508051620000f7906001906020840190620001f7565b5050600880546001600160a01b038086166001600160a01b03199283168117909355600980549186169190921617905560405190915033907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a3505060405180606001604052806032815260200162002bdc603291398051620001bd91600d91602090910190620001f7565b5060408051808201909152600780825266697066733a2f2f60c81b6020909201918252620001ee91600e91620001f7565b5050506200032f565b8280546200020590620002f2565b90600052602060002090601f01602090048101928262000229576000855562000274565b82601f106200024457805160ff191683800117855562000274565b8280016001018555821562000274579182015b828111156200027457825182559160200191906001019062000257565b506200028292915062000286565b5090565b5b8082111562000282576000815560010162000287565b80516001600160a01b0381168114620002b557600080fd5b919050565b60008060408385031215620002ce57600080fd5b620002d9836200029d565b9150620002e9602084016200029d565b90509250929050565b600181811c908216806200030757607f821691505b602082108114156200032957634e487b7160e01b600052602260045260246000fd5b50919050565b61289d806200033f6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636352211e11610104578063bf7e214f116100a2578063e985e9c511610071578063e985e9c5146104f4578063f6e384e414610522578063fc7d864914610535578063fca3b5aa1461054857600080fd5b8063bf7e214f1461048e578063c87b56dd146104ae578063dd46edb8146104c1578063de5ac894146104e157600080fd5b80638da5cb5b116100de5780638da5cb5b1461044057806395d89b4114610460578063a22cb46514610468578063b88d4fde1461047b57600080fd5b80636352211e146103c957806370a08231146103ff5780637a9e5e4b1461042d57600080fd5b80632a55205a1161017c57806342842e0e1161014b57806342842e0e1461037d57806342966c68146103905780635443e82c146103a357806355f804b3146103b657600080fd5b80632a55205a1461030557806331690734146103445780633e4086e51461035757806341e42f301461036a57600080fd5b8063081812fc116101b8578063081812fc1461026f578063095ea7b3146102ca57806313af4035146102df57806323b872dd146102f257600080fd5b806301ffc9a7146101df57806302efee211461020757806306fdde031461025a575b600080fd5b6101f26101ed366004611ff2565b61055b565b60405190151581526020015b60405180910390f35b61023961021536600461203b565b600b602052600090815260409020546fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016101fe565b61026261057b565b6040516101fe91906120cc565b6102a561027d3660046120df565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fe565b6102dd6102d836600461211a565b610609565b005b6102dd6102ed366004612146565b61073e565b6102dd610300366004612163565b610829565b6103186103133660046121a4565b610aa2565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101fe565b6102dd61035236600461220f565b610ae5565b6102dd6103653660046120df565b610b70565b6102dd610378366004612146565b610bef565b6102dd61038b366004612163565b610cb0565b6102dd61039e3660046120df565b610dfb565b6102dd6103b1366004612251565b610ee5565b6102dd6103c436600461220f565b610f91565b6102a56103d73660046120df565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61041f61040d366004612146565b60026020526000908152604090205481565b6040519081526020016101fe565b6102dd61043b366004612146565b611017565b6008546102a59073ffffffffffffffffffffffffffffffffffffffff1681565b610262611174565b6102dd6104763660046122b2565b611181565b6102dd61048936600461231a565b611218565b6009546102a59073ffffffffffffffffffffffffffffffffffffffff1681565b6102626104bc3660046120df565b61134f565b61041f6104cf3660046120df565b600c6020526000908152604090205481565b6102626104ef36600461203b565b61145f565b6101f2610502366004612418565b600560209081526000928352604080842090915290825290205460ff1681565b61041f610530366004612446565b611478565b6102dd6105433660046120df565b611631565b6102dd610556366004612146565b6116b7565b600061056682611778565b80610575575061057582611859565b92915050565b6000805461058890612484565b80601f01602080910402602001604051908101604052809291908181526020018280546105b490612484565b80156106015780601f106105d657610100808354040283529160200191610601565b820191906000526020600020905b8154815290600101906020018083116105e457829003601f168201915b505050505081565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff163381148061066c575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b6106bd5760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61076c336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b6107b85760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461089f5760405162461bcd60e51b815260206004820152600a60248201527f57524f4e475f46524f4d0000000000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff82166109025760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016106b4565b3373ffffffffffffffffffffffffffffffffffffffff84161480610949575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b80610984575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b6109d05760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526003825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60075460065473ffffffffffffffffffffffffffffffffffffffff9091169060009061271090610ad29085612507565b610adc9190612573565b90509250929050565b610b13336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b610b5f5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b610b6b600e8383611f0d565b505050565b610b9e336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b610bea5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b600655565b610c1d336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b610c695760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610cbb838383610829565b73ffffffffffffffffffffffffffffffffffffffff82163b1580610daf57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610d67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8b9190612587565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610b6b5760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016106b4565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1633811480610e51575060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b80610e8c575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b610ed85760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016106b4565b610ee1826119ff565b5050565b610f13336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b610f5f5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b6fffffffffffffffffffffffffffffffff83166000908152600a60205260409020610f8b908383611f0d565b50505050565b610fbf336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b61100b5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b610b6b600d8383611f0d565b60085473ffffffffffffffffffffffffffffffffffffffff163314806110fa57506009546040517fb70096130000000000000000000000000000000000000000000000000000000081523360048201523060248201526000357fffffffff0000000000000000000000000000000000000000000000000000000016604482015273ffffffffffffffffffffffffffffffffffffffff9091169063b700961390606401602060405180830381865afa1580156110d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fa91906125a4565b61110357600080fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350565b6001805461058890612484565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611223848484610829565b73ffffffffffffffffffffffffffffffffffffffff83163b158061130357506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061129c9033908990889088906004016125c1565b6020604051808303816000875af11580156112bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112df9190612587565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610f8b5760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016106b4565b6000818152600c6020526040812054606091608084901c9184919061138657816fffffffffffffffffffffffffffffffff16611396565b6000858152600c60205260409020545b6fffffffffffffffffffffffffffffffff84166000908152600a60205260408120805492935090916113c790612484565b90501115611427576fffffffffffffffffffffffffffffffff83166000908152600a60205260409020600e906113fc83611b2f565b60405160200161140e939291906126db565b6040516020818303038152906040529350505050919050565b600d611444846fffffffffffffffffffffffffffffffff16611b2f565b61144d83611b2f565b60405160200161140e93929190612733565b600a602052600090815260409020805461058890612484565b60085460009073ffffffffffffffffffffffffffffffffffffffff163314806114b85750600f5473ffffffffffffffffffffffffffffffffffffffff1633145b6115045760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016106b4565b6fffffffffffffffffffffffffffffffff8084166000908152600b60205260408120805460019391929161153a91859116612788565b82546101009290920a6fffffffffffffffffffffffffffffffff8181021990931691831602179091558481166000908152600b6020526040812054909250167fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086901b161790506115ad8582611c61565b82156115c5576000818152600c602052604090208390555b82846fffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f6d5335192a1efe736f886245fc1f6dbf882294247353ca1a57cb804607898b898460405161162191815260200190565b60405180910390a4949350505050565b61165f336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b6116ab5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b6116b4816119ff565b50565b6116e5336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b6117315760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b600f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061180b57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806105755750507fffffffff00000000000000000000000000000000000000000000000000000000167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806105755750507fffffffff00000000000000000000000000000000000000000000000000000000167f2a55205a000000000000000000000000000000000000000000000000000000001490565b60095460009073ffffffffffffffffffffffffffffffffffffffff1680158015906119d257506040517fb700961300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301527fffffffff000000000000000000000000000000000000000000000000000000008516604483015282169063b700961390606401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906125a4565b806119f7575060085473ffffffffffffffffffffffffffffffffffffffff8581169116145b949350505050565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1680611a715760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4d494e5445440000000000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558583526003825280832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915560049092528083208054909216909155518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b606081611b6f57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611b995780611b83816127bc565b9150611b929050600a83612573565b9150611b73565b60008167ffffffffffffffff811115611bb457611bb46122eb565b6040519080825280601f01601f191660200182016040528015611bde576020820181803683370190505b5090505b84156119f757611bf36001836127f5565b9150611c00600a8661280c565b611c0b906030612820565b60f81b818381518110611c2057611c20612838565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611c5a600a86612573565b9450611be2565b611c6b8282611da8565b73ffffffffffffffffffffffffffffffffffffffff82163b1580611d5c57506040517f150b7a0200000000000000000000000000000000000000000000000000000000808252336004830152600060248301819052604483018490526080606484015260848301529073ffffffffffffffffffffffffffffffffffffffff84169063150b7a029060a4016020604051808303816000875af1158015611d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d389190612587565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610ee15760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8216611e0b5760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016106b4565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611e7d5760405162461bcd60e51b815260206004820152600e60248201527f414c52454144595f4d494e54454400000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260026020908152604080832080546001019055848352600390915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611f1990612484565b90600052602060002090601f016020900481019282611f3b5760008555611f9f565b82601f10611f72578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555611f9f565b82800160010185558215611f9f579182015b82811115611f9f578235825591602001919060010190611f84565b50611fab929150611faf565b5090565b5b80821115611fab5760008155600101611fb0565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146116b457600080fd5b60006020828403121561200457600080fd5b813561200f81611fc4565b9392505050565b80356fffffffffffffffffffffffffffffffff8116811461203657600080fd5b919050565b60006020828403121561204d57600080fd5b61200f82612016565b60005b83811015612071578181015183820152602001612059565b83811115610f8b5750506000910152565b6000815180845261209a816020860160208601612056565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061200f6020830184612082565b6000602082840312156120f157600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146116b457600080fd5b6000806040838503121561212d57600080fd5b8235612138816120f8565b946020939093013593505050565b60006020828403121561215857600080fd5b813561200f816120f8565b60008060006060848603121561217857600080fd5b8335612183816120f8565b92506020840135612193816120f8565b929592945050506040919091013590565b600080604083850312156121b757600080fd5b50508035926020909101359150565b60008083601f8401126121d857600080fd5b50813567ffffffffffffffff8111156121f057600080fd5b60208301915083602082850101111561220857600080fd5b9250929050565b6000806020838503121561222257600080fd5b823567ffffffffffffffff81111561223957600080fd5b612245858286016121c6565b90969095509350505050565b60008060006040848603121561226657600080fd5b61226f84612016565b9250602084013567ffffffffffffffff81111561228b57600080fd5b612297868287016121c6565b9497909650939450505050565b80151581146116b457600080fd5b600080604083850312156122c557600080fd5b82356122d0816120f8565b915060208301356122e0816122a4565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561233057600080fd5b843561233b816120f8565b9350602085013561234b816120f8565b925060408501359150606085013567ffffffffffffffff8082111561236f57600080fd5b818701915087601f83011261238357600080fd5b813581811115612395576123956122eb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156123db576123db6122eb565b816040528281528a60208487010111156123f457600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561242b57600080fd5b8235612436816120f8565b915060208301356122e0816120f8565b60008060006060848603121561245b57600080fd5b8335612466816120f8565b925061247460208501612016565b9150604084013590509250925092565b600181811c9082168061249857607f821691505b602082108114156124d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561253f5761253f6124d8565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261258257612582612544565b500490565b60006020828403121561259957600080fd5b815161200f81611fc4565b6000602082840312156125b657600080fd5b815161200f816122a4565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526126006080830184612082565b9695505050505050565b8054600090600181811c908083168061262457607f831692505b602080841082141561265f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b81801561267357600181146126a2576126cf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008616895284890196506126cf565b60008881526020902060005b868110156126c75781548b8201529085019083016126ae565b505084890196505b50505050505092915050565b60006126f06126ea838761260a565b8561260a565b7f2f0000000000000000000000000000000000000000000000000000000000000081528351612726816001840160208801612056565b0160010195945050505050565b600061273f828661260a565b845161274f818360208901612056565b7f2f0000000000000000000000000000000000000000000000000000000000000091019081528351612726816001840160208801612056565b60006fffffffffffffffffffffffffffffffff8083168185168083038211156127b3576127b36124d8565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156127ee576127ee6124d8565b5060010190565b600082821015612807576128076124d8565b500390565b60008261281b5761281b612544565b500690565b60008219821115612833576128336124d8565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212209f52495de295bee914760b58cbd34aa3d31885e36004ed564c817e16c1ed9eed64736f6c634300080b003368747470733a2f2f636f72652d6170692e7175616e74756d2e6172742f76312f6d657461646174612f756e6c6f636b65642f000000000000000000000000c5c721caa3cad959818e891b533a34c37946e9bf0000000000000000000000008c1927427eaaca6a64e238544adfb95451cc05a1

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80636352211e11610104578063bf7e214f116100a2578063e985e9c511610071578063e985e9c5146104f4578063f6e384e414610522578063fc7d864914610535578063fca3b5aa1461054857600080fd5b8063bf7e214f1461048e578063c87b56dd146104ae578063dd46edb8146104c1578063de5ac894146104e157600080fd5b80638da5cb5b116100de5780638da5cb5b1461044057806395d89b4114610460578063a22cb46514610468578063b88d4fde1461047b57600080fd5b80636352211e146103c957806370a08231146103ff5780637a9e5e4b1461042d57600080fd5b80632a55205a1161017c57806342842e0e1161014b57806342842e0e1461037d57806342966c68146103905780635443e82c146103a357806355f804b3146103b657600080fd5b80632a55205a1461030557806331690734146103445780633e4086e51461035757806341e42f301461036a57600080fd5b8063081812fc116101b8578063081812fc1461026f578063095ea7b3146102ca57806313af4035146102df57806323b872dd146102f257600080fd5b806301ffc9a7146101df57806302efee211461020757806306fdde031461025a575b600080fd5b6101f26101ed366004611ff2565b61055b565b60405190151581526020015b60405180910390f35b61023961021536600461203b565b600b602052600090815260409020546fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016101fe565b61026261057b565b6040516101fe91906120cc565b6102a561027d3660046120df565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fe565b6102dd6102d836600461211a565b610609565b005b6102dd6102ed366004612146565b61073e565b6102dd610300366004612163565b610829565b6103186103133660046121a4565b610aa2565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101fe565b6102dd61035236600461220f565b610ae5565b6102dd6103653660046120df565b610b70565b6102dd610378366004612146565b610bef565b6102dd61038b366004612163565b610cb0565b6102dd61039e3660046120df565b610dfb565b6102dd6103b1366004612251565b610ee5565b6102dd6103c436600461220f565b610f91565b6102a56103d73660046120df565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61041f61040d366004612146565b60026020526000908152604090205481565b6040519081526020016101fe565b6102dd61043b366004612146565b611017565b6008546102a59073ffffffffffffffffffffffffffffffffffffffff1681565b610262611174565b6102dd6104763660046122b2565b611181565b6102dd61048936600461231a565b611218565b6009546102a59073ffffffffffffffffffffffffffffffffffffffff1681565b6102626104bc3660046120df565b61134f565b61041f6104cf3660046120df565b600c6020526000908152604090205481565b6102626104ef36600461203b565b61145f565b6101f2610502366004612418565b600560209081526000928352604080842090915290825290205460ff1681565b61041f610530366004612446565b611478565b6102dd6105433660046120df565b611631565b6102dd610556366004612146565b6116b7565b600061056682611778565b80610575575061057582611859565b92915050565b6000805461058890612484565b80601f01602080910402602001604051908101604052809291908181526020018280546105b490612484565b80156106015780601f106105d657610100808354040283529160200191610601565b820191906000526020600020905b8154815290600101906020018083116105e457829003601f168201915b505050505081565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff163381148061066c575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b6106bd5760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61076c336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b6107b85760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461089f5760405162461bcd60e51b815260206004820152600a60248201527f57524f4e475f46524f4d0000000000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff82166109025760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016106b4565b3373ffffffffffffffffffffffffffffffffffffffff84161480610949575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b80610984575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b6109d05760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526003825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60075460065473ffffffffffffffffffffffffffffffffffffffff9091169060009061271090610ad29085612507565b610adc9190612573565b90509250929050565b610b13336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b610b5f5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b610b6b600e8383611f0d565b505050565b610b9e336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b610bea5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b600655565b610c1d336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b610c695760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610cbb838383610829565b73ffffffffffffffffffffffffffffffffffffffff82163b1580610daf57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610d67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8b9190612587565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610b6b5760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016106b4565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1633811480610e51575060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b80610e8c575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b610ed85760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016106b4565b610ee1826119ff565b5050565b610f13336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b610f5f5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b6fffffffffffffffffffffffffffffffff83166000908152600a60205260409020610f8b908383611f0d565b50505050565b610fbf336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b61100b5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b610b6b600d8383611f0d565b60085473ffffffffffffffffffffffffffffffffffffffff163314806110fa57506009546040517fb70096130000000000000000000000000000000000000000000000000000000081523360048201523060248201526000357fffffffff0000000000000000000000000000000000000000000000000000000016604482015273ffffffffffffffffffffffffffffffffffffffff9091169063b700961390606401602060405180830381865afa1580156110d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fa91906125a4565b61110357600080fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350565b6001805461058890612484565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611223848484610829565b73ffffffffffffffffffffffffffffffffffffffff83163b158061130357506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061129c9033908990889088906004016125c1565b6020604051808303816000875af11580156112bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112df9190612587565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610f8b5760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016106b4565b6000818152600c6020526040812054606091608084901c9184919061138657816fffffffffffffffffffffffffffffffff16611396565b6000858152600c60205260409020545b6fffffffffffffffffffffffffffffffff84166000908152600a60205260408120805492935090916113c790612484565b90501115611427576fffffffffffffffffffffffffffffffff83166000908152600a60205260409020600e906113fc83611b2f565b60405160200161140e939291906126db565b6040516020818303038152906040529350505050919050565b600d611444846fffffffffffffffffffffffffffffffff16611b2f565b61144d83611b2f565b60405160200161140e93929190612733565b600a602052600090815260409020805461058890612484565b60085460009073ffffffffffffffffffffffffffffffffffffffff163314806114b85750600f5473ffffffffffffffffffffffffffffffffffffffff1633145b6115045760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016106b4565b6fffffffffffffffffffffffffffffffff8084166000908152600b60205260408120805460019391929161153a91859116612788565b82546101009290920a6fffffffffffffffffffffffffffffffff8181021990931691831602179091558481166000908152600b6020526040812054909250167fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086901b161790506115ad8582611c61565b82156115c5576000818152600c602052604090208390555b82846fffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f6d5335192a1efe736f886245fc1f6dbf882294247353ca1a57cb804607898b898460405161162191815260200190565b60405180910390a4949350505050565b61165f336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b6116ab5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b6116b4816119ff565b50565b6116e5336000357fffffffff00000000000000000000000000000000000000000000000000000000166118ee565b6117315760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106b4565b600f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061180b57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806105755750507fffffffff00000000000000000000000000000000000000000000000000000000167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806105755750507fffffffff00000000000000000000000000000000000000000000000000000000167f2a55205a000000000000000000000000000000000000000000000000000000001490565b60095460009073ffffffffffffffffffffffffffffffffffffffff1680158015906119d257506040517fb700961300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301527fffffffff000000000000000000000000000000000000000000000000000000008516604483015282169063b700961390606401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906125a4565b806119f7575060085473ffffffffffffffffffffffffffffffffffffffff8581169116145b949350505050565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1680611a715760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4d494e5445440000000000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558583526003825280832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915560049092528083208054909216909155518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b606081611b6f57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611b995780611b83816127bc565b9150611b929050600a83612573565b9150611b73565b60008167ffffffffffffffff811115611bb457611bb46122eb565b6040519080825280601f01601f191660200182016040528015611bde576020820181803683370190505b5090505b84156119f757611bf36001836127f5565b9150611c00600a8661280c565b611c0b906030612820565b60f81b818381518110611c2057611c20612838565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611c5a600a86612573565b9450611be2565b611c6b8282611da8565b73ffffffffffffffffffffffffffffffffffffffff82163b1580611d5c57506040517f150b7a0200000000000000000000000000000000000000000000000000000000808252336004830152600060248301819052604483018490526080606484015260848301529073ffffffffffffffffffffffffffffffffffffffff84169063150b7a029060a4016020604051808303816000875af1158015611d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d389190612587565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610ee15760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8216611e0b5760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016106b4565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611e7d5760405162461bcd60e51b815260206004820152600e60248201527f414c52454144595f4d494e54454400000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260026020908152604080832080546001019055848352600390915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611f1990612484565b90600052602060002090601f016020900481019282611f3b5760008555611f9f565b82601f10611f72578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555611f9f565b82800160010185558215611f9f579182015b82811115611f9f578235825591602001919060010190611f84565b50611fab929150611faf565b5090565b5b80821115611fab5760008155600101611fb0565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146116b457600080fd5b60006020828403121561200457600080fd5b813561200f81611fc4565b9392505050565b80356fffffffffffffffffffffffffffffffff8116811461203657600080fd5b919050565b60006020828403121561204d57600080fd5b61200f82612016565b60005b83811015612071578181015183820152602001612059565b83811115610f8b5750506000910152565b6000815180845261209a816020860160208601612056565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061200f6020830184612082565b6000602082840312156120f157600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146116b457600080fd5b6000806040838503121561212d57600080fd5b8235612138816120f8565b946020939093013593505050565b60006020828403121561215857600080fd5b813561200f816120f8565b60008060006060848603121561217857600080fd5b8335612183816120f8565b92506020840135612193816120f8565b929592945050506040919091013590565b600080604083850312156121b757600080fd5b50508035926020909101359150565b60008083601f8401126121d857600080fd5b50813567ffffffffffffffff8111156121f057600080fd5b60208301915083602082850101111561220857600080fd5b9250929050565b6000806020838503121561222257600080fd5b823567ffffffffffffffff81111561223957600080fd5b612245858286016121c6565b90969095509350505050565b60008060006040848603121561226657600080fd5b61226f84612016565b9250602084013567ffffffffffffffff81111561228b57600080fd5b612297868287016121c6565b9497909650939450505050565b80151581146116b457600080fd5b600080604083850312156122c557600080fd5b82356122d0816120f8565b915060208301356122e0816122a4565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561233057600080fd5b843561233b816120f8565b9350602085013561234b816120f8565b925060408501359150606085013567ffffffffffffffff8082111561236f57600080fd5b818701915087601f83011261238357600080fd5b813581811115612395576123956122eb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156123db576123db6122eb565b816040528281528a60208487010111156123f457600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561242b57600080fd5b8235612436816120f8565b915060208301356122e0816120f8565b60008060006060848603121561245b57600080fd5b8335612466816120f8565b925061247460208501612016565b9150604084013590509250925092565b600181811c9082168061249857607f821691505b602082108114156124d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561253f5761253f6124d8565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261258257612582612544565b500490565b60006020828403121561259957600080fd5b815161200f81611fc4565b6000602082840312156125b657600080fd5b815161200f816122a4565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526126006080830184612082565b9695505050505050565b8054600090600181811c908083168061262457607f831692505b602080841082141561265f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b81801561267357600181146126a2576126cf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008616895284890196506126cf565b60008881526020902060005b868110156126c75781548b8201529085019083016126ae565b505084890196505b50505050505092915050565b60006126f06126ea838761260a565b8561260a565b7f2f0000000000000000000000000000000000000000000000000000000000000081528351612726816001840160208801612056565b0160010195945050505050565b600061273f828661260a565b845161274f818360208901612056565b7f2f0000000000000000000000000000000000000000000000000000000000000091019081528351612726816001840160208801612056565b60006fffffffffffffffffffffffffffffffff8083168185168083038211156127b3576127b36124d8565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156127ee576127ee6124d8565b5060010190565b600082821015612807576128076124d8565b500390565b60008261281b5761281b612544565b500690565b60008219821115612833576128336124d8565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212209f52495de295bee914760b58cbd34aa3d31885e36004ed564c817e16c1ed9eed64736f6c634300080b0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000c5c721caa3cad959818e891b533a34c37946e9bf0000000000000000000000008c1927427eaaca6a64e238544adfb95451cc05a1

-----Decoded View---------------
Arg [0] : owner (address): 0xC5C721caA3cAd959818e891b533a34c37946e9Bf
Arg [1] : authority (address): 0x8c1927427eaAcA6A64E238544ADfb95451cc05A1

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000c5c721caa3cad959818e891b533a34c37946e9bf
Arg [1] : 0000000000000000000000008c1927427eaaca6a64e238544adfb95451cc05a1


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Digital Culture, Curated. Quantum is an NFT platform for artists and collectors to share their work with the world.

Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.