Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
Latest 25 from a total of 873 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint Whitelist | 14945537 | 930 days ago | IN | 0 ETH | 0.00317863 | ||||
Set Whitelist Me... | 14945533 | 930 days ago | IN | 0 ETH | 0.00109211 | ||||
Set Whitelist Me... | 14945528 | 930 days ago | IN | 0 ETH | 0.0011738 | ||||
Mint Whitelist | 14945527 | 930 days ago | IN | 0 ETH | 0.00353189 | ||||
Flip Sale Status | 14945491 | 930 days ago | IN | 0 ETH | 0.00258353 | ||||
Mint Team Tokens | 14945459 | 930 days ago | IN | 0 ETH | 0.00561536 | ||||
Set Whitelist Me... | 14945447 | 930 days ago | IN | 0 ETH | 0.00143051 | ||||
Set Whitelist Me... | 14937442 | 931 days ago | IN | 0 ETH | 0.00114513 | ||||
Mint Whitelist | 14438554 | 1011 days ago | IN | 0 ETH | 0.00164037 | ||||
Flip Sale Status | 14422450 | 1013 days ago | IN | 0 ETH | 0.0003478 | ||||
Mint Team Tokens | 14422445 | 1013 days ago | IN | 0 ETH | 0.00153457 | ||||
Mint Whitelist | 14421727 | 1013 days ago | IN | 0 ETH | 0.00213841 | ||||
Mint Whitelist | 14421478 | 1013 days ago | IN | 0 ETH | 0.001898 | ||||
Mint Whitelist | 14421096 | 1013 days ago | IN | 0 ETH | 0.0026368 | ||||
Mint Whitelist | 14420809 | 1013 days ago | IN | 0 ETH | 0.00271314 | ||||
Mint Whitelist | 14420732 | 1013 days ago | IN | 0 ETH | 0.00410428 | ||||
Mint Whitelist | 14420640 | 1013 days ago | IN | 0 ETH | 0.00102798 | ||||
Mint Whitelist | 14420640 | 1013 days ago | IN | 0 ETH | 0.00254462 | ||||
Mint Whitelist | 14420617 | 1013 days ago | IN | 0 ETH | 0.00206992 | ||||
Mint Whitelist | 14420548 | 1013 days ago | IN | 0 ETH | 0.00063922 | ||||
Mint Whitelist | 14420191 | 1013 days ago | IN | 0 ETH | 0.0021409 | ||||
Mint Whitelist | 14419855 | 1014 days ago | IN | 0 ETH | 0.0040383 | ||||
Mint Whitelist | 14419505 | 1014 days ago | IN | 0 ETH | 0.00802637 | ||||
Mint Whitelist | 14419360 | 1014 days ago | IN | 0 ETH | 0.00455344 | ||||
Mint Whitelist | 14419274 | 1014 days ago | IN | 0 ETH | 0.00443304 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
NonFungibleHeroesComicMinter
Compiler Version
v0.8.11+commit.d7f03943
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.11; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; import "./INonFungibleHeroesComicToken.sol"; import "@openzeppelin/contracts/utils/Address.sol"; contract NonFungibleHeroesComicMinter is Ownable, ReentrancyGuard { // ======== Supply ========= uint256 public constant MAX_MINTS_PER_TX = 3; uint256 public maxTokens; // ======== Sale Status ========= bool public saleIsActive = false; // ======== Current Token Issue ========= uint256 public currentIssue = 1; mapping (uint256 => bool) public issues; // ======== Claim Tracking ========= mapping(uint256 => mapping (address => uint256)) public whitelistClaimed; // ======== Whitelist Validation ========= bytes32 public whitelistMerkleRoot; // ======== External Storage Contract ========= INonFungibleHeroesComicToken public immutable token; // ======== Constructor ========= constructor(address contractAddress, uint256 tokenSupply) { token = INonFungibleHeroesComicToken(contractAddress); maxTokens = tokenSupply; issues[currentIssue] = true; } // ======== Modifier Checks ========= modifier isWhitelistMerkleRootSet() { require(whitelistMerkleRoot != 0, "Whitelist merkle root not set!"); _; } modifier isValidMerkleProof(address _address, bytes32[] calldata merkleProof, uint256 quantity) { require( MerkleProof.verify( merkleProof, whitelistMerkleRoot, keccak256(abi.encodePacked(keccak256(abi.encodePacked(_address, quantity))) ) ), "Address is not on whitelist!"); _; } modifier isSupplyAvailable(uint256 numberOfTokens) { uint256 supply = token.tokenCount(); require(supply + numberOfTokens <= maxTokens, "Exceeds max token supply!"); _; } modifier isSaleActive() { require(saleIsActive, "Sale is not active!"); _; } modifier isMaxMintsPerWalletExceeded(uint amount) { require(whitelistClaimed[currentIssue][msg.sender] + amount <= MAX_MINTS_PER_TX, "Exceeds max mint per tx!"); _; } // ======== Mint Functions ========= /// @notice Allows a whitelisted user to mint /// @param merkleProof The merkle proof to check whitelist access /// @param requested The amount of tokens user wants to mint in this transaction /// @param quantityAllowed The amount of tokens user is able to mint, checks against the merkleroot function mintWhitelist(bytes32[] calldata merkleProof, uint requested, uint quantityAllowed) public isSaleActive() isWhitelistMerkleRootSet() isValidMerkleProof(msg.sender, merkleProof, quantityAllowed) isSupplyAvailable(requested) isMaxMintsPerWalletExceeded(requested) nonReentrant { require(whitelistClaimed[currentIssue][msg.sender] < quantityAllowed, "No more whitelist mints remaining!"); token.mint(requested, msg.sender); whitelistClaimed[currentIssue][msg.sender] += requested; } /// @notice Allows the dev team to mint tokens /// @param _to The address where minted tokens should be sent /// @param _reserveAmount the amount of tokens to mint function mintTeamTokens(address _to, uint256 _reserveAmount) public onlyOwner isSupplyAvailable(_reserveAmount) { token.mint(_reserveAmount, _to); } // ======== Whitelisting ========= /// @notice Allows the dev team to set the merkle root used for whitelist /// @param merkleRoot The merkle root generated offchain function setWhitelistMerkleRoot(bytes32 merkleRoot) external onlyOwner { whitelistMerkleRoot = merkleRoot; } /// @notice Function to check if a user is whitelisted /// @param _address The address to check /// @param merkleProof The merkle proof generated offchain /// @param quantityAllowed The number of tokens a user thinks they can mint function isWhitelisted(address _address, bytes32[] calldata merkleProof, uint quantityAllowed) external view isValidMerkleProof(_address, merkleProof, quantityAllowed) returns (bool) { return true; } /// @notice Function to check the number of tokens a user has minted /// @param _address The address to check function isWhitelistClaimed(address _address) external view returns (uint) { return whitelistClaimed[currentIssue][_address]; } // ======== State Management ========= /// @notice Function to flip sale status function flipSaleStatus() public onlyOwner { saleIsActive = !saleIsActive; } // ======== Token Supply Management========= /// @notice Function to adjust max token supply /// @param newMaxTokenSupply The new token supply function adjustTokenSupply(uint256 newMaxTokenSupply) external onlyOwner { require(newMaxTokenSupply > token.tokenCount(), "New token supply must be greater than token count!"); maxTokens = newMaxTokenSupply; } /// @notice Function to update the current series /// @param newCurrentIssue The new current series function updateCurrentIssue(uint256 newCurrentIssue) external onlyOwner { currentIssue = newCurrentIssue; if(!issues[newCurrentIssue]) { issues[newCurrentIssue] = true; } } }
// SPDX-License-Identifier: MIT 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() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { 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 { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT 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 make 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 pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); } else { // Hash(current element of the proof + current computed hash) computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); } } // Check if the computed hash (root) is equal to the provided root return computedHash == root; } }
// Contract based on https://docs.openzeppelin.com/contracts/3.x/erc721 // SPDX-License-Identifier: MIT /// @title Interface for NonFungibleHeroesComicToken pragma solidity 0.8.11; abstract contract INonFungibleHeroesComicToken { function setProvenanceHash(string memory _provenanceHash) virtual external; function mint(uint256 _count, address _recipient) virtual external; function setBaseURI(string memory baseURI) virtual external; function updateMinter(address _minter) virtual external; function lockMinter() virtual external; function tokenCount() virtual external returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @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 * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT 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; } }
{ "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":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenSupply","type":"uint256"}],"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"},{"inputs":[],"name":"MAX_MINTS_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTokenSupply","type":"uint256"}],"name":"adjustTokenSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentIssue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isWhitelistClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"quantityAllowed","type":"uint256"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"issues","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_reserveAmount","type":"uint256"}],"name":"mintTeamTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"requested","type":"uint256"},{"internalType":"uint256","name":"quantityAllowed","type":"uint256"}],"name":"mintWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"}],"name":"setWhitelistMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract INonFungibleHeroesComicToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newCurrentIssue","type":"uint256"}],"name":"updateCurrentIssue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"whitelistClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a06040526000600360006101000a81548160ff02191690831515021790555060016004553480156200003157600080fd5b506040516200214e3803806200214e833981810160405281019062000057919062000260565b620000776200006b620000ef60201b60201c565b620000f760201b60201c565b600180819055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505080600281905550600160056000600454815260200190815260200160002060006101000a81548160ff0219169083151502179055505050620002a7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001ed82620001c0565b9050919050565b620001ff81620001e0565b81146200020b57600080fd5b50565b6000815190506200021f81620001f4565b92915050565b6000819050919050565b6200023a8162000225565b81146200024657600080fd5b50565b6000815190506200025a816200022f565b92915050565b600080604083850312156200027a5762000279620001bb565b5b60006200028a858286016200020e565b92505060206200029d8582860162000249565b9150509250929050565b608051611e68620002e6600039600081816105150152818161077c01528181610905015281816109e801528181610dd301526111180152611e686000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063aa98e0c6116100ad578063ce9b806011610071578063ce9b8060146102ce578063e8315742146102fe578063eb8d24441461031c578063f2fde38b1461033a578063fc0c546a1461035657610121565b8063aa98e0c614610250578063ac621b0f1461026e578063bd32fb661461028a578063c6a91b42146102a6578063ce03ec93146102c457610121565b8063715018a6116100f4578063715018a6146101ac5780638521b8e3146101b65780638da5cb5b146101e65780639a679c4214610204578063a371a0621461022057610121565b806304e15de5146101265780631393f8bc146101565780632ef2b9e0146101745780635057afb414610190575b600080fd5b610140600480360381019061013b91906112fc565b610374565b60405161014d9190611344565b60405180910390f35b61015e610394565b60405161016b919061136e565b60405180910390f35b61018e600480360381019061018991906113ee565b61039a565b005b6101aa60048036038101906101a591906114c0565b610884565b005b6101b4610a79565b005b6101d060048036038101906101cb9190611500565b610b01565b6040516101dd919061136e565b60405180910390f35b6101ee610b5d565b6040516101fb919061153c565b60405180910390f35b61021e600480360381019061021991906112fc565b610b86565b005b61023a60048036038101906102359190611557565b610c5e565b6040516102479190611344565b60405180910390f35b610258610d4f565b60405161026591906115e4565b60405180910390f35b610288600480360381019061028391906112fc565b610d55565b005b6102a4600480360381019061029f919061162b565b610ead565b005b6102ae610f33565b6040516102bb919061136e565b60405180910390f35b6102cc610f38565b005b6102e860048036038101906102e39190611658565b610fe0565b6040516102f5919061136e565b60405180910390f35b610306611005565b604051610313919061136e565b60405180910390f35b61032461100b565b6040516103319190611344565b60405180910390f35b610354600480360381019061034f9190611500565b61101e565b005b61035e611116565b60405161036b91906116f7565b60405180910390f35b60056020528060005260406000206000915054906101000a900460ff1681565b60045481565b600360009054906101000a900460ff166103e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e09061176f565b60405180910390fd5b6000801b6007541415610431576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610428906117db565b60405180910390fd5b338484836104d1838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506007548684604051602001610490929190611864565b604051602081830303815290604052805190602001206040516020016104b691906118b1565b6040516020818303038152906040528051906020012061113a565b610510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050790611918565b60405180910390fd5b8560007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639f181b5e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a4919061194d565b905060025482826105b591906119a9565b11156105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed90611a4b565b60405180910390fd5b8760038160066000600454815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461065791906119a9565b1115610698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068f90611ab7565b60405180910390fd5b600260015414156106de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d590611b23565b60405180910390fd5b60026001819055508760066000600454815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061077a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077190611bb5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166394bf804d8a336040518363ffffffff1660e01b81526004016107d5929190611bd5565b600060405180830381600087803b1580156107ef57600080fd5b505af1158015610803573d6000803e3d6000fd5b505050508860066000600454815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461086991906119a9565b92505081905550600180819055505050505050505050505050565b61088c6111f0565b73ffffffffffffffffffffffffffffffffffffffff166108aa610b5d565b73ffffffffffffffffffffffffffffffffffffffff1614610900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f790611c4a565b60405180910390fd5b8060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639f181b5e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610970573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610994919061194d565b905060025482826109a591906119a9565b11156109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90611a4b565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166394bf804d84866040518363ffffffff1660e01b8152600401610a41929190611bd5565b600060405180830381600087803b158015610a5b57600080fd5b505af1158015610a6f573d6000803e3d6000fd5b5050505050505050565b610a816111f0565b73ffffffffffffffffffffffffffffffffffffffff16610a9f610b5d565b73ffffffffffffffffffffffffffffffffffffffff1614610af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aec90611c4a565b60405180910390fd5b610aff60006111f8565b565b600060066000600454815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b8e6111f0565b73ffffffffffffffffffffffffffffffffffffffff16610bac610b5d565b73ffffffffffffffffffffffffffffffffffffffff1614610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf990611c4a565b60405180910390fd5b806004819055506005600082815260200190815260200160002060009054906101000a900460ff16610c5b5760016005600083815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b600084848484610d00838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506007548684604051602001610cbf929190611864565b60405160208183030381529060405280519060200120604051602001610ce591906118b1565b6040516020818303038152906040528051906020012061113a565b610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3690611918565b60405180910390fd5b6001945050505050949350505050565b60075481565b610d5d6111f0565b73ffffffffffffffffffffffffffffffffffffffff16610d7b610b5d565b73ffffffffffffffffffffffffffffffffffffffff1614610dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc890611c4a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639f181b5e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e62919061194d565b8111610ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9a90611cdc565b60405180910390fd5b8060028190555050565b610eb56111f0565b73ffffffffffffffffffffffffffffffffffffffff16610ed3610b5d565b73ffffffffffffffffffffffffffffffffffffffff1614610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2090611c4a565b60405180910390fd5b8060078190555050565b600381565b610f406111f0565b73ffffffffffffffffffffffffffffffffffffffff16610f5e610b5d565b73ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab90611c4a565b60405180910390fd5b600360009054906101000a900460ff1615600360006101000a81548160ff021916908315150217905550565b6006602052816000526040600020602052806000526040600020600091509150505481565b60025481565b600360009054906101000a900460ff1681565b6110266111f0565b73ffffffffffffffffffffffffffffffffffffffff16611044610b5d565b73ffffffffffffffffffffffffffffffffffffffff161461109a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109190611c4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561110a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110190611d6e565b60405180910390fd5b611113816111f8565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008082905060005b85518110156111e257600086828151811061116157611160611d8e565b5b602002602001015190508083116111a2578281604051602001611185929190611dbd565b6040516020818303038152906040528051906020012092506111ce565b80836040516020016111b5929190611dbd565b6040516020818303038152906040528051906020012092505b5080806111da90611de9565b915050611143565b508381149150509392505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600080fd5b6000819050919050565b6112d9816112c6565b81146112e457600080fd5b50565b6000813590506112f6816112d0565b92915050565b600060208284031215611312576113116112bc565b5b6000611320848285016112e7565b91505092915050565b60008115159050919050565b61133e81611329565b82525050565b60006020820190506113596000830184611335565b92915050565b611368816112c6565b82525050565b6000602082019050611383600083018461135f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126113ae576113ad611389565b5b8235905067ffffffffffffffff8111156113cb576113ca61138e565b5b6020830191508360208202830111156113e7576113e6611393565b5b9250929050565b60008060008060608587031215611408576114076112bc565b5b600085013567ffffffffffffffff811115611426576114256112c1565b5b61143287828801611398565b94509450506020611445878288016112e7565b9250506040611456878288016112e7565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061148d82611462565b9050919050565b61149d81611482565b81146114a857600080fd5b50565b6000813590506114ba81611494565b92915050565b600080604083850312156114d7576114d66112bc565b5b60006114e5858286016114ab565b92505060206114f6858286016112e7565b9150509250929050565b600060208284031215611516576115156112bc565b5b6000611524848285016114ab565b91505092915050565b61153681611482565b82525050565b6000602082019050611551600083018461152d565b92915050565b60008060008060608587031215611571576115706112bc565b5b600061157f878288016114ab565b945050602085013567ffffffffffffffff8111156115a05761159f6112c1565b5b6115ac87828801611398565b935093505060406115bf878288016112e7565b91505092959194509250565b6000819050919050565b6115de816115cb565b82525050565b60006020820190506115f960008301846115d5565b92915050565b611608816115cb565b811461161357600080fd5b50565b600081359050611625816115ff565b92915050565b600060208284031215611641576116406112bc565b5b600061164f84828501611616565b91505092915050565b6000806040838503121561166f5761166e6112bc565b5b600061167d858286016112e7565b925050602061168e858286016114ab565b9150509250929050565b6000819050919050565b60006116bd6116b86116b384611462565b611698565b611462565b9050919050565b60006116cf826116a2565b9050919050565b60006116e1826116c4565b9050919050565b6116f1816116d6565b82525050565b600060208201905061170c60008301846116e8565b92915050565b600082825260208201905092915050565b7f53616c65206973206e6f74206163746976652100000000000000000000000000600082015250565b6000611759601383611712565b915061176482611723565b602082019050919050565b600060208201905081810360008301526117888161174c565b9050919050565b7f57686974656c697374206d65726b6c6520726f6f74206e6f7420736574210000600082015250565b60006117c5601e83611712565b91506117d08261178f565b602082019050919050565b600060208201905081810360008301526117f4816117b8565b9050919050565b60008160601b9050919050565b6000611813826117fb565b9050919050565b600061182582611808565b9050919050565b61183d61183882611482565b61181a565b82525050565b6000819050919050565b61185e611859826112c6565b611843565b82525050565b6000611870828561182c565b601482019150611880828461184d565b6020820191508190509392505050565b6000819050919050565b6118ab6118a6826115cb565b611890565b82525050565b60006118bd828461189a565b60208201915081905092915050565b7f41646472657373206973206e6f74206f6e2077686974656c6973742100000000600082015250565b6000611902601c83611712565b915061190d826118cc565b602082019050919050565b60006020820190508181036000830152611931816118f5565b9050919050565b600081519050611947816112d0565b92915050565b600060208284031215611963576119626112bc565b5b600061197184828501611938565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006119b4826112c6565b91506119bf836112c6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156119f4576119f361197a565b5b828201905092915050565b7f45786365656473206d617820746f6b656e20737570706c792100000000000000600082015250565b6000611a35601983611712565b9150611a40826119ff565b602082019050919050565b60006020820190508181036000830152611a6481611a28565b9050919050565b7f45786365656473206d6178206d696e7420706572207478210000000000000000600082015250565b6000611aa1601883611712565b9150611aac82611a6b565b602082019050919050565b60006020820190508181036000830152611ad081611a94565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611b0d601f83611712565b9150611b1882611ad7565b602082019050919050565b60006020820190508181036000830152611b3c81611b00565b9050919050565b7f4e6f206d6f72652077686974656c697374206d696e74732072656d61696e696e60008201527f6721000000000000000000000000000000000000000000000000000000000000602082015250565b6000611b9f602283611712565b9150611baa82611b43565b604082019050919050565b60006020820190508181036000830152611bce81611b92565b9050919050565b6000604082019050611bea600083018561135f565b611bf7602083018461152d565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611c34602083611712565b9150611c3f82611bfe565b602082019050919050565b60006020820190508181036000830152611c6381611c27565b9050919050565b7f4e657720746f6b656e20737570706c79206d757374206265206772656174657260008201527f207468616e20746f6b656e20636f756e74210000000000000000000000000000602082015250565b6000611cc6603283611712565b9150611cd182611c6a565b604082019050919050565b60006020820190508181036000830152611cf581611cb9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611d58602683611712565b9150611d6382611cfc565b604082019050919050565b60006020820190508181036000830152611d8781611d4b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611dc9828561189a565b602082019150611dd9828461189a565b6020820191508190509392505050565b6000611df4826112c6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611e2757611e2661197a565b5b60018201905091905056fea2646970667358221220021bb4c921a14ae4203445d9bb42043b8d4b49b716aee6d9e795b91995d5865a64736f6c634300080b00330000000000000000000000006d34aeb43e9051254c603967459869b8409614db0000000000000000000000000000000000000000000000000000000000002710
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063aa98e0c6116100ad578063ce9b806011610071578063ce9b8060146102ce578063e8315742146102fe578063eb8d24441461031c578063f2fde38b1461033a578063fc0c546a1461035657610121565b8063aa98e0c614610250578063ac621b0f1461026e578063bd32fb661461028a578063c6a91b42146102a6578063ce03ec93146102c457610121565b8063715018a6116100f4578063715018a6146101ac5780638521b8e3146101b65780638da5cb5b146101e65780639a679c4214610204578063a371a0621461022057610121565b806304e15de5146101265780631393f8bc146101565780632ef2b9e0146101745780635057afb414610190575b600080fd5b610140600480360381019061013b91906112fc565b610374565b60405161014d9190611344565b60405180910390f35b61015e610394565b60405161016b919061136e565b60405180910390f35b61018e600480360381019061018991906113ee565b61039a565b005b6101aa60048036038101906101a591906114c0565b610884565b005b6101b4610a79565b005b6101d060048036038101906101cb9190611500565b610b01565b6040516101dd919061136e565b60405180910390f35b6101ee610b5d565b6040516101fb919061153c565b60405180910390f35b61021e600480360381019061021991906112fc565b610b86565b005b61023a60048036038101906102359190611557565b610c5e565b6040516102479190611344565b60405180910390f35b610258610d4f565b60405161026591906115e4565b60405180910390f35b610288600480360381019061028391906112fc565b610d55565b005b6102a4600480360381019061029f919061162b565b610ead565b005b6102ae610f33565b6040516102bb919061136e565b60405180910390f35b6102cc610f38565b005b6102e860048036038101906102e39190611658565b610fe0565b6040516102f5919061136e565b60405180910390f35b610306611005565b604051610313919061136e565b60405180910390f35b61032461100b565b6040516103319190611344565b60405180910390f35b610354600480360381019061034f9190611500565b61101e565b005b61035e611116565b60405161036b91906116f7565b60405180910390f35b60056020528060005260406000206000915054906101000a900460ff1681565b60045481565b600360009054906101000a900460ff166103e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e09061176f565b60405180910390fd5b6000801b6007541415610431576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610428906117db565b60405180910390fd5b338484836104d1838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506007548684604051602001610490929190611864565b604051602081830303815290604052805190602001206040516020016104b691906118b1565b6040516020818303038152906040528051906020012061113a565b610510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050790611918565b60405180910390fd5b8560007f0000000000000000000000006d34aeb43e9051254c603967459869b8409614db73ffffffffffffffffffffffffffffffffffffffff16639f181b5e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a4919061194d565b905060025482826105b591906119a9565b11156105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed90611a4b565b60405180910390fd5b8760038160066000600454815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461065791906119a9565b1115610698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068f90611ab7565b60405180910390fd5b600260015414156106de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d590611b23565b60405180910390fd5b60026001819055508760066000600454815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061077a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077190611bb5565b60405180910390fd5b7f0000000000000000000000006d34aeb43e9051254c603967459869b8409614db73ffffffffffffffffffffffffffffffffffffffff166394bf804d8a336040518363ffffffff1660e01b81526004016107d5929190611bd5565b600060405180830381600087803b1580156107ef57600080fd5b505af1158015610803573d6000803e3d6000fd5b505050508860066000600454815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461086991906119a9565b92505081905550600180819055505050505050505050505050565b61088c6111f0565b73ffffffffffffffffffffffffffffffffffffffff166108aa610b5d565b73ffffffffffffffffffffffffffffffffffffffff1614610900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f790611c4a565b60405180910390fd5b8060007f0000000000000000000000006d34aeb43e9051254c603967459869b8409614db73ffffffffffffffffffffffffffffffffffffffff16639f181b5e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610970573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610994919061194d565b905060025482826109a591906119a9565b11156109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90611a4b565b60405180910390fd5b7f0000000000000000000000006d34aeb43e9051254c603967459869b8409614db73ffffffffffffffffffffffffffffffffffffffff166394bf804d84866040518363ffffffff1660e01b8152600401610a41929190611bd5565b600060405180830381600087803b158015610a5b57600080fd5b505af1158015610a6f573d6000803e3d6000fd5b5050505050505050565b610a816111f0565b73ffffffffffffffffffffffffffffffffffffffff16610a9f610b5d565b73ffffffffffffffffffffffffffffffffffffffff1614610af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aec90611c4a565b60405180910390fd5b610aff60006111f8565b565b600060066000600454815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b8e6111f0565b73ffffffffffffffffffffffffffffffffffffffff16610bac610b5d565b73ffffffffffffffffffffffffffffffffffffffff1614610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf990611c4a565b60405180910390fd5b806004819055506005600082815260200190815260200160002060009054906101000a900460ff16610c5b5760016005600083815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b600084848484610d00838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506007548684604051602001610cbf929190611864565b60405160208183030381529060405280519060200120604051602001610ce591906118b1565b6040516020818303038152906040528051906020012061113a565b610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3690611918565b60405180910390fd5b6001945050505050949350505050565b60075481565b610d5d6111f0565b73ffffffffffffffffffffffffffffffffffffffff16610d7b610b5d565b73ffffffffffffffffffffffffffffffffffffffff1614610dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc890611c4a565b60405180910390fd5b7f0000000000000000000000006d34aeb43e9051254c603967459869b8409614db73ffffffffffffffffffffffffffffffffffffffff16639f181b5e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e62919061194d565b8111610ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9a90611cdc565b60405180910390fd5b8060028190555050565b610eb56111f0565b73ffffffffffffffffffffffffffffffffffffffff16610ed3610b5d565b73ffffffffffffffffffffffffffffffffffffffff1614610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2090611c4a565b60405180910390fd5b8060078190555050565b600381565b610f406111f0565b73ffffffffffffffffffffffffffffffffffffffff16610f5e610b5d565b73ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab90611c4a565b60405180910390fd5b600360009054906101000a900460ff1615600360006101000a81548160ff021916908315150217905550565b6006602052816000526040600020602052806000526040600020600091509150505481565b60025481565b600360009054906101000a900460ff1681565b6110266111f0565b73ffffffffffffffffffffffffffffffffffffffff16611044610b5d565b73ffffffffffffffffffffffffffffffffffffffff161461109a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109190611c4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561110a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110190611d6e565b60405180910390fd5b611113816111f8565b50565b7f0000000000000000000000006d34aeb43e9051254c603967459869b8409614db81565b60008082905060005b85518110156111e257600086828151811061116157611160611d8e565b5b602002602001015190508083116111a2578281604051602001611185929190611dbd565b6040516020818303038152906040528051906020012092506111ce565b80836040516020016111b5929190611dbd565b6040516020818303038152906040528051906020012092505b5080806111da90611de9565b915050611143565b508381149150509392505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600080fd5b6000819050919050565b6112d9816112c6565b81146112e457600080fd5b50565b6000813590506112f6816112d0565b92915050565b600060208284031215611312576113116112bc565b5b6000611320848285016112e7565b91505092915050565b60008115159050919050565b61133e81611329565b82525050565b60006020820190506113596000830184611335565b92915050565b611368816112c6565b82525050565b6000602082019050611383600083018461135f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126113ae576113ad611389565b5b8235905067ffffffffffffffff8111156113cb576113ca61138e565b5b6020830191508360208202830111156113e7576113e6611393565b5b9250929050565b60008060008060608587031215611408576114076112bc565b5b600085013567ffffffffffffffff811115611426576114256112c1565b5b61143287828801611398565b94509450506020611445878288016112e7565b9250506040611456878288016112e7565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061148d82611462565b9050919050565b61149d81611482565b81146114a857600080fd5b50565b6000813590506114ba81611494565b92915050565b600080604083850312156114d7576114d66112bc565b5b60006114e5858286016114ab565b92505060206114f6858286016112e7565b9150509250929050565b600060208284031215611516576115156112bc565b5b6000611524848285016114ab565b91505092915050565b61153681611482565b82525050565b6000602082019050611551600083018461152d565b92915050565b60008060008060608587031215611571576115706112bc565b5b600061157f878288016114ab565b945050602085013567ffffffffffffffff8111156115a05761159f6112c1565b5b6115ac87828801611398565b935093505060406115bf878288016112e7565b91505092959194509250565b6000819050919050565b6115de816115cb565b82525050565b60006020820190506115f960008301846115d5565b92915050565b611608816115cb565b811461161357600080fd5b50565b600081359050611625816115ff565b92915050565b600060208284031215611641576116406112bc565b5b600061164f84828501611616565b91505092915050565b6000806040838503121561166f5761166e6112bc565b5b600061167d858286016112e7565b925050602061168e858286016114ab565b9150509250929050565b6000819050919050565b60006116bd6116b86116b384611462565b611698565b611462565b9050919050565b60006116cf826116a2565b9050919050565b60006116e1826116c4565b9050919050565b6116f1816116d6565b82525050565b600060208201905061170c60008301846116e8565b92915050565b600082825260208201905092915050565b7f53616c65206973206e6f74206163746976652100000000000000000000000000600082015250565b6000611759601383611712565b915061176482611723565b602082019050919050565b600060208201905081810360008301526117888161174c565b9050919050565b7f57686974656c697374206d65726b6c6520726f6f74206e6f7420736574210000600082015250565b60006117c5601e83611712565b91506117d08261178f565b602082019050919050565b600060208201905081810360008301526117f4816117b8565b9050919050565b60008160601b9050919050565b6000611813826117fb565b9050919050565b600061182582611808565b9050919050565b61183d61183882611482565b61181a565b82525050565b6000819050919050565b61185e611859826112c6565b611843565b82525050565b6000611870828561182c565b601482019150611880828461184d565b6020820191508190509392505050565b6000819050919050565b6118ab6118a6826115cb565b611890565b82525050565b60006118bd828461189a565b60208201915081905092915050565b7f41646472657373206973206e6f74206f6e2077686974656c6973742100000000600082015250565b6000611902601c83611712565b915061190d826118cc565b602082019050919050565b60006020820190508181036000830152611931816118f5565b9050919050565b600081519050611947816112d0565b92915050565b600060208284031215611963576119626112bc565b5b600061197184828501611938565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006119b4826112c6565b91506119bf836112c6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156119f4576119f361197a565b5b828201905092915050565b7f45786365656473206d617820746f6b656e20737570706c792100000000000000600082015250565b6000611a35601983611712565b9150611a40826119ff565b602082019050919050565b60006020820190508181036000830152611a6481611a28565b9050919050565b7f45786365656473206d6178206d696e7420706572207478210000000000000000600082015250565b6000611aa1601883611712565b9150611aac82611a6b565b602082019050919050565b60006020820190508181036000830152611ad081611a94565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611b0d601f83611712565b9150611b1882611ad7565b602082019050919050565b60006020820190508181036000830152611b3c81611b00565b9050919050565b7f4e6f206d6f72652077686974656c697374206d696e74732072656d61696e696e60008201527f6721000000000000000000000000000000000000000000000000000000000000602082015250565b6000611b9f602283611712565b9150611baa82611b43565b604082019050919050565b60006020820190508181036000830152611bce81611b92565b9050919050565b6000604082019050611bea600083018561135f565b611bf7602083018461152d565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611c34602083611712565b9150611c3f82611bfe565b602082019050919050565b60006020820190508181036000830152611c6381611c27565b9050919050565b7f4e657720746f6b656e20737570706c79206d757374206265206772656174657260008201527f207468616e20746f6b656e20636f756e74210000000000000000000000000000602082015250565b6000611cc6603283611712565b9150611cd182611c6a565b604082019050919050565b60006020820190508181036000830152611cf581611cb9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611d58602683611712565b9150611d6382611cfc565b604082019050919050565b60006020820190508181036000830152611d8781611d4b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611dc9828561189a565b602082019150611dd9828461189a565b6020820191508190509392505050565b6000611df4826112c6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611e2757611e2661197a565b5b60018201905091905056fea2646970667358221220021bb4c921a14ae4203445d9bb42043b8d4b49b716aee6d9e795b91995d5865a64736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006d34aeb43e9051254c603967459869b8409614db0000000000000000000000000000000000000000000000000000000000002710
-----Decoded View---------------
Arg [0] : contractAddress (address): 0x6d34aEB43e9051254C603967459869b8409614DB
Arg [1] : tokenSupply (uint256): 10000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000006d34aeb43e9051254c603967459869b8409614db
Arg [1] : 0000000000000000000000000000000000000000000000000000000000002710
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.