Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 21 from a total of 21 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 16284713 | 608 days ago | IN | 0 ETH | 0.00062519 | ||||
Pack It Out | 16250565 | 613 days ago | IN | 0 ETH | 0.00051066 | ||||
Pack It Out | 16250563 | 613 days ago | IN | 0 ETH | 0.00043235 | ||||
Purchase | 16250197 | 613 days ago | IN | 1.4 ETH | 0.00079668 | ||||
Purchase | 16249395 | 613 days ago | IN | 0.86 ETH | 0.00135025 | ||||
Purchase | 16249006 | 613 days ago | IN | 0.86 ETH | 0.00148647 | ||||
Purchase | 16246846 | 613 days ago | IN | 0.86 ETH | 0.00098832 | ||||
Purchase | 16245837 | 613 days ago | IN | 0.86 ETH | 0.00110308 | ||||
Purchase | 16245588 | 613 days ago | IN | 1.4 ETH | 0.00078042 | ||||
Purchase | 16245165 | 614 days ago | IN | 0.86 ETH | 0.00079449 | ||||
Purchase | 16244933 | 614 days ago | IN | 0.86 ETH | 0.00082531 | ||||
Purchase | 16240496 | 614 days ago | IN | 1.4 ETH | 0.00127164 | ||||
Purchase | 16240267 | 614 days ago | IN | 0.86 ETH | 0.00134152 | ||||
Purchase | 16237938 | 615 days ago | IN | 1.4 ETH | 0.00088541 | ||||
Purchase | 16237739 | 615 days ago | IN | 1.4 ETH | 0.00090686 | ||||
Pack It Out | 16237732 | 615 days ago | IN | 0 ETH | 0.00047709 | ||||
Pack It Out | 16237723 | 615 days ago | IN | 0 ETH | 0.00047089 | ||||
Purchase | 16236848 | 615 days ago | IN | 0.86 ETH | 0.00077013 | ||||
Pack It Out | 16236279 | 615 days ago | IN | 0 ETH | 0.0006605 | ||||
Pack It Out | 16236275 | 615 days ago | IN | 0 ETH | 0.00075208 | ||||
0x60e06040 | 16236225 | 615 days ago | IN | 0 ETH | 0.03058543 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16284713 | 608 days ago | 13.88 ETH |
Loading...
Loading
Contract Name:
KaijuMerchPopup
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; import "@openzeppelin/contracts/access/AccessControl.sol"; import "./interfaces/IKingzInTheShell.sol"; import "./interfaces/IMintable.sol"; import "./interfaces/IMutants.sol"; import "./interfaces/IScientists.sol"; error KaijuMerchPopup_AlreadyPurchased(); error KaijuMerchPopup_InsufficientSupply(); error KaijuMerchPopup_InvalidMerch(); error KaijuMerchPopup_InvalidValue(); error KaijuMerchPopup_NotEligible(); error KaijuMerchPopup_PopupEnded(); error KaijuMerchPopup_WithdrawFailed(); /** . :++- *##- +####* -##+ *####- :%######%. -%###* *######: =##########= .######* *#######*-#############*-*#######* *################################* *################################* *################################* *################################* *################################* :*******************************+. .:. *###%*=: .##########+-. +###############=: %##################%+ =###################### -######################++++++++++++++++++=-: =###########################################*: =#############################################. +####%#*+=-:. -#############################################: %############################################################= %############################################################## %##############################################################%=----::. %#######################################################################%: %##########################################+: :+%#######################: *########################################* *####################### -%###################################### %###################### -%###################################% ####################### =###################################- :####################### ....+##################################*. .+######################## +###########################################%*++*%########################## %#########################################################################*. %#######################################################################+ ########################################################################- *#######################################################################- .######################################################################%. :+#################################################################- :=#####################################################:..... :--:.:##############################################+ :: +###############################################%- ####%+-. %##################################################. %#######%*-. :###################################################% %###########%*=*####################################################= %#################################################################### %####################################################################+ %#####################################################################. %#####################################################################% %######################################################################- .+*********************************************************************. * @title Kaiju Merch Popup * @notice Purchase Kaiju merch with ether * @author Augminted Labs, LLC */ contract KaijuMerchPopup is AccessControl { event Purchase( address indexed purchaser, address indexed receiver, uint256 indexed merchId ); struct Merch { uint120 supply; uint120 cost; bool locked; uint8 eligibility; IMintable redeemer; uint256 redeemableId; } uint8 internal constant _KAIJU_BIT_MASK = 1; uint8 internal constant _MUTANT_BIT_MASK = 2; uint8 internal constant _SCIENTIST_BIT_MASK = 4; IKingzInTheShell public immutable KITS; IMutants public immutable MUTANTS; IScientists public immutable SCIENTISTS; mapping(uint256 => Merch) public merch; mapping(address => mapping(uint256 => bool)) public purchased; constructor( IKingzInTheShell kits, IMutants mutants, IScientists scientists, address admin ) { _grantRole(DEFAULT_ADMIN_ROLE, admin); KITS = kits; MUTANTS = mutants; SCIENTISTS = scientists; } /** * @notice Returns whether or not an address is eligible to mint merch * @param merchId Merch identifier * @param account Address to return eligibility for */ function isEligible(uint256 merchId, address account) public view returns (bool) { return _isEligible(merch[merchId].eligibility, account); } /** * @notice Returns whether or not an address is eligible to mint merch * @param eligibility Bitmap defining eligibility requirements * @param account Address to return eligibility for */ function _isEligible(uint8 eligibility, address account) internal view returns (bool) { return // holds genesis or baby eligibility & _KAIJU_BIT_MASK > 0 && KITS.isHolder(account) // holds mutant || eligibility & _MUTANT_BIT_MASK > 0 && MUTANTS.balanceOf(account) > 0 // holds scientist || eligibility & _SCIENTIST_BIT_MASK > 0 && SCIENTISTS.balanceOf(account) > 0; } /** * @notice Start popup for specified merch * @param merchId Merch identifier * @param _merch Merch details */ function packItOut(uint256 merchId, Merch calldata _merch) external onlyRole(DEFAULT_ADMIN_ROLE) { if (merch[merchId].locked) revert KaijuMerchPopup_PopupEnded(); if (address(_merch.redeemer) != address(0) && _merch.redeemableId == 0) revert KaijuMerchPopup_InvalidMerch(); merch[merchId] = _merch; } /** * @notice End popup for specified merch * @param merchId Merch identifier */ function packItIn(uint256 merchId) external onlyRole(DEFAULT_ADMIN_ROLE) { merch[merchId].locked = true; } /** * @notice Purchase merch for self * @param merchId Merch identifier */ function purchase(uint256 merchId) external payable { _purchase(merchId, msg.sender); } /** * @notice Purchase merch for a specified receiver * @param merchId Merch identifier * @param receiver Receiver of the purchase */ function purchaseFor(uint256 merchId, address receiver) external payable { _purchase(merchId, receiver); } /** * @notice Purchase merch for a specified receiver * @param merchId Merch identifier * @param receiver Receiver of the purchase */ function _purchase(uint256 merchId, address receiver) internal { Merch memory _merch = merch[merchId]; if (_merch.locked) revert KaijuMerchPopup_PopupEnded(); if (_merch.cost != msg.value) revert KaijuMerchPopup_InvalidValue(); if (_merch.supply == 0) revert KaijuMerchPopup_InsufficientSupply(); if (!_isEligible(_merch.eligibility, receiver)) revert KaijuMerchPopup_NotEligible(); if (purchased[receiver][merchId]) revert KaijuMerchPopup_AlreadyPurchased(); purchased[receiver][merchId] = true; unchecked { --merch[merchId].supply; } if (address(_merch.redeemer) != address(0)) { _merch.redeemer.mint(receiver, _merch.redeemableId, 1); } emit Purchase(msg.sender, receiver, merchId); } /** * @notice Withdraw ether * @param receiver Address to receive the ether */ function withdraw(address receiver) external onlyRole(DEFAULT_ADMIN_ROLE) { (bool success, ) = receiver.call{value: address(this).balance}(""); if (!success) revert KaijuMerchPopup_WithdrawFailed(); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/AccessControl.sol) pragma solidity ^0.8.0; import "./IAccessControl.sol"; import "../utils/Context.sol"; import "../utils/Strings.sol"; import "../utils/introspection/ERC165.sol"; /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view virtual override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `_msgSender()` is missing `role`. * Overriding this function changes the behavior of the {onlyRole} modifier. * * Format of the revert message is described in {_checkRole}. * * _Available since v4.6._ */ function _checkRole(bytes32 role) internal view virtual { _checkRole(role, _msgSender()); } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view virtual { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. * * May emit a {RoleGranted} event. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. * * May emit a {RoleRevoked} event. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. * * May emit a {RoleRevoked} event. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * May emit a {RoleGranted} event. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. * * May emit a {RoleGranted} event. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. * * May emit a {RoleRevoked} event. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } }
// SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; interface IKingzInTheShell is IERC721 { function isHolder(address) external view returns (bool); }
// SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; interface IMintable { function mint(address to, uint256 id, uint256 amount) external; }
// SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; interface IMutants is IERC721 {}
// SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; interface IScientists is IERC721 {}
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; }
// 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) (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } /** * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation. */ function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } }
// 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 // 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.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); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IKingzInTheShell","name":"kits","type":"address"},{"internalType":"contract IMutants","name":"mutants","type":"address"},{"internalType":"contract IScientists","name":"scientists","type":"address"},{"internalType":"address","name":"admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"KaijuMerchPopup_AlreadyPurchased","type":"error"},{"inputs":[],"name":"KaijuMerchPopup_InsufficientSupply","type":"error"},{"inputs":[],"name":"KaijuMerchPopup_InvalidMerch","type":"error"},{"inputs":[],"name":"KaijuMerchPopup_InvalidValue","type":"error"},{"inputs":[],"name":"KaijuMerchPopup_NotEligible","type":"error"},{"inputs":[],"name":"KaijuMerchPopup_PopupEnded","type":"error"},{"inputs":[],"name":"KaijuMerchPopup_WithdrawFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"purchaser","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"uint256","name":"merchId","type":"uint256"}],"name":"Purchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"KITS","outputs":[{"internalType":"contract IKingzInTheShell","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MUTANTS","outputs":[{"internalType":"contract IMutants","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SCIENTISTS","outputs":[{"internalType":"contract IScientists","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"merchId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"isEligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"merch","outputs":[{"internalType":"uint120","name":"supply","type":"uint120"},{"internalType":"uint120","name":"cost","type":"uint120"},{"internalType":"bool","name":"locked","type":"bool"},{"internalType":"uint8","name":"eligibility","type":"uint8"},{"internalType":"contract IMintable","name":"redeemer","type":"address"},{"internalType":"uint256","name":"redeemableId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"merchId","type":"uint256"}],"name":"packItIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"merchId","type":"uint256"},{"components":[{"internalType":"uint120","name":"supply","type":"uint120"},{"internalType":"uint120","name":"cost","type":"uint120"},{"internalType":"bool","name":"locked","type":"bool"},{"internalType":"uint8","name":"eligibility","type":"uint8"},{"internalType":"contract IMintable","name":"redeemer","type":"address"},{"internalType":"uint256","name":"redeemableId","type":"uint256"}],"internalType":"struct KaijuMerchPopup.Merch","name":"_merch","type":"tuple"}],"name":"packItOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"merchId","type":"uint256"}],"name":"purchase","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"merchId","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"purchaseFor","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"purchased","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","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":"address","name":"receiver","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e06040523480156200001157600080fd5b5060405162002a3338038062002a3383398181016040528101906200003791906200038e565b6200004c6000801b82620000f260201b60201c565b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505050505062000400565b620001048282620001e360201b60201c565b620001df57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001846200024d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000287826200025a565b9050919050565b60006200029b826200027a565b9050919050565b620002ad816200028e565b8114620002b957600080fd5b50565b600081519050620002cd81620002a2565b92915050565b6000620002e0826200027a565b9050919050565b620002f281620002d3565b8114620002fe57600080fd5b50565b6000815190506200031281620002e7565b92915050565b600062000325826200027a565b9050919050565b620003378162000318565b81146200034357600080fd5b50565b60008151905062000357816200032c565b92915050565b62000368816200027a565b81146200037457600080fd5b50565b60008151905062000388816200035d565b92915050565b60008060008060808587031215620003ab57620003aa62000255565b5b6000620003bb87828801620002bc565b9450506020620003ce8782880162000301565b9350506040620003e18782880162000346565b9250506060620003f48782880162000377565b91505092959194509250565b60805160a05160c0516125ee62000445600039600081816107ff0152610d9601526000818161082a0152610ce00152600081816107710152610c2c01526125ee6000f3fe6080604052600436106101095760003560e01c806391d1485411610095578063bcb83dc811610064578063bcb83dc814610394578063d547741f146103b0578063e597ef12146103d9578063ef83661014610416578063efef39a11461043f57610109565b806391d14854146102d657806393b5d92314610313578063a217fddf1461033e578063a3a44c091461036957610109565b8063393b4508116100dc578063393b4508146101da57806351cff8d91461021c578063592e0e00146102455780638c3d5fc41461028257806391a75d99146102ab57610109565b806301ffc9a71461010e578063248a9ca31461014b5780632f2ff15d1461018857806336568abe146101b1575b600080fd5b34801561011a57600080fd5b506101356004803603810190610130919061164f565b61045b565b6040516101429190611697565b60405180910390f35b34801561015757600080fd5b50610172600480360381019061016d91906116e8565b6104d5565b60405161017f9190611724565b60405180910390f35b34801561019457600080fd5b506101af60048036038101906101aa919061179d565b6104f4565b005b3480156101bd57600080fd5b506101d860048036038101906101d3919061179d565b610515565b005b3480156101e657600080fd5b5061020160048036038101906101fc9190611813565b610598565b604051610213969594939291906118f4565b60405180910390f35b34801561022857600080fd5b50610243600480360381019061023e9190611955565b610644565b005b34801561025157600080fd5b5061026c60048036038101906102679190611982565b6106f9565b6040516102799190611697565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190611813565b610730565b005b3480156102b757600080fd5b506102c061076f565b6040516102cd91906119e3565b60405180910390f35b3480156102e257600080fd5b506102fd60048036038101906102f8919061179d565b610793565b60405161030a9190611697565b60405180910390f35b34801561031f57600080fd5b506103286107fd565b6040516103359190611a1f565b60405180910390f35b34801561034a57600080fd5b50610353610821565b6040516103609190611724565b60405180910390f35b34801561037557600080fd5b5061037e610828565b60405161038b9190611a5b565b60405180910390f35b6103ae60048036038101906103a99190611982565b61084c565b005b3480156103bc57600080fd5b506103d760048036038101906103d2919061179d565b61085a565b005b3480156103e557600080fd5b5061040060048036038101906103fb9190611a76565b61087b565b60405161040d9190611697565b60405180910390f35b34801561042257600080fd5b5061043d60048036038101906104389190611ada565b6108aa565b005b61045960048036038101906104549190611813565b6109c4565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104ce57506104cd826109d1565b5b9050919050565b6000806000838152602001908152602001600020600101549050919050565b6104fd826104d5565b61050681610a3b565b6105108383610a4f565b505050565b61051d610b2f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461058a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058190611b9d565b60405180910390fd5b6105948282610b37565b5050565b60016020528060005260406000206000915090508060000160009054906101000a90046effffffffffffffffffffffffffffff169080600001600f9054906101000a90046effffffffffffffffffffffffffffff169080600001601e9054906101000a900460ff169080600001601f9054906101000a900460ff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905086565b6000801b61065181610a3b565b60008273ffffffffffffffffffffffffffffffffffffffff164760405161067790611bee565b60006040518083038185875af1925050503d80600081146106b4576040519150601f19603f3d011682016040523d82523d6000602084013e6106b9565b606091505b50509050806106f4576040517fc5bfa1c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600061072860016000858152602001908152602001600020600001601f9054906101000a900460ff1683610c18565b905092915050565b6000801b61073d81610a3b565b6001806000848152602001908152602001600020600001601e6101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000801b81565b7f000000000000000000000000000000000000000000000000000000000000000081565b6108568282610e39565b5050565b610863826104d5565b61086c81610a3b565b6108768383610b37565b505050565b60026020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000801b6108b781610a3b565b60016000848152602001908152602001600020600001601e9054906101000a900460ff1615610912576040517fdd09ddef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1682608001602081019061093d9190611c41565b73ffffffffffffffffffffffffffffffffffffffff1614158015610965575060008260a00135145b1561099c576040517fab9680d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002081816109bc919061212b565b905050505050565b6109ce8133610e39565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610a4c81610a47610b2f565b611319565b50565b610a598282610793565b610b2b57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610ad0610b2f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600033905090565b610b418282610793565b15610c1457600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610bb9610b2f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000806001841660ff16118015610cc557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d4d7b19a836040518263ffffffff1660e01b8152600401610c839190612148565b602060405180830381865afa158015610ca0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc49190612178565b5b80610d7b575060006002841660ff16118015610d7a575060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401610d379190612148565b602060405180830381865afa158015610d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7891906121ba565b115b5b80610e31575060006004841660ff16118015610e30575060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401610ded9190612148565b602060405180830381865afa158015610e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2e91906121ba565b115b5b905092915050565b6000600160008481526020019081526020016000206040518060c00160405290816000820160009054906101000a90046effffffffffffffffffffffffffffff166effffffffffffffffffffffffffffff166effffffffffffffffffffffffffffff16815260200160008201600f9054906101000a90046effffffffffffffffffffffffffffff166effffffffffffffffffffffffffffff166effffffffffffffffffffffffffffff16815260200160008201601e9054906101000a900460ff1615151515815260200160008201601f9054906101000a900460ff1660ff1660ff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820154815250509050806040015115610fbd576040517fdd09ddef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3481602001516effffffffffffffffffffffffffffff161461100b576040517fba9591c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600001516effffffffffffffffffffffffffffff160361105a576040517f79b2643200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611068816060015183610c18565b61109e576040517f0f2e5b4400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060009054906101000a900460ff1615611133576040517fbeda570200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060006101000a81548160ff02191690831515021790555060016000848152602001908152602001600020600001600081819054906101000a90046effffffffffffffffffffffffffffff166001900391906101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16816080015173ffffffffffffffffffffffffffffffffffffffff16146112b957806080015173ffffffffffffffffffffffffffffffffffffffff1663156e29f6838360a0015160016040518463ffffffff1660e01b815260040161128693929190612222565b600060405180830381600087803b1580156112a057600080fd5b505af11580156112b4573d6000803e3d6000fd5b505050505b828273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f22e3ae3a20c49dce14046235895c7a3ffc0a6a5f3577c370177ad45fa619485d60405160405180910390a4505050565b6113238282610793565b6113b2576113488173ffffffffffffffffffffffffffffffffffffffff1660146113b6565b6113568360001c60206113b6565b604051602001611367929190612362565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a991906123e6565b60405180910390fd5b5050565b6060600060028360026113c99190612437565b6113d39190612491565b67ffffffffffffffff8111156113ec576113eb6124c5565b5b6040519080825280601f01601f19166020018201604052801561141e5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611456576114556124f4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106114ba576114b96124f4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026114fa9190612437565b6115049190612491565b90505b60018111156115a4577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611546576115456124f4565b5b1a60f81b82828151811061155d5761155c6124f4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061159d90612523565b9050611507565b50600084146115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df90612598565b60405180910390fd5b8091505092915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61162c816115f7565b811461163757600080fd5b50565b60008135905061164981611623565b92915050565b600060208284031215611665576116646115f2565b5b60006116738482850161163a565b91505092915050565b60008115159050919050565b6116918161167c565b82525050565b60006020820190506116ac6000830184611688565b92915050565b6000819050919050565b6116c5816116b2565b81146116d057600080fd5b50565b6000813590506116e2816116bc565b92915050565b6000602082840312156116fe576116fd6115f2565b5b600061170c848285016116d3565b91505092915050565b61171e816116b2565b82525050565b60006020820190506117396000830184611715565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061176a8261173f565b9050919050565b61177a8161175f565b811461178557600080fd5b50565b60008135905061179781611771565b92915050565b600080604083850312156117b4576117b36115f2565b5b60006117c2858286016116d3565b92505060206117d385828601611788565b9150509250929050565b6000819050919050565b6117f0816117dd565b81146117fb57600080fd5b50565b60008135905061180d816117e7565b92915050565b600060208284031215611829576118286115f2565b5b6000611837848285016117fe565b91505092915050565b60006effffffffffffffffffffffffffffff82169050919050565b61186481611840565b82525050565b600060ff82169050919050565b6118808161186a565b82525050565b6000819050919050565b60006118ab6118a66118a18461173f565b611886565b61173f565b9050919050565b60006118bd82611890565b9050919050565b60006118cf826118b2565b9050919050565b6118df816118c4565b82525050565b6118ee816117dd565b82525050565b600060c082019050611909600083018961185b565b611916602083018861185b565b6119236040830187611688565b6119306060830186611877565b61193d60808301856118d6565b61194a60a08301846118e5565b979650505050505050565b60006020828403121561196b5761196a6115f2565b5b600061197984828501611788565b91505092915050565b60008060408385031215611999576119986115f2565b5b60006119a7858286016117fe565b92505060206119b885828601611788565b9150509250929050565b60006119cd826118b2565b9050919050565b6119dd816119c2565b82525050565b60006020820190506119f860008301846119d4565b92915050565b6000611a09826118b2565b9050919050565b611a19816119fe565b82525050565b6000602082019050611a346000830184611a10565b92915050565b6000611a45826118b2565b9050919050565b611a5581611a3a565b82525050565b6000602082019050611a706000830184611a4c565b92915050565b60008060408385031215611a8d57611a8c6115f2565b5b6000611a9b85828601611788565b9250506020611aac858286016117fe565b9150509250929050565b600080fd5b600060c08284031215611ad157611ad0611ab6565b5b81905092915050565b60008060e08385031215611af157611af06115f2565b5b6000611aff858286016117fe565b9250506020611b1085828601611abb565b9150509250929050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000611b87602f83611b1a565b9150611b9282611b2b565b604082019050919050565b60006020820190508181036000830152611bb681611b7a565b9050919050565b600081905092915050565b50565b6000611bd8600083611bbd565b9150611be382611bc8565b600082019050919050565b6000611bf982611bcb565b9150819050919050565b6000611c0e8261175f565b9050919050565b611c1e81611c03565b8114611c2957600080fd5b50565b600081359050611c3b81611c15565b92915050565b600060208284031215611c5757611c566115f2565b5b6000611c6584828501611c2c565b91505092915050565b611c7781611840565b8114611c8257600080fd5b50565b60008135611c9281611c6e565b80915050919050565b60008160001b9050919050565b60006effffffffffffffffffffffffffffff611cc384611c9b565b9350801983169250808416831791505092915050565b6000611cf4611cef611cea84611840565b611886565b611840565b9050919050565b6000819050919050565b611d0e82611cd9565b611d21611d1a82611cfb565b8354611ca8565b8255505050565b60008160781b9050919050565b60007dffffffffffffffffffffffffffffff000000000000000000000000000000611d5f84611d28565b9350801983169250808416831791505092915050565b611d7e82611cd9565b611d91611d8a82611cfb565b8354611d35565b8255505050565b611da18161167c565b8114611dac57600080fd5b50565b60008135611dbc81611d98565b80915050919050565b60008160f01b9050919050565b60007eff000000000000000000000000000000000000000000000000000000000000611dfd84611dc5565b9350801983169250808416831791505092915050565b6000611e1e8261167c565b9050919050565b6000819050919050565b611e3882611e13565b611e4b611e4482611e25565b8354611dd2565b8255505050565b611e5b8161186a565b8114611e6657600080fd5b50565b60008135611e7681611e52565b80915050919050565b60008160f81b9050919050565b60007fff00000000000000000000000000000000000000000000000000000000000000611eb884611e7f565b9350801983169250808416831791505092915050565b6000611ee9611ee4611edf8461186a565b611886565b61186a565b9050919050565b6000819050919050565b611f0382611ece565b611f16611f0f82611ef0565b8354611e8c565b8255505050565b60008135611f2a81611c15565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff611f5384611c9b565b9350801983169250808416831791505092915050565b6000611f7482611890565b9050919050565b6000611f8682611f69565b9050919050565b6000819050919050565b611fa082611f7b565b611fb3611fac82611f8d565b8354611f33565b8255505050565b60008135611fc7816117e7565b80915050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611ffc84611c9b565b9350801983169250808416831791505092915050565b600061202d612028612023846117dd565b611886565b6117dd565b9050919050565b6000819050919050565b61204782612012565b61205a61205382612034565b8354611fd0565b8255505050565b60008101600083018061207381611c85565b905061207f8184611d05565b50505060008101602083018061209481611c85565b90506120a08184611d75565b5050506000810160408301806120b581611daf565b90506120c18184611e2f565b5050506000810160608301806120d681611e69565b90506120e28184611efa565b5050506001810160808301806120f781611f1d565b90506121038184611f97565b5050506002810160a083018061211881611fba565b9050612124818461203e565b5050505050565b6121358282612061565b5050565b6121428161175f565b82525050565b600060208201905061215d6000830184612139565b92915050565b60008151905061217281611d98565b92915050565b60006020828403121561218e5761218d6115f2565b5b600061219c84828501612163565b91505092915050565b6000815190506121b4816117e7565b92915050565b6000602082840312156121d0576121cf6115f2565b5b60006121de848285016121a5565b91505092915050565b6000819050919050565b600061220c612207612202846121e7565b611886565b6117dd565b9050919050565b61221c816121f1565b82525050565b60006060820190506122376000830186612139565b61224460208301856118e5565b6122516040830184612213565b949350505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061229a601783612259565b91506122a582612264565b601782019050919050565b600081519050919050565b60005b838110156122d95780820151818401526020810190506122be565b60008484015250505050565b60006122f0826122b0565b6122fa8185612259565b935061230a8185602086016122bb565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061234c601183612259565b915061235782612316565b601182019050919050565b600061236d8261228d565b915061237982856122e5565b91506123848261233f565b915061239082846122e5565b91508190509392505050565b6000601f19601f8301169050919050565b60006123b8826122b0565b6123c28185611b1a565b93506123d28185602086016122bb565b6123db8161239c565b840191505092915050565b6000602082019050818103600083015261240081846123ad565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612442826117dd565b915061244d836117dd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561248657612485612408565b5b828202905092915050565b600061249c826117dd565b91506124a7836117dd565b92508282019050808211156124bf576124be612408565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061252e826117dd565b91506000820361254157612540612408565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000612582602083611b1a565b915061258d8261254c565b602082019050919050565b600060208201905081810360008301526125b181612575565b905091905056fea264697066735822122088863b2be9fbd7d9a0c8d23ef65df903ca30371cfc0ff7e66220cc73fdd7495864736f6c63430008100033000000000000000000000000855e43e2b049b4113993a096cc1f5f14b52f984e00000000000000000000000083f82414b5065bb9a85e330c67b4a10f798f4ed2000000000000000000000000a310425046661c523d98344f7e9d66b32195365d000000000000000000000000084fd17c6a5697bd651b6482fa916c0b3a0e6161
Deployed Bytecode
0x6080604052600436106101095760003560e01c806391d1485411610095578063bcb83dc811610064578063bcb83dc814610394578063d547741f146103b0578063e597ef12146103d9578063ef83661014610416578063efef39a11461043f57610109565b806391d14854146102d657806393b5d92314610313578063a217fddf1461033e578063a3a44c091461036957610109565b8063393b4508116100dc578063393b4508146101da57806351cff8d91461021c578063592e0e00146102455780638c3d5fc41461028257806391a75d99146102ab57610109565b806301ffc9a71461010e578063248a9ca31461014b5780632f2ff15d1461018857806336568abe146101b1575b600080fd5b34801561011a57600080fd5b506101356004803603810190610130919061164f565b61045b565b6040516101429190611697565b60405180910390f35b34801561015757600080fd5b50610172600480360381019061016d91906116e8565b6104d5565b60405161017f9190611724565b60405180910390f35b34801561019457600080fd5b506101af60048036038101906101aa919061179d565b6104f4565b005b3480156101bd57600080fd5b506101d860048036038101906101d3919061179d565b610515565b005b3480156101e657600080fd5b5061020160048036038101906101fc9190611813565b610598565b604051610213969594939291906118f4565b60405180910390f35b34801561022857600080fd5b50610243600480360381019061023e9190611955565b610644565b005b34801561025157600080fd5b5061026c60048036038101906102679190611982565b6106f9565b6040516102799190611697565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190611813565b610730565b005b3480156102b757600080fd5b506102c061076f565b6040516102cd91906119e3565b60405180910390f35b3480156102e257600080fd5b506102fd60048036038101906102f8919061179d565b610793565b60405161030a9190611697565b60405180910390f35b34801561031f57600080fd5b506103286107fd565b6040516103359190611a1f565b60405180910390f35b34801561034a57600080fd5b50610353610821565b6040516103609190611724565b60405180910390f35b34801561037557600080fd5b5061037e610828565b60405161038b9190611a5b565b60405180910390f35b6103ae60048036038101906103a99190611982565b61084c565b005b3480156103bc57600080fd5b506103d760048036038101906103d2919061179d565b61085a565b005b3480156103e557600080fd5b5061040060048036038101906103fb9190611a76565b61087b565b60405161040d9190611697565b60405180910390f35b34801561042257600080fd5b5061043d60048036038101906104389190611ada565b6108aa565b005b61045960048036038101906104549190611813565b6109c4565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104ce57506104cd826109d1565b5b9050919050565b6000806000838152602001908152602001600020600101549050919050565b6104fd826104d5565b61050681610a3b565b6105108383610a4f565b505050565b61051d610b2f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461058a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058190611b9d565b60405180910390fd5b6105948282610b37565b5050565b60016020528060005260406000206000915090508060000160009054906101000a90046effffffffffffffffffffffffffffff169080600001600f9054906101000a90046effffffffffffffffffffffffffffff169080600001601e9054906101000a900460ff169080600001601f9054906101000a900460ff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905086565b6000801b61065181610a3b565b60008273ffffffffffffffffffffffffffffffffffffffff164760405161067790611bee565b60006040518083038185875af1925050503d80600081146106b4576040519150601f19603f3d011682016040523d82523d6000602084013e6106b9565b606091505b50509050806106f4576040517fc5bfa1c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600061072860016000858152602001908152602001600020600001601f9054906101000a900460ff1683610c18565b905092915050565b6000801b61073d81610a3b565b6001806000848152602001908152602001600020600001601e6101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000855e43e2b049b4113993a096cc1f5f14b52f984e81565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f000000000000000000000000a310425046661c523d98344f7e9d66b32195365d81565b6000801b81565b7f00000000000000000000000083f82414b5065bb9a85e330c67b4a10f798f4ed281565b6108568282610e39565b5050565b610863826104d5565b61086c81610a3b565b6108768383610b37565b505050565b60026020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000801b6108b781610a3b565b60016000848152602001908152602001600020600001601e9054906101000a900460ff1615610912576040517fdd09ddef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1682608001602081019061093d9190611c41565b73ffffffffffffffffffffffffffffffffffffffff1614158015610965575060008260a00135145b1561099c576040517fab9680d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002081816109bc919061212b565b905050505050565b6109ce8133610e39565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610a4c81610a47610b2f565b611319565b50565b610a598282610793565b610b2b57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610ad0610b2f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600033905090565b610b418282610793565b15610c1457600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610bb9610b2f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000806001841660ff16118015610cc557507f000000000000000000000000855e43e2b049b4113993a096cc1f5f14b52f984e73ffffffffffffffffffffffffffffffffffffffff1663d4d7b19a836040518263ffffffff1660e01b8152600401610c839190612148565b602060405180830381865afa158015610ca0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc49190612178565b5b80610d7b575060006002841660ff16118015610d7a575060007f00000000000000000000000083f82414b5065bb9a85e330c67b4a10f798f4ed273ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401610d379190612148565b602060405180830381865afa158015610d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7891906121ba565b115b5b80610e31575060006004841660ff16118015610e30575060007f000000000000000000000000a310425046661c523d98344f7e9d66b32195365d73ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401610ded9190612148565b602060405180830381865afa158015610e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2e91906121ba565b115b5b905092915050565b6000600160008481526020019081526020016000206040518060c00160405290816000820160009054906101000a90046effffffffffffffffffffffffffffff166effffffffffffffffffffffffffffff166effffffffffffffffffffffffffffff16815260200160008201600f9054906101000a90046effffffffffffffffffffffffffffff166effffffffffffffffffffffffffffff166effffffffffffffffffffffffffffff16815260200160008201601e9054906101000a900460ff1615151515815260200160008201601f9054906101000a900460ff1660ff1660ff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820154815250509050806040015115610fbd576040517fdd09ddef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3481602001516effffffffffffffffffffffffffffff161461100b576040517fba9591c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600001516effffffffffffffffffffffffffffff160361105a576040517f79b2643200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611068816060015183610c18565b61109e576040517f0f2e5b4400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060009054906101000a900460ff1615611133576040517fbeda570200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060006101000a81548160ff02191690831515021790555060016000848152602001908152602001600020600001600081819054906101000a90046effffffffffffffffffffffffffffff166001900391906101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16816080015173ffffffffffffffffffffffffffffffffffffffff16146112b957806080015173ffffffffffffffffffffffffffffffffffffffff1663156e29f6838360a0015160016040518463ffffffff1660e01b815260040161128693929190612222565b600060405180830381600087803b1580156112a057600080fd5b505af11580156112b4573d6000803e3d6000fd5b505050505b828273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f22e3ae3a20c49dce14046235895c7a3ffc0a6a5f3577c370177ad45fa619485d60405160405180910390a4505050565b6113238282610793565b6113b2576113488173ffffffffffffffffffffffffffffffffffffffff1660146113b6565b6113568360001c60206113b6565b604051602001611367929190612362565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a991906123e6565b60405180910390fd5b5050565b6060600060028360026113c99190612437565b6113d39190612491565b67ffffffffffffffff8111156113ec576113eb6124c5565b5b6040519080825280601f01601f19166020018201604052801561141e5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611456576114556124f4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106114ba576114b96124f4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026114fa9190612437565b6115049190612491565b90505b60018111156115a4577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611546576115456124f4565b5b1a60f81b82828151811061155d5761155c6124f4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061159d90612523565b9050611507565b50600084146115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df90612598565b60405180910390fd5b8091505092915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61162c816115f7565b811461163757600080fd5b50565b60008135905061164981611623565b92915050565b600060208284031215611665576116646115f2565b5b60006116738482850161163a565b91505092915050565b60008115159050919050565b6116918161167c565b82525050565b60006020820190506116ac6000830184611688565b92915050565b6000819050919050565b6116c5816116b2565b81146116d057600080fd5b50565b6000813590506116e2816116bc565b92915050565b6000602082840312156116fe576116fd6115f2565b5b600061170c848285016116d3565b91505092915050565b61171e816116b2565b82525050565b60006020820190506117396000830184611715565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061176a8261173f565b9050919050565b61177a8161175f565b811461178557600080fd5b50565b60008135905061179781611771565b92915050565b600080604083850312156117b4576117b36115f2565b5b60006117c2858286016116d3565b92505060206117d385828601611788565b9150509250929050565b6000819050919050565b6117f0816117dd565b81146117fb57600080fd5b50565b60008135905061180d816117e7565b92915050565b600060208284031215611829576118286115f2565b5b6000611837848285016117fe565b91505092915050565b60006effffffffffffffffffffffffffffff82169050919050565b61186481611840565b82525050565b600060ff82169050919050565b6118808161186a565b82525050565b6000819050919050565b60006118ab6118a66118a18461173f565b611886565b61173f565b9050919050565b60006118bd82611890565b9050919050565b60006118cf826118b2565b9050919050565b6118df816118c4565b82525050565b6118ee816117dd565b82525050565b600060c082019050611909600083018961185b565b611916602083018861185b565b6119236040830187611688565b6119306060830186611877565b61193d60808301856118d6565b61194a60a08301846118e5565b979650505050505050565b60006020828403121561196b5761196a6115f2565b5b600061197984828501611788565b91505092915050565b60008060408385031215611999576119986115f2565b5b60006119a7858286016117fe565b92505060206119b885828601611788565b9150509250929050565b60006119cd826118b2565b9050919050565b6119dd816119c2565b82525050565b60006020820190506119f860008301846119d4565b92915050565b6000611a09826118b2565b9050919050565b611a19816119fe565b82525050565b6000602082019050611a346000830184611a10565b92915050565b6000611a45826118b2565b9050919050565b611a5581611a3a565b82525050565b6000602082019050611a706000830184611a4c565b92915050565b60008060408385031215611a8d57611a8c6115f2565b5b6000611a9b85828601611788565b9250506020611aac858286016117fe565b9150509250929050565b600080fd5b600060c08284031215611ad157611ad0611ab6565b5b81905092915050565b60008060e08385031215611af157611af06115f2565b5b6000611aff858286016117fe565b9250506020611b1085828601611abb565b9150509250929050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000611b87602f83611b1a565b9150611b9282611b2b565b604082019050919050565b60006020820190508181036000830152611bb681611b7a565b9050919050565b600081905092915050565b50565b6000611bd8600083611bbd565b9150611be382611bc8565b600082019050919050565b6000611bf982611bcb565b9150819050919050565b6000611c0e8261175f565b9050919050565b611c1e81611c03565b8114611c2957600080fd5b50565b600081359050611c3b81611c15565b92915050565b600060208284031215611c5757611c566115f2565b5b6000611c6584828501611c2c565b91505092915050565b611c7781611840565b8114611c8257600080fd5b50565b60008135611c9281611c6e565b80915050919050565b60008160001b9050919050565b60006effffffffffffffffffffffffffffff611cc384611c9b565b9350801983169250808416831791505092915050565b6000611cf4611cef611cea84611840565b611886565b611840565b9050919050565b6000819050919050565b611d0e82611cd9565b611d21611d1a82611cfb565b8354611ca8565b8255505050565b60008160781b9050919050565b60007dffffffffffffffffffffffffffffff000000000000000000000000000000611d5f84611d28565b9350801983169250808416831791505092915050565b611d7e82611cd9565b611d91611d8a82611cfb565b8354611d35565b8255505050565b611da18161167c565b8114611dac57600080fd5b50565b60008135611dbc81611d98565b80915050919050565b60008160f01b9050919050565b60007eff000000000000000000000000000000000000000000000000000000000000611dfd84611dc5565b9350801983169250808416831791505092915050565b6000611e1e8261167c565b9050919050565b6000819050919050565b611e3882611e13565b611e4b611e4482611e25565b8354611dd2565b8255505050565b611e5b8161186a565b8114611e6657600080fd5b50565b60008135611e7681611e52565b80915050919050565b60008160f81b9050919050565b60007fff00000000000000000000000000000000000000000000000000000000000000611eb884611e7f565b9350801983169250808416831791505092915050565b6000611ee9611ee4611edf8461186a565b611886565b61186a565b9050919050565b6000819050919050565b611f0382611ece565b611f16611f0f82611ef0565b8354611e8c565b8255505050565b60008135611f2a81611c15565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff611f5384611c9b565b9350801983169250808416831791505092915050565b6000611f7482611890565b9050919050565b6000611f8682611f69565b9050919050565b6000819050919050565b611fa082611f7b565b611fb3611fac82611f8d565b8354611f33565b8255505050565b60008135611fc7816117e7565b80915050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611ffc84611c9b565b9350801983169250808416831791505092915050565b600061202d612028612023846117dd565b611886565b6117dd565b9050919050565b6000819050919050565b61204782612012565b61205a61205382612034565b8354611fd0565b8255505050565b60008101600083018061207381611c85565b905061207f8184611d05565b50505060008101602083018061209481611c85565b90506120a08184611d75565b5050506000810160408301806120b581611daf565b90506120c18184611e2f565b5050506000810160608301806120d681611e69565b90506120e28184611efa565b5050506001810160808301806120f781611f1d565b90506121038184611f97565b5050506002810160a083018061211881611fba565b9050612124818461203e565b5050505050565b6121358282612061565b5050565b6121428161175f565b82525050565b600060208201905061215d6000830184612139565b92915050565b60008151905061217281611d98565b92915050565b60006020828403121561218e5761218d6115f2565b5b600061219c84828501612163565b91505092915050565b6000815190506121b4816117e7565b92915050565b6000602082840312156121d0576121cf6115f2565b5b60006121de848285016121a5565b91505092915050565b6000819050919050565b600061220c612207612202846121e7565b611886565b6117dd565b9050919050565b61221c816121f1565b82525050565b60006060820190506122376000830186612139565b61224460208301856118e5565b6122516040830184612213565b949350505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061229a601783612259565b91506122a582612264565b601782019050919050565b600081519050919050565b60005b838110156122d95780820151818401526020810190506122be565b60008484015250505050565b60006122f0826122b0565b6122fa8185612259565b935061230a8185602086016122bb565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061234c601183612259565b915061235782612316565b601182019050919050565b600061236d8261228d565b915061237982856122e5565b91506123848261233f565b915061239082846122e5565b91508190509392505050565b6000601f19601f8301169050919050565b60006123b8826122b0565b6123c28185611b1a565b93506123d28185602086016122bb565b6123db8161239c565b840191505092915050565b6000602082019050818103600083015261240081846123ad565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612442826117dd565b915061244d836117dd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561248657612485612408565b5b828202905092915050565b600061249c826117dd565b91506124a7836117dd565b92508282019050808211156124bf576124be612408565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061252e826117dd565b91506000820361254157612540612408565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000612582602083611b1a565b915061258d8261254c565b602082019050919050565b600060208201905081810360008301526125b181612575565b905091905056fea264697066735822122088863b2be9fbd7d9a0c8d23ef65df903ca30371cfc0ff7e66220cc73fdd7495864736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000855e43e2b049b4113993a096cc1f5f14b52f984e00000000000000000000000083f82414b5065bb9a85e330c67b4a10f798f4ed2000000000000000000000000a310425046661c523d98344f7e9d66b32195365d000000000000000000000000084fd17c6a5697bd651b6482fa916c0b3a0e6161
-----Decoded View---------------
Arg [0] : kits (address): 0x855E43E2b049B4113993A096CC1f5F14B52F984E
Arg [1] : mutants (address): 0x83f82414b5065bB9A85E330C67B4A10f798F4eD2
Arg [2] : scientists (address): 0xA310425046661c523d98344F7E9D66B32195365d
Arg [3] : admin (address): 0x084FD17c6A5697bd651b6482fa916C0b3a0e6161
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000855e43e2b049b4113993a096cc1f5f14b52f984e
Arg [1] : 00000000000000000000000083f82414b5065bb9a85e330c67b4a10f798f4ed2
Arg [2] : 000000000000000000000000a310425046661c523d98344f7e9d66b32195365d
Arg [3] : 000000000000000000000000084fd17c6a5697bd651b6482fa916c0b3a0e6161
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.