ETH Price: $1,568.15 (-0.83%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Approval For...220402202025-03-13 20:04:5938 days ago1741896299IN
BMC Hashdroid: HD Token
0 ETH0.000025021.02975496
Set Approval For...219775882025-03-05 2:05:2347 days ago1741140323IN
BMC Hashdroid: HD Token
0 ETH0.000057451.24535039
Safe Transfer Fr...219312452025-02-26 14:56:2354 days ago1740581783IN
BMC Hashdroid: HD Token
0 ETH0.000361233.24543694
Set Approval For...218805612025-02-19 12:58:2361 days ago1739969903IN
BMC Hashdroid: HD Token
0 ETH0.000038530.83523497
Set Approval For...218750182025-02-18 18:21:4762 days ago1739902907IN
BMC Hashdroid: HD Token
0 ETH0.000130022.8184349
Set Approval For...218254172025-02-11 19:37:5968 days ago1739302679IN
BMC Hashdroid: HD Token
0 ETH0.000243065.26625665
Set Approval For...218129062025-02-10 1:42:3570 days ago1739151755IN
BMC Hashdroid: HD Token
0 ETH0.00004250.92143614
Set Approval For...215805412025-01-08 15:05:47103 days ago1736348747IN
BMC Hashdroid: HD Token
0 ETH0.0005971212.9437532
Set Approval For...215263352025-01-01 1:29:11110 days ago1735694951IN
BMC Hashdroid: HD Token
0 ETH0.000160233.47329844
Set Approval For...214992162024-12-28 6:37:23114 days ago1735367843IN
BMC Hashdroid: HD Token
0 ETH0.000185984.02425788
Set Approval For...214050952024-12-15 3:00:11127 days ago1734231611IN
BMC Hashdroid: HD Token
0 ETH0.000182967.52804684
Set Approval For...212735172024-11-26 17:48:23146 days ago1732643303IN
BMC Hashdroid: HD Token
0 ETH0.0005764412.47275512
Set Approval For...209540212024-10-13 3:35:35190 days ago1728790535IN
BMC Hashdroid: HD Token
0 ETH0.000172517.09802135
Set Approval For...207410562024-09-13 10:19:59220 days ago1726222799IN
BMC Hashdroid: HD Token
0 ETH0.000065892.7112252
Set Approval For...207240162024-09-11 1:13:35222 days ago1726017215IN
BMC Hashdroid: HD Token
0 ETH0.000069652.86616139
Set Approval For...207117722024-09-09 8:10:35224 days ago1725869435IN
BMC Hashdroid: HD Token
0 ETH0.000072663
Set Approval For...201521442024-06-23 4:54:23302 days ago1719118463IN
BMC Hashdroid: HD Token
0 ETH0.00005562.28777026
Set Approval For...198447332024-05-11 5:34:23345 days ago1715405663IN
BMC Hashdroid: HD Token
0 ETH0.000112394.64056463
Set Approval For...198447322024-05-11 5:34:11345 days ago1715405651IN
BMC Hashdroid: HD Token
0 ETH0.000112434.62631169
Set Approval For...198281552024-05-08 21:56:23347 days ago1715205383IN
BMC Hashdroid: HD Token
0 ETH0.000101024.15673414
Safe Transfer Fr...197782512024-05-01 22:24:47354 days ago1714602287IN
BMC Hashdroid: HD Token
0 ETH0.00033625.43322199
Set Approval For...197243772024-04-24 9:34:47362 days ago1713951287IN
BMC Hashdroid: HD Token
0 ETH0.0002563410.54731301
Set Approval For...195588202024-04-01 5:09:11385 days ago1711948151IN
BMC Hashdroid: HD Token
0 ETH0.0003994216.43450507
Set Approval For...195455752024-03-30 8:25:35387 days ago1711787135IN
BMC Hashdroid: HD Token
0 ETH0.0004573818.81945518
Set Approval For...193565602024-03-03 18:54:47414 days ago1709492087IN
BMC Hashdroid: HD Token
0 ETH0.001721870.84447764
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
-148896002022-06-02 7:10:011054 days ago1654153801
BMC Hashdroid: HD Token
142.347 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HASHDroid

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-26
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.14;

/**
 * @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);
    }
}


/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface ERC721TokenReceiver {
    function onERC721Received(address operator,address from, uint256 id, bytes calldata data) external returns (bytes4);
}

/**
 * Built to optimize for lower gas during batch mints and transfers. 
 * A new locking mechanism has been added to protect users from all attempted scams.
 *
 * Assumes serials are sequentially minted starting at 0 (e.g. 0, 1, 2, 3..).
 *
 */
abstract contract ERC721slimBatch {
    using Address for address;
    using Strings for uint256;

    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    struct collectionData {
        string name;
        string symbol;
        uint256 index;
        uint256 burned;
    }

    address private _contractOwner;
    collectionData internal _collectionData;
    mapping(uint256 => address) internal _ownerships;
    mapping(address => uint256) internal _addressData;
    mapping(uint256 => address) internal _tokenApprovals;
    mapping(address => mapping(address => bool)) private  _operatorApprovals;

    constructor(string memory _name, string memory _symbol) {
        _collectionData.name = _name;
        _collectionData.symbol = _symbol;
        _transferOwnership(_msgSender());
    }

    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint` or `_safeMint`),
     */
    function _exists(uint256 tokenId) public view virtual returns (bool) {
        return tokenId < _collectionData.index;
    }

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) public view virtual returns (address) {
        unchecked {
            if (tokenId < _collectionData.index) {
                address ownership = _ownerships[tokenId];
                if (ownership != address(0)) {
                    return ownership;
                }
                    while (true) {
                        tokenId--;
                        ownership = _ownerships[tokenId];

                        if (ownership != address(0)) {
                            return ownership;
                        }
                         
                    }
                }
            }

        revert ();
    }

    /**
     * @dev Returns the number of tokens in `_owner`'s account.
     */
    function balanceOf(address _owner) public view returns (uint256) {
        require(_owner != address(0), "Address 0");
        return _addressData[_owner];
    }

    /**
     * @dev Mints `quantity` tokens and transfers them to `to`.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 quantity) internal {
        require(to != address(0), "Address 0");
        require(quantity > 0, "Quantity 0");

        unchecked {
            uint256 updatedIndex = _collectionData.index;
            _addressData[to] += quantity;
            _ownerships[updatedIndex] = to;
            
            for (uint256 i; i < quantity; i++) {
                emit Transfer(address(0), to, updatedIndex++);
            }

            _collectionData.index = updatedIndex;
        }
    }

    /**
     * @dev See Below {ERC721L-_safeMint}.
     */
    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, '');
    }

    /**
     * @dev Safely mints `quantity` tokens and transfers them to `to`.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If `to` refers to a smart contract, it must implement {onERC721Received}, which is called for each safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 quantity, bytes memory _data) internal {
        require(to != address(0), "Address 0");
        require(quantity > 0, "Quantity 0");

        unchecked {
            uint256 updatedIndex = _collectionData.index;
            _addressData[to] += quantity;
            _ownerships[updatedIndex] = to;
            
            for (uint256 i; i < quantity; i++) {
                emit Transfer(address(0), to, updatedIndex);
                require(to.code.length == 0 ||
                        ERC721TokenReceiver(to).onERC721Received(_msgSender(), address(0), updatedIndex, _data) ==
                        ERC721TokenReceiver.onERC721Received.selector, "Unsafe Destination");
                updatedIndex++;
            }

            _collectionData.index = updatedIndex;
        }
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - `from` must not have tokens locked.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 tokenId) public virtual {
        address currentOwner = ownerOf(tokenId);
        require((_msgSender() == currentOwner ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(currentOwner,_msgSender())), "Not Approved");
        require(currentOwner == from, "Not Owner");
        require(to != address(0), "Address 0");

        delete _tokenApprovals[tokenId]; 
        unchecked {
            _addressData[from] -= 1;
            _addressData[to] += 1;
            _ownerships[tokenId] = to;
            uint256 nextTokenId = tokenId + 1;
            if (_ownerships[nextTokenId] == address(0) && nextTokenId < _collectionData.index) {
                _ownerships[nextTokenId] = currentOwner;
            }
        }

        emit Transfer(from, to, tokenId);
    }

    /**
     * @dev See Below {ERC721L-safeTransferFrom}.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) public virtual {
        safeTransferFrom(from, to, tokenId, '');
    }

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {ERC721TokenReceiver}, which is called upon a safe transfer.
     * - `from` must not have tokens locked.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual {
        transferFrom(from, to, tokenId);
        require(to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(_msgSender(), address(0), tokenId, _data) ==
                ERC721TokenReceiver.onERC721Received.selector, "Unsafe Destination");
    }
    
    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() public view returns (uint256) {
        unchecked {
            return _collectionData.index - _collectionData.burned;
        }
    }

    /**
     * @dev Returns the total amount of tokens created by the contract.
     */
    function totalCreated() public view returns (uint256) {
        return _collectionData.index;
    }

    /**
     * @dev Returns the total amount of tokens burned by the contract.
     */
    function totalBurned() public view returns (uint256) {
        return _collectionData.burned;
    }

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     * - Owner must not have tokens locked.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool approved) public {
        require(operator != _msgSender(), "Address is Owner");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `_owner` and tokens are unlocked for `_owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address _owner, address operator) public view returns (bool) {
        return _operatorApprovals[_owner][operator];
    }

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) public {
        address tokenOwner = ownerOf(tokenId);
        require(_msgSender() == tokenOwner || isApprovedForAll(tokenOwner, _msgSender()), "ERC721L: Not Approved");
        _tokenApprovals[tokenId] = to;
        emit Approval(tokenOwner, to, tokenId);
    }

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) public view returns (address) {
        require(_exists(tokenId), "ERC721L: Null ID");
        return _tokenApprovals[tokenId];
    }

    /**
     * @dev Returns the token collection name.
     */
    function name() public view returns (string memory) {
        return _collectionData.name;
    }

    /**
     * @dev Returns the token collection symbol.
     */
    function symbol() public view returns (string memory) {
        return _collectionData.symbol;
    }

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) public view virtual returns (string memory) {
        require(_exists(tokenId), "Non Existent");
        string memory _baseURI = baseURI();
        return bytes(_baseURI).length > 0 ? string(abi.encodePacked(_baseURI, tokenId.toString())) : '';
    }

    /**
     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
     * by default, can be overriden in child contracts.
     */
    function baseURI() public view virtual returns (string memory) {
        return '';
    }

    /**
     * @dev Returns tokenIDs owned by `_owner`.
     */
    function tokensOfOwner(address _owner) public view returns (uint256[] memory) {
        uint256 totalOwned = _addressData[_owner];
        require(totalOwned > 0, "balance 0");
        uint256 supply = _collectionData.index;
        uint256[] memory tokenIDs = new uint256[](totalOwned);
        uint256 ownedIndex;
        address currentOwner;

        unchecked {
            for (uint256 i; i < supply; i++) {
                address currentAddress = _ownerships[i];
                if (currentAddress != address(0)) {
                    currentOwner = currentAddress;
                }
                if (currentOwner == _owner) {
                    tokenIDs[ownedIndex++] = i;
                    if (ownedIndex == totalOwned){
                        return tokenIDs;
                    }
                }
            }
        }

        revert();
    }

    function owner() public view returns (address) {
        return _contractOwner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Caller not owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        address oldOwner = _contractOwner;
        _contractOwner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    /**
     * @dev Returns the token collection information.
     */
    function collectionInformation() public view returns (collectionData memory) {
        return _collectionData;
    }

    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
    }

}

interface IRocketPass {
    function balanceOf(address _address, uint256 id) external view returns (uint256);
}


contract HASHDroid is ERC721slimBatch {

    string private _baseURI = "ipfs://QmZov5NNjcx472daCYvD3unxgWXQ1UJwYsAPr6yMFiJT5a/";
    uint256 public constant maxPublicMinted = 2063;

    uint256 public publicMaxMint = 7;
    uint256 public priceDroid = .069 ether;
    uint256 public publicMinted;

    bool public depreciatedMint;
    bool public mintStatus;
    IRocketPass public rocketPass;

    mapping(address => uint256) public mintedRP;

  constructor(address _rocketPass) ERC721slimBatch("BMC Hashdroid", "HD") {
      rocketPass = IRocketPass(_rocketPass);
  }

  modifier callerIsUser() {
    require(tx.origin == _msgSender(), "Contract Caller");
    _;
  }

  function rpMint(uint256 _quantity) public callerIsUser() {
    require(mintStatus, "Public sale not active");
    require(rocketPass.balanceOf(_msgSender(), 1) - mintedRP[_msgSender()] >= _quantity, "Insufficient Rocket Passes remaining");

    mintedRP[_msgSender()] += _quantity;
    _mint(_msgSender(), _quantity);
  }

  function publicMint(uint256 _quantity) public payable callerIsUser() {
    require(mintStatus, "Public sale not active");
    require(_quantity <= publicMaxMint, "Invalid quantity");
    unchecked {
        require(publicMinted + _quantity <= maxPublicMinted, "Insufficient supply remaining");
        require(msg.value >= priceDroid * _quantity, "Insufficient payment");
    }
    publicMinted += _quantity;
    _mint(_msgSender(), _quantity);
  }

  function baseURI() public view override returns (string memory) {
    return _baseURI;
  }

  function setBaseURI(string calldata newBaseURI) external onlyOwner {
    _baseURI = newBaseURI;
  }

  function setRocketPass(address _address) external onlyOwner {
    require(!depreciatedMint, "Contract is depreciated.");
    rocketPass = IRocketPass(_address);
  }

  function setPublicState(bool _state) external onlyOwner {
    require(!depreciatedMint, "Contract is depreciated.");
    mintStatus = _state;
  }

  function setPublicMaxMint(uint256 _newLimit) external onlyOwner {
    require(!depreciatedMint, "Contract is already depreciated.");
    publicMaxMint = _newLimit;
  }

  function depreciateMint() external onlyOwner {
    require(!depreciatedMint, "Contract is already depreciated.");
    delete mintStatus;
    depreciatedMint = true;
    uint256 excess = 7777 - totalSupply();
    if (excess > 0){
        uint256 droidsToMint = excess > 60 ? 60 : excess; 
        _mint(_msgSender(), droidsToMint);
    }
    
  }

  function verifyRP(address _address) external view returns (bool){
    return (rocketPass.balanceOf(_address, 1) - mintedRP[_address]) > 0;
  }

  function withdrawFunding() external onlyOwner {
    uint256 currentBalance = address(this).balance;
    (bool sent, ) = address(msg.sender).call{value: currentBalance}('');
    require(sent, "Transfer Error");    
  }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_rocketPass","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"_exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectionInformation","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"burned","type":"uint256"}],"internalType":"struct ERC721slimBatch.collectionData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depreciateMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depreciatedMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPublicMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintedRP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceDroid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicMaxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"publicMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"publicMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rocketPass","outputs":[{"internalType":"contract IRocketPass","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"rpMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLimit","type":"uint256"}],"name":"setPublicMaxMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPublicState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setRocketPass","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":"address","name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalCreated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"verifyRP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawFunding","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e060405260366080818152906200245c60a039805162000029916009916020909101906200015b565b506007600a5566f5232269808000600b553480156200004757600080fd5b5060405162002492380380620024928339810160408190526200006a9162000201565b604080518082018252600d81526c109350c812185cda191c9bda59609a1b602080830191825283518085019094526002845261121160f21b908401528151919291620000b9916001916200015b565b508051620000cf9060029060208401906200015b565b50620000db336200010b565b5050600d80546001600160a01b03909216620100000262010000600160b01b03199092169190911790556200026f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620001699062000233565b90600052602060002090601f0160209004810192826200018d5760008555620001d8565b82601f10620001a857805160ff1916838001178555620001d8565b82800160010185558215620001d8579182015b82811115620001d8578251825591602001919060010190620001bb565b50620001e6929150620001ea565b5090565b5b80821115620001e65760008155600101620001eb565b6000602082840312156200021457600080fd5b81516001600160a01b03811681146200022c57600080fd5b9392505050565b600181811c908216806200024857607f821691505b6020821081036200026957634e487b7160e01b600052602260045260246000fd5b50919050565b6121dd806200027f6000396000f3fe60806040526004361061023b5760003560e01c806370a082311161012e578063a974e37a116100ab578063d89135cd1161006f578063d89135cd14610674578063e37c466514610689578063e985e9c5146106af578063f2fde38b146106f8578063f8e76cc01461071857600080fd5b8063a974e37a146105de578063b88d4fde146105fe578063c48156af1461061e578063c87b56dd1461063e578063d21c0ad01461065e57600080fd5b806395d89b41116100f257806395d89b41146105545780639da3f8fd14610569578063a22cb46514610588578063a4f4f8af146105a8578063a59585a8146105be57600080fd5b806370a08231146104bf578063715018a6146104df578063844e0acd146104f45780638462151c146105095780638da5cb5b1461053657600080fd5b8063305c7d4a116101bc578063454503b311610180578063454503b31461041d57806355f804b31461044a5780636352211e1461046a578063688203101461048a5780636c0360eb146104aa57600080fd5b8063305c7d4a1461039b57806330b9af98146103b15780633fee0c62146103c65780633ffea8c8146103db57806342842e0e146103fd57600080fd5b80630e43f355116102035780630e43f3551461031557806318160ddd1461032f57806323b872dd146103485780632db11544146103685780632f0a6c831461037b57600080fd5b806301ffc9a71461024057806306fdde0314610275578063081812fc14610297578063095ea7b3146102cf5780630c56b0b3146102f1575b600080fd5b34801561024c57600080fd5b5061026061025b366004611c04565b61073a565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b5061028a61078c565b60405161026c9190611c79565b3480156102a357600080fd5b506102b76102b2366004611c8c565b610821565b6040516001600160a01b03909116815260200161026c565b3480156102db57600080fd5b506102ef6102ea366004611cc1565b61088e565b005b3480156102fd57600080fd5b5061030761080f81565b60405190815260200161026c565b34801561032157600080fd5b50600d546102609060ff1681565b34801561033b57600080fd5b5060045460035403610307565b34801561035457600080fd5b506102ef610363366004611ceb565b610957565b6102ef610376366004611c8c565b610b3b565b34801561038757600080fd5b506102ef610396366004611d27565b610cd8565b3480156103a757600080fd5b50610307600a5481565b3480156103bd57600080fd5b506102ef610d7a565b3480156103d257600080fd5b506102ef610e33565b3480156103e757600080fd5b506103f0610eff565b60405161026c9190611d42565b34801561040957600080fd5b506102ef610418366004611ceb565b611074565b34801561042957600080fd5b50610307610438366004611d27565b600e6020526000908152604090205481565b34801561045657600080fd5b506102ef610465366004611d9c565b611094565b34801561047657600080fd5b506102b7610485366004611c8c565b6110ca565b34801561049657600080fd5b506102ef6104a5366004611c8c565b61112e565b3480156104b657600080fd5b5061028a6112d2565b3480156104cb57600080fd5b506103076104da366004611d27565b6112e1565b3480156104eb57600080fd5b506102ef611325565b34801561050057600080fd5b50600354610307565b34801561051557600080fd5b50610529610524366004611d27565b61135b565b60405161026c9190611e0e565b34801561054257600080fd5b506000546001600160a01b03166102b7565b34801561056057600080fd5b5061028a611485565b34801561057557600080fd5b50600d5461026090610100900460ff1681565b34801561059457600080fd5b506102ef6105a3366004611e62565b611496565b3480156105b457600080fd5b50610307600c5481565b3480156105ca57600080fd5b506102ef6105d9366004611c8c565b61154d565b3480156105ea57600080fd5b506102606105f9366004611d27565b6115cf565b34801561060a57600080fd5b506102ef610619366004611eab565b61166e565b34801561062a57600080fd5b506102ef610639366004611f87565b611756565b34801561064a57600080fd5b5061028a610659366004611c8c565b6117e8565b34801561066a57600080fd5b50610307600b5481565b34801561068057600080fd5b50600454610307565b34801561069557600080fd5b50600d546102b7906201000090046001600160a01b031681565b3480156106bb57600080fd5b506102606106ca366004611fa2565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b34801561070457600080fd5b506102ef610713366004611d27565b61188c565b34801561072457600080fd5b50610260610733366004611c8c565b6003541190565b60006301ffc9a760e01b6001600160e01b03198316148061076b57506380ac58cd60e01b6001600160e01b03198316145b806107865750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606001600001805461079e90611fcc565b80601f01602080910402602001604051908101604052809291908181526020018280546107ca90611fcc565b80156108175780601f106107ec57610100808354040283529160200191610817565b820191906000526020600020905b8154815290600101906020018083116107fa57829003601f168201915b5050505050905090565b600061082e826003541190565b6108725760405162461bcd60e51b815260206004820152601060248201526f115490cdcc8c530e88139d5b1b08125160821b60448201526064015b60405180910390fd5b506000908152600760205260409020546001600160a01b031690565b6000610899826110ca565b9050336001600160a01b03821614806108b757506108b781336106ca565b6108fb5760405162461bcd60e51b8152602060048201526015602482015274115490cdcc8c530e88139bdd08105c1c1c9bdd9959605a1b6044820152606401610869565b60008281526007602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000610962826110ca565b9050336001600160a01b038216148061098b57503361098083610821565b6001600160a01b0316145b8061099b575061099b81336106ca565b6109d65760405162461bcd60e51b815260206004820152600c60248201526b139bdd08105c1c1c9bdd995960a21b6044820152606401610869565b836001600160a01b0316816001600160a01b031614610a235760405162461bcd60e51b81526020600482015260096024820152682737ba1027bbb732b960b91b6044820152606401610869565b6001600160a01b038316610a495760405162461bcd60e51b815260040161086990612006565b600082815260076020908152604080832080546001600160a01b03199081169091556001600160a01b03888116855260068452828520805460001901905587811680865283862080546001908101909155888752600590955283862080549093161790915591850180845292205416158015610ac6575060035481105b15610af357600081815260056020526040902080546001600160a01b0319166001600160a01b0384161790555b5081836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b323314610b7c5760405162461bcd60e51b815260206004820152600f60248201526e21b7b73a3930b1ba1021b0b63632b960891b6044820152606401610869565b600d54610100900460ff16610bcc5760405162461bcd60e51b81526020600482015260166024820152755075626c69632073616c65206e6f742061637469766560501b6044820152606401610869565b600a54811115610c115760405162461bcd60e51b815260206004820152601060248201526f496e76616c6964207175616e7469747960801b6044820152606401610869565b61080f81600c54011115610c675760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420737570706c792072656d61696e696e670000006044820152606401610869565b80600b5402341015610cb25760405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b6044820152606401610869565b80600c6000828254610cc4919061203f565b90915550610cd59050335b82611904565b50565b6000546001600160a01b03163314610d025760405162461bcd60e51b815260040161086990612057565b600d5460ff1615610d505760405162461bcd60e51b815260206004820152601860248201527721b7b73a3930b1ba1034b9903232b83932b1b4b0ba32b21760411b6044820152606401610869565b600d80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6000546001600160a01b03163314610da45760405162461bcd60e51b815260040161086990612057565b6040514790600090339083908381818185875af1925050503d8060008114610de8576040519150601f19603f3d011682016040523d82523d6000602084013e610ded565b606091505b5050905080610e2f5760405162461bcd60e51b815260206004820152600e60248201526d2a3930b739b332b91022b93937b960911b6044820152606401610869565b5050565b6000546001600160a01b03163314610e5d5760405162461bcd60e51b815260040161086990612057565b600d5460ff1615610eb05760405162461bcd60e51b815260206004820181905260248201527f436f6e747261637420697320616c72656164792064657072656369617465642e6044820152606401610869565b600d805461ffff191660011790556000610ecd6004546003540390565b610ed990611e61612081565b90508015610cd5576000603c8211610ef15781610ef4565b603c5b9050610e2f33610ccf565b610f2a6040518060800160405280606081526020016060815260200160008152602001600081525090565b6001604051806080016040529081600082018054610f4790611fcc565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7390611fcc565b8015610fc05780601f10610f9557610100808354040283529160200191610fc0565b820191906000526020600020905b815481529060010190602001808311610fa357829003601f168201915b50505050508152602001600182018054610fd990611fcc565b80601f016020809104026020016040519081016040528092919081815260200182805461100590611fcc565b80156110525780601f1061102757610100808354040283529160200191611052565b820191906000526020600020905b81548152906001019060200180831161103557829003601f168201915b5050505050815260200160028201548152602001600382015481525050905090565b61108f8383836040518060200160405280600081525061166e565b505050565b6000546001600160a01b031633146110be5760405162461bcd60e51b815260040161086990612057565b61108f60098383611b55565b60035460009082101561023b576000828152600560205260409020546001600160a01b031680156110fb5792915050565b506000199091016000818152600560205260409020549091906001600160a01b031680156111295792915050565b6110fb565b32331461116f5760405162461bcd60e51b815260206004820152600f60248201526e21b7b73a3930b1ba1021b0b63632b960891b6044820152606401610869565b600d54610100900460ff166111bf5760405162461bcd60e51b81526020600482015260166024820152755075626c69632073616c65206e6f742061637469766560501b6044820152606401610869565b336000818152600e602090815260409182902054600d548351627eeac760e11b81526004810195909552600160248601529251859491936201000090046001600160a01b03169262fdd58e92604480820193918290030181865afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124f9190612098565b6112599190612081565b10156112b35760405162461bcd60e51b8152602060048201526024808201527f496e73756666696369656e7420526f636b6574205061737365732072656d61696044820152636e696e6760e01b6064820152608401610869565b336000908152600e602052604081208054839290610cc490849061203f565b60606009805461079e90611fcc565b60006001600160a01b0382166113095760405162461bcd60e51b815260040161086990612006565b506001600160a01b031660009081526006602052604090205490565b6000546001600160a01b0316331461134f5760405162461bcd60e51b815260040161086990612057565b61135960006119fc565b565b6001600160a01b038116600090815260066020526040902054606090806113b05760405162461bcd60e51b8152602060048201526009602482015268062616c616e636520360bc1b6044820152606401610869565b60035460008267ffffffffffffffff8111156113ce576113ce611e95565b6040519080825280602002602001820160405280156113f7578160200160208202803683370190505b50905060008060005b8481101561023b576000818152600560205260409020546001600160a01b0316801561142a578092505b886001600160a01b0316836001600160a01b03160361147c578185858060010196508151811061145c5761145c6120b1565b60200260200101818152505086840361147c575092979650505050505050565b50600101611400565b606060018001805461079e90611fcc565b336001600160a01b038316036114e15760405162461bcd60e51b815260206004820152601060248201526f20b2323932b9b99034b99027bbb732b960811b6044820152606401610869565b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000546001600160a01b031633146115775760405162461bcd60e51b815260040161086990612057565b600d5460ff16156115ca5760405162461bcd60e51b815260206004820181905260248201527f436f6e747261637420697320616c72656164792064657072656369617465642e6044820152606401610869565b600a55565b6001600160a01b038181166000818152600e602052604080822054600d549151627eeac760e11b81526004810194909452600160248501529193849362010000909204169062fdd58e90604401602060405180830381865afa158015611639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165d9190612098565b6116679190612081565b1192915050565b611679848484610957565b6001600160a01b0383163b158061170f5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a02906116c0903390600090889088906004016120c7565b6020604051808303816000875af11580156116df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117039190612104565b6001600160e01b031916145b6117505760405162461bcd60e51b81526020600482015260126024820152712ab739b0b332902232b9ba34b730ba34b7b760711b6044820152606401610869565b50505050565b6000546001600160a01b031633146117805760405162461bcd60e51b815260040161086990612057565b600d5460ff16156117ce5760405162461bcd60e51b815260206004820152601860248201527721b7b73a3930b1ba1034b9903232b83932b1b4b0ba32b21760411b6044820152606401610869565b600d80549115156101000261ff0019909216919091179055565b60606117f5826003541190565b6118305760405162461bcd60e51b815260206004820152600c60248201526b139bdb88115e1a5cdd195b9d60a21b6044820152606401610869565b600061183a6112d2565b9050600081511161185a5760405180602001604052806000815250611885565b8061186484611a4c565b604051602001611875929190612121565b6040516020818303038152906040525b9392505050565b6000546001600160a01b031633146118b65760405162461bcd60e51b815260040161086990612057565b6001600160a01b0381166118fb5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401610869565b610cd5816119fc565b6001600160a01b03821661192a5760405162461bcd60e51b815260040161086990612006565b600081116119675760405162461bcd60e51b815260206004820152600a60248201526905175616e7469747920360b41b6044820152606401610869565b6003546001600160a01b03831660008181526006602090815260408083208054870190558483526005909152812080546001600160a01b0319169092179091555b828110156119f4576040516001830192906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46001016119a8565b506003555050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081600003611a735750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611a9d5780611a8781612150565b9150611a969050600a8361217f565b9150611a77565b60008167ffffffffffffffff811115611ab857611ab8611e95565b6040519080825280601f01601f191660200182016040528015611ae2576020820181803683370190505b5090505b8415611b4d57611af7600183612081565b9150611b04600a86612193565b611b0f90603061203f565b60f81b818381518110611b2457611b246120b1565b60200101906001600160f81b031916908160001a905350611b46600a8661217f565b9450611ae6565b949350505050565b828054611b6190611fcc565b90600052602060002090601f016020900481019282611b835760008555611bc9565b82601f10611b9c5782800160ff19823516178555611bc9565b82800160010185558215611bc9579182015b82811115611bc9578235825591602001919060010190611bae565b50611bd5929150611bd9565b5090565b5b80821115611bd55760008155600101611bda565b6001600160e01b031981168114610cd557600080fd5b600060208284031215611c1657600080fd5b813561188581611bee565b60005b83811015611c3c578181015183820152602001611c24565b838111156117505750506000910152565b60008151808452611c65816020860160208601611c21565b601f01601f19169290920160200192915050565b6020815260006118856020830184611c4d565b600060208284031215611c9e57600080fd5b5035919050565b80356001600160a01b0381168114611cbc57600080fd5b919050565b60008060408385031215611cd457600080fd5b611cdd83611ca5565b946020939093013593505050565b600080600060608486031215611d0057600080fd5b611d0984611ca5565b9250611d1760208501611ca5565b9150604084013590509250925092565b600060208284031215611d3957600080fd5b61188582611ca5565b602081526000825160806020840152611d5e60a0840182611c4d565b90506020840151601f19848303016040850152611d7b8282611c4d565b91505060408401516060840152606084015160808401528091505092915050565b60008060208385031215611daf57600080fd5b823567ffffffffffffffff80821115611dc757600080fd5b818501915085601f830112611ddb57600080fd5b813581811115611dea57600080fd5b866020828501011115611dfc57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015611e4657835183529284019291840191600101611e2a565b50909695505050505050565b80358015158114611cbc57600080fd5b60008060408385031215611e7557600080fd5b611e7e83611ca5565b9150611e8c60208401611e52565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611ec157600080fd5b611eca85611ca5565b9350611ed860208601611ca5565b925060408501359150606085013567ffffffffffffffff80821115611efc57600080fd5b818701915087601f830112611f1057600080fd5b813581811115611f2257611f22611e95565b604051601f8201601f19908116603f01168101908382118183101715611f4a57611f4a611e95565b816040528281528a6020848701011115611f6357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600060208284031215611f9957600080fd5b61188582611e52565b60008060408385031215611fb557600080fd5b611fbe83611ca5565b9150611e8c60208401611ca5565b600181811c90821680611fe057607f821691505b60208210810361200057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526009908201526804164647265737320360bc1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561205257612052612029565b500190565b60208082526010908201526f21b0b63632b9103737ba1037bbb732b960811b604082015260600190565b60008282101561209357612093612029565b500390565b6000602082840312156120aa57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906120fa90830184611c4d565b9695505050505050565b60006020828403121561211657600080fd5b815161188581611bee565b60008351612133818460208801611c21565b835190830190612147818360208801611c21565b01949350505050565b60006001820161216257612162612029565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261218e5761218e612169565b500490565b6000826121a2576121a2612169565b50069056fea26469706673582212206816e0167be9b539f66577dfc6c3177fbfefee264cd713795b594e5e7938ec5c64736f6c634300080e0033697066733a2f2f516d5a6f76354e4e6a637834373264614359764433756e786757585131554a77597341507236794d46694a5435612f000000000000000000000000b50b3d5b519e5df96275a09deccc6080dc0800d9

Deployed Bytecode

0x60806040526004361061023b5760003560e01c806370a082311161012e578063a974e37a116100ab578063d89135cd1161006f578063d89135cd14610674578063e37c466514610689578063e985e9c5146106af578063f2fde38b146106f8578063f8e76cc01461071857600080fd5b8063a974e37a146105de578063b88d4fde146105fe578063c48156af1461061e578063c87b56dd1461063e578063d21c0ad01461065e57600080fd5b806395d89b41116100f257806395d89b41146105545780639da3f8fd14610569578063a22cb46514610588578063a4f4f8af146105a8578063a59585a8146105be57600080fd5b806370a08231146104bf578063715018a6146104df578063844e0acd146104f45780638462151c146105095780638da5cb5b1461053657600080fd5b8063305c7d4a116101bc578063454503b311610180578063454503b31461041d57806355f804b31461044a5780636352211e1461046a578063688203101461048a5780636c0360eb146104aa57600080fd5b8063305c7d4a1461039b57806330b9af98146103b15780633fee0c62146103c65780633ffea8c8146103db57806342842e0e146103fd57600080fd5b80630e43f355116102035780630e43f3551461031557806318160ddd1461032f57806323b872dd146103485780632db11544146103685780632f0a6c831461037b57600080fd5b806301ffc9a71461024057806306fdde0314610275578063081812fc14610297578063095ea7b3146102cf5780630c56b0b3146102f1575b600080fd5b34801561024c57600080fd5b5061026061025b366004611c04565b61073a565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b5061028a61078c565b60405161026c9190611c79565b3480156102a357600080fd5b506102b76102b2366004611c8c565b610821565b6040516001600160a01b03909116815260200161026c565b3480156102db57600080fd5b506102ef6102ea366004611cc1565b61088e565b005b3480156102fd57600080fd5b5061030761080f81565b60405190815260200161026c565b34801561032157600080fd5b50600d546102609060ff1681565b34801561033b57600080fd5b5060045460035403610307565b34801561035457600080fd5b506102ef610363366004611ceb565b610957565b6102ef610376366004611c8c565b610b3b565b34801561038757600080fd5b506102ef610396366004611d27565b610cd8565b3480156103a757600080fd5b50610307600a5481565b3480156103bd57600080fd5b506102ef610d7a565b3480156103d257600080fd5b506102ef610e33565b3480156103e757600080fd5b506103f0610eff565b60405161026c9190611d42565b34801561040957600080fd5b506102ef610418366004611ceb565b611074565b34801561042957600080fd5b50610307610438366004611d27565b600e6020526000908152604090205481565b34801561045657600080fd5b506102ef610465366004611d9c565b611094565b34801561047657600080fd5b506102b7610485366004611c8c565b6110ca565b34801561049657600080fd5b506102ef6104a5366004611c8c565b61112e565b3480156104b657600080fd5b5061028a6112d2565b3480156104cb57600080fd5b506103076104da366004611d27565b6112e1565b3480156104eb57600080fd5b506102ef611325565b34801561050057600080fd5b50600354610307565b34801561051557600080fd5b50610529610524366004611d27565b61135b565b60405161026c9190611e0e565b34801561054257600080fd5b506000546001600160a01b03166102b7565b34801561056057600080fd5b5061028a611485565b34801561057557600080fd5b50600d5461026090610100900460ff1681565b34801561059457600080fd5b506102ef6105a3366004611e62565b611496565b3480156105b457600080fd5b50610307600c5481565b3480156105ca57600080fd5b506102ef6105d9366004611c8c565b61154d565b3480156105ea57600080fd5b506102606105f9366004611d27565b6115cf565b34801561060a57600080fd5b506102ef610619366004611eab565b61166e565b34801561062a57600080fd5b506102ef610639366004611f87565b611756565b34801561064a57600080fd5b5061028a610659366004611c8c565b6117e8565b34801561066a57600080fd5b50610307600b5481565b34801561068057600080fd5b50600454610307565b34801561069557600080fd5b50600d546102b7906201000090046001600160a01b031681565b3480156106bb57600080fd5b506102606106ca366004611fa2565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b34801561070457600080fd5b506102ef610713366004611d27565b61188c565b34801561072457600080fd5b50610260610733366004611c8c565b6003541190565b60006301ffc9a760e01b6001600160e01b03198316148061076b57506380ac58cd60e01b6001600160e01b03198316145b806107865750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606001600001805461079e90611fcc565b80601f01602080910402602001604051908101604052809291908181526020018280546107ca90611fcc565b80156108175780601f106107ec57610100808354040283529160200191610817565b820191906000526020600020905b8154815290600101906020018083116107fa57829003601f168201915b5050505050905090565b600061082e826003541190565b6108725760405162461bcd60e51b815260206004820152601060248201526f115490cdcc8c530e88139d5b1b08125160821b60448201526064015b60405180910390fd5b506000908152600760205260409020546001600160a01b031690565b6000610899826110ca565b9050336001600160a01b03821614806108b757506108b781336106ca565b6108fb5760405162461bcd60e51b8152602060048201526015602482015274115490cdcc8c530e88139bdd08105c1c1c9bdd9959605a1b6044820152606401610869565b60008281526007602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000610962826110ca565b9050336001600160a01b038216148061098b57503361098083610821565b6001600160a01b0316145b8061099b575061099b81336106ca565b6109d65760405162461bcd60e51b815260206004820152600c60248201526b139bdd08105c1c1c9bdd995960a21b6044820152606401610869565b836001600160a01b0316816001600160a01b031614610a235760405162461bcd60e51b81526020600482015260096024820152682737ba1027bbb732b960b91b6044820152606401610869565b6001600160a01b038316610a495760405162461bcd60e51b815260040161086990612006565b600082815260076020908152604080832080546001600160a01b03199081169091556001600160a01b03888116855260068452828520805460001901905587811680865283862080546001908101909155888752600590955283862080549093161790915591850180845292205416158015610ac6575060035481105b15610af357600081815260056020526040902080546001600160a01b0319166001600160a01b0384161790555b5081836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b323314610b7c5760405162461bcd60e51b815260206004820152600f60248201526e21b7b73a3930b1ba1021b0b63632b960891b6044820152606401610869565b600d54610100900460ff16610bcc5760405162461bcd60e51b81526020600482015260166024820152755075626c69632073616c65206e6f742061637469766560501b6044820152606401610869565b600a54811115610c115760405162461bcd60e51b815260206004820152601060248201526f496e76616c6964207175616e7469747960801b6044820152606401610869565b61080f81600c54011115610c675760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420737570706c792072656d61696e696e670000006044820152606401610869565b80600b5402341015610cb25760405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b6044820152606401610869565b80600c6000828254610cc4919061203f565b90915550610cd59050335b82611904565b50565b6000546001600160a01b03163314610d025760405162461bcd60e51b815260040161086990612057565b600d5460ff1615610d505760405162461bcd60e51b815260206004820152601860248201527721b7b73a3930b1ba1034b9903232b83932b1b4b0ba32b21760411b6044820152606401610869565b600d80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6000546001600160a01b03163314610da45760405162461bcd60e51b815260040161086990612057565b6040514790600090339083908381818185875af1925050503d8060008114610de8576040519150601f19603f3d011682016040523d82523d6000602084013e610ded565b606091505b5050905080610e2f5760405162461bcd60e51b815260206004820152600e60248201526d2a3930b739b332b91022b93937b960911b6044820152606401610869565b5050565b6000546001600160a01b03163314610e5d5760405162461bcd60e51b815260040161086990612057565b600d5460ff1615610eb05760405162461bcd60e51b815260206004820181905260248201527f436f6e747261637420697320616c72656164792064657072656369617465642e6044820152606401610869565b600d805461ffff191660011790556000610ecd6004546003540390565b610ed990611e61612081565b90508015610cd5576000603c8211610ef15781610ef4565b603c5b9050610e2f33610ccf565b610f2a6040518060800160405280606081526020016060815260200160008152602001600081525090565b6001604051806080016040529081600082018054610f4790611fcc565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7390611fcc565b8015610fc05780601f10610f9557610100808354040283529160200191610fc0565b820191906000526020600020905b815481529060010190602001808311610fa357829003601f168201915b50505050508152602001600182018054610fd990611fcc565b80601f016020809104026020016040519081016040528092919081815260200182805461100590611fcc565b80156110525780601f1061102757610100808354040283529160200191611052565b820191906000526020600020905b81548152906001019060200180831161103557829003601f168201915b5050505050815260200160028201548152602001600382015481525050905090565b61108f8383836040518060200160405280600081525061166e565b505050565b6000546001600160a01b031633146110be5760405162461bcd60e51b815260040161086990612057565b61108f60098383611b55565b60035460009082101561023b576000828152600560205260409020546001600160a01b031680156110fb5792915050565b506000199091016000818152600560205260409020549091906001600160a01b031680156111295792915050565b6110fb565b32331461116f5760405162461bcd60e51b815260206004820152600f60248201526e21b7b73a3930b1ba1021b0b63632b960891b6044820152606401610869565b600d54610100900460ff166111bf5760405162461bcd60e51b81526020600482015260166024820152755075626c69632073616c65206e6f742061637469766560501b6044820152606401610869565b336000818152600e602090815260409182902054600d548351627eeac760e11b81526004810195909552600160248601529251859491936201000090046001600160a01b03169262fdd58e92604480820193918290030181865afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124f9190612098565b6112599190612081565b10156112b35760405162461bcd60e51b8152602060048201526024808201527f496e73756666696369656e7420526f636b6574205061737365732072656d61696044820152636e696e6760e01b6064820152608401610869565b336000908152600e602052604081208054839290610cc490849061203f565b60606009805461079e90611fcc565b60006001600160a01b0382166113095760405162461bcd60e51b815260040161086990612006565b506001600160a01b031660009081526006602052604090205490565b6000546001600160a01b0316331461134f5760405162461bcd60e51b815260040161086990612057565b61135960006119fc565b565b6001600160a01b038116600090815260066020526040902054606090806113b05760405162461bcd60e51b8152602060048201526009602482015268062616c616e636520360bc1b6044820152606401610869565b60035460008267ffffffffffffffff8111156113ce576113ce611e95565b6040519080825280602002602001820160405280156113f7578160200160208202803683370190505b50905060008060005b8481101561023b576000818152600560205260409020546001600160a01b0316801561142a578092505b886001600160a01b0316836001600160a01b03160361147c578185858060010196508151811061145c5761145c6120b1565b60200260200101818152505086840361147c575092979650505050505050565b50600101611400565b606060018001805461079e90611fcc565b336001600160a01b038316036114e15760405162461bcd60e51b815260206004820152601060248201526f20b2323932b9b99034b99027bbb732b960811b6044820152606401610869565b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000546001600160a01b031633146115775760405162461bcd60e51b815260040161086990612057565b600d5460ff16156115ca5760405162461bcd60e51b815260206004820181905260248201527f436f6e747261637420697320616c72656164792064657072656369617465642e6044820152606401610869565b600a55565b6001600160a01b038181166000818152600e602052604080822054600d549151627eeac760e11b81526004810194909452600160248501529193849362010000909204169062fdd58e90604401602060405180830381865afa158015611639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165d9190612098565b6116679190612081565b1192915050565b611679848484610957565b6001600160a01b0383163b158061170f5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a02906116c0903390600090889088906004016120c7565b6020604051808303816000875af11580156116df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117039190612104565b6001600160e01b031916145b6117505760405162461bcd60e51b81526020600482015260126024820152712ab739b0b332902232b9ba34b730ba34b7b760711b6044820152606401610869565b50505050565b6000546001600160a01b031633146117805760405162461bcd60e51b815260040161086990612057565b600d5460ff16156117ce5760405162461bcd60e51b815260206004820152601860248201527721b7b73a3930b1ba1034b9903232b83932b1b4b0ba32b21760411b6044820152606401610869565b600d80549115156101000261ff0019909216919091179055565b60606117f5826003541190565b6118305760405162461bcd60e51b815260206004820152600c60248201526b139bdb88115e1a5cdd195b9d60a21b6044820152606401610869565b600061183a6112d2565b9050600081511161185a5760405180602001604052806000815250611885565b8061186484611a4c565b604051602001611875929190612121565b6040516020818303038152906040525b9392505050565b6000546001600160a01b031633146118b65760405162461bcd60e51b815260040161086990612057565b6001600160a01b0381166118fb5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401610869565b610cd5816119fc565b6001600160a01b03821661192a5760405162461bcd60e51b815260040161086990612006565b600081116119675760405162461bcd60e51b815260206004820152600a60248201526905175616e7469747920360b41b6044820152606401610869565b6003546001600160a01b03831660008181526006602090815260408083208054870190558483526005909152812080546001600160a01b0319169092179091555b828110156119f4576040516001830192906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46001016119a8565b506003555050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081600003611a735750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611a9d5780611a8781612150565b9150611a969050600a8361217f565b9150611a77565b60008167ffffffffffffffff811115611ab857611ab8611e95565b6040519080825280601f01601f191660200182016040528015611ae2576020820181803683370190505b5090505b8415611b4d57611af7600183612081565b9150611b04600a86612193565b611b0f90603061203f565b60f81b818381518110611b2457611b246120b1565b60200101906001600160f81b031916908160001a905350611b46600a8661217f565b9450611ae6565b949350505050565b828054611b6190611fcc565b90600052602060002090601f016020900481019282611b835760008555611bc9565b82601f10611b9c5782800160ff19823516178555611bc9565b82800160010185558215611bc9579182015b82811115611bc9578235825591602001919060010190611bae565b50611bd5929150611bd9565b5090565b5b80821115611bd55760008155600101611bda565b6001600160e01b031981168114610cd557600080fd5b600060208284031215611c1657600080fd5b813561188581611bee565b60005b83811015611c3c578181015183820152602001611c24565b838111156117505750506000910152565b60008151808452611c65816020860160208601611c21565b601f01601f19169290920160200192915050565b6020815260006118856020830184611c4d565b600060208284031215611c9e57600080fd5b5035919050565b80356001600160a01b0381168114611cbc57600080fd5b919050565b60008060408385031215611cd457600080fd5b611cdd83611ca5565b946020939093013593505050565b600080600060608486031215611d0057600080fd5b611d0984611ca5565b9250611d1760208501611ca5565b9150604084013590509250925092565b600060208284031215611d3957600080fd5b61188582611ca5565b602081526000825160806020840152611d5e60a0840182611c4d565b90506020840151601f19848303016040850152611d7b8282611c4d565b91505060408401516060840152606084015160808401528091505092915050565b60008060208385031215611daf57600080fd5b823567ffffffffffffffff80821115611dc757600080fd5b818501915085601f830112611ddb57600080fd5b813581811115611dea57600080fd5b866020828501011115611dfc57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015611e4657835183529284019291840191600101611e2a565b50909695505050505050565b80358015158114611cbc57600080fd5b60008060408385031215611e7557600080fd5b611e7e83611ca5565b9150611e8c60208401611e52565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611ec157600080fd5b611eca85611ca5565b9350611ed860208601611ca5565b925060408501359150606085013567ffffffffffffffff80821115611efc57600080fd5b818701915087601f830112611f1057600080fd5b813581811115611f2257611f22611e95565b604051601f8201601f19908116603f01168101908382118183101715611f4a57611f4a611e95565b816040528281528a6020848701011115611f6357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600060208284031215611f9957600080fd5b61188582611e52565b60008060408385031215611fb557600080fd5b611fbe83611ca5565b9150611e8c60208401611ca5565b600181811c90821680611fe057607f821691505b60208210810361200057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526009908201526804164647265737320360bc1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561205257612052612029565b500190565b60208082526010908201526f21b0b63632b9103737ba1037bbb732b960811b604082015260600190565b60008282101561209357612093612029565b500390565b6000602082840312156120aa57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906120fa90830184611c4d565b9695505050505050565b60006020828403121561211657600080fd5b815161188581611bee565b60008351612133818460208801611c21565b835190830190612147818360208801611c21565b01949350505050565b60006001820161216257612162612029565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261218e5761218e612169565b500490565b6000826121a2576121a2612169565b50069056fea26469706673582212206816e0167be9b539f66577dfc6c3177fbfefee264cd713795b594e5e7938ec5c64736f6c634300080e0033

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

000000000000000000000000b50b3d5b519e5df96275a09deccc6080dc0800d9

-----Decoded View---------------
Arg [0] : _rocketPass (address): 0xb50B3d5B519e5dF96275A09deccC6080dC0800d9

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b50b3d5b519e5df96275a09deccc6080dc0800d9


Deployed Bytecode Sourcemap

24381:2937:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23913:340;;;;;;;;;;-1:-1:-1;23913:340:0;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;23913:340:0;;;;;;;;21030:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20782:174::-;;;;;;;;;;-1:-1:-1;20782:174:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1692:32:1;;;1674:51;;1662:2;1647:18;20782:174:0;1528:203:1;20308:315:0;;;;;;;;;;-1:-1:-1;20308:315:0;;;;;:::i;:::-;;:::i;:::-;;24517:46;;;;;;;;;;;;24559:4;24517:46;;;;;2319:25:1;;;2307:2;2292:18;24517:46:0;2173:177:1;24692:27:0;;;;;;;;;;-1:-1:-1;24692:27:0;;;;;;;;18281:161;;;;;;;;;;-1:-1:-1;18401:22:0;;;18377:21;:46;18281:161;;15952:874;;;;;;;;;;-1:-1:-1;15952:874:0;;;;;:::i;:::-;;:::i;25410:457::-;;;;;;:::i;:::-;;:::i;26078:167::-;;;;;;;;;;-1:-1:-1;26078:167:0;;;;;:::i;:::-;;:::i;24572:32::-;;;;;;;;;;;;;;;;27092:221;;;;;;;;;;;;;:::i;26581:355::-;;;;;;;;;;;;;:::i;23787:118::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16903:142::-;;;;;;;;;;-1:-1:-1;16903:142:0;;;;;:::i;:::-;;:::i;24793:43::-;;;;;;;;;;-1:-1:-1;24793:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;25971:101;;;;;;;;;;-1:-1:-1;25971:101:0;;;;;:::i;:::-;;:::i;12595:687::-;;;;;;;;;;-1:-1:-1;12595:687:0;;;;;:::i;:::-;;:::i;25077:327::-;;;;;;;;;;-1:-1:-1;25077:327:0;;;;;:::i;:::-;;:::i;25873:92::-;;;;;;;;;;;;;:::i;13373:164::-;;;;;;;;;;-1:-1:-1;13373:164:0;;;;;:::i;:::-;;:::i;23221:103::-;;;;;;;;;;;;;:::i;18541:101::-;;;;;;;;;;-1:-1:-1;18613:21:0;;18541:101;;22116:890;;;;;;;;;;-1:-1:-1;22116:890:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23014:87::-;;;;;;;;;;-1:-1:-1;23052:7:0;23079:14;-1:-1:-1;;;;;23079:14:0;23014:87;;21204:102;;;;;;;;;;;;;:::i;24726:22::-;;;;;;;;;;-1:-1:-1;24726:22:0;;;;;;;;;;;19218:269;;;;;;;;;;-1:-1:-1;19218:269:0;;;;;:::i;:::-;;:::i;24656:27::-;;;;;;;;;;;;;;;;26405:170;;;;;;;;;;-1:-1:-1;26405:170:0;;;;;:::i;:::-;;:::i;26942:144::-;;;;;;;;;;-1:-1:-1;26942:144:0;;;;;:::i;:::-;;:::i;17795:384::-;;;;;;;;;;-1:-1:-1;17795:384:0;;;;;:::i;:::-;;:::i;26251:148::-;;;;;;;;;;-1:-1:-1;26251:148:0;;;;;:::i;:::-;;:::i;21412:290::-;;;;;;;;;;-1:-1:-1;21412:290:0;;;;;:::i;:::-;;:::i;24611:38::-;;;;;;;;;;;;;;;;18740:101;;;;;;;;;;-1:-1:-1;18811:22:0;;18740:101;;24755:29;;;;;;;;;;-1:-1:-1;24755:29:0;;;;;;;-1:-1:-1;;;;;24755:29:0;;;19681:149;;;;;;;;;;-1:-1:-1;19681:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;19786:26:0;;;19762:4;19786:26;;;:18;:26;;;;;;;;:36;;;;;;;;;;;;;;;19681:149;23332:167;;;;;;;;;;-1:-1:-1;23332:167:0;;;;;:::i;:::-;;:::i;12318:126::-;;;;;;;;;;-1:-1:-1;12318:126:0;;;;;:::i;:::-;12415:21;;-1:-1:-1;12405:31:0;12318:126;23913:340;23989:4;-1:-1:-1;;;;;;;;;24026:25:0;;;;:101;;-1:-1:-1;;;;;;;;;;24102:25:0;;;24026:101;:177;;;-1:-1:-1;;;;;;;;;;24178:25:0;;;24026:177;24006:197;23913:340;-1:-1:-1;;23913:340:0:o;21030:98::-;21067:13;21100:15;:20;;21093:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21030:98;:::o;20782:174::-;20841:7;20869:16;20877:7;12415:21;;-1:-1:-1;12405:31:0;12318:126;20869:16;20861:45;;;;-1:-1:-1;;;20861:45:0;;7773:2:1;20861:45:0;;;7755:21:1;7812:2;7792:18;;;7785:30;-1:-1:-1;;;7831:18:1;;;7824:46;7887:18;;20861:45:0;;;;;;;;;-1:-1:-1;20924:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;20924:24:0;;20782:174::o;20308:315::-;20372:18;20393:16;20401:7;20393;:16::i;:::-;20372:37;-1:-1:-1;12030:10:0;-1:-1:-1;;;;;20428:26:0;;;;:72;;-1:-1:-1;20458:42:0;20475:10;12030;19681:149;:::i;20458:42::-;20420:106;;;;-1:-1:-1;;;20420:106:0;;8118:2:1;20420:106:0;;;8100:21:1;8157:2;8137:18;;;8130:30;-1:-1:-1;;;8176:18:1;;;8169:51;8237:18;;20420:106:0;7916:345:1;20420:106:0;20537:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;20537:29:0;-1:-1:-1;;;;;20537:29:0;;;;;;;;;20582:33;;20537:24;;20582:33;;;;;;;20361:262;20308:315;;:::o;15952:874::-;16043:20;16066:16;16074:7;16066;:16::i;:::-;16043:39;-1:-1:-1;12030:10:0;-1:-1:-1;;;;;16102:28:0;;;;:81;;-1:-1:-1;12030:10:0;16147:20;16159:7;16147:11;:20::i;:::-;-1:-1:-1;;;;;16147:36:0;;16102:81;:141;;;-1:-1:-1;16200:43:0;16217:12;12030:10;19681:149;:::i;16200:43::-;16093:168;;;;-1:-1:-1;;;16093:168:0;;8468:2:1;16093:168:0;;;8450:21:1;8507:2;8487:18;;;8480:30;-1:-1:-1;;;8526:18:1;;;8519:42;8578:18;;16093:168:0;8266:336:1;16093:168:0;16296:4;-1:-1:-1;;;;;16280:20:0;:12;-1:-1:-1;;;;;16280:20:0;;16272:42;;;;-1:-1:-1;;;16272:42:0;;8809:2:1;16272:42:0;;;8791:21:1;8848:1;8828:18;;;8821:29;-1:-1:-1;;;8866:18:1;;;8859:39;8915:18;;16272:42:0;8607:332:1;16272:42:0;-1:-1:-1;;;;;16333:16:0;;16325:38;;;;-1:-1:-1;;;16325:38:0;;;;;;;:::i;:::-;16383:24;;;;:15;:24;;;;;;;;16376:31;;-1:-1:-1;;;;;;16376:31:0;;;;;;-1:-1:-1;;;;;16444:18:0;;;;;:12;:18;;;;;:23;;-1:-1:-1;;16444:23:0;;;16482:16;;;;;;;;;:21;;16376:31;16482:21;;;;;;16518:20;;;:11;:20;;;;;;:25;;;;;;;;;16580:11;;;16610:24;;;;;;;:38;:77;;;;-1:-1:-1;16666:21:0;;16652:35;;16610:77;16606:157;;;16708:24;;;;:11;:24;;;;;:39;;-1:-1:-1;;;;;;16708:39:0;-1:-1:-1;;;;;16708:39:0;;;;;16606:157;16419:355;16810:7;16806:2;-1:-1:-1;;;;;16791:27:0;16800:4;-1:-1:-1;;;;;16791:27:0;;;;;;;;;;;16032:794;15952:874;;;:::o;25410:457::-;25012:9;12030:10;25012:25;25004:53;;;;-1:-1:-1;;;25004:53:0;;9483:2:1;25004:53:0;;;9465:21:1;9522:2;9502:18;;;9495:30;-1:-1:-1;;;9541:18:1;;;9534:45;9596:18;;25004:53:0;9281:339:1;25004:53:0;25494:10:::1;::::0;::::1;::::0;::::1;;;25486:45;;;::::0;-1:-1:-1;;;25486:45:0;;9827:2:1;25486:45:0::1;::::0;::::1;9809:21:1::0;9866:2;9846:18;;;9839:30;-1:-1:-1;;;9885:18:1;;;9878:52;9947:18;;25486:45:0::1;9625:346:1::0;25486:45:0::1;25559:13;;25546:9;:26;;25538:55;;;::::0;-1:-1:-1;;;25538:55:0;;10178:2:1;25538:55:0::1;::::0;::::1;10160:21:1::0;10217:2;10197:18;;;10190:30;-1:-1:-1;;;10236:18:1;;;10229:46;10292:18;;25538:55:0::1;9976:340:1::0;25538:55:0::1;24559:4;25644:9;25629:12;;:24;:43;;25621:85;;;::::0;-1:-1:-1;;;25621:85:0;;10523:2:1;25621:85:0::1;::::0;::::1;10505:21:1::0;10562:2;10542:18;;;10535:30;10601:31;10581:18;;;10574:59;10650:18;;25621:85:0::1;10321:353:1::0;25621:85:0::1;25751:9;25738:10;;:22;25725:9;:35;;25717:68;;;::::0;-1:-1:-1;;;25717:68:0;;10881:2:1;25717:68:0::1;::::0;::::1;10863:21:1::0;10920:2;10900:18;;;10893:30;-1:-1:-1;;;10939:18:1;;;10932:50;10999:18;;25717:68:0::1;10679:344:1::0;25717:68:0::1;25815:9;25799:12;;:25;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;25831:30:0::1;::::0;-1:-1:-1;12030:10:0;25837:12:::1;25851:9;25831:5;:30::i;:::-;25410:457:::0;:::o;26078:167::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;26154:15:::1;::::0;::::1;;26153:16;26145:53;;;::::0;-1:-1:-1;;;26145:53:0;;11840:2:1;26145:53:0::1;::::0;::::1;11822:21:1::0;11879:2;11859:18;;;11852:30;-1:-1:-1;;;11898:18:1;;;11891:54;11962:18;;26145:53:0::1;11638:348:1::0;26145:53:0::1;26205:10;:34:::0;;-1:-1:-1;;;;;26205:34:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;26205:34:0;;::::1;::::0;;;::::1;::::0;;26078:167::o;27092:221::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;27214:51:::1;::::0;27170:21:::1;::::0;27145:22:::1;::::0;27222:10:::1;::::0;27170:21;;27145:22;27214:51;27145:22;27214:51;27170:21;27222:10;27214:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27198:67;;;27280:4;27272:31;;;::::0;-1:-1:-1;;;27272:31:0;;12403:2:1;27272:31:0::1;::::0;::::1;12385:21:1::0;12442:2;12422:18;;;12415:30;-1:-1:-1;;;12461:18:1;;;12454:44;12515:18;;27272:31:0::1;12201:338:1::0;27272:31:0::1;27138:175;;27092:221::o:0;26581:355::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;26642:15:::1;::::0;::::1;;26641:16;26633:61;;;::::0;-1:-1:-1;;;26633:61:0;;12746:2:1;26633:61:0::1;::::0;::::1;12728:21:1::0;;;12765:18;;;12758:30;12824:34;12804:18;;;12797:62;12876:18;;26633:61:0::1;12544:356:1::0;26633:61:0::1;26708:10;26701:17:::0;;-1:-1:-1;;26725:22:0;26708:10:::1;26725:22;::::0;;-1:-1:-1;26778:13:0::1;18401:22:::0;;;18377:21;:46;;18281:161;26778:13:::1;26771:20;::::0;:4:::1;:20;:::i;:::-;26754:37:::0;-1:-1:-1;26802:10:0;;26798:127:::1;;26824:20;26856:2;26847:6;:11;:25;;26866:6;26847:25;;;26861:2;26847:25;26824:48:::0;-1:-1:-1;26884:33:0::1;12030:10:::0;26890:12:::1;11950:98:::0;23787:118;23841:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23841:21:0;23882:15;23875:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23787:118;:::o;16903:142::-;16998:39;17015:4;17021:2;17025:7;16998:39;;;;;;;;;;;;:16;:39::i;:::-;16903:142;;;:::o;25971:101::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;26045:21:::1;:8;26056:10:::0;;26045:21:::1;:::i;12595:687::-:0;12717:21;;12658:7;;12707:31;;12703:535;;;12759:17;12779:20;;;:11;:20;;;;;;-1:-1:-1;;;;;12779:20:0;12822:23;;12818:88;;12877:9;12595:687;-1:-1:-1;;12595:687:0:o;12818:88::-;-1:-1:-1;;;12968:9:0;;;13016:20;;;;:11;:20;;;;;;12968:9;;-1:-1:-1;;;;;;13016:20:0;13069:23;;13065:104;;13132:9;12595:687;-1:-1:-1;;12595:687:0:o;13065:104::-;12928:291;;25077:327;25012:9;12030:10;25012:25;25004:53;;;;-1:-1:-1;;;25004:53:0;;9483:2:1;25004:53:0;;;9465:21:1;9522:2;9502:18;;;9495:30;-1:-1:-1;;;9541:18:1;;;9534:45;9596:18;;25004:53:0;9281:339:1;25004:53:0;25149:10:::1;::::0;::::1;::::0;::::1;;;25141:45;;;::::0;-1:-1:-1;;;25141:45:0;;9827:2:1;25141:45:0::1;::::0;::::1;9809:21:1::0;9866:2;9846:18;;;9839:30;-1:-1:-1;;;9885:18:1;;;9878:52;9947:18;;25141:45:0::1;9625:346:1::0;25141:45:0::1;12030:10:::0;25241:22:::1;::::0;;;:8:::1;:22;::::0;;;;;;;;;25201:10:::1;::::0;:37;;-1:-1:-1;;;25201:37:0;;::::1;::::0;::::1;13217:51:1::0;;;;25236:1:0::1;13284:18:1::0;;;13277:34;25201:37:0;;25267:9;;25241:22;;25201:10;;::::1;-1:-1:-1::0;;;;;25201:10:0::1;::::0;:20:::1;::::0;13190:18:1;;;;;25201:37:0;;;;;;:10;:37:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;;:::i;:::-;:75;;25193:124;;;::::0;-1:-1:-1;;;25193:124:0;;13713:2:1;25193:124:0::1;::::0;::::1;13695:21:1::0;13752:2;13732:18;;;13725:30;13791:34;13771:18;;;13764:62;-1:-1:-1;;;13842:18:1;;;13835:34;13886:19;;25193:124:0::1;13511:400:1::0;25193:124:0::1;12030:10:::0;25326:22:::1;::::0;;;:8:::1;:22;::::0;;;;:35;;25352:9;;25326:22;:35:::1;::::0;25352:9;;25326:35:::1;:::i;25873:92::-:0;25922:13;25951:8;25944:15;;;;;:::i;13373:164::-;13429:7;-1:-1:-1;;;;;13457:20:0;;13449:42;;;;-1:-1:-1;;;13449:42:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;13509:20:0;;;;;:12;:20;;;;;;;13373:164::o;23221:103::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;23286:30:::1;23313:1;23286:18;:30::i;:::-;23221:103::o:0;22116:890::-;-1:-1:-1;;;;;22226:20:0;;22205:18;22226:20;;;:12;:20;;;;;;22176:16;;22265:14;22257:36;;;;-1:-1:-1;;;22257:36:0;;14118:2:1;22257:36:0;;;14100:21:1;14157:1;14137:18;;;14130:29;-1:-1:-1;;;14175:18:1;;;14168:39;14224:18;;22257:36:0;13916:332:1;22257:36:0;22321:21;;22304:14;22395:10;22381:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22381:25:0;;22353:53;;22417:18;22446:20;22509:9;22504:463;22524:6;22520:1;:10;22504:463;;;22556:22;22581:14;;;:11;:14;;;;;;-1:-1:-1;;;;;22581:14:0;22618:28;;22614:106;;22686:14;22671:29;;22614:106;22758:6;-1:-1:-1;;;;;22742:22:0;:12;-1:-1:-1;;;;;22742:22:0;;22738:214;;22814:1;22789:8;22798:12;;;;;;22789:22;;;;;;;;:::i;:::-;;;;;;:26;;;;;22856:10;22842;:24;22838:95;;-1:-1:-1;22901:8:0;;22116:890;-1:-1:-1;;;;;;;22116:890:0:o;22838:95::-;-1:-1:-1;22532:3:0;;22504:463;;21204:102;21243:13;21276:15;:22;;21269:29;;;;;:::i;19218:269::-;12030:10;-1:-1:-1;;;;;19304:24:0;;;19296:53;;;;-1:-1:-1;;;19296:53:0;;14587:2:1;19296:53:0;;;14569:21:1;14626:2;14606:18;;;14599:30;-1:-1:-1;;;14645:18:1;;;14638:46;14701:18;;19296:53:0;14385:340:1;19296:53:0;12030:10;19362:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;19362:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;19362:53:0;;;;;;;;;;19431:48;;540:41:1;;;19362:42:0;;12030:10;19431:48;;513:18:1;19431:48:0;;;;;;;19218:269;;:::o;26405:170::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;26485:15:::1;::::0;::::1;;26484:16;26476:61;;;::::0;-1:-1:-1;;;26476:61:0;;12746:2:1;26476:61:0::1;::::0;::::1;12728:21:1::0;;;12765:18;;;12758:30;12824:34;12804:18;;;12797:62;12876:18;;26476:61:0::1;12544:356:1::0;26476:61:0::1;26544:13;:25:::0;26405:170::o;26942:144::-;-1:-1:-1;;;;;27057:18:0;;;27001:4;27057:18;;;:8;:18;;;;;;;27021:10;;:33;;-1:-1:-1;;;27021:33:0;;;;;13217:51:1;;;;27052:1:0;13284:18:1;;;13277:34;27001:4:0;;;;27021:10;;;;;;:20;;13190:18:1;;27021:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;;;:::i;:::-;27020:60;;26942:144;-1:-1:-1;;26942:144:0:o;17795:384::-;17910:31;17923:4;17929:2;17933:7;17910:12;:31::i;:::-;-1:-1:-1;;;;;17960:14:0;;;:19;;:188;;-1:-1:-1;18000:82:0;;-1:-1:-1;;;18000:82:0;;;18103:45;-1:-1:-1;;;;;18000:40:0;;;18103:45;;18000:82;;12030:10;;18063:1;;18067:7;;18076:5;;18000:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;18000:148:0;;17960:188;17952:219;;;;-1:-1:-1;;;17952:219:0;;15680:2:1;17952:219:0;;;15662:21:1;15719:2;15699:18;;;15692:30;-1:-1:-1;;;15738:18:1;;;15731:48;15796:18;;17952:219:0;15478:342:1;17952:219:0;17795:384;;;;:::o;26251:148::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;26323:15:::1;::::0;::::1;;26322:16;26314:53;;;::::0;-1:-1:-1;;;26314:53:0;;11840:2:1;26314:53:0::1;::::0;::::1;11822:21:1::0;11879:2;11859:18;;;11852:30;-1:-1:-1;;;11898:18:1;;;11891:54;11962:18;;26314:53:0::1;11638:348:1::0;26314:53:0::1;26374:10;:19:::0;;;::::1;;;;-1:-1:-1::0;;26374:19:0;;::::1;::::0;;;::::1;::::0;;26251:148::o;21412:290::-;21476:13;21510:16;21518:7;12415:21;;-1:-1:-1;12405:31:0;12318:126;21510:16;21502:41;;;;-1:-1:-1;;;21502:41:0;;16027:2:1;21502:41:0;;;16009:21:1;16066:2;16046:18;;;16039:30;-1:-1:-1;;;16085:18:1;;;16078:42;16137:18;;21502:41:0;15825:336:1;21502:41:0;21554:22;21579:9;:7;:9::i;:::-;21554:34;;21631:1;21612:8;21606:22;:26;:88;;;;;;;;;;;;;;;;;21659:8;21669:18;:7;:16;:18::i;:::-;21642:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21606:88;21599:95;21412:290;-1:-1:-1;;;21412:290:0:o;23332:167::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23413:22:0;::::1;23405:47;;;::::0;-1:-1:-1;;;23405:47:0;;16843:2:1;23405:47:0::1;::::0;::::1;16825:21:1::0;16882:2;16862:18;;;16855:30;-1:-1:-1;;;16901:18:1;;;16894:42;16953:18;;23405:47:0::1;16641:336:1::0;23405:47:0::1;23463:28;23482:8;23463:18;:28::i;13751:534::-:0;-1:-1:-1;;;;;13824:16:0;;13816:38;;;;-1:-1:-1;;;13816:38:0;;;;;;;:::i;:::-;13884:1;13873:8;:12;13865:35;;;;-1:-1:-1;;;13865:35:0;;17184:2:1;13865:35:0;;;17166:21:1;17223:2;17203:18;;;17196:30;-1:-1:-1;;;17242:18:1;;;17235:40;17292:18;;13865:35:0;16982:334:1;13865:35:0;13961:21;;-1:-1:-1;;;;;13997:16:0;;13938:20;13997:16;;;:12;:16;;;;;;;;:28;;;;;;14040:25;;;:11;:25;;;;;:30;;-1:-1:-1;;;;;;14040:30:0;;;;;;;14099:115;14119:8;14115:1;:12;14099:115;;;14158:40;;14183:14;;;;;-1:-1:-1;;;;;14158:40:0;;;14175:1;;14158:40;;14175:1;;14158:40;14129:3;;14099:115;;;-1:-1:-1;14230:21:0;:36;-1:-1:-1;;13751:534:0:o;23507:199::-;23573:16;23592:14;;-1:-1:-1;;;;;23617:25:0;;;-1:-1:-1;;;;;;23617:25:0;;;;;;23658:40;;23592:14;;;;;;;23658:40;;23573:16;23658:40;23562:144;23507:199;:::o;289:723::-;345:13;566:5;575:1;566:10;562:53;;-1:-1:-1;;593:10:0;;;;;;;;;;;;-1:-1:-1;;;593:10:0;;;;;289:723::o;562:53::-;640:5;625:12;681:78;688:9;;681:78;;714:8;;;;:::i;:::-;;-1:-1:-1;737:10:0;;-1:-1:-1;745:2:0;737:10;;:::i;:::-;;;681:78;;;769:19;801:6;791:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;791:17:0;;769:39;;819:154;826:10;;819:154;;853:11;863:1;853:11;;:::i;:::-;;-1:-1:-1;922:10:0;930:2;922:5;:10;:::i;:::-;909:24;;:2;:24;:::i;:::-;896:39;;879:6;886;879:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;879:56:0;;;;;;;;-1:-1:-1;950:11:0;959:2;950:11;;:::i;:::-;;;819:154;;;997:6;289:723;-1:-1:-1;;;;289:723:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:1;-1:-1:-1;;;;;;88:32:1;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:258::-;664:1;674:113;688:6;685:1;682:13;674:113;;;764:11;;;758:18;745:11;;;738:39;710:2;703:10;674:113;;;805:6;802:1;799:13;796:48;;;-1:-1:-1;;840:1:1;822:16;;815:27;592:258::o;855:::-;897:3;935:5;929:12;962:6;957:3;950:19;978:63;1034:6;1027:4;1022:3;1018:14;1011:4;1004:5;1000:16;978:63;:::i;:::-;1095:2;1074:15;-1:-1:-1;;1070:29:1;1061:39;;;;1102:4;1057:50;;855:258;-1:-1:-1;;855:258:1:o;1118:220::-;1267:2;1256:9;1249:21;1230:4;1287:45;1328:2;1317:9;1313:18;1305:6;1287:45;:::i;1343:180::-;1402:6;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;-1:-1:-1;1494:23:1;;1343:180;-1:-1:-1;1343:180:1:o;1736:173::-;1804:20;;-1:-1:-1;;;;;1853:31:1;;1843:42;;1833:70;;1899:1;1896;1889:12;1833:70;1736:173;;;:::o;1914:254::-;1982:6;1990;2043:2;2031:9;2022:7;2018:23;2014:32;2011:52;;;2059:1;2056;2049:12;2011:52;2082:29;2101:9;2082:29;:::i;:::-;2072:39;2158:2;2143:18;;;;2130:32;;-1:-1:-1;;;1914:254:1:o;2355:328::-;2432:6;2440;2448;2501:2;2489:9;2480:7;2476:23;2472:32;2469:52;;;2517:1;2514;2507:12;2469:52;2540:29;2559:9;2540:29;:::i;:::-;2530:39;;2588:38;2622:2;2611:9;2607:18;2588:38;:::i;:::-;2578:48;;2673:2;2662:9;2658:18;2645:32;2635:42;;2355:328;;;;;:::o;2688:186::-;2747:6;2800:2;2788:9;2779:7;2775:23;2771:32;2768:52;;;2816:1;2813;2806:12;2768:52;2839:29;2858:9;2839:29;:::i;2879:691::-;3070:2;3059:9;3052:21;3033:4;3108:6;3102:13;3151:4;3146:2;3135:9;3131:18;3124:32;3179:52;3226:3;3215:9;3211:19;3197:12;3179:52;:::i;:::-;3165:66;;3280:2;3272:6;3268:15;3262:22;3352:2;3348:7;3336:9;3328:6;3324:22;3320:36;3315:2;3304:9;3300:18;3293:64;3380:41;3414:6;3398:14;3380:41;:::i;:::-;3366:55;;;3475:2;3467:6;3463:15;3457:22;3452:2;3441:9;3437:18;3430:50;3536:2;3528:6;3524:15;3518:22;3511:4;3500:9;3496:20;3489:52;3558:6;3550:14;;;2879:691;;;;:::o;3575:592::-;3646:6;3654;3707:2;3695:9;3686:7;3682:23;3678:32;3675:52;;;3723:1;3720;3713:12;3675:52;3763:9;3750:23;3792:18;3833:2;3825:6;3822:14;3819:34;;;3849:1;3846;3839:12;3819:34;3887:6;3876:9;3872:22;3862:32;;3932:7;3925:4;3921:2;3917:13;3913:27;3903:55;;3954:1;3951;3944:12;3903:55;3994:2;3981:16;4020:2;4012:6;4009:14;4006:34;;;4036:1;4033;4026:12;4006:34;4081:7;4076:2;4067:6;4063:2;4059:15;4055:24;4052:37;4049:57;;;4102:1;4099;4092:12;4049:57;4133:2;4125:11;;;;;4155:6;;-1:-1:-1;3575:592:1;;-1:-1:-1;;;;3575:592:1:o;4172:632::-;4343:2;4395:21;;;4465:13;;4368:18;;;4487:22;;;4314:4;;4343:2;4566:15;;;;4540:2;4525:18;;;4314:4;4609:169;4623:6;4620:1;4617:13;4609:169;;;4684:13;;4672:26;;4753:15;;;;4718:12;;;;4645:1;4638:9;4609:169;;;-1:-1:-1;4795:3:1;;4172:632;-1:-1:-1;;;;;;4172:632:1:o;4809:160::-;4874:20;;4930:13;;4923:21;4913:32;;4903:60;;4959:1;4956;4949:12;4974:254;5039:6;5047;5100:2;5088:9;5079:7;5075:23;5071:32;5068:52;;;5116:1;5113;5106:12;5068:52;5139:29;5158:9;5139:29;:::i;:::-;5129:39;;5187:35;5218:2;5207:9;5203:18;5187:35;:::i;:::-;5177:45;;4974:254;;;;;:::o;5233:127::-;5294:10;5289:3;5285:20;5282:1;5275:31;5325:4;5322:1;5315:15;5349:4;5346:1;5339:15;5365:1138;5460:6;5468;5476;5484;5537:3;5525:9;5516:7;5512:23;5508:33;5505:53;;;5554:1;5551;5544:12;5505:53;5577:29;5596:9;5577:29;:::i;:::-;5567:39;;5625:38;5659:2;5648:9;5644:18;5625:38;:::i;:::-;5615:48;;5710:2;5699:9;5695:18;5682:32;5672:42;;5765:2;5754:9;5750:18;5737:32;5788:18;5829:2;5821:6;5818:14;5815:34;;;5845:1;5842;5835:12;5815:34;5883:6;5872:9;5868:22;5858:32;;5928:7;5921:4;5917:2;5913:13;5909:27;5899:55;;5950:1;5947;5940:12;5899:55;5986:2;5973:16;6008:2;6004;6001:10;5998:36;;;6014:18;;:::i;:::-;6089:2;6083:9;6057:2;6143:13;;-1:-1:-1;;6139:22:1;;;6163:2;6135:31;6131:40;6119:53;;;6187:18;;;6207:22;;;6184:46;6181:72;;;6233:18;;:::i;:::-;6273:10;6269:2;6262:22;6308:2;6300:6;6293:18;6348:7;6343:2;6338;6334;6330:11;6326:20;6323:33;6320:53;;;6369:1;6366;6359:12;6320:53;6425:2;6420;6416;6412:11;6407:2;6399:6;6395:15;6382:46;6470:1;6465:2;6460;6452:6;6448:15;6444:24;6437:35;6491:6;6481:16;;;;;;;5365:1138;;;;;;;:::o;6508:180::-;6564:6;6617:2;6605:9;6596:7;6592:23;6588:32;6585:52;;;6633:1;6630;6623:12;6585:52;6656:26;6672:9;6656:26;:::i;6921:260::-;6989:6;6997;7050:2;7038:9;7029:7;7025:23;7021:32;7018:52;;;7066:1;7063;7056:12;7018:52;7089:29;7108:9;7089:29;:::i;:::-;7079:39;;7137:38;7171:2;7160:9;7156:18;7137:38;:::i;7186:380::-;7265:1;7261:12;;;;7308;;;7329:61;;7383:4;7375:6;7371:17;7361:27;;7329:61;7436:2;7428:6;7425:14;7405:18;7402:38;7399:161;;7482:10;7477:3;7473:20;7470:1;7463:31;7517:4;7514:1;7507:15;7545:4;7542:1;7535:15;7399:161;;7186:380;;;:::o;8944:332::-;9146:2;9128:21;;;9185:1;9165:18;;;9158:29;-1:-1:-1;;;9218:2:1;9203:18;;9196:39;9267:2;9252:18;;8944:332::o;11028:127::-;11089:10;11084:3;11080:20;11077:1;11070:31;11120:4;11117:1;11110:15;11144:4;11141:1;11134:15;11160:128;11200:3;11231:1;11227:6;11224:1;11221:13;11218:39;;;11237:18;;:::i;:::-;-1:-1:-1;11273:9:1;;11160:128::o;11293:340::-;11495:2;11477:21;;;11534:2;11514:18;;;11507:30;-1:-1:-1;;;11568:2:1;11553:18;;11546:46;11624:2;11609:18;;11293:340::o;12905:125::-;12945:4;12973:1;12970;12967:8;12964:34;;;12978:18;;:::i;:::-;-1:-1:-1;13015:9:1;;12905:125::o;13322:184::-;13392:6;13445:2;13433:9;13424:7;13420:23;13416:32;13413:52;;;13461:1;13458;13451:12;13413:52;-1:-1:-1;13484:16:1;;13322:184;-1:-1:-1;13322:184:1:o;14253:127::-;14314:10;14309:3;14305:20;14302:1;14295:31;14345:4;14342:1;14335:15;14369:4;14366:1;14359:15;14730:489;-1:-1:-1;;;;;14999:15:1;;;14981:34;;15051:15;;15046:2;15031:18;;15024:43;15098:2;15083:18;;15076:34;;;15146:3;15141:2;15126:18;;15119:31;;;14924:4;;15167:46;;15193:19;;15185:6;15167:46;:::i;:::-;15159:54;14730:489;-1:-1:-1;;;;;;14730:489:1:o;15224:249::-;15293:6;15346:2;15334:9;15325:7;15321:23;15317:32;15314:52;;;15362:1;15359;15352:12;15314:52;15394:9;15388:16;15413:30;15437:5;15413:30;:::i;16166:470::-;16345:3;16383:6;16377:13;16399:53;16445:6;16440:3;16433:4;16425:6;16421:17;16399:53;:::i;:::-;16515:13;;16474:16;;;;16537:57;16515:13;16474:16;16571:4;16559:17;;16537:57;:::i;:::-;16610:20;;16166:470;-1:-1:-1;;;;16166:470:1:o;17321:135::-;17360:3;17381:17;;;17378:43;;17401:18;;:::i;:::-;-1:-1:-1;17448:1:1;17437:13;;17321:135::o;17461:127::-;17522:10;17517:3;17513:20;17510:1;17503:31;17553:4;17550:1;17543:15;17577:4;17574:1;17567:15;17593:120;17633:1;17659;17649:35;;17664:18;;:::i;:::-;-1:-1:-1;17698:9:1;;17593:120::o;17718:112::-;17750:1;17776;17766:35;;17781:18;;:::i;:::-;-1:-1:-1;17815:9:1;;17718:112::o

Swarm Source

ipfs://6816e0167be9b539f66577dfc6c3177fbfefee264cd713795b594e5e7938ec5c

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

BMC has dropped the first-ever Play-To-Mine game and Hashdroids are the builders of the Mars economy. Owning one or more Hashdroids gives players the ability to build miners, upgrade parts and earn $HASH.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.