DECOMPILED SOLIDITY (Heimdall)
VERIFY
// SPDX-License-Identifier: MIT
pragma solidity > = 0.8 . 0 ;
/// @title Decompiled Contract
/// @author Jonathan Becker <jonathan@jbecker.dev>
/// @custom:version heimdall-rs v0.9.2
///
/// @notice This contract was decompiled using the heimdall-rs decompiler.
/// It was generated directly by tracing the EVM opcodes from this contract.
/// As a result, it may not compile or even be valid solidity code.
/// Despite this, it should be obvious what each function does. Overall
/// logic should have been preserved throughout decompiling.
///
/// @custom:github You can find the open-source decompiler here:
/// https://heimdall.rs
contract DecompiledContract {
uint256 public constant TOKEN_LIMIT = 20000 ;
uint256 public constant REVEAL_BATCH_SIZE = 1000 ;
uint256 public constant startSaleTimestamp = 1645634753 ;
uint256 public constant merkleRoot = 30381731263875915465356288838527804114885455969615625296949685568272591740237 ;
bytes32 store_o;
mapping ( bytes32 = > bytes32 ) storage_map_d;
bytes32 store_k;
mapping ( bytes32 = > bytes32 ) storage_map_g;
bytes32 store_n;
address public owner;
mapping ( bytes32 = > bytes32 ) storage_map_j;
uint256 public totalSupply;
address public realOwner;
mapping ( bytes32 = > bytes32 ) storage_map_p;
mapping ( bytes32 = > bytes32 ) storage_map_m;
bool public airdropped;
bytes32 store_l;
uint256 public lastTokenRevealed;
mapping ( bytes32 = > bytes32 ) storage_map_e;
bytes32 store_i;
mapping ( bytes32 = > bytes32 ) storage_map_c;
event Approval( address , address , uint256 ) ;
error MintZeroQuantity( ) ;
event Transfer( address , address , uint256 ) ;
event ApprovalForAll( address , address , bool ) ;
event OwnershipTransferred( address , address ) ;
/// @custom:selector 0x095ea7b3
/// @custom:signature approve(address arg0, uint256 arg1) public
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
/// @param arg1 ["uint256", "bytes32", "int256"]
function approve( address arg0, uint256 arg1) public {
require ( arg0 = = ( address ( arg0) ) ) ;
require ( arg1 = = arg1) ;
require ( ! ( arg1 < totalSupply) , CustomError_df2d9b42( ) ) ;
uint256 var_e = arg1;
require ( var_j, CustomError_df2d9b42( ) ) ;
require ( address ( var_l) = = 0 , CustomError_cfb3b942( ) ) ;
require ( ! ( address ( arg0) = = ( address ( var_l) ) ) , CustomError_cfb3b942( ) ) ;
require ( ! ( ! ( address ( msg. sender) ) = = ( address ( var_l) ) ) , CustomError_cfb3b942( ) ) ;
var_e = address ( msg. sender) ;
require ( ! ( ! bytes1 ( storage_map_d[ var_e] / 0x01 ) ) , CustomError_cfb3b942( ) ) ;
var_e = arg1;
storage_map_d[ var_e] = ( address ( arg0) * 0x01 ) | ( uint96 ( storage_map_d[ var_e] ) ) ;
emit Approval( address ( var_l) , address ( arg0) , arg1) ;
require ( ! ( ! ( address ( msg. sender) ) = = ( address ( var_l) ) ) , CustomError_cfb3b942( ) ) ;
var_e = arg1;
storage_map_d[ var_e] = ( address ( arg0) * 0x01 ) | ( uint96 ( storage_map_d[ var_e] ) ) ;
emit Approval( address ( var_l) , address ( arg0) , arg1) ;
require ( ! 0x01 , CustomError_df2d9b42( ) ) ;
var_e = arg1 - 0x01 ;
require ( address ( var_l) = = 0 , CustomError_df2d9b42( ) ) ;
require ( ! 0x01 , CustomError_df2d9b42( ) ) ;
}
/// @custom:selector 0x777c9091
/// @custom:signature batchToSeed(uint256 arg0) public view returns (uint256)
/// @param arg0 ["uint256", "bytes32", "int256"]
function batchToSeed( uint256 arg0) public view returns ( uint256 ) {
require ( arg0 = = arg0) ;
uint256 var_b = arg0;
return storage_map_e[ var_b] ;
}
/// @custom:selector 0x729ad39e
/// @custom:signature Unresolved_729ad39e(uint256 arg0, address arg1) public
/// @param arg0 ["uint256", "bytes32", "int256"]
/// @param arg1 ["address", "uint160", "bytes20", "int160"]
function Unresolved_729ad39e( uint256 arg0, address arg1) public {
require ( ! arg0 > 0xffffffffffffffff ) ;
require ( ! ( arg0) > 0xffffffffffffffff ) ;
require ( ! ( ( var_c + ( uint248 ( ( ( arg0 * 0x20 ) + 0x20 ) + 0x1f ) ) ) > 0xffffffffffffffff ) | ( ( var_c + ( uint248 ( ( ( arg0 * 0x20 ) + 0x20 ) + 0x1f ) ) ) < var_c) ) ;
uint256 var_c = var_c + ( uint248 ( ( ( arg0 * 0x20 ) + 0x20 ) + 0x1f ) ) ;
require ( ! 0 < ( arg0) ) ;
require ( ( arg0 + 0x20 ) = = ( address ( arg0 + 0x20 ) ) ) ;
require ( address ( realOwner / 0x01 ) = = ( address ( msg. sender) ) , "MultisigOwnable: caller is not the real owner" ) ;
require ( ( bytes1 ( airdropped / 0x010000 ) ) = = 0 , "already airdropped" ) ;
var_c = 0x20 + var_c;
uint256 var_e = 0 ;
require ( ! ( address ( var_j) = = 0 ) , CustomError_b562e8dd( ) ) ;
require ( ! ( 0x01 = = 0 ) , CustomError_b562e8dd( ) ) ;
address var_a = address ( var_j) ;
storage_map_g[ var_a] = ( uint64 ( ( storage_map_g[ var_a] / 0x01 ) + 0x01 ) * 0x01 ) | ( uint192( storage_map_g[ var_a] ) ) ;
var_a = address ( var_j) ;
storage_map_g[ var_a] = ( uint64 ( ( storage_map_g[ var_a] / 0x010000000000000000 ) + 0x01 ) * 0x010000000000000000 ) | ( uint192( storage_map_g[ var_a] ) ) ;
var_a = totalSupply;
storage_map_g[ var_a] = ( address ( var_j) * 0x01 ) | ( uint96 ( storage_map_g[ var_a] ) ) ;
var_a = totalSupply;
storage_map_g[ var_a] = ( uint64 ( block. timestamp) * 0x010000000000000000000000000000000000000000 ) | ( uint192( storage_map_g[ var_a] ) ) ;
require ( ! ( 0 < 0x01 ) , CustomError_d1a57ed6( ) ) ;
totalSupply = totalSupply;
require ( ! ( 0 = = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ) , CustomError_d1a57ed6( ) ) ;
emit Transfer( 0 , address ( var_j) , totalSupply) ;
require ( ! 0 , CustomError_d1a57ed6( ) ) ;
require ( ! ( address ( var_j) . code. length > 0 ) , CustomError_d1a57ed6( ) ) ;
require ( 0x01 , CustomError_d1a57ed6( ) ) ;
require ( ! 0x01 < 0x01 ) ;
emit Transfer( 0 , address ( var_j) , 0x01 + totalSupply) ;
require ( ! 0 ) ;
require ( ! ( address ( var_j) . code. length) > 0 ) ;
address var_g = address ( msg. sender) ;
require ( ! 0 > var_c. length) ;
require ( address ( var_j) . code. length) ;
( bool success, bytes memory ret0) = address ( var_j) . { value: var_e ether } Unresolved_150b7a02( var_g) ; // call
require ( ret0. length = = 0 ) ;
require ( ! var_p = = 0 ) ;
var_c = var_c + ( uint248 ( ret0. length + 0x3f ) ) ;
require ( ! ( var_c. length = = 0 ) , CustomError_d1a57ed6( ) ) ;
var_c = var_c + ( uint248 ( ret0. length + 0x1f ) ) ;
require ( ! ( ( var_c + ret0. length) - var_c) < 0x20 ) ;
require ( var_r = = ( uint32 ( var_r) ) ) ;
require ( 0x01 ) ;
require ( ret0. length = = 0 ) ;
require ( ! var_p = = 0 ) ;
var_c = var_c + ( uint248 ( ret0. length + 0x3f ) ) ;
require ( ! ( var_c. length = = 0 ) , CustomError_d1a57ed6( ) ) ;
airdropped = ( 0x01 * 0x010000 ) | ( uint248 ( airdropped) ) ;
}
/// @custom:selector 0x94985ddd
/// @custom:signature rawFulfillRandomness(bytes32 arg0, uint256 arg1) public
/// @param arg0 ["uint256", "bytes32", "int256"]
/// @param arg1 ["uint256", "bytes32", "int256"]
function rawFulfillRandomness( bytes32 arg0, uint256 arg1) public {
require ( arg0 = = arg0) ;
require ( arg1 = = arg1) ;
require ( address ( msg. sender) = = 0xf0d54349addcf704f77ae15b96510dea15cb7952 , "totalSupply too low" ) ;
require ( ! ( lastTokenRevealed > 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc17 ) , "totalSupply too low" ) ;
require ( ! ( ( totalSupply - store_i) < ( lastTokenRevealed + 0x03e8 ) ) , "totalSupply too low" ) ;
require ( 0x03e8 , "totalSupply too low" ) ;
require ( ! ( ( lastTokenRevealed / 0x03e8 ) & ( 0x03e8 > ( 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff / ( lastTokenRevealed / 0x03e8 ) ) ) ) , "totalSupply too low" ) ;
require ( ! ( 0x4e20 < ( ( lastTokenRevealed / 0x03e8 ) * 0x03e8 ) ) , "totalSupply too low" ) ;
require ( 0x4e20 - ( ( lastTokenRevealed / 0x03e8 ) * 0x03e8 ) , "totalSupply too low" ) ;
uint256 var_a = lastTokenRevealed / 0x03e8 ;
storage_map_j[ var_a] = arg1 % ( 0x4e20 - ( ( lastTokenRevealed / 0x03e8 ) * 0x03e8 ) ) ;
lastTokenRevealed = lastTokenRevealed + 0x03e8 ;
}
/// @custom:selector 0xe9d1dd69
/// @custom:signature Unresolved_e9d1dd69(uint256 arg0, uint256 arg1) public pure
/// @param arg0 ["uint256", "bytes32", "int256"]
/// @param arg1 ["uint256", "bytes32", "int256"]
function Unresolved_e9d1dd69 ( uint256 arg0, uint256 arg1) public pure {
require ( ! arg0 > 0xffffffffffffffff ) ;
require ( ! ( arg0) > 0xffffffffffffffff ) ;
require ( ! ( ( var_c + ( uint248 ( ( ( arg0 + 0x1f ) + 0x20 ) + 0x1f ) ) ) > 0xffffffffffffffff ) | ( ( var_c + ( uint248 ( ( ( arg0 + 0x1f ) + 0x20 ) + 0x1f ) ) ) < var_c) ) ;
require ( ! arg1 > 0xffffffffffffffff ) ;
}
/// @custom:selector 0xc884ef83
/// @custom:signature claimed(address arg0) public view returns (bool)
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function claimed( address arg0) public view returns ( bool ) {
require ( arg0 = = ( address ( arg0) ) ) ;
address var_b = arg0;
return ! ( ! bytes1 ( storage_map_e[ var_b] / 0x01 ) ) ;
}
/// @custom:selector 0x01ffc9a7
/// @custom:signature supportsInterface(bytes4 arg0) public pure returns (bool)
/// @param arg0 ["uint32", "bytes4", "int32"]
function supportsInterface( bytes4 arg0) public pure returns ( bool ) {
require ( arg0 = = ( uint32 ( arg0) ) ) ;
require ( uint32 ( arg0) = = 0x80ac58cd00000000000000000000000000000000000000000000000000000000 ) ;
require ( uint32 ( arg0) = = 0x80ac58cd00000000000000000000000000000000000000000000000000000000 ) ;
return ! ( ! ( uint32 ( arg0) ) = = 0x80ac58cd00000000000000000000000000000000000000000000000000000000 ) ;
return ! ( ! ( uint32 ( arg0) ) = = 0x01ffc9a700000000000000000000000000000000000000000000000000000000 ) ;
}
/// @custom:selector 0xe985e9c5
/// @custom:signature Unresolved_e985e9c5(address arg0) public pure
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function Unresolved_e985e9c5( address arg0) public pure {
require ( arg0 = = ( address ( arg0) ) ) ;
}
/// @custom:selector 0xc87b56dd
/// @custom:signature tokenURI(uint256 arg0) public view returns (bytes memory)
/// @param arg0 ["uint256", "bytes32", "int256"]
function tokenURI( uint256 arg0) public view returns ( bytes memory ) {
require ( arg0 = = arg0) ;
if ( airdropped / 0x0100 ) {
if ( arg0 < lastTokenRevealed) {
if ( 0x03e8 ) {
var_c = 0x40 + var_c;
if ( 0x27 ) {
var_c = 0x40 + var_c;
require ( bytes1 ( airdropped / 0x0100 ) ) ;
require ( arg0 < lastTokenRevealed) ;
require ( 0x03e8 ) ;
require ( 0x27 ) ;
require ( 0x27 ) ;
require ( ! 0 < ( arg0 / 0x03e8 ) ) ;
require ( ! 0 < 0x02 ) ;
require ( ! ( ! 11 < 0 ) & ( 11 > ( 0x7fffffffffffffffffffffffffffffff - 11 ) ) ) ;
require ( ! ( 11 < 0 ) & ( 11 < ( 0xffffffffffffffffffffffffffffffff80000000000000000000000000000000 - 11 ) ) ) ;
require ( 0x03e8 ) ;
require ( ! ( 0x14 ) & ( 0x02 > 0x0ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc ) ) ;
require ( ! 0 < 0x28 ) ;
require ( ! ( ! 11 < 0 ) & ( 11 > ( 0x7fffffffffffffffffffffffffffffff - 11 ) ) ) ;
require ( ! ( 11 < 0 ) & ( 11 < ( 0xffffffffffffffffffffffffffffffff80000000000000000000000000000000 - 11 ) ) ) ;
require ( 11 < 11 ) ;
require ( ! ( ! 11 < 0 ) & ( 11 < ( 0xffffffffffffffffffffffffffffffff80000000000000000000000000000000 + 11 ) ) ) ;
require ( ! ( 11 < 0 ) & ( 11 > ( 0x7fffffffffffffffffffffffffffffff + 11 ) ) ) ;
require ( ! 0 = = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ) ;
require ( 0 < 0x28 ) ;
require ( 0 < 0x28 ) ;
require ( ! 11 < 11 ) ;
require ( ! ( ! 11 < 0 ) & ( 11 > ( 0x7fffffffffffffffffffffffffffffff - 11 ) ) ) ;
require ( ! ( 11 < 0 ) & ( 11 < ( 0xffffffffffffffffffffffffffffffff80000000000000000000000000000000 - 11 ) ) ) ;
require ( ! 11 < 11 ) ;
require ( ! ( ! 11 < 0 ) & ( 11 < ( 0xffffffffffffffffffffffffffffffff80000000000000000000000000000000 + 11 ) ) ) ;
require ( ! ( 11 < 0 ) & ( 11 > ( 0x7fffffffffffffffffffffffffffffff + 11 ) ) ) ;
require ( ! 11 < 11 ) ;
require ( ! 0 = = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ) ;
require ( 0x03e8 ) ;
require ( ! ( 0x14 ) & ( 0x02 > 0x0ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc ) ) ;
var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000 ;
var_c = var_c + ( 0x20 + ( ( ( 0x1f + ( store_k / 0x02 ) ) / 0x20 ) * 0x20 ) ) ;
require ( 0x03e8 ) ;
require ( ! ( arg0 % 0x03e8 ) > ( 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff - storage_map_j[ var_a] ) ) ;
require ( bytes1 ( store_k) ) ;
require ( ! ( bytes1 ( store_k) ) = = ( ( store_k / 0x02 ) < 0x20 ) ) ;
var_a = 0x0d ;
require ( bytes1 ( store_k) ) ;
require ( ! ( bytes1 ( store_k) ) = = ( ( store_k / 0x02 ) < 0x20 ) ) ;
return abi. encodePacked( ( var_c + 0x20 ) - var_c, var_c. length) ;
return abi. encodePacked( ( var_c + 0x20 ) - var_c, var_c. length) ;
require ( ! store_k / 0x02 ) ;
require ( 0x1f < ( store_k / 0x02 ) ) ;
require ( ( 0x20 + var_c) + ( store_k / 0x02 ) > ( 0x20 + ( 0x20 + var_c) ) ) ;
require ( ! arg0 = = 0 ) ;
require ( arg0 = = 0 ) ;
require ( ! 0 > 0xffffffffffffffff ) ;
require ( ! 0 ) ;
require ( arg0 = = 0 ) ;
require ( ! 0 < 0x01 ) ;
require ( ! ( bytes1 ( store_l) ) = = ( ( store_l / 0x02 ) < 0x20 ) ) ;
require ( bytes1 ( store_l) = = 0 ) ;
require ( bytes1 ( store_l) = = 0x01 ) ;
}
}
require ( ! 0 < ( store_l / 0x02 ) ) ;
}
}
}
/// @custom:selector 0xa22cb465
/// @custom:signature Unresolved_a22cb465(address arg0, uint256 arg1) public
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
/// @param arg1 ["uint256", "bytes32", "int256"]
function Unresolved_a22cb465( address arg0, uint256 arg1) public {
require ( arg0 = = ( address ( arg0) ) ) ;
require ( arg1 = = arg1) ;
require ( ! ( address ( arg0) = = ( address ( msg. sender) ) ) , CustomError_b06307db( ) ) ;
var_a = address ( arg0) ;
storage_map_j[ var_a] = ( arg1 * 0x01 ) | ( uint248 ( storage_map_j[ var_a] ) ) ;
emit ApprovalForAll( address ( msg. sender) , address ( arg0) , arg1) ;
}
/// @custom:selector 0x6352211e
/// @custom:signature ownerOf(uint256 arg0) public view returns (address)
/// @param arg0 ["uint256", "bytes32", "int256"]
function ownerOf( uint256 arg0) public view returns ( address ) {
require ( arg0 = = arg0) ;
require ( ! ( arg0 < totalSupply) , CustomError_df2d9b42( ) ) ;
uint256 var_e = arg0;
require ( var_j, CustomError_df2d9b42( ) ) ;
require ( address ( var_l) = = 0 , CustomError_df2d9b42( ) ) ;
return address ( var_l) ;
require ( ! 0x01 , CustomError_df2d9b42( ) ) ;
var_e = arg0 - 0x01 ;
require ( address ( var_l) = = 0 , CustomError_df2d9b42( ) ) ;
return address ( var_l) ;
require ( ! 0x01 , CustomError_df2d9b42( ) ) ;
}
/// @custom:selector 0x09f8f934
/// @custom:signature requestRandomSeed(uint256 arg0) public returns (uint256)
/// @param arg0 ["uint256", "bytes32", "int256"]
function requestRandomSeed( uint256 arg0) public returns ( uint256 ) {
require ( arg0 = = arg0) ;
require ( address ( realOwner / 0x01 ) = = ( address ( msg. sender) ) , "MultisigOwnable: caller is not the real owner" ) ;
require ( ! lastTokenRevealed > 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc17 ) ;
require ( ! ( totalSupply - store_i) < ( lastTokenRevealed + 0x03e8 ) ) ;
var_b = address ( this) ;
require ( address ( 0x514910771af9ca656af840dff83e8264ecf986ca ) . code. length) ;
( bool success, bytes memory ret0) = address ( 0x514910771af9ca656af840dff83e8264ecf986ca ) . Unresolved_70a08231( var_b) ; // staticcall
uint256 var_c = var_c + ( uint248 ( ret0. length + 0x1f ) ) ;
require ( ! ( ( var_c + ret0. length) - var_c) < 0x20 ) ;
require ( var_i = = ( var_i) ) ;
require ( ! ( var_i < arg0) , "Not enough LINK to pay fee" ) ;
var_c = ( 0x20 + var_c) + 0x40 ;
var_n = 0xf0d54349addcf704f77ae15b96510dea15cb7952 ;
require ( ! 0 > var_c. length) ;
uint256 var_r = 0 ;
require ( address ( 0x514910771af9ca656af840dff83e8264ecf986ca ) . code. length) ;
( bool success, bytes memory ret0) = address ( 0x514910771af9ca656af840dff83e8264ecf986ca ) . { value: var_r ether } Unresolved_4000aea0( var_n) ; // call
var_c = var_c + ( uint248 ( ret0. length + 0x1f ) ) ;
require ( ! ( ( var_c + ret0. length) - var_c) < 0x20 ) ;
require ( var_i = = ( var_i) ) ;
var_g = 0xaa77729d3466ca35ae8d28b3bbac7cc36a5031efdc430821c02bc31a238af445 ;
var_c = ( 0x20 + var_c) + 0x80 ;
var_g = 0xaa77729d3466ca35ae8d28b3bbac7cc36a5031efdc430821c02bc31a238af445 ;
require ( ! storage_map_m[ var_g] > 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe ) ;
var_g = 0xaa77729d3466ca35ae8d28b3bbac7cc36a5031efdc430821c02bc31a238af445 ;
storage_map_m[ var_g] = storage_map_m[ var_g] + 0x01 ;
var_c = ( ( 0x20 + var_c) + 0x20 ) + 0x20 ;
return keccak256( var_aa) ;
}
/// @custom:selector 0x06fdde03
/// @custom:signature name() public view returns (string memory)
function name( ) public view returns ( string memory ) {
if ( store_n) {
if ( ! ( store_n) = = ( ( store_n / 0x02 ) < 0x20 ) ) {
uint256 var_c = var_c + ( 0x20 + ( ( ( 0x1f + ( store_n / 0x02 ) ) / 0x20 ) * 0x20 ) ) ;
if ( store_n) {
if ( ! ( store_n) = = ( ( store_n / 0x02 ) < 0x20 ) ) {
if ( ! store_n / 0x02 ) {
if ( 0x1f < ( store_n / 0x02 ) ) {
var_a = 0x02 ;
if ( ( 0x20 + var_c) + ( store_n / 0x02 ) > ( 0x20 + ( 0x20 + var_c) ) ) {
if ( ! 0 > var_c. length) {
return abi. encodePacked( ( var_c + 0x20 ) - var_c, var_c. length) ;
return abi. encodePacked( ( var_c + 0x20 ) - var_c, var_c. length) ;
}
}
}
}
}
}
}
}
}
/// @custom:selector 0x2cff6770
/// @custom:signature transferRealOwnership(address arg0) public
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function transferRealOwnership( address arg0) public {
require ( arg0 = = ( address ( arg0) ) ) ;
require ( address ( realOwner / 0x01 ) = = ( address ( msg. sender) ) , "MultisigOwnable: caller is not the real owner" ) ;
realOwner = ( address ( arg0) * 0x01 ) | ( uint96 ( realOwner) ) ;
}
/// @custom:selector 0x95d89b41
/// @custom:signature symbol() public view returns (string memory)
function symbol( ) public view returns ( string memory ) {
if ( store_o) {
if ( ! ( store_o) = = ( ( store_o / 0x02 ) < 0x20 ) ) {
uint256 var_c = var_c + ( 0x20 + ( ( ( 0x1f + ( store_o / 0x02 ) ) / 0x20 ) * 0x20 ) ) ;
if ( store_o) {
if ( ! ( store_o) = = ( ( store_o / 0x02 ) < 0x20 ) ) {
if ( ! store_o / 0x02 ) {
if ( 0x1f < ( store_o / 0x02 ) ) {
var_a = 0x03 ;
if ( ( 0x20 + var_c) + ( store_o / 0x02 ) > ( 0x20 + ( 0x20 + var_c) ) ) {
if ( ! 0 > var_c. length) {
return abi. encodePacked( ( var_c + 0x20 ) - var_c, var_c. length) ;
return abi. encodePacked( ( var_c + 0x20 ) - var_c, var_c. length) ;
}
}
}
}
}
}
}
}
}
/// @custom:selector 0xb88d4fde
/// @custom:signature Unresolved_b88d4fde(address arg0) public pure
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function Unresolved_b88d4fde( address arg0) public pure {
require ( arg0 = = ( address ( arg0) ) ) ;
}
/// @custom:selector 0x081812fc
/// @custom:signature getApproved(uint256 arg0) public view returns (address)
/// @param arg0 ["uint256", "bytes32", "int256"]
function getApproved( uint256 arg0) public view returns ( address ) {
require ( arg0 = = arg0) ;
require ( ! ( arg0 < totalSupply) , CustomError_cf4700e4( ) ) ;
uint256 var_a = arg0;
require ( ! ( bytes1 ( storage_map_g[ var_a] / 0x0100000000000000000000000000000000000000000000000000000000 ) ) , CustomError_cf4700e4( ) ) ;
var_a = arg0;
return address ( storage_map_j[ var_a] / 0x01 ) ;
require ( arg0 < totalSupply, CustomError_cf4700e4( ) ) ;
var_a = arg0;
return address ( storage_map_j[ var_a] / 0x01 ) ;
}
/// @custom:selector 0xf8b4d981
/// @custom:signature mintFromSale(uint256 arg0) public payable
/// @param arg0 ["uint256", "bytes32", "int256"]
function mintFromSale( uint256 arg0) public payable {
require ( arg0 = = arg0) ;
require ( block. timestamp > 0x621664c1 , "Public sale hasn't started yet" ) ;
require ( ! ( arg0 > 0x05 ) , "Only up to 5 tubbies can be minted at once" ) ;
require ( msg. value = = ( arg0 * 0x016345785d8a0000 ) , "wrong payment" ) ;
uint256 var_c = 0x20 + var_c;
require ( ! ( address ( msg. sender) = = 0 ) , CustomError_d1a57ed6( ) ) ;
require ( ! ( arg0 = = 0 ) , CustomError_d1a57ed6( ) ) ;
address var_g = address ( msg. sender) ;
storage_map_p[ var_g] = ( uint64 ( ( storage_map_p[ var_g] / 0x01 ) + arg0) * 0x01 ) | ( uint192( storage_map_p[ var_g] ) ) ;
var_g = address ( msg. sender) ;
storage_map_p[ var_g] = ( uint64 ( ( storage_map_p[ var_g] / 0x010000000000000000 ) + arg0) * 0x010000000000000000 ) | ( uint192( storage_map_p[ var_g] ) ) ;
var_g = totalSupply;
storage_map_p[ var_g] = ( address ( msg. sender) * 0x01 ) | ( uint96 ( storage_map_p[ var_g] ) ) ;
var_g = totalSupply;
storage_map_p[ var_g] = ( uint64 ( block. timestamp) * 0x010000000000000000000000000000000000000000 ) | ( uint192( storage_map_p[ var_g] ) ) ;
require ( ! ( 0 < arg0) , CustomError_d1a57ed6( ) ) ;
emit Transfer( 0 , address ( msg. sender) , totalSupply) ;
require ( ! 0 , CustomError_d1a57ed6( ) ) ;
require ( ! ( address ( msg. sender) . code. length > 0 ) , CustomError_d1a57ed6( ) ) ;
require ( 0x01 , CustomError_d1a57ed6( ) ) ;
address var_d = address ( msg. sender) ;
require ( ! 0 > var_c. length) ;
uint256 var_l = 0 ;
require ( address ( msg. sender) . code. length) ;
( bool success, bytes memory ret0) = address ( msg. sender) . { value: var_l ether } Unresolved_150b7a02( var_d) ; // call
require ( ret0. length = = 0 ) ;
require ( ! var_m = = 0 ) ;
var_c = var_c + ( uint248 ( ret0. length + 0x3f ) ) ;
require ( ! ( var_c. length = = 0 ) , CustomError_d1a57ed6( ) ) ;
var_c = var_c + ( uint248 ( ret0. length + 0x1f ) ) ;
require ( ! ( ( var_c + ret0. length) - var_c) < 0x20 ) ;
require ( var_o = = ( uint32 ( var_o) ) ) ;
require ( 0x01 ) ;
require ( ret0. length = = 0 ) ;
require ( ! var_m = = 0 ) ;
var_c = var_c + ( uint248 ( ret0. length + 0x3f ) ) ;
require ( ! ( var_c. length = = 0 ) , CustomError_d1a57ed6( ) ) ;
totalSupply = totalSupply;
require ( ! ( ( totalSupply - store_i) > 0x4e20 ) , "limit reached" ) ;
}
/// @custom:selector 0x42842e0e
/// @custom:signature Unresolved_42842e0e(address arg0) public pure
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function Unresolved_42842e0e( address arg0) public pure {
require ( arg0 = = ( address ( arg0) ) ) ;
}
/// @custom:selector 0x23b872dd
/// @custom:signature Unresolved_23b872dd(address arg0) public pure
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function Unresolved_23b872dd( address arg0) public pure {
require ( arg0 = = ( address ( arg0) ) ) ;
}
/// @custom:selector 0x70a08231
/// @custom:signature balanceOf(address arg0) public view returns (uint64)
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function balanceOf( address arg0) public view returns ( uint64 ) {
require ( arg0 = = ( address ( arg0) ) ) ;
require ( ! ( address ( arg0) = = 0 ) , CustomError_8f4eb604( ) ) ;
address var_a = address ( arg0) ;
return uint64 ( storage_map_g[ var_a] / 0x01 ) ;
}
/// @custom:selector 0xf2fde38b
/// @custom:signature transferOwnership(address arg0) public
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function transferOwnership( address arg0) public {
require ( arg0 = = ( address ( arg0) ) ) ;
require ( address ( owner / 0x01 ) = = ( address ( msg. sender) ) , "Ownable: caller is not the owner" ) ;
require ( ! ( address ( arg0) = = 0 ) , "Ownable: new owner is the zero address" ) ;
owner = ( address ( arg0) * 0x01 ) | ( uint96 ( owner) ) ;
emit OwnershipTransferred( address ( owner / 0x01 ) , address ( arg0) ) ;
}
/// @custom:selector 0x6c0360eb
/// @custom:signature baseURI() public view returns (bytes memory)
function baseURI( ) public view returns ( bytes memory ) {
if ( store_l) {
if ( ! ( store_l) = = ( ( store_l / 0x02 ) < 0x20 ) ) {
uint256 var_c = var_c + ( 0x20 + ( ( ( 0x1f + ( store_l / 0x02 ) ) / 0x20 ) * 0x20 ) ) ;
if ( store_l) {
if ( ! ( store_l) = = ( ( store_l / 0x02 ) < 0x20 ) ) {
if ( ! store_l / 0x02 ) {
if ( 0x1f < ( store_l / 0x02 ) ) {
var_a = 0x0c ;
if ( ( 0x20 + var_c) + ( store_l / 0x02 ) > ( 0x20 + ( 0x20 + var_c) ) ) {
if ( ! 0 > var_c. length) {
return abi. encodePacked( ( var_c + 0x20 ) - var_c, var_c. length) ;
return abi. encodePacked( ( var_c + 0x20 ) - var_c, var_c. length) ;
}
}
}
}
}
}
}
}
}
/// @custom:selector 0xb77a147b
/// @custom:signature mint(bytes32[] arg0) public payable
/// @param arg0 ["uint256", "bytes32", "int256"]
function mint( bytes32 [ ] arg0) public payable {
require ( ! arg0 > 0xffffffffffffffff ) ;
require ( ! ( arg0) > 0xffffffffffffffff ) ;
uint256 var_a = var_a + ( 0x20 + ( 0x20 * ( arg0) ) ) ;
var_c = msg. data[ 36 : 36 ] ;
require ( ( address ( msg. sender) < < 0 ) > ( var_c) , "already claimed" ) ;
var_a = ( ( 0x20 + var_a) + 0x20 ) + 0x20 ;
require ( ! ( 0 = = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ) , "already claimed" ) ;
require ( ( ( address ( msg. sender) < < 0 ) = = 0x432b7354b99a2b9c27e7b60d580c6ec20ba5949d2d7fc92c91ac69b4c4cfdd4d ) = = 0x01 , "already claimed" ) ;
address var_g = address ( msg. sender) ;
require ( ( bytes1 ( storage_map_m[ var_g] / 0x01 ) ) = = 0 , "already claimed" ) ;
var_g = address ( msg. sender) ;
storage_map_m[ var_g] = ( 0x01 * 0x01 ) | ( uint248 ( storage_map_m[ var_g] ) ) ;
require ( msg. value = = 0x016345785d8a0000 , CustomError_b562e8dd( ) ) ;
var_a = 0x20 + var_a;
var_d = 0 ;
require ( ! ( address ( msg. sender) = = 0 ) , CustomError_b562e8dd( ) ) ;
require ( ! ( 0x01 = = 0 ) , CustomError_b562e8dd( ) ) ;
var_g = address ( msg. sender) ;
storage_map_p[ var_g] = ( uint64 ( ( storage_map_p[ var_g] / 0x01 ) + 0x01 ) * 0x01 ) | ( uint192( storage_map_p[ var_g] ) ) ;
var_g = address ( msg. sender) ;
storage_map_p[ var_g] = ( uint64 ( ( storage_map_p[ var_g] / 0x010000000000000000 ) + 0x01 ) * 0x010000000000000000 ) | ( uint192( storage_map_p[ var_g] ) ) ;
var_g = totalSupply;
storage_map_p[ var_g] = ( address ( msg. sender) * 0x01 ) | ( uint96 ( storage_map_p[ var_g] ) ) ;
var_g = totalSupply;
storage_map_p[ var_g] = ( uint64 ( block. timestamp) * 0x010000000000000000000000000000000000000000 ) | ( uint192( storage_map_p[ var_g] ) ) ;
require ( ! ( 0 < 0x01 ) , "limit reached" ) ;
totalSupply = totalSupply;
require ( ! ( ( totalSupply - store_i) > 0x4e20 ) , "limit reached" ) ;
emit Transfer( 0 , address ( msg. sender) , totalSupply) ;
require ( ! 0 , CustomError_d1a57ed6( ) ) ;
require ( ! ( address ( msg. sender) . code. length > 0 ) , CustomError_d1a57ed6( ) ) ;
require ( 0x01 , CustomError_d1a57ed6( ) ) ;
require ( ! 0x01 < 0x01 ) ;
emit Transfer( 0 , address ( msg. sender) , 0x01 + totalSupply) ;
require ( ! 0 ) ;
require ( ! ( address ( msg. sender) . code. length) > 0 ) ;
var_k = address ( msg. sender) ;
uint256 var_l = 0 ;
require ( ! 0 > var_a. length) ;
require ( address ( msg. sender) . code. length) ;
( bool success, bytes memory ret0) = address ( msg. sender) . { value: var_d ether } Unresolved_150b7a02( var_k, var_l) ; // call
require ( ret0. length = = 0 ) ;
require ( ! var_q = = 0 ) ;
var_a = var_a + ( uint248 ( ret0. length + 0x3f ) ) ;
require ( ! ( var_a. length = = 0 ) , CustomError_d1a57ed6( ) ) ;
var_a = var_a + ( uint248 ( ret0. length + 0x1f ) ) ;
require ( ! ( ( var_a + ret0. length) - var_a) < 0x20 ) ;
require ( var_s = = ( uint32 ( var_s) ) ) ;
require ( 0x01 ) ;
require ( ret0. length = = 0 ) ;
require ( ! var_q = = 0 ) ;
var_a = var_a + ( uint248 ( ret0. length + 0x3f ) ) ;
require ( ! ( var_a. length = = 0 ) , CustomError_d1a57ed6( ) ) ;
}
/// @custom:selector 0x2ad22052
/// @custom:signature retrieveFunds(address arg0) public
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function retrieveFunds( address arg0) public {
require ( arg0 = = ( address ( arg0) ) ) ;
require ( address ( realOwner / 0x01 ) = = ( address ( msg. sender) ) , "MultisigOwnable: caller is not the real owner" ) ;
( bool success, bytes memory ret0) = address ( arg0) . transfer( address ( this) . balance) ;
}
/// @custom:selector 0x7035bf18
/// @custom:signature unrevealedURI() public view returns (bytes memory)
function unrevealedURI( ) public view returns ( bytes memory ) {
if ( store_k) {
if ( ! ( store_k) = = ( ( store_k / 0x02 ) < 0x20 ) ) {
uint256 var_c = var_c + ( 0x20 + ( ( ( 0x1f + ( store_k / 0x02 ) ) / 0x20 ) * 0x20 ) ) ;
if ( store_k) {
if ( ! ( store_k) = = ( ( store_k / 0x02 ) < 0x20 ) ) {
if ( ! store_k / 0x02 ) {
if ( 0x1f < ( store_k / 0x02 ) ) {
var_a = 0x0d ;
if ( ( 0x20 + var_c) + ( store_k / 0x02 ) > ( 0x20 + ( 0x20 + var_c) ) ) {
if ( ! 0 > var_c. length) {
return abi. encodePacked( ( var_c + 0x20 ) - var_c, var_c. length) ;
return abi. encodePacked( ( var_c + 0x20 ) - var_c, var_c. length) ;
}
}
}
}
}
}
}
}
}
/// @custom:selector 0x09af3f9a
/// @custom:signature transferLowerOwnership(address arg0) public
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function transferLowerOwnership( address arg0) public {
require ( arg0 = = ( address ( arg0) ) ) ;
require ( address ( realOwner / 0x01 ) = = ( address ( msg. sender) ) , "MultisigOwnable: caller is not the real owner" ) ;
owner = ( address ( arg0) * 0x01 ) | ( uint96 ( owner) ) ;
emit OwnershipTransferred( address ( owner / 0x01 ) , address ( arg0) ) ;
}
/// @custom:selector 0x715018a6
/// @custom:signature renounceOwnership() public
function renounceOwnership( ) public {
require ( address ( owner / 0x01 ) = = ( address ( msg. sender) ) , "Ownable: caller is not the owner" ) ;
owner = 0 | ( uint96 ( owner) ) ;
emit OwnershipTransferred( address ( owner / 0x01 ) , 0 ) ;
}
}
ABI
[
{
"type": "function",
"name": "REVEAL_BATCH_SIZE",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure"
},
{
"type": "function",
"name": "TOKEN_LIMIT",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure"
},
{
"type": "function",
"name": "Unresolved_23b872dd",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [],
"stateMutability": "pure"
},
{
"type": "function",
"name": "Unresolved_42842e0e",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [],
"stateMutability": "pure"
},
{
"type": "function",
"name": "Unresolved_729ad39e",
"inputs": [
{
"name": "arg0",
"type": "uint256"
},
{
"name": "arg1",
"type": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "Unresolved_a22cb465",
"inputs": [
{
"name": "arg0",
"type": "address"
},
{
"name": "arg1",
"type": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "Unresolved_b88d4fde",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [],
"stateMutability": "pure"
},
{
"type": "function",
"name": "Unresolved_e985e9c5",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [],
"stateMutability": "pure"
},
{
"type": "function",
"name": "Unresolved_e9d1dd69",
"inputs": [
{
"name": "arg0",
"type": "uint256"
},
{
"name": "arg1",
"type": "uint256"
}
],
"outputs": [],
"stateMutability": "pure"
},
{
"type": "function",
"name": "airdropped",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "approve",
"inputs": [
{
"name": "arg0",
"type": "address"
},
{
"name": "arg1",
"type": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "balanceOf",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint64"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "baseURI",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "batchToSeed",
"inputs": [
{
"name": "arg0",
"type": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "claimed",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "finalized",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getApproved",
"inputs": [
{
"name": "arg0",
"type": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "lastTokenRevealed",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "merkleRoot",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure"
},
{
"type": "function",
"name": "mint",
"inputs": [
{
"name": "arg0",
"type": "bytes32[]"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"type": "function",
"name": "mintFromSale",
"inputs": [
{
"name": "arg0",
"type": "uint256"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"type": "function",
"name": "name",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "owner",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "ownerOf",
"inputs": [
{
"name": "arg0",
"type": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "rawFulfillRandomness",
"inputs": [
{
"name": "arg0",
"type": "bytes32"
},
{
"name": "arg1",
"type": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "realOwner",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "renounceOwnership",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "requestRandomSeed",
"inputs": [
{
"name": "arg0",
"type": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "retrieveFunds",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "startSaleTimestamp",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure"
},
{
"type": "function",
"name": "supportsInterface",
"inputs": [
{
"name": "arg0",
"type": "bytes4"
}
],
"outputs": [
{
"name": "",
"type": "bool"
}
],
"stateMutability": "pure"
},
{
"type": "function",
"name": "symbol",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "tokenURI",
"inputs": [
{
"name": "arg0",
"type": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bytes"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "totalSupply",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "transferLowerOwnership",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "transferOwnership",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "transferRealOwnership",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "unrevealedURI",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "useFancyMath",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool"
}
],
"stateMutability": "view"
},
{
"type": "event",
"name": "Approval",
"inputs": [
{
"name": "arg0",
"type": "address",
"indexed": false
},
{
"name": "arg1",
"type": "address",
"indexed": false
},
{
"name": "arg2",
"type": "uint256",
"indexed": false
}
],
"anonymous": false
},
{
"type": "event",
"name": "ApprovalForAll",
"inputs": [
{
"name": "arg0",
"type": "address",
"indexed": false
},
{
"name": "arg1",
"type": "address",
"indexed": false
},
{
"name": "arg2",
"type": "bool",
"indexed": false
}
],
"anonymous": false
},
{
"type": "event",
"name": "OwnershipTransferred",
"inputs": [
{
"name": "arg0",
"type": "address",
"indexed": false
},
{
"name": "arg1",
"type": "address",
"indexed": false
}
],
"anonymous": false
},
{
"type": "event",
"name": "Transfer",
"inputs": [
{
"name": "arg0",
"type": "address",
"indexed": false
},
{
"name": "arg1",
"type": "address",
"indexed": false
},
{
"name": "arg2",
"type": "uint256",
"indexed": false
}
],
"anonymous": false
},
{
"type": "error",
"name": "ApprovalCallerNotOwnerNorApproved",
"inputs": []
},
{
"type": "error",
"name": "ApprovalQueryForNonexistentToken",
"inputs": []
},
{
"type": "error",
"name": "ApprovalToCurrentOwner",
"inputs": []
},
{
"type": "error",
"name": "ApproveToCaller",
"inputs": []
},
{
"type": "error",
"name": "BalanceQueryForZeroAddress",
"inputs": []
},
{
"type": "error",
"name": "MintToZeroAddress",
"inputs": []
},
{
"type": "error",
"name": "MintZeroQuantity",
"inputs": []
},
{
"type": "error",
"name": "OwnerQueryForNonexistentToken",
"inputs": []
},
{
"type": "error",
"name": "TransferToNonERC721ReceiverImplementer",
"inputs": []
}
]