More Info
Private Name Tags
ContractCreator
Latest 21 from a total of 21 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 16449702 | 676 days ago | IN | 0 ETH | 0.00140493 | ||||
Change Traits | 16428798 | 678 days ago | IN | 0 ETH | 0.01015352 | ||||
Mint Traits | 16428749 | 678 days ago | IN | 0 ETH | 0.02082381 | ||||
Set Preview Imag... | 16428380 | 679 days ago | IN | 0 ETH | 0.00262928 | ||||
Mint | 16337663 | 691 days ago | IN | 0.05 ETH | 0.00447001 | ||||
Mint | 16329268 | 692 days ago | IN | 0.05 ETH | 0.00561822 | ||||
Mint | 16328561 | 692 days ago | IN | 0.05 ETH | 0.00534289 | ||||
Mint | 16328425 | 693 days ago | IN | 0.05 ETH | 0.00510748 | ||||
Mint | 16328423 | 693 days ago | IN | 0.05 ETH | 0.00534695 | ||||
Mint | 16328404 | 693 days ago | IN | 0.05 ETH | 0.00763843 | ||||
Mint | 16328322 | 693 days ago | IN | 0.05 ETH | 0.00383061 | ||||
Mint | 16328298 | 693 days ago | IN | 0.05 ETH | 0.00408598 | ||||
Mint | 16328291 | 693 days ago | IN | 0.05 ETH | 0.00459673 | ||||
Mint | 16328279 | 693 days ago | IN | 0.05 ETH | 0.00383061 | ||||
Mint | 16327637 | 693 days ago | IN | 0.1 ETH | 0.01271047 | ||||
Mint | 16327636 | 693 days ago | IN | 0.05 ETH | 0.00742648 | ||||
Set DNA Image Ur... | 16326601 | 693 days ago | IN | 0 ETH | 0.00153084 | ||||
Set Token Uri Co... | 16326427 | 693 days ago | IN | 0 ETH | 0.00071083 | ||||
Transfer | 16326194 | 693 days ago | IN | 0.01 ETH | 0.00028151 | ||||
Transfer Ownersh... | 16326151 | 693 days ago | IN | 0 ETH | 0.00046119 | ||||
0x61012060 | 16326052 | 693 days ago | IN | 0 ETH | 0.04476998 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
GenesisDNA
Compiler Version
v0.8.2+commit.661d1103
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.2; import "@openzeppelin/contracts/utils/Address.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/Context.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "@openzeppelin/contracts/token/common/ERC2981.sol"; import "contracts/interfaces/IRegensZero.sol"; import "contracts/interfaces/IGenesisDNAVault.sol"; import "contracts/interfaces/IGenesisCollection.sol"; import "contracts/interfaces/ITokenUri.sol"; import "hardhat/console.sol"; contract GenesisDNA is Ownable, ReentrancyGuard, ERC2981, IGenesisDNAVault { uint256 constant MAX_TRAIT_SUPPLY = 1000000; uint256 constant MAX_TRAITS = 20; uint256 constant INITIAL_TRAITS_AMOUNT = 6; uint256 constant MAX_PER_TX = 15; uint256 constant MAX_NUMBER_OF_TOKENS = 10000; uint256 public immutable price; uint256 public immutable mintStart; address public artyfex; address public immutable regensZero; IGenesisCollection public immutable genesisTraits; uint256 public reserveClaimed; uint256 public totalSupply; address public publicGoods; ITokenUri public tokenUriContract; string public override DNAImageUri = ""; string public override previewImageUri = ""; address[] public override contractsArray; mapping(uint256 => Trait[MAX_TRAITS]) public tokenIdToTrait; mapping(uint256 => uint256) private tokenIdSalt; mapping(address => uint256) public contractsMapping; mapping(uint256 => bool) public override hasMintedTraits; event traitsClaimed(uint256 indexed tokenId); event traitsChanged( uint256 indexed tokenId, uint256[] layers, uint256[] contracts, uint256[] newTraits, uint256[] changeMade ); event contractAllowlisted( address indexed _contract, uint256 indexed number ); event contractRemovedFromAllowlist( address indexed _contract, uint256 indexed number ); constructor( address _regensZero, address _genesisTraits, uint256 _mintStart, uint256 _price, address _artyfex, address _publicGoods ) { regensZero = _regensZero; genesisTraits = IGenesisCollection(_genesisTraits); mintStart = _mintStart; price = _price; artyfex = _artyfex; publicGoods = _publicGoods; contractsArray.push(_genesisTraits); contractsMapping[_genesisTraits] = 1; } function getTraits(uint256 tokenId) public view override returns (Trait[MAX_TRAITS] memory traits) { require( hasMintedTraits[tokenId], "DNA: Token has not minted traits, does not belong to genesisDNA or does not exist." ); traits = tokenIdToTrait[tokenId]; } function setDNAImageUri(string memory _DNAImageUri) public onlyOwner { DNAImageUri = _DNAImageUri; } function setPreviewImageUri(string memory _previewImageUri) public onlyOwner { previewImageUri = _previewImageUri; } function setTokenUriContract(address _tokenUriContract) public onlyOwner { tokenUriContract = ITokenUri(_tokenUriContract); } function setArtyfex(address _artyfex) public { require( _msgSender() == artyfex, "DNA: Only Artyfex can call this function" ); artyfex = _artyfex; } function setPublicGoods(address _publicGoods) public { require( _msgSender() == publicGoods, "DNA: Only Public Goods can call this function" ); publicGoods = _publicGoods; } function getTokenIdSalt(uint256 tokenId) public view override returns (uint256) { require( tokenId <= totalSupply && tokenId > 0, "DNA: TokenId does not exist or does not belong to this DNA" ); return tokenIdSalt[tokenId] > 0 ? tokenIdSalt[tokenId] : getTokenIdSalt(tokenId + 1); } function addContractToAllowlist(address _address) public onlyOwner { contractsArray.push(_address); uint256 number = contractsArray.length; contractsMapping[_address] = number; emit contractAllowlisted(_address, number); } function removeContractFromAllowlist(address _address) public onlyOwner { require( _address != address(genesisTraits), "DNA: Cannot remove GenesisTraits" ); uint256 number = contractsMapping[_address]; contractsMapping[_address] = 0; emit contractRemovedFromAllowlist(_address, number); } function mintTraits(uint256 tokenId) public { require( IRegensZero(regensZero).tokenIdDNA(tokenId) == address(this), "DNA: The DNA does not correspond to this vault" ); require( IERC721(regensZero).ownerOf(tokenId) == _msgSender(), "DNA: Only token owner can mint traits." ); require(!hasMintedTraits[tokenId], "DNA: Traits already minted"); hasMintedTraits[tokenId] = true; for (uint256 j = 0; j < INITIAL_TRAITS_AMOUNT; j++) { tokenIdToTrait[tokenId][j * 2].traitId = tokenId + (MAX_TRAIT_SUPPLY * j * 2); } genesisTraits.mintTraits(tokenId); emit traitsClaimed(tokenId); } function mint(uint256 amount) public payable nonReentrant { require( _msgSender() != address(0), "DNA: Buyer cannot be address zero." ); require(mintStart < block.number, "DNA: Mint has not started."); require(amount > 0, "DNA: Cannot mint 0 tokens."); require( msg.value >= price * amount, "DNA: Ether amount is not enough to mint." ); require( totalSupply + amount <= MAX_NUMBER_OF_TOKENS, "DNA: Amount exceeds available tokens for mint." ); require( amount <= MAX_PER_TX, "DNA: You have exceeded mint limit per call." ); totalSupply += amount; IRegensZero(regensZero).genesisMint(amount, _msgSender()); tokenIdSalt[totalSupply] = block.timestamp; } function changeTraits( uint256 tokenId, uint256[] memory layers, uint256[] memory contracts, uint256[] memory newTraits ) public nonReentrant returns (uint256[] memory) { require( IRegensZero(regensZero).tokenIdDNA(tokenId) == address(this), "DNA: The DNA does not correspond to this vault" ); require( IRegensZero(regensZero).getTokenTimelock(tokenId) < block.timestamp, "DNA: Token is locked." ); require(hasMintedTraits[tokenId], "DNA: Traits not minted yet."); require( IERC721(regensZero).ownerOf(tokenId) == _msgSender() || IRegensZero(regensZero).getController(tokenId) == _msgSender(), "DNA: Only token owner or controller can change traits." ); require( layers.length == contracts.length, "DNA: Contracts amount does not equal layers amount." ); require( layers.length == newTraits.length, "DNA: Traits amount does not equal layers amount." ); require( layers.length <= MAX_TRAITS, "DNA: Layers amount exceeds max layers." ); IRegensZero(regensZero).changeLastTraitModification(tokenId); address owner = IERC721(regensZero).ownerOf(tokenId); uint256[] memory changed = new uint256[](layers.length); for (uint256 i = 0; i < layers.length; i++) { uint256 layer = layers[i]; uint256 layerContract = contracts[i]; uint256 traitId = newTraits[i]; if ( (traitId > 0 || layerContract > 0) && ((layerContract >= contractsArray.length) || (contractsMapping[contractsArray[layerContract]] == 0) || (traitId == 0) || ((IERC721(contractsArray[layerContract]).ownerOf(traitId) != owner) && (IERC721(contractsArray[layerContract]).ownerOf( traitId ) != _msgSender())) || (layer * MAX_TRAIT_SUPPLY >= traitId) || (traitId >= (layer + 1) * MAX_TRAIT_SUPPLY)) ) continue; Trait[MAX_TRAITS] storage traits = tokenIdToTrait[tokenId]; Trait memory oldTrait = traits[layer]; traits[layer].layer1 = layerContract; traits[layer].traitId = traitId; if (traitId > 0) { ITraitCollection(contractsArray[layerContract]).transferSpecial( traitId, owner ); } if (oldTrait.traitId > 0) { IERC721(contractsArray[oldTrait.layer1]).safeTransferFrom( address(this), owner, oldTrait.traitId ); } changed[i] = 1; } emit traitsChanged(tokenId, layers, contracts, newTraits, changed); return changed; } function withdraw() public nonReentrant { require( owner() == _msgSender() || _msgSender() == artyfex || _msgSender() == publicGoods, "DNA: Sender is not allowed to call this function" ); uint256 balance = address(this).balance; uint256 amountForPublicGoods = balance / 5 * 4; Address.sendValue(payable(publicGoods), amountForPublicGoods); Address.sendValue(payable(artyfex), balance - amountForPublicGoods); } function reserve(uint256 amount) public { require(_msgSender() == artyfex, "DNA: Sender is not Artyfex"); require( reserveClaimed + amount <= 140, "DNA: Reserved claimed plus amount exceeds amount reserved" ); require( totalSupply + amount <= MAX_NUMBER_OF_TOKENS, "DNA: Amount exceeds available tokens for mint." ); reserveClaimed += amount; totalSupply += amount; IRegensZero(regensZero).genesisMint(amount, artyfex); tokenIdSalt[totalSupply] = block.timestamp; } function tokenURI(uint256 tokenId) public view override returns (string memory uri) { require( tokenId <= totalSupply && tokenId > 0, "DNA: TokenId does not exist or does not belong to this DNA" ); return tokenUriContract.tokenURI(tokenId); } function royaltyInfo(uint256 _tokenId, uint256 _salePrice) public view virtual override(ERC2981, IDNAVault) returns (address, uint256) { return ERC2981.royaltyInfo(_tokenId, _salePrice); } function setDefaultRoyalty(address receiver, uint96 feeNumerator) public onlyOwner { _setDefaultRoyalty(receiver, feeNumerator); } function deleteDefaultRoyalty() public onlyOwner { _deleteDefaultRoyalty(); } function setTokenRoyalty( uint256 tokenId, address receiver, uint96 feeNumerator ) public onlyOwner { _setTokenRoyalty(tokenId, receiver, feeNumerator); } function resetTokenRoyalty(uint256 tokenId) public onlyOwner { _resetTokenRoyalty(tokenId); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @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 /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/common/ERC2981.sol) pragma solidity ^0.8.0; import "../../interfaces/IERC2981.sol"; import "../../utils/introspection/ERC165.sol"; /** * @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information. * * Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for * specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. * * Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the * fee is specified in basis points by default. * * IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See * https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to * voluntarily pay royalties together with sales, but note that this standard is not yet widely supported. * * _Available since v4.5._ */ abstract contract ERC2981 is IERC2981, ERC165 { struct RoyaltyInfo { address receiver; uint96 royaltyFraction; } RoyaltyInfo private _defaultRoyaltyInfo; mapping(uint256 => RoyaltyInfo) private _tokenRoyaltyInfo; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC165) returns (bool) { return interfaceId == type(IERC2981).interfaceId || super.supportsInterface(interfaceId); } /** * @inheritdoc IERC2981 */ function royaltyInfo(uint256 _tokenId, uint256 _salePrice) public view virtual override returns (address, uint256) { RoyaltyInfo memory royalty = _tokenRoyaltyInfo[_tokenId]; if (royalty.receiver == address(0)) { royalty = _defaultRoyaltyInfo; } uint256 royaltyAmount = (_salePrice * royalty.royaltyFraction) / _feeDenominator(); return (royalty.receiver, royaltyAmount); } /** * @dev The denominator with which to interpret the fee set in {_setTokenRoyalty} and {_setDefaultRoyalty} as a * fraction of the sale price. Defaults to 10000 so fees are expressed in basis points, but may be customized by an * override. */ function _feeDenominator() internal pure virtual returns (uint96) { return 10000; } /** * @dev Sets the royalty information that all ids in this contract will default to. * * Requirements: * * - `receiver` cannot be the zero address. * - `feeNumerator` cannot be greater than the fee denominator. */ function _setDefaultRoyalty(address receiver, uint96 feeNumerator) internal virtual { require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice"); require(receiver != address(0), "ERC2981: invalid receiver"); _defaultRoyaltyInfo = RoyaltyInfo(receiver, feeNumerator); } /** * @dev Removes default royalty information. */ function _deleteDefaultRoyalty() internal virtual { delete _defaultRoyaltyInfo; } /** * @dev Sets the royalty information for a specific token id, overriding the global default. * * Requirements: * * - `receiver` cannot be the zero address. * - `feeNumerator` cannot be greater than the fee denominator. */ function _setTokenRoyalty( uint256 tokenId, address receiver, uint96 feeNumerator ) internal virtual { require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice"); require(receiver != address(0), "ERC2981: Invalid parameters"); _tokenRoyaltyInfo[tokenId] = RoyaltyInfo(receiver, feeNumerator); } /** * @dev Resets royalty information for the token id back to the global default. */ function _resetTokenRoyalty(uint256 tokenId) internal virtual { delete _tokenRoyaltyInfo[tokenId]; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.2; interface IRegensZero { function getController(uint256 tokenId) external returns(address); function getSigner(uint256 tokenId) external returns(address); function getTokenTimelock(uint256 tokenId) external returns(uint256); function setNewDNA(address _DNA) external; function changeLastTraitModification(uint256 tokenId) external; function removeDNA(address _DNA) external; function genesisMint(uint256 amount, address _address) external; function postGenesisMint(uint256 amount, address _address) external; function tokenIdDNA(uint256) external returns(address); function genesisSupply() external view returns(uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.2; import "contracts/interfaces/IDNAVault.sol"; interface IGenesisDNAVault is IDNAVault { function getTraits(uint256 tokenId) external view returns (Trait[20] memory traits); function hasMintedTraits(uint256 tokenId) external view returns (bool); function contractsArray(uint256) external view returns (address); function DNAImageUri() external view returns (string memory); function previewImageUri() external view returns (string memory); function getTokenIdSalt(uint256 tokenId) external view returns(uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.2; import "contracts/interfaces/ITraitCollection.sol"; interface IGenesisCollection is ITraitCollection { function mintTraits(uint256 tokenId) external; function generalSalt() external view returns(uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.2; interface ITokenUri { function tokenURI(uint256 tokenId) external view returns (string memory uri); }
// SPDX-License-Identifier: MIT pragma solidity >= 0.4.22 <0.9.0; library console { address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67); function _sendLogPayload(bytes memory payload) private view { uint256 payloadLength = payload.length; address consoleAddress = CONSOLE_ADDRESS; assembly { let payloadStart := add(payload, 32) let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0) } } function log() internal view { _sendLogPayload(abi.encodeWithSignature("log()")); } function logInt(int p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(int)", p0)); } function logUint(uint p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); } function logString(string memory p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); } function logBool(bool p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); } function logAddress(address p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); } function logBytes(bytes memory p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0)); } function logBytes1(bytes1 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0)); } function logBytes2(bytes2 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0)); } function logBytes3(bytes3 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0)); } function logBytes4(bytes4 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0)); } function logBytes5(bytes5 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0)); } function logBytes6(bytes6 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0)); } function logBytes7(bytes7 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0)); } function logBytes8(bytes8 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0)); } function logBytes9(bytes9 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0)); } function logBytes10(bytes10 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0)); } function logBytes11(bytes11 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0)); } function logBytes12(bytes12 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0)); } function logBytes13(bytes13 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0)); } function logBytes14(bytes14 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0)); } function logBytes15(bytes15 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0)); } function logBytes16(bytes16 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0)); } function logBytes17(bytes17 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0)); } function logBytes18(bytes18 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0)); } function logBytes19(bytes19 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0)); } function logBytes20(bytes20 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0)); } function logBytes21(bytes21 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0)); } function logBytes22(bytes22 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0)); } function logBytes23(bytes23 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0)); } function logBytes24(bytes24 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0)); } function logBytes25(bytes25 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0)); } function logBytes26(bytes26 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0)); } function logBytes27(bytes27 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0)); } function logBytes28(bytes28 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0)); } function logBytes29(bytes29 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0)); } function logBytes30(bytes30 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0)); } function logBytes31(bytes31 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0)); } function logBytes32(bytes32 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0)); } function log(uint p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); } function log(string memory p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); } function log(bool p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); } function log(address p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); } function log(uint p0, uint p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1)); } function log(uint p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1)); } function log(uint p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1)); } function log(uint p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1)); } function log(string memory p0, uint p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1)); } function log(string memory p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); } function log(string memory p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1)); } function log(string memory p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1)); } function log(bool p0, uint p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1)); } function log(bool p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1)); } function log(bool p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1)); } function log(bool p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1)); } function log(address p0, uint p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1)); } function log(address p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1)); } function log(address p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1)); } function log(address p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); } function log(uint p0, uint p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2)); } function log(uint p0, uint p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2)); } function log(uint p0, uint p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2)); } function log(uint p0, uint p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2)); } function log(uint p0, string memory p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2)); } function log(uint p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2)); } function log(uint p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2)); } function log(uint p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2)); } function log(uint p0, bool p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2)); } function log(uint p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2)); } function log(uint p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2)); } function log(uint p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2)); } function log(uint p0, address p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2)); } function log(uint p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2)); } function log(uint p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2)); } function log(uint p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2)); } function log(string memory p0, uint p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2)); } function log(string memory p0, uint p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2)); } function log(string memory p0, uint p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2)); } function log(string memory p0, uint p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2)); } function log(string memory p0, string memory p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2)); } function log(string memory p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); } function log(string memory p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); } function log(string memory p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); } function log(string memory p0, bool p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2)); } function log(string memory p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); } function log(string memory p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); } function log(string memory p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); } function log(string memory p0, address p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2)); } function log(string memory p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); } function log(string memory p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); } function log(string memory p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); } function log(bool p0, uint p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2)); } function log(bool p0, uint p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2)); } function log(bool p0, uint p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2)); } function log(bool p0, uint p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2)); } function log(bool p0, string memory p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2)); } function log(bool p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); } function log(bool p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); } function log(bool p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); } function log(bool p0, bool p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2)); } function log(bool p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); } function log(bool p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); } function log(bool p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); } function log(bool p0, address p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2)); } function log(bool p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); } function log(bool p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); } function log(bool p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); } function log(address p0, uint p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2)); } function log(address p0, uint p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2)); } function log(address p0, uint p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2)); } function log(address p0, uint p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2)); } function log(address p0, string memory p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2)); } function log(address p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); } function log(address p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); } function log(address p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); } function log(address p0, bool p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2)); } function log(address p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); } function log(address p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); } function log(address p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); } function log(address p0, address p1, uint p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2)); } function log(address p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); } function log(address p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); } function log(address p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); } function log(uint p0, uint p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3)); } function log(uint p0, uint p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3)); } function log(uint p0, uint p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3)); } function log(uint p0, uint p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3)); } function log(uint p0, uint p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3)); } function log(uint p0, uint p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3)); } function log(uint p0, uint p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3)); } function log(uint p0, uint p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3)); } function log(uint p0, uint p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3)); } function log(uint p0, uint p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3)); } function log(uint p0, uint p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3)); } function log(uint p0, uint p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3)); } function log(uint p0, uint p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3)); } function log(uint p0, uint p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3)); } function log(uint p0, uint p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3)); } function log(uint p0, uint p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3)); } function log(uint p0, bool p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3)); } function log(uint p0, bool p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3)); } function log(uint p0, bool p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3)); } function log(uint p0, bool p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3)); } function log(uint p0, bool p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3)); } function log(uint p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3)); } function log(uint p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3)); } function log(uint p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3)); } function log(uint p0, bool p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3)); } function log(uint p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3)); } function log(uint p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3)); } function log(uint p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3)); } function log(uint p0, bool p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3)); } function log(uint p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3)); } function log(uint p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3)); } function log(uint p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3)); } function log(uint p0, address p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3)); } function log(uint p0, address p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3)); } function log(uint p0, address p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3)); } function log(uint p0, address p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3)); } function log(uint p0, address p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3)); } function log(uint p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3)); } function log(uint p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3)); } function log(uint p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3)); } function log(uint p0, address p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3)); } function log(uint p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3)); } function log(uint p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3)); } function log(uint p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3)); } function log(uint p0, address p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3)); } function log(uint p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3)); } function log(uint p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3)); } function log(uint p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); } function log(bool p0, uint p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3)); } function log(bool p0, uint p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3)); } function log(bool p0, uint p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3)); } function log(bool p0, uint p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3)); } function log(bool p0, uint p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3)); } function log(bool p0, uint p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3)); } function log(bool p0, uint p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3)); } function log(bool p0, uint p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3)); } function log(bool p0, uint p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3)); } function log(bool p0, uint p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3)); } function log(bool p0, uint p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, uint p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3)); } function log(bool p0, uint p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3)); } function log(bool p0, uint p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3)); } function log(bool p0, uint p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3)); } function log(bool p0, uint p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); } function log(address p0, uint p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3)); } function log(address p0, uint p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3)); } function log(address p0, uint p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3)); } function log(address p0, uint p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3)); } function log(address p0, uint p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3)); } function log(address p0, uint p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3)); } function log(address p0, uint p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3)); } function log(address p0, uint p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3)); } function log(address p0, uint p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3)); } function log(address p0, uint p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3)); } function log(address p0, uint p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3)); } function log(address p0, uint p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3)); } function log(address p0, uint p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3)); } function log(address p0, uint p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3)); } function log(address p0, uint p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3)); } function log(address p0, uint p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); } function log(address p0, address p1, uint p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3)); } function log(address p0, address p1, uint p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3)); } function log(address p0, address p1, uint p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, uint p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, uint p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol) pragma solidity ^0.8.0; import "../utils/introspection/IERC165.sol"; /** * @dev Interface for the NFT Royalty Standard. * * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal * support for royalty payments across all NFT marketplaces and ecosystem participants. * * _Available since v4.5._ */ interface IERC2981 is IERC165 { /** * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of * exchange. The royalty amount is denominated and should be paid in that same unit of exchange. */ function royaltyInfo(uint256 tokenId, uint256 salePrice) external view returns (address receiver, uint256 royaltyAmount); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.2; struct Trait { uint256 layer1; uint256 traitId; } interface IDNAVault { function tokenURI(uint256) external view returns (string memory); function royaltyInfo(uint256 _tokenId, uint256 _salePrice) external view returns (address, uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.2; interface ITraitCollection { function transferSpecial(uint256 tokenId, address _address) external; function tokenImage(uint256 tokenId) external view returns(string memory); function collectionName() external view returns(string memory); function traitName(uint256 tokenId) external view returns(string memory); }
{ "optimizer": { "enabled": true, "runs": 1000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_regensZero","type":"address"},{"internalType":"address","name":"_genesisTraits","type":"address"},{"internalType":"uint256","name":"_mintStart","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"address","name":"_artyfex","type":"address"},{"internalType":"address","name":"_publicGoods","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"_contract","type":"address"},{"indexed":true,"internalType":"uint256","name":"number","type":"uint256"}],"name":"contractAllowlisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_contract","type":"address"},{"indexed":true,"internalType":"uint256","name":"number","type":"uint256"}],"name":"contractRemovedFromAllowlist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"layers","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"contracts","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"newTraits","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"changeMade","type":"uint256[]"}],"name":"traitsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"traitsClaimed","type":"event"},{"inputs":[],"name":"DNAImageUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addContractToAllowlist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"artyfex","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256[]","name":"layers","type":"uint256[]"},{"internalType":"uint256[]","name":"contracts","type":"uint256[]"},{"internalType":"uint256[]","name":"newTraits","type":"uint256[]"}],"name":"changeTraits","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"contractsArray","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"contractsMapping","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deleteDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesisTraits","outputs":[{"internalType":"contract IGenesisCollection","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getTokenIdSalt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getTraits","outputs":[{"components":[{"internalType":"uint256","name":"layer1","type":"uint256"},{"internalType":"uint256","name":"traitId","type":"uint256"}],"internalType":"struct Trait[20]","name":"traits","type":"tuple[20]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"hasMintedTraits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mintTraits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previewImageUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicGoods","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"regensZero","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeContractFromAllowlist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"reserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserveClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"resetTokenRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_artyfex","type":"address"}],"name":"setArtyfex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_DNAImageUri","type":"string"}],"name":"setDNAImageUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint96","name":"feeNumerator","type":"uint96"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_previewImageUri","type":"string"}],"name":"setPreviewImageUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_publicGoods","type":"address"}],"name":"setPublicGoods","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint96","name":"feeNumerator","type":"uint96"}],"name":"setTokenRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenUriContract","type":"address"}],"name":"setTokenUriContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenIdToTrait","outputs":[{"internalType":"uint256","name":"layer1","type":"uint256"},{"internalType":"uint256","name":"traitId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"uri","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenUriContract","outputs":[{"internalType":"contract ITokenUri","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
610120604081905260006101008190526200001d9160099162000175565b506040805160208101918290526000908190526200003e91600a9162000175565b503480156200004c57600080fd5b50604051620038ad380380620038ad8339810160408190526200006f9162000238565b6200007a3362000125565b60018080556001600160601b0319606097881b811660c0529686901b90961660e05260a093909352608091909152600480546001600160a01b039283166001600160a01b0319918216179091556007805493831693821693909317909255600b80548086019091557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9018054909216921691821790556000908152600e6020526040902055620002e3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200018390620002a6565b90600052602060002090601f016020900481019282620001a75760008555620001f2565b82601f10620001c257805160ff1916838001178555620001f2565b82800160010185558215620001f2579182015b82811115620001f2578251825591602001919060010190620001d5565b506200020092915062000204565b5090565b5b8082111562000200576000815560010162000205565b80516001600160a01b03811681146200023357600080fd5b919050565b60008060008060008060c0878903121562000251578182fd5b6200025c876200021b565b95506200026c602088016200021b565b945060408701519350606087015192506200028a608088016200021b565b91506200029a60a088016200021b565b90509295509295509295565b600281046001821680620002bb57607f821691505b60208210811415620002dd57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160601c60e05160601c613528620003856000396000818161074c01528181611c9301526121020152600081816106ab01528181610c3801528181610d6101528181610eb301528181610f7901528181611207015281816112830152818161195901528181611a7401528181612085015261252a01526000818161038c01526122ba01526000818161064f015261237c01526135286000f3fe6080604052600436106102a05760003560e01c8063715018a61161016e578063bde44322116100cb578063e1dc07611161007f578063f210ace411610064578063f210ace4146107d0578063f2fde38b146107f0578063fa471d1214610810576102a0565b8063e1dc076114610783578063e3577e7b146107b0576102a0565b8063c8cc5175116100b0578063c8cc51751461071a578063cd8a5c6d1461073a578063de704ed11461076e576102a0565b8063bde44322146106cd578063c87b56dd146106fa576102a0565b80638da5cb5b11610122578063a0712d6811610107578063a0712d6814610671578063aa1b103f14610684578063adb5e8e914610699576102a0565b80638da5cb5b1461061f578063a035b1fe1461063d576102a0565b8063819b25ba11610153578063819b25ba146105bf578063843d228c146105df5780638a616bc0146105ff576102a0565b8063715018a61461057a57806371d6b8a01461058f576102a0565b80634305a6df1161021c5780635942195b116101d05780635a48fa20116101b55780635a48fa20146105245780635d3512a91461054457806368dd354c1461055a576102a0565b80635942195b146104e45780635944c75314610504576102a0565b80635088b007116102015780635088b0071461046257806356ec60521461048f5780635830db78146104c4576102a0565b80634305a6df1461042257806344fedbc814610442576102a0565b8063252cfee8116102735780632a55205a116102585780632a55205a146103ae57806331154421146103ed5780633ccfd60b1461040d576102a0565b8063252cfee814610342578063255e46851461037a576102a0565b806301ffc9a7146102a557806304634d8d146102da5780630f478b23146102fc57806318160ddd1461031e575b600080fd5b3480156102b157600080fd5b506102c56102c036600461301e565b610830565b60405190151581526020015b60405180910390f35b3480156102e657600080fd5b506102fa6102f5366004612fea565b61089b565b005b34801561030857600080fd5b506103116108b1565b6040516102d19190613331565b34801561032a57600080fd5b5061033460065481565b6040519081526020016102d1565b34801561034e57600080fd5b50600454610362906001600160a01b031681565b6040516001600160a01b0390911681526020016102d1565b34801561038657600080fd5b506103347f000000000000000000000000000000000000000000000000000000000000000081565b3480156103ba57600080fd5b506103ce6103c936600461322d565b61093f565b604080516001600160a01b0390931683526020830191909152016102d1565b3480156103f957600080fd5b506102fa610408366004613046565b610957565b34801561041957600080fd5b506102fa610972565b34801561042e57600080fd5b5061033461043d366004613132565b610ae4565b34801561044e57600080fd5b506102fa61045d366004613046565b610ba3565b34801561046e57600080fd5b5061048261047d36600461319f565b610bbe565b6040516102d191906132c6565b34801561049b57600080fd5b506104af6104aa36600461322d565b6118df565b604080519283526020830191909152016102d1565b3480156104d057600080fd5b506103626104df366004613132565b61190f565b3480156104f057600080fd5b506102fa6104ff366004613132565b611939565b34801561051057600080fd5b506102fa61051f366004613162565b611d25565b34801561053057600080fd5b506102fa61053f366004612fab565b611d3d565b34801561055057600080fd5b5061033460055481565b34801561056657600080fd5b506102fa610575366004612fab565b611de8565b34801561058657600080fd5b506102fa611e93565b34801561059b57600080fd5b506102c56105aa366004613132565b600f6020526000908152604090205460ff1681565b3480156105cb57600080fd5b506102fa6105da366004613132565b611ea7565b3480156105eb57600080fd5b506102fa6105fa366004612fab565b6120f8565b34801561060b57600080fd5b506102fa61061a366004613132565b6121d1565b34801561062b57600080fd5b506000546001600160a01b0316610362565b34801561064957600080fd5b506103347f000000000000000000000000000000000000000000000000000000000000000081565b6102fa61067f366004613132565b6121ec565b34801561069057600080fd5b506102fa6125d3565b3480156106a557600080fd5b506103627f000000000000000000000000000000000000000000000000000000000000000081565b3480156106d957600080fd5b506103346106e8366004612fab565b600e6020526000908152604090205481565b34801561070657600080fd5b50610311610715366004613132565b6125e5565b34801561072657600080fd5b50600854610362906001600160a01b031681565b34801561074657600080fd5b506103627f000000000000000000000000000000000000000000000000000000000000000081565b34801561077a57600080fd5b50610311612704565b34801561078f57600080fd5b506107a361079e366004613132565b612711565b6040516102d19190613288565b3480156107bc57600080fd5b50600754610362906001600160a01b031681565b3480156107dc57600080fd5b506102fa6107eb366004612fab565b61282a565b3480156107fc57600080fd5b506102fa61080b366004612fab565b612854565b34801561081c57600080fd5b506102fa61082b366004612fab565b6128e1565b60006001600160e01b031982167f2a55205a00000000000000000000000000000000000000000000000000000000148061089357507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b90505b919050565b6108a3612973565b6108ad82826129cd565b5050565b600a80546108be9061345b565b80601f01602080910402602001604051908101604052809291908181526020018280546108ea9061345b565b80156109375780601f1061090c57610100808354040283529160200191610937565b820191906000526020600020905b81548152906001019060200180831161091a57829003601f168201915b505050505081565b60008061094c8484612aeb565b915091509250929050565b61095f612973565b80516108ad90600a906020840190612e3a565b600260015414156109ca5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556000546001600160a01b03163314806109fb57506004546001600160a01b0316336001600160a01b0316145b80610a1957506007546001600160a01b0316336001600160a01b0316145b610a8b5760405162461bcd60e51b815260206004820152603060248201527f444e413a2053656e646572206973206e6f7420616c6c6f77656420746f20636160448201527f6c6c20746869732066756e6374696f6e0000000000000000000000000000000060648201526084016109c1565b476000610a996005836133d5565b610aa49060046133f5565b600754909150610abd906001600160a01b031682612ba6565b600454610adc906001600160a01b0316610ad78385613414565b612ba6565b505060018055565b60006006548211158015610af85750600082115b610b6a5760405162461bcd60e51b815260206004820152603a60248201527f444e413a20546f6b656e496420646f6573206e6f74206578697374206f72206460448201527f6f6573206e6f742062656c6f6e6720746f207468697320444e4100000000000060648201526084016109c1565b6000828152600d6020526040902054610b9057610b8b61043d8360016133bd565b610893565b506000908152600d602052604090205490565b610bab612973565b80516108ad906009906020840190612e3a565b606060026001541415610c135760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109c1565b600260015560405163ed04192160e01b81526004810186905230906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed04192190602401602060405180830381600087803b158015610c7c57600080fd5b505af1158015610c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb49190612fce565b6001600160a01b031614610d305760405162461bcd60e51b815260206004820152602e60248201527f444e413a2054686520444e4120646f6573206e6f7420636f72726573706f6e6460448201527f20746f2074686973207661756c7400000000000000000000000000000000000060648201526084016109c1565b6040517fd6fef9d60000000000000000000000000000000000000000000000000000000081526004810186905242907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d6fef9d690602401602060405180830381600087803b158015610dad57600080fd5b505af1158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de5919061314a565b10610e325760405162461bcd60e51b815260206004820152601560248201527f444e413a20546f6b656e206973206c6f636b65642e000000000000000000000060448201526064016109c1565b6000858152600f602052604090205460ff16610e905760405162461bcd60e51b815260206004820152601b60248201527f444e413a20547261697473206e6f74206d696e746564207965742e000000000060448201526064016109c1565b336040516331a9108f60e11b8152600481018790526001600160a01b03918216917f00000000000000000000000000000000000000000000000000000000000000001690636352211e9060240160206040518083038186803b158015610ef557600080fd5b505afa158015610f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2d9190612fce565b6001600160a01b031614806110005750336040517f58edaa9c000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b03918216917f000000000000000000000000000000000000000000000000000000000000000016906358edaa9c90602401602060405180830381600087803b158015610fbd57600080fd5b505af1158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff59190612fce565b6001600160a01b0316145b6110725760405162461bcd60e51b815260206004820152603660248201527f444e413a204f6e6c7920746f6b656e206f776e6572206f7220636f6e74726f6c60448201527f6c65722063616e206368616e6765207472616974732e0000000000000000000060648201526084016109c1565b82518451146110e95760405162461bcd60e51b815260206004820152603360248201527f444e413a20436f6e74726163747320616d6f756e7420646f6573206e6f74206560448201527f7175616c206c617965727320616d6f756e742e0000000000000000000000000060648201526084016109c1565b81518451146111605760405162461bcd60e51b815260206004820152603060248201527f444e413a2054726169747320616d6f756e7420646f6573206e6f74206571756160448201527f6c206c617965727320616d6f756e742e0000000000000000000000000000000060648201526084016109c1565b6014845111156111d85760405162461bcd60e51b815260206004820152602660248201527f444e413a204c617965727320616d6f756e742065786365656473206d6178206c60448201527f61796572732e000000000000000000000000000000000000000000000000000060648201526084016109c1565b6040517f778413db000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063778413db90602401600060405180830381600087803b15801561125357600080fd5b505af1158015611267573d6000803e3d6000fd5b50506040516331a9108f60e11b815260048101889052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169150636352211e9060240160206040518083038186803b1580156112ce57600080fd5b505afa1580156112e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113069190612fce565b90506000855167ffffffffffffffff81111561133257634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561135b578160200160208202803683370190505b50905060005b865181101561189257600087828151811061138c57634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008783815181106113b857634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008784815181106113e457634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008111806113fd5750600082115b80156116235750600b548210158061145c5750600e6000600b848154811061143557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054155b80611465575080155b806115e95750856001600160a01b0316600b838154811061149657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516331a9108f60e11b8152600481018490526001600160a01b0390911690636352211e9060240160206040518083038186803b1580156114e357600080fd5b505afa1580156114f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151b9190612fce565b6001600160a01b0316141580156115e95750336001600160a01b0316600b838154811061155857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516331a9108f60e11b8152600481018490526001600160a01b0390911690636352211e9060240160206040518083038186803b1580156115a557600080fd5b505afa1580156115b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dd9190612fce565b6001600160a01b031614155b806116005750806115fd620f4240856133f5565b10155b806116235750620f42406116158460016133bd565b61161f91906133f5565b8110155b1561163057505050611880565b60008b8152600c602052604081209081856014811061165f57634e487b7160e01b600052603260045260246000fd5b60020201604051806040016040529081600082015481526020016001820154815250509050838286601481106116a557634e487b7160e01b600052603260045260246000fd5b6002020155828286601481106116cb57634e487b7160e01b600052603260045260246000fd5b6002020160010181905550600083111561178957600b848154811061170057634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040517fad727c7c000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b038a811660248301529091169063ad727c7c90604401600060405180830381600087803b15801561177057600080fd5b505af1158015611784573d6000803e3d6000fd5b505050505b60208101511561184c57600b8160000151815481106117b857634e487b7160e01b600052603260045260246000fd5b60009182526020918290200154908201516040517f42842e0e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038b8116602483015260448201929092529116906342842e0e90606401600060405180830381600087803b15801561183357600080fd5b505af1158015611847573d6000803e3d6000fd5b505050505b600187878151811061186e57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505050505050505b8061188a81613496565b915050611361565b50867f7dae807cad872d0cca04b85acf81cf775e321a5592aaeb1939a38cc0126ad33b878787856040516118c994939291906132d9565b60405180910390a2600180559695505050505050565b600c60205281600052604060002081601481106118fb57600080fd5b600202018054600190910154909250905082565b600b818154811061191f57600080fd5b6000918252602090912001546001600160a01b0316905081565b60405163ed04192160e01b81526004810182905230906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed04192190602401602060405180830381600087803b15801561199d57600080fd5b505af11580156119b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d59190612fce565b6001600160a01b031614611a515760405162461bcd60e51b815260206004820152602e60248201527f444e413a2054686520444e4120646f6573206e6f7420636f72726573706f6e6460448201527f20746f2074686973207661756c7400000000000000000000000000000000000060648201526084016109c1565b336040516331a9108f60e11b8152600481018390526001600160a01b03918216917f00000000000000000000000000000000000000000000000000000000000000001690636352211e9060240160206040518083038186803b158015611ab657600080fd5b505afa158015611aca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aee9190612fce565b6001600160a01b031614611b6a5760405162461bcd60e51b815260206004820152602660248201527f444e413a204f6e6c7920746f6b656e206f776e65722063616e206d696e74207460448201527f72616974732e000000000000000000000000000000000000000000000000000060648201526084016109c1565b6000818152600f602052604090205460ff1615611bc95760405162461bcd60e51b815260206004820152601a60248201527f444e413a2054726169747320616c7265616479206d696e74656400000000000060448201526064016109c1565b6000818152600f60205260408120805460ff191660011790555b6006811015611c6357611bf981620f42406133f5565b611c049060026133f5565b611c0e90836133bd565b6000838152600c60205260409020611c278360026133f5565b60148110611c4557634e487b7160e01b600052603260045260246000fd5b60020201600101819055508080611c5b90613496565b915050611be3565b506040517f5942195b000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635942195b90602401600060405180830381600087803b158015611cdf57600080fd5b505af1158015611cf3573d6000803e3d6000fd5b50506040518392507fead2e4af13fde2f0f0642502fbe46317374cd7ab137d367df3abfbb33550d2179150600090a250565b611d2d612973565b611d38838383612cbf565b505050565b6004546001600160a01b0316336001600160a01b031614611dc65760405162461bcd60e51b815260206004820152602860248201527f444e413a204f6e6c7920417274796665782063616e2063616c6c20746869732060448201527f66756e6374696f6e00000000000000000000000000000000000000000000000060648201526084016109c1565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b0316336001600160a01b031614611e715760405162461bcd60e51b815260206004820152602d60248201527f444e413a204f6e6c79205075626c696320476f6f64732063616e2063616c6c2060448201527f746869732066756e6374696f6e0000000000000000000000000000000000000060648201526084016109c1565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b611e9b612973565b611ea56000612dea565b565b6004546001600160a01b0316336001600160a01b031614611f0a5760405162461bcd60e51b815260206004820152601a60248201527f444e413a2053656e646572206973206e6f74204172747966657800000000000060448201526064016109c1565b608c81600554611f1a91906133bd565b1115611f8e5760405162461bcd60e51b815260206004820152603960248201527f444e413a20526573657276656420636c61696d656420706c757320616d6f756e60448201527f74206578636565647320616d6f756e742072657365727665640000000000000060648201526084016109c1565b61271081600654611f9f91906133bd565b11156120135760405162461bcd60e51b815260206004820152602e60248201527f444e413a20416d6f756e74206578636565647320617661696c61626c6520746f60448201527f6b656e7320666f72206d696e742e00000000000000000000000000000000000060648201526084016109c1565b806005600082825461202591906133bd565b92505081905550806006600082825461203e91906133bd565b9091555050600480546040517fd618e4390000000000000000000000000000000000000000000000000000000081529182018390526001600160a01b0390811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d618e43990604401600060405180830381600087803b1580156120c957600080fd5b505af11580156120dd573d6000803e3d6000fd5b50506006546000908152600d60205260409020429055505050565b612100612973565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614156121825760405162461bcd60e51b815260206004820181905260248201527f444e413a2043616e6e6f742072656d6f76652047656e6573697354726169747360448201526064016109c1565b6001600160a01b0381166000818152600e602052604080822080549083905590519092839290917fc06fa052dcedf8c287a06801ba2cb8b2926f419fc48e842bf4aba2f52c3f2af29190a35050565b6121d9612973565b6000818152600360205260408120555b50565b6002600154141561223f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109c1565b6002600155336122b75760405162461bcd60e51b815260206004820152602260248201527f444e413a2042757965722063616e6e6f742062652061646472657373207a657260448201527f6f2e00000000000000000000000000000000000000000000000000000000000060648201526084016109c1565b437f0000000000000000000000000000000000000000000000000000000000000000106123265760405162461bcd60e51b815260206004820152601a60248201527f444e413a204d696e7420686173206e6f7420737461727465642e00000000000060448201526064016109c1565b600081116123765760405162461bcd60e51b815260206004820152601a60248201527f444e413a2043616e6e6f74206d696e74203020746f6b656e732e00000000000060448201526064016109c1565b6123a0817f00000000000000000000000000000000000000000000000000000000000000006133f5565b3410156124155760405162461bcd60e51b815260206004820152602860248201527f444e413a20457468657220616d6f756e74206973206e6f7420656e6f7567682060448201527f746f206d696e742e00000000000000000000000000000000000000000000000060648201526084016109c1565b6127108160065461242691906133bd565b111561249a5760405162461bcd60e51b815260206004820152602e60248201527f444e413a20416d6f756e74206578636565647320617661696c61626c6520746f60448201527f6b656e7320666f72206d696e742e00000000000000000000000000000000000060648201526084016109c1565b600f8111156125115760405162461bcd60e51b815260206004820152602b60248201527f444e413a20596f752068617665206578636565646564206d696e74206c696d6960448201527f74207065722063616c6c2e00000000000000000000000000000000000000000060648201526084016109c1565b806006600082825461252391906133bd565b90915550507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d618e43982336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401600060405180830381600087803b1580156125a057600080fd5b505af11580156125b4573d6000803e3d6000fd5b50506006546000908152600d6020526040902042905550506001805550565b6125db612973565b611ea56000600255565b606060065482111580156125f95750600082115b61266b5760405162461bcd60e51b815260206004820152603a60248201527f444e413a20546f6b656e496420646f6573206e6f74206578697374206f72206460448201527f6f6573206e6f742062656c6f6e6720746f207468697320444e4100000000000060648201526084016109c1565b6008546040517fc87b56dd000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b039091169063c87b56dd9060240160006040518083038186803b1580156126c857600080fd5b505afa1580156126dc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261089391908101906130bf565b600980546108be9061345b565b612719612ebe565b6000828152600f602052604090205460ff166127c35760405162461bcd60e51b815260206004820152605260248201527f444e413a20546f6b656e20686173206e6f74206d696e7465642074726169747360448201527f2c20646f6573206e6f742062656c6f6e6720746f2067656e65736973444e412060648201527f6f7220646f6573206e6f742065786973742e0000000000000000000000000000608482015260a4016109c1565b6000828152600c6020526040808220815161028081019092529091601490835b8282101561281f5783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906127e3565b505050509050919050565b612832612973565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b61285c612973565b6001600160a01b0381166128d85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016109c1565b6121e981612dea565b6128e9612973565b600b80546001810182557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b03841690811790915590546000828152600e6020526040808220839055519192839290917ff22153c209c685e77dc2f964aebeaadffb23aef9754376b82bf70ea1adba028f91a35050565b6000546001600160a01b03163314611ea55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109c1565b6127106bffffffffffffffffffffffff82161115612a405760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016109c1565b6001600160a01b038216612a965760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016109c1565b604080518082019091526001600160a01b039283168082526bffffffffffffffffffffffff929092166020909101819052600280546001600160a01b031916909217909216600160a01b909202919091179055565b60008281526003602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046bffffffffffffffffffffffff16928201929092528291612b6a5750604080518082019091526002546001600160a01b0381168252600160a01b90046bffffffffffffffffffffffff1660208201525b602081015160009061271090612b8e906bffffffffffffffffffffffff16876133f5565b612b9891906133d5565b915196919550909350505050565b80471015612bf65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109c1565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612c43576040519150601f19603f3d011682016040523d82523d6000602084013e612c48565b606091505b5050905080611d385760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109c1565b6127106bffffffffffffffffffffffff82161115612d325760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016109c1565b6001600160a01b038216612d885760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d6574657273000000000060448201526064016109c1565b6040805180820182526001600160a01b0393841681526bffffffffffffffffffffffff928316602080830191825260009687526003905291909420935184549151909216600160a01b029183166001600160a01b031990911617909116179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054612e469061345b565b90600052602060002090601f016020900481019282612e685760008555612eae565b82601f10612e8157805160ff1916838001178555612eae565b82800160010185558215612eae579182015b82811115612eae578251825591602001919060010190612e93565b50612eba929150612ef8565b5090565b6040518061028001604052806014905b6040805180820190915260008082526020820152815260200190600190039081612ece5790505090565b5b80821115612eba5760008155600101612ef9565b600082601f830112612f1d578081fd5b8135602067ffffffffffffffff821115612f3957612f396134c7565b808202612f47828201613364565b838152828101908684018388018501891015612f61578687fd5b8693505b85841015612f83578035835260019390930192918401918401612f65565b50979650505050505050565b80356bffffffffffffffffffffffff8116811461089657600080fd5b600060208284031215612fbc578081fd5b8135612fc7816134dd565b9392505050565b600060208284031215612fdf578081fd5b8151612fc7816134dd565b60008060408385031215612ffc578081fd5b8235613007816134dd565b915061301560208401612f8f565b90509250929050565b60006020828403121561302f578081fd5b81356001600160e01b031981168114612fc7578182fd5b600060208284031215613057578081fd5b813567ffffffffffffffff81111561306d578182fd5b8201601f8101841361307d578182fd5b803561309061308b82613395565b613364565b8181528560208385010111156130a4578384fd5b81602084016020830137908101602001929092525092915050565b6000602082840312156130d0578081fd5b815167ffffffffffffffff8111156130e6578182fd5b8201601f810184136130f6578182fd5b805161310461308b82613395565b818152856020838501011115613118578384fd5b61312982602083016020860161342b565b95945050505050565b600060208284031215613143578081fd5b5035919050565b60006020828403121561315b578081fd5b5051919050565b600080600060608486031215613176578081fd5b833592506020840135613188816134dd565b915061319660408501612f8f565b90509250925092565b600080600080608085870312156131b4578081fd5b84359350602085013567ffffffffffffffff808211156131d2578283fd5b6131de88838901612f0d565b945060408701359150808211156131f3578283fd5b6131ff88838901612f0d565b93506060870135915080821115613214578283fd5b5061322187828801612f0d565b91505092959194509250565b6000806040838503121561323f578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b8381101561327d57815187529582019590820190600101613261565b509495945050505050565b6105008101818360005b60148110156132bd578151805184526020908101518185015260409093019290910190600101613292565b50505092915050565b600060208252612fc7602083018461324e565b6000608082526132ec608083018761324e565b82810360208401526132fe818761324e565b90508281036040840152613312818661324e565b90508281036060840152613326818561324e565b979650505050505050565b600060208252825180602084015261335081604085016020870161342b565b601f01601f19169190910160400192915050565b604051601f8201601f1916810167ffffffffffffffff8111828210171561338d5761338d6134c7565b604052919050565b600067ffffffffffffffff8211156133af576133af6134c7565b50601f01601f191660200190565b600082198211156133d0576133d06134b1565b500190565b6000826133f057634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561340f5761340f6134b1565b500290565b600082821015613426576134266134b1565b500390565b60005b8381101561344657818101518382015260200161342e565b83811115613455576000848401525b50505050565b60028104600182168061346f57607f821691505b6020821081141561349057634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156134aa576134aa6134b1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146121e957600080fdfea264697066735822122029994507f1204e696c893e8f3eefdea09ab8dd7b83a9784f618e75557811c06c64736f6c63430008020033000000000000000000000000e181dd74fdb2f0d4105831659e3b9c127388923c000000000000000000000000d7ae191f318bd3b2d2c1af0526afcf05428f0c800000000000000000000000000000000000000000000000000000000000f923c200000000000000000000000000000000000000000000000000b1a2bc2ec50000000000000000000000000000e481134031cd273eb3216c4915ba509364f8390b000000000000000000000000de21f729137c5af1b01d73af1dc21effa2b8a0d6
Deployed Bytecode
0x6080604052600436106102a05760003560e01c8063715018a61161016e578063bde44322116100cb578063e1dc07611161007f578063f210ace411610064578063f210ace4146107d0578063f2fde38b146107f0578063fa471d1214610810576102a0565b8063e1dc076114610783578063e3577e7b146107b0576102a0565b8063c8cc5175116100b0578063c8cc51751461071a578063cd8a5c6d1461073a578063de704ed11461076e576102a0565b8063bde44322146106cd578063c87b56dd146106fa576102a0565b80638da5cb5b11610122578063a0712d6811610107578063a0712d6814610671578063aa1b103f14610684578063adb5e8e914610699576102a0565b80638da5cb5b1461061f578063a035b1fe1461063d576102a0565b8063819b25ba11610153578063819b25ba146105bf578063843d228c146105df5780638a616bc0146105ff576102a0565b8063715018a61461057a57806371d6b8a01461058f576102a0565b80634305a6df1161021c5780635942195b116101d05780635a48fa20116101b55780635a48fa20146105245780635d3512a91461054457806368dd354c1461055a576102a0565b80635942195b146104e45780635944c75314610504576102a0565b80635088b007116102015780635088b0071461046257806356ec60521461048f5780635830db78146104c4576102a0565b80634305a6df1461042257806344fedbc814610442576102a0565b8063252cfee8116102735780632a55205a116102585780632a55205a146103ae57806331154421146103ed5780633ccfd60b1461040d576102a0565b8063252cfee814610342578063255e46851461037a576102a0565b806301ffc9a7146102a557806304634d8d146102da5780630f478b23146102fc57806318160ddd1461031e575b600080fd5b3480156102b157600080fd5b506102c56102c036600461301e565b610830565b60405190151581526020015b60405180910390f35b3480156102e657600080fd5b506102fa6102f5366004612fea565b61089b565b005b34801561030857600080fd5b506103116108b1565b6040516102d19190613331565b34801561032a57600080fd5b5061033460065481565b6040519081526020016102d1565b34801561034e57600080fd5b50600454610362906001600160a01b031681565b6040516001600160a01b0390911681526020016102d1565b34801561038657600080fd5b506103347f0000000000000000000000000000000000000000000000000000000000f923c281565b3480156103ba57600080fd5b506103ce6103c936600461322d565b61093f565b604080516001600160a01b0390931683526020830191909152016102d1565b3480156103f957600080fd5b506102fa610408366004613046565b610957565b34801561041957600080fd5b506102fa610972565b34801561042e57600080fd5b5061033461043d366004613132565b610ae4565b34801561044e57600080fd5b506102fa61045d366004613046565b610ba3565b34801561046e57600080fd5b5061048261047d36600461319f565b610bbe565b6040516102d191906132c6565b34801561049b57600080fd5b506104af6104aa36600461322d565b6118df565b604080519283526020830191909152016102d1565b3480156104d057600080fd5b506103626104df366004613132565b61190f565b3480156104f057600080fd5b506102fa6104ff366004613132565b611939565b34801561051057600080fd5b506102fa61051f366004613162565b611d25565b34801561053057600080fd5b506102fa61053f366004612fab565b611d3d565b34801561055057600080fd5b5061033460055481565b34801561056657600080fd5b506102fa610575366004612fab565b611de8565b34801561058657600080fd5b506102fa611e93565b34801561059b57600080fd5b506102c56105aa366004613132565b600f6020526000908152604090205460ff1681565b3480156105cb57600080fd5b506102fa6105da366004613132565b611ea7565b3480156105eb57600080fd5b506102fa6105fa366004612fab565b6120f8565b34801561060b57600080fd5b506102fa61061a366004613132565b6121d1565b34801561062b57600080fd5b506000546001600160a01b0316610362565b34801561064957600080fd5b506103347f00000000000000000000000000000000000000000000000000b1a2bc2ec5000081565b6102fa61067f366004613132565b6121ec565b34801561069057600080fd5b506102fa6125d3565b3480156106a557600080fd5b506103627f000000000000000000000000e181dd74fdb2f0d4105831659e3b9c127388923c81565b3480156106d957600080fd5b506103346106e8366004612fab565b600e6020526000908152604090205481565b34801561070657600080fd5b50610311610715366004613132565b6125e5565b34801561072657600080fd5b50600854610362906001600160a01b031681565b34801561074657600080fd5b506103627f000000000000000000000000d7ae191f318bd3b2d2c1af0526afcf05428f0c8081565b34801561077a57600080fd5b50610311612704565b34801561078f57600080fd5b506107a361079e366004613132565b612711565b6040516102d19190613288565b3480156107bc57600080fd5b50600754610362906001600160a01b031681565b3480156107dc57600080fd5b506102fa6107eb366004612fab565b61282a565b3480156107fc57600080fd5b506102fa61080b366004612fab565b612854565b34801561081c57600080fd5b506102fa61082b366004612fab565b6128e1565b60006001600160e01b031982167f2a55205a00000000000000000000000000000000000000000000000000000000148061089357507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b90505b919050565b6108a3612973565b6108ad82826129cd565b5050565b600a80546108be9061345b565b80601f01602080910402602001604051908101604052809291908181526020018280546108ea9061345b565b80156109375780601f1061090c57610100808354040283529160200191610937565b820191906000526020600020905b81548152906001019060200180831161091a57829003601f168201915b505050505081565b60008061094c8484612aeb565b915091509250929050565b61095f612973565b80516108ad90600a906020840190612e3a565b600260015414156109ca5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556000546001600160a01b03163314806109fb57506004546001600160a01b0316336001600160a01b0316145b80610a1957506007546001600160a01b0316336001600160a01b0316145b610a8b5760405162461bcd60e51b815260206004820152603060248201527f444e413a2053656e646572206973206e6f7420616c6c6f77656420746f20636160448201527f6c6c20746869732066756e6374696f6e0000000000000000000000000000000060648201526084016109c1565b476000610a996005836133d5565b610aa49060046133f5565b600754909150610abd906001600160a01b031682612ba6565b600454610adc906001600160a01b0316610ad78385613414565b612ba6565b505060018055565b60006006548211158015610af85750600082115b610b6a5760405162461bcd60e51b815260206004820152603a60248201527f444e413a20546f6b656e496420646f6573206e6f74206578697374206f72206460448201527f6f6573206e6f742062656c6f6e6720746f207468697320444e4100000000000060648201526084016109c1565b6000828152600d6020526040902054610b9057610b8b61043d8360016133bd565b610893565b506000908152600d602052604090205490565b610bab612973565b80516108ad906009906020840190612e3a565b606060026001541415610c135760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109c1565b600260015560405163ed04192160e01b81526004810186905230906001600160a01b037f000000000000000000000000e181dd74fdb2f0d4105831659e3b9c127388923c169063ed04192190602401602060405180830381600087803b158015610c7c57600080fd5b505af1158015610c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb49190612fce565b6001600160a01b031614610d305760405162461bcd60e51b815260206004820152602e60248201527f444e413a2054686520444e4120646f6573206e6f7420636f72726573706f6e6460448201527f20746f2074686973207661756c7400000000000000000000000000000000000060648201526084016109c1565b6040517fd6fef9d60000000000000000000000000000000000000000000000000000000081526004810186905242907f000000000000000000000000e181dd74fdb2f0d4105831659e3b9c127388923c6001600160a01b03169063d6fef9d690602401602060405180830381600087803b158015610dad57600080fd5b505af1158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de5919061314a565b10610e325760405162461bcd60e51b815260206004820152601560248201527f444e413a20546f6b656e206973206c6f636b65642e000000000000000000000060448201526064016109c1565b6000858152600f602052604090205460ff16610e905760405162461bcd60e51b815260206004820152601b60248201527f444e413a20547261697473206e6f74206d696e746564207965742e000000000060448201526064016109c1565b336040516331a9108f60e11b8152600481018790526001600160a01b03918216917f000000000000000000000000e181dd74fdb2f0d4105831659e3b9c127388923c1690636352211e9060240160206040518083038186803b158015610ef557600080fd5b505afa158015610f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2d9190612fce565b6001600160a01b031614806110005750336040517f58edaa9c000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b03918216917f000000000000000000000000e181dd74fdb2f0d4105831659e3b9c127388923c16906358edaa9c90602401602060405180830381600087803b158015610fbd57600080fd5b505af1158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff59190612fce565b6001600160a01b0316145b6110725760405162461bcd60e51b815260206004820152603660248201527f444e413a204f6e6c7920746f6b656e206f776e6572206f7220636f6e74726f6c60448201527f6c65722063616e206368616e6765207472616974732e0000000000000000000060648201526084016109c1565b82518451146110e95760405162461bcd60e51b815260206004820152603360248201527f444e413a20436f6e74726163747320616d6f756e7420646f6573206e6f74206560448201527f7175616c206c617965727320616d6f756e742e0000000000000000000000000060648201526084016109c1565b81518451146111605760405162461bcd60e51b815260206004820152603060248201527f444e413a2054726169747320616d6f756e7420646f6573206e6f74206571756160448201527f6c206c617965727320616d6f756e742e0000000000000000000000000000000060648201526084016109c1565b6014845111156111d85760405162461bcd60e51b815260206004820152602660248201527f444e413a204c617965727320616d6f756e742065786365656473206d6178206c60448201527f61796572732e000000000000000000000000000000000000000000000000000060648201526084016109c1565b6040517f778413db000000000000000000000000000000000000000000000000000000008152600481018690527f000000000000000000000000e181dd74fdb2f0d4105831659e3b9c127388923c6001600160a01b03169063778413db90602401600060405180830381600087803b15801561125357600080fd5b505af1158015611267573d6000803e3d6000fd5b50506040516331a9108f60e11b815260048101889052600092507f000000000000000000000000e181dd74fdb2f0d4105831659e3b9c127388923c6001600160a01b03169150636352211e9060240160206040518083038186803b1580156112ce57600080fd5b505afa1580156112e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113069190612fce565b90506000855167ffffffffffffffff81111561133257634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561135b578160200160208202803683370190505b50905060005b865181101561189257600087828151811061138c57634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008783815181106113b857634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008784815181106113e457634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008111806113fd5750600082115b80156116235750600b548210158061145c5750600e6000600b848154811061143557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054155b80611465575080155b806115e95750856001600160a01b0316600b838154811061149657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516331a9108f60e11b8152600481018490526001600160a01b0390911690636352211e9060240160206040518083038186803b1580156114e357600080fd5b505afa1580156114f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151b9190612fce565b6001600160a01b0316141580156115e95750336001600160a01b0316600b838154811061155857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516331a9108f60e11b8152600481018490526001600160a01b0390911690636352211e9060240160206040518083038186803b1580156115a557600080fd5b505afa1580156115b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dd9190612fce565b6001600160a01b031614155b806116005750806115fd620f4240856133f5565b10155b806116235750620f42406116158460016133bd565b61161f91906133f5565b8110155b1561163057505050611880565b60008b8152600c602052604081209081856014811061165f57634e487b7160e01b600052603260045260246000fd5b60020201604051806040016040529081600082015481526020016001820154815250509050838286601481106116a557634e487b7160e01b600052603260045260246000fd5b6002020155828286601481106116cb57634e487b7160e01b600052603260045260246000fd5b6002020160010181905550600083111561178957600b848154811061170057634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040517fad727c7c000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b038a811660248301529091169063ad727c7c90604401600060405180830381600087803b15801561177057600080fd5b505af1158015611784573d6000803e3d6000fd5b505050505b60208101511561184c57600b8160000151815481106117b857634e487b7160e01b600052603260045260246000fd5b60009182526020918290200154908201516040517f42842e0e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038b8116602483015260448201929092529116906342842e0e90606401600060405180830381600087803b15801561183357600080fd5b505af1158015611847573d6000803e3d6000fd5b505050505b600187878151811061186e57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505050505050505b8061188a81613496565b915050611361565b50867f7dae807cad872d0cca04b85acf81cf775e321a5592aaeb1939a38cc0126ad33b878787856040516118c994939291906132d9565b60405180910390a2600180559695505050505050565b600c60205281600052604060002081601481106118fb57600080fd5b600202018054600190910154909250905082565b600b818154811061191f57600080fd5b6000918252602090912001546001600160a01b0316905081565b60405163ed04192160e01b81526004810182905230906001600160a01b037f000000000000000000000000e181dd74fdb2f0d4105831659e3b9c127388923c169063ed04192190602401602060405180830381600087803b15801561199d57600080fd5b505af11580156119b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d59190612fce565b6001600160a01b031614611a515760405162461bcd60e51b815260206004820152602e60248201527f444e413a2054686520444e4120646f6573206e6f7420636f72726573706f6e6460448201527f20746f2074686973207661756c7400000000000000000000000000000000000060648201526084016109c1565b336040516331a9108f60e11b8152600481018390526001600160a01b03918216917f000000000000000000000000e181dd74fdb2f0d4105831659e3b9c127388923c1690636352211e9060240160206040518083038186803b158015611ab657600080fd5b505afa158015611aca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aee9190612fce565b6001600160a01b031614611b6a5760405162461bcd60e51b815260206004820152602660248201527f444e413a204f6e6c7920746f6b656e206f776e65722063616e206d696e74207460448201527f72616974732e000000000000000000000000000000000000000000000000000060648201526084016109c1565b6000818152600f602052604090205460ff1615611bc95760405162461bcd60e51b815260206004820152601a60248201527f444e413a2054726169747320616c7265616479206d696e74656400000000000060448201526064016109c1565b6000818152600f60205260408120805460ff191660011790555b6006811015611c6357611bf981620f42406133f5565b611c049060026133f5565b611c0e90836133bd565b6000838152600c60205260409020611c278360026133f5565b60148110611c4557634e487b7160e01b600052603260045260246000fd5b60020201600101819055508080611c5b90613496565b915050611be3565b506040517f5942195b000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000d7ae191f318bd3b2d2c1af0526afcf05428f0c806001600160a01b031690635942195b90602401600060405180830381600087803b158015611cdf57600080fd5b505af1158015611cf3573d6000803e3d6000fd5b50506040518392507fead2e4af13fde2f0f0642502fbe46317374cd7ab137d367df3abfbb33550d2179150600090a250565b611d2d612973565b611d38838383612cbf565b505050565b6004546001600160a01b0316336001600160a01b031614611dc65760405162461bcd60e51b815260206004820152602860248201527f444e413a204f6e6c7920417274796665782063616e2063616c6c20746869732060448201527f66756e6374696f6e00000000000000000000000000000000000000000000000060648201526084016109c1565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b0316336001600160a01b031614611e715760405162461bcd60e51b815260206004820152602d60248201527f444e413a204f6e6c79205075626c696320476f6f64732063616e2063616c6c2060448201527f746869732066756e6374696f6e0000000000000000000000000000000000000060648201526084016109c1565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b611e9b612973565b611ea56000612dea565b565b6004546001600160a01b0316336001600160a01b031614611f0a5760405162461bcd60e51b815260206004820152601a60248201527f444e413a2053656e646572206973206e6f74204172747966657800000000000060448201526064016109c1565b608c81600554611f1a91906133bd565b1115611f8e5760405162461bcd60e51b815260206004820152603960248201527f444e413a20526573657276656420636c61696d656420706c757320616d6f756e60448201527f74206578636565647320616d6f756e742072657365727665640000000000000060648201526084016109c1565b61271081600654611f9f91906133bd565b11156120135760405162461bcd60e51b815260206004820152602e60248201527f444e413a20416d6f756e74206578636565647320617661696c61626c6520746f60448201527f6b656e7320666f72206d696e742e00000000000000000000000000000000000060648201526084016109c1565b806005600082825461202591906133bd565b92505081905550806006600082825461203e91906133bd565b9091555050600480546040517fd618e4390000000000000000000000000000000000000000000000000000000081529182018390526001600160a01b0390811660248301527f000000000000000000000000e181dd74fdb2f0d4105831659e3b9c127388923c169063d618e43990604401600060405180830381600087803b1580156120c957600080fd5b505af11580156120dd573d6000803e3d6000fd5b50506006546000908152600d60205260409020429055505050565b612100612973565b7f000000000000000000000000d7ae191f318bd3b2d2c1af0526afcf05428f0c806001600160a01b0316816001600160a01b031614156121825760405162461bcd60e51b815260206004820181905260248201527f444e413a2043616e6e6f742072656d6f76652047656e6573697354726169747360448201526064016109c1565b6001600160a01b0381166000818152600e602052604080822080549083905590519092839290917fc06fa052dcedf8c287a06801ba2cb8b2926f419fc48e842bf4aba2f52c3f2af29190a35050565b6121d9612973565b6000818152600360205260408120555b50565b6002600154141561223f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109c1565b6002600155336122b75760405162461bcd60e51b815260206004820152602260248201527f444e413a2042757965722063616e6e6f742062652061646472657373207a657260448201527f6f2e00000000000000000000000000000000000000000000000000000000000060648201526084016109c1565b437f0000000000000000000000000000000000000000000000000000000000f923c2106123265760405162461bcd60e51b815260206004820152601a60248201527f444e413a204d696e7420686173206e6f7420737461727465642e00000000000060448201526064016109c1565b600081116123765760405162461bcd60e51b815260206004820152601a60248201527f444e413a2043616e6e6f74206d696e74203020746f6b656e732e00000000000060448201526064016109c1565b6123a0817f00000000000000000000000000000000000000000000000000b1a2bc2ec500006133f5565b3410156124155760405162461bcd60e51b815260206004820152602860248201527f444e413a20457468657220616d6f756e74206973206e6f7420656e6f7567682060448201527f746f206d696e742e00000000000000000000000000000000000000000000000060648201526084016109c1565b6127108160065461242691906133bd565b111561249a5760405162461bcd60e51b815260206004820152602e60248201527f444e413a20416d6f756e74206578636565647320617661696c61626c6520746f60448201527f6b656e7320666f72206d696e742e00000000000000000000000000000000000060648201526084016109c1565b600f8111156125115760405162461bcd60e51b815260206004820152602b60248201527f444e413a20596f752068617665206578636565646564206d696e74206c696d6960448201527f74207065722063616c6c2e00000000000000000000000000000000000000000060648201526084016109c1565b806006600082825461252391906133bd565b90915550507f000000000000000000000000e181dd74fdb2f0d4105831659e3b9c127388923c6001600160a01b031663d618e43982336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401600060405180830381600087803b1580156125a057600080fd5b505af11580156125b4573d6000803e3d6000fd5b50506006546000908152600d6020526040902042905550506001805550565b6125db612973565b611ea56000600255565b606060065482111580156125f95750600082115b61266b5760405162461bcd60e51b815260206004820152603a60248201527f444e413a20546f6b656e496420646f6573206e6f74206578697374206f72206460448201527f6f6573206e6f742062656c6f6e6720746f207468697320444e4100000000000060648201526084016109c1565b6008546040517fc87b56dd000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b039091169063c87b56dd9060240160006040518083038186803b1580156126c857600080fd5b505afa1580156126dc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261089391908101906130bf565b600980546108be9061345b565b612719612ebe565b6000828152600f602052604090205460ff166127c35760405162461bcd60e51b815260206004820152605260248201527f444e413a20546f6b656e20686173206e6f74206d696e7465642074726169747360448201527f2c20646f6573206e6f742062656c6f6e6720746f2067656e65736973444e412060648201527f6f7220646f6573206e6f742065786973742e0000000000000000000000000000608482015260a4016109c1565b6000828152600c6020526040808220815161028081019092529091601490835b8282101561281f5783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906127e3565b505050509050919050565b612832612973565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b61285c612973565b6001600160a01b0381166128d85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016109c1565b6121e981612dea565b6128e9612973565b600b80546001810182557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b03841690811790915590546000828152600e6020526040808220839055519192839290917ff22153c209c685e77dc2f964aebeaadffb23aef9754376b82bf70ea1adba028f91a35050565b6000546001600160a01b03163314611ea55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109c1565b6127106bffffffffffffffffffffffff82161115612a405760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016109c1565b6001600160a01b038216612a965760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016109c1565b604080518082019091526001600160a01b039283168082526bffffffffffffffffffffffff929092166020909101819052600280546001600160a01b031916909217909216600160a01b909202919091179055565b60008281526003602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046bffffffffffffffffffffffff16928201929092528291612b6a5750604080518082019091526002546001600160a01b0381168252600160a01b90046bffffffffffffffffffffffff1660208201525b602081015160009061271090612b8e906bffffffffffffffffffffffff16876133f5565b612b9891906133d5565b915196919550909350505050565b80471015612bf65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109c1565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612c43576040519150601f19603f3d011682016040523d82523d6000602084013e612c48565b606091505b5050905080611d385760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109c1565b6127106bffffffffffffffffffffffff82161115612d325760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016109c1565b6001600160a01b038216612d885760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d6574657273000000000060448201526064016109c1565b6040805180820182526001600160a01b0393841681526bffffffffffffffffffffffff928316602080830191825260009687526003905291909420935184549151909216600160a01b029183166001600160a01b031990911617909116179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054612e469061345b565b90600052602060002090601f016020900481019282612e685760008555612eae565b82601f10612e8157805160ff1916838001178555612eae565b82800160010185558215612eae579182015b82811115612eae578251825591602001919060010190612e93565b50612eba929150612ef8565b5090565b6040518061028001604052806014905b6040805180820190915260008082526020820152815260200190600190039081612ece5790505090565b5b80821115612eba5760008155600101612ef9565b600082601f830112612f1d578081fd5b8135602067ffffffffffffffff821115612f3957612f396134c7565b808202612f47828201613364565b838152828101908684018388018501891015612f61578687fd5b8693505b85841015612f83578035835260019390930192918401918401612f65565b50979650505050505050565b80356bffffffffffffffffffffffff8116811461089657600080fd5b600060208284031215612fbc578081fd5b8135612fc7816134dd565b9392505050565b600060208284031215612fdf578081fd5b8151612fc7816134dd565b60008060408385031215612ffc578081fd5b8235613007816134dd565b915061301560208401612f8f565b90509250929050565b60006020828403121561302f578081fd5b81356001600160e01b031981168114612fc7578182fd5b600060208284031215613057578081fd5b813567ffffffffffffffff81111561306d578182fd5b8201601f8101841361307d578182fd5b803561309061308b82613395565b613364565b8181528560208385010111156130a4578384fd5b81602084016020830137908101602001929092525092915050565b6000602082840312156130d0578081fd5b815167ffffffffffffffff8111156130e6578182fd5b8201601f810184136130f6578182fd5b805161310461308b82613395565b818152856020838501011115613118578384fd5b61312982602083016020860161342b565b95945050505050565b600060208284031215613143578081fd5b5035919050565b60006020828403121561315b578081fd5b5051919050565b600080600060608486031215613176578081fd5b833592506020840135613188816134dd565b915061319660408501612f8f565b90509250925092565b600080600080608085870312156131b4578081fd5b84359350602085013567ffffffffffffffff808211156131d2578283fd5b6131de88838901612f0d565b945060408701359150808211156131f3578283fd5b6131ff88838901612f0d565b93506060870135915080821115613214578283fd5b5061322187828801612f0d565b91505092959194509250565b6000806040838503121561323f578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b8381101561327d57815187529582019590820190600101613261565b509495945050505050565b6105008101818360005b60148110156132bd578151805184526020908101518185015260409093019290910190600101613292565b50505092915050565b600060208252612fc7602083018461324e565b6000608082526132ec608083018761324e565b82810360208401526132fe818761324e565b90508281036040840152613312818661324e565b90508281036060840152613326818561324e565b979650505050505050565b600060208252825180602084015261335081604085016020870161342b565b601f01601f19169190910160400192915050565b604051601f8201601f1916810167ffffffffffffffff8111828210171561338d5761338d6134c7565b604052919050565b600067ffffffffffffffff8211156133af576133af6134c7565b50601f01601f191660200190565b600082198211156133d0576133d06134b1565b500190565b6000826133f057634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561340f5761340f6134b1565b500290565b600082821015613426576134266134b1565b500390565b60005b8381101561344657818101518382015260200161342e565b83811115613455576000848401525b50505050565b60028104600182168061346f57607f821691505b6020821081141561349057634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156134aa576134aa6134b1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146121e957600080fdfea264697066735822122029994507f1204e696c893e8f3eefdea09ab8dd7b83a9784f618e75557811c06c64736f6c63430008020033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000e181dd74fdb2f0d4105831659e3b9c127388923c000000000000000000000000d7ae191f318bd3b2d2c1af0526afcf05428f0c800000000000000000000000000000000000000000000000000000000000f923c200000000000000000000000000000000000000000000000000b1a2bc2ec50000000000000000000000000000e481134031cd273eb3216c4915ba509364f8390b000000000000000000000000de21f729137c5af1b01d73af1dc21effa2b8a0d6
-----Decoded View---------------
Arg [0] : _regensZero (address): 0xE181DD74fDb2F0D4105831659E3b9c127388923C
Arg [1] : _genesisTraits (address): 0xD7AE191F318BD3b2D2C1AF0526afCf05428f0C80
Arg [2] : _mintStart (uint256): 16327618
Arg [3] : _price (uint256): 50000000000000000
Arg [4] : _artyfex (address): 0xE481134031Cd273eb3216c4915ba509364f8390b
Arg [5] : _publicGoods (address): 0xde21F729137C5Af1b01d73aF1dC21eFfa2B8a0d6
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000e181dd74fdb2f0d4105831659e3b9c127388923c
Arg [1] : 000000000000000000000000d7ae191f318bd3b2d2c1af0526afcf05428f0c80
Arg [2] : 0000000000000000000000000000000000000000000000000000000000f923c2
Arg [3] : 00000000000000000000000000000000000000000000000000b1a2bc2ec50000
Arg [4] : 000000000000000000000000e481134031cd273eb3216c4915ba509364f8390b
Arg [5] : 000000000000000000000000de21f729137c5af1b01d73af1dc21effa2b8a0d6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,286.36 | 0.65 | $2,136.13 |
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.