ERC-20
Overview
Max Total Supply
91,295,773.159722222222222201 FERN
Holders
35
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Fern
Compiler Version
v0.8.0+commit.c7dfd78e
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/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; contract Fern is Context, IERC20, IERC20Metadata, Ownable { using SafeMath for uint256; uint256 public constant EMISSION_PER_DAY = 30 * (10 ** 18); uint256 public emissionStart; uint256 public emissionEnd; mapping(address => bool) public allowedAddress; mapping(uint256 => uint256) private _lastClaim; address private _nftAddress; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory tokenName, string memory tokenSymbol) { _name = tokenName; _symbol = tokenSymbol; _mint(msg.sender, 91240875 * 10 ** decimals());// 20% is for community activity, commiter and developers } function name() public view override returns (string memory) { return _name; } function symbol() public view override returns (string memory) { return _symbol; } function decimals() public view override returns (uint8) { return 18; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); if (!allowedAddress[msg.sender]) { uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } return true; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "zero address"); require(recipient != address(0), "zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal { require(account != address(0), "zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal { require(account != address(0), "zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal { require(owner != address(0), "zero address"); require(spender != address(0), "zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} function burn(uint256 amount) public { _burn(_msgSender(), amount); } function burnFrom(address account, uint256 amount) public virtual { uint256 currentAllowance = allowance(account, _msgSender()); require(currentAllowance >= amount, "exceeds allowance"); unchecked { _approve(account, _msgSender(), currentAllowance - amount); } _burn(account, amount); } function setEmissionStart() public onlyOwner { require(emissionStart == 0); require(emissionEnd == 0); emissionStart = block.timestamp; emissionEnd = emissionStart + (86400 * 365 * 10); } function setNftAddress(address nftAddress) public onlyOwner { require(_nftAddress == address(0)); _nftAddress = nftAddress; } function setAllowedAddress(address nftAddress, bool allowed) public onlyOwner { allowedAddress[nftAddress] = allowed; } function lastClaim(uint256 tokenId) public view returns (uint256) { require(IERC721Enumerable(_nftAddress).ownerOf(tokenId) != address(0)); uint256 lastClaimed = uint256(_lastClaim[tokenId]) != 0 ? uint256(_lastClaim[tokenId]) : emissionStart; return lastClaimed; } function accumulated(uint256 tokenId) public view returns (uint256) { require(emissionStart != 0); require(IERC721Enumerable(_nftAddress).ownerOf(tokenId) != address(0)); uint256 lastClaimed = lastClaim(tokenId); if (lastClaimed >= emissionEnd) return 0; uint256 accumulationPeriod = block.timestamp < emissionEnd ? block.timestamp : emissionEnd; uint256 totalAccumulated = accumulationPeriod.sub(lastClaimed).mul(EMISSION_PER_DAY).div(86400); return totalAccumulated; } function claim(uint256[] memory tokenIds) public returns (uint256) { require(emissionStart != 0, "not yet"); uint256 totalClaimQty = 0; for (uint i = 0; i < tokenIds.length; i++) { require(tokenIds[i] <= IERC721Enumerable(_nftAddress).totalSupply(), "invalid"); for (uint j = i + 1; j < tokenIds.length; j++) { require(tokenIds[i] != tokenIds[j], "duplicate"); } uint tokenId = tokenIds[i]; require(IERC721Enumerable(_nftAddress).ownerOf(tokenId) == msg.sender, "invalid"); uint256 claimQty = accumulated(tokenId); if (claimQty != 0) { totalClaimQty = totalClaimQty.add(claimQty); _lastClaim[tokenId] = block.timestamp; } } require(totalClaimQty != 0, "zero"); _mint(msg.sender, totalClaimQty); return totalClaimQty; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); }
// 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; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
// SPDX-License-Identifier: MIT 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`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {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 Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @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 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); /** * @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; }
// SPDX-License-Identifier: MIT 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 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":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EMISSION_PER_DAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"accumulated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"claim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emissionEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lastClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"setAllowedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setEmissionStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nftAddress","type":"address"}],"name":"setNftAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200343f3803806200343f83398181016040528101906200003791906200044c565b620000576200004b620000d160201b60201c565b620000d960201b60201c565b81600990805190602001906200006f9291906200032a565b5080600a9080519060200190620000889291906200032a565b50620000c9336200009e6200019d60201b60201c565b600a620000ac919062000681565b63057039ab620000bd9190620007be565b620001a660201b60201c565b50506200093c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000219576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002109062000512565b60405180910390fd5b6200022d600083836200032060201b60201c565b8060086000828254620002419190620005c9565b9250508190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002999190620005c9565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000300919062000534565b60405180910390a36200031c600083836200032560201b60201c565b5050565b505050565b505050565b82805462000338906200086c565b90600052602060002090601f0160209004810192826200035c5760008555620003a8565b82601f106200037757805160ff1916838001178555620003a8565b82800160010185558215620003a8579182015b82811115620003a75782518255916020019190600101906200038a565b5b509050620003b79190620003bb565b5090565b5b80821115620003d6576000816000905550600101620003bc565b5090565b6000620003f1620003eb8462000585565b62000551565b9050828152602081018484840111156200040a57600080fd5b6200041784828562000836565b509392505050565b600082601f8301126200043157600080fd5b815162000443848260208601620003da565b91505092915050565b600080604083850312156200046057600080fd5b600083015167ffffffffffffffff8111156200047b57600080fd5b62000489858286016200041f565b925050602083015167ffffffffffffffff811115620004a757600080fd5b620004b5858286016200041f565b9150509250929050565b6000620004ce600c83620005b8565b91507f7a65726f206164647265737300000000000000000000000000000000000000006000830152602082019050919050565b6200050c816200081f565b82525050565b600060208201905081810360008301526200052d81620004bf565b9050919050565b60006020820190506200054b600083018462000501565b92915050565b6000604051905081810181811067ffffffffffffffff821117156200057b576200057a62000900565b5b8060405250919050565b600067ffffffffffffffff821115620005a357620005a262000900565b5b601f19601f8301169050602081019050919050565b600082825260208201905092915050565b6000620005d6826200081f565b9150620005e3836200081f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200061b576200061a620008a2565b5b828201905092915050565b6000808291508390505b6001851115620006785780860481111562000650576200064f620008a2565b5b6001851615620006605780820291505b808102905062000670856200092f565b945062000630565b94509492505050565b60006200068e826200081f565b91506200069b8362000829565b9250620006ca7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006d2565b905092915050565b600082620006e45760019050620007b7565b81620006f45760009050620007b7565b81600181146200070d576002811462000718576200074e565b6001915050620007b7565b60ff8411156200072d576200072c620008a2565b5b8360020a915084821115620007475762000746620008a2565b5b50620007b7565b5060208310610133831016604e8410600b8410161715620007885782820a905083811115620007825762000781620008a2565b5b620007b7565b62000797848484600162000626565b92509050818404811115620007b157620007b0620008a2565b5b81810290505b9392505050565b6000620007cb826200081f565b9150620007d8836200081f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620008145762000813620008a2565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b60005b838110156200085657808201518184015260208101905062000839565b8381111562000866576000848401525b50505050565b600060028204905060018216806200088557607f821691505b602082108114156200089c576200089b620008d1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008160011c9050919050565b612af3806200094c6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063a457c2d711610097578063dd62ed3e11610071578063dd62ed3e146104c1578063f2fde38b146104f1578063f3f367561461050d578063fae36986146105175761018e565b8063a457c2d714610431578063a9059cbb14610461578063c607cde7146104915761018e565b806370a0823114610381578063715018a6146103b157806379cc6790146103bb5780638368909c146103d75780638da5cb5b146103f557806395d89b41146104135761018e565b8063395093511161014b57806342966c681161012557806342966c68146102f9578063513da948146103155780636397f7a2146103335780636ba4c138146103515761018e565b806339509351146102695780633d3728b51461029957806340908298146102c95761018e565b806306fdde0314610193578063095ea7b3146101b15780630b102d1a146101e157806318160ddd146101fd57806323b872dd1461021b578063313ce5671461024b575b600080fd5b61019b610533565b6040516101a89190612582565b60405180910390f35b6101cb60048036038101906101c69190612162565b6105c5565b6040516101d89190612567565b60405180910390f35b6101fb60048036038101906101f69190612049565b6105e3565b005b6102056106fe565b60405161021291906126e4565b60405180910390f35b610235600480360381019061023091906120d7565b610708565b6040516102429190612567565b60405180910390f35b610253610852565b60405161026091906126ff565b60405180910390f35b610283600480360381019061027e9190612162565b61085b565b6040516102909190612567565b60405180910390f35b6102b360048036038101906102ae91906121df565b610907565b6040516102c091906126e4565b60405180910390f35b6102e360048036038101906102de9190612049565b610a31565b6040516102f09190612567565b60405180910390f35b610313600480360381019061030e91906121df565b610a51565b005b61031d610a65565b60405161032a91906126e4565b60405180910390f35b61033b610a6b565b60405161034891906126e4565b60405180910390f35b61036b6004803603810190610366919061219e565b610a78565b60405161037891906126e4565b60405180910390f35b61039b60048036038101906103969190612049565b610eed565b6040516103a891906126e4565b60405180910390f35b6103b9610f36565b005b6103d560048036038101906103d09190612162565b610fbe565b005b6103df611039565b6040516103ec91906126e4565b60405180910390f35b6103fd61103f565b60405161040a919061254c565b60405180910390f35b61041b611068565b6040516104289190612582565b60405180910390f35b61044b60048036038101906104469190612162565b6110fa565b6040516104589190612567565b60405180910390f35b61047b60048036038101906104769190612162565b6111e5565b6040516104889190612567565b60405180910390f35b6104ab60048036038101906104a691906121df565b611203565b6040516104b891906126e4565b60405180910390f35b6104db60048036038101906104d6919061209b565b611382565b6040516104e891906126e4565b60405180910390f35b61050b60048036038101906105069190612049565b611409565b005b610515611501565b005b610531600480360381019061052c9190612126565b6115bc565b005b60606009805461054290612930565b80601f016020809104026020016040519081016040528092919081815260200182805461056e90612930565b80156105bb5780601f10610590576101008083540402835291602001916105bb565b820191906000526020600020905b81548152906001019060200180831161059e57829003601f168201915b5050505050905090565b60006105d96105d2611693565b848461169b565b6001905092915050565b6105eb611693565b73ffffffffffffffffffffffffffffffffffffffff1661060961103f565b73ffffffffffffffffffffffffffffffffffffffff161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065690612644565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106ba57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600854905090565b6000610715848484611866565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610847576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107b1611693565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082890612664565b60405180910390fd5b6108458561083d611693565b85840361169b565b505b600190509392505050565b60006012905090565b60006108fd610868611693565b848460076000610876611693565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108f89190612793565b61169b565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b815260040161097b91906126e4565b60206040518083038186803b15801561099357600080fd5b505afa1580156109a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190612072565b73ffffffffffffffffffffffffffffffffffffffff1614156109ec57600080fd5b60008060046000858152602001908152602001600020541415610a1157600154610a26565b60046000848152602001908152602001600020545b905080915050919050565b60036020528060005260406000206000915054906101000a900460ff1681565b610a62610a5c611693565b82611aea565b50565b60015481565b6801a055690d9db8000081565b6000806001541415610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab6906126a4565b60405180910390fd5b6000805b8351811015610e9557600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3457600080fd5b505afa158015610b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6c9190612208565b848281518110610ba5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511115610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be5906126c4565b60405180910390fd5b6000600182610bfd9190612793565b90505b8451811015610cdf57848181518110610c42577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151858381518110610c83577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc3906125e4565b60405180910390fd5b8080610cd790612962565b915050610c00565b506000848281518110610d1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610d9791906126e4565b60206040518083038186803b158015610daf57600080fd5b505afa158015610dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de79190612072565b73ffffffffffffffffffffffffffffffffffffffff1614610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e34906126c4565b60405180910390fd5b6000610e4882611203565b905060008114610e8057610e658185611cc390919063ffffffff16565b93504260046000848152602001908152602001600020819055505b50508080610e8d90612962565b915050610ac3565b506000811415610eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed1906125c4565b60405180910390fd5b610ee43382611cd9565b80915050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f3e611693565b73ffffffffffffffffffffffffffffffffffffffff16610f5c61103f565b73ffffffffffffffffffffffffffffffffffffffff1614610fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa990612644565b60405180910390fd5b610fbc6000611e3a565b565b6000610fd183610fcc611693565b611382565b905081811015611016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100d90612664565b60405180910390fd5b61102a83611022611693565b84840361169b565b6110348383611aea565b505050565b60025481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a805461107790612930565b80601f01602080910402602001604051908101604052809291908181526020018280546110a390612930565b80156110f05780601f106110c5576101008083540402835291602001916110f0565b820191906000526020600020905b8154815290600101906020018083116110d357829003601f168201915b5050505050905090565b60008060076000611109611693565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90612624565b60405180910390fd5b6111da6111d1611693565b8585840361169b565b600191505092915050565b60006111f96111f2611693565b8484611866565b6001905092915050565b600080600154141561121457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b815260040161128791906126e4565b60206040518083038186803b15801561129f57600080fd5b505afa1580156112b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d79190612072565b73ffffffffffffffffffffffffffffffffffffffff1614156112f857600080fd5b600061130383610907565b9050600254811061131857600091505061137d565b6000600254421061132b5760025461132d565b425b90506000611374620151806113666801a055690d9db800006113588787611efe90919063ffffffff16565b611f1490919063ffffffff16565b611f2a90919063ffffffff16565b90508093505050505b919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611411611693565b73ffffffffffffffffffffffffffffffffffffffff1661142f61103f565b73ffffffffffffffffffffffffffffffffffffffff1614611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90612644565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec906125a4565b60405180910390fd5b6114fe81611e3a565b50565b611509611693565b73ffffffffffffffffffffffffffffffffffffffff1661152761103f565b73ffffffffffffffffffffffffffffffffffffffff161461157d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157490612644565b60405180910390fd5b60006001541461158c57600080fd5b60006002541461159b57600080fd5b426001819055506312cc03006001546115b49190612793565b600281905550565b6115c4611693565b73ffffffffffffffffffffffffffffffffffffffff166115e261103f565b73ffffffffffffffffffffffffffffffffffffffff1614611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90612644565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561170b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170290612684565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561177b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177290612684565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161185991906126e4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cd90612684565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193d90612684565b60405180910390fd5b611951838383611f40565b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf90612604565b60405180910390fd5b818103600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a6d9190612793565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ad191906126e4565b60405180910390a3611ae4848484611f45565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5190612684565b60405180910390fd5b611b6682600083611f40565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be490612604565b60405180910390fd5b818103600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160086000828254611c459190612874565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611caa91906126e4565b60405180910390a3611cbe83600084611f45565b505050565b60008183611cd19190612793565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4090612684565b60405180910390fd5b611d5560008383611f40565b8060086000828254611d679190612793565b9250508190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611dbd9190612793565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e2291906126e4565b60405180910390a3611e3660008383611f45565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183611f0c9190612874565b905092915050565b60008183611f22919061281a565b905092915050565b60008183611f3891906127e9565b905092915050565b505050565b505050565b6000611f5d611f588461274b565b61271a565b90508083825260208201905082856020860282011115611f7c57600080fd5b60005b85811015611fac5781611f92888261201f565b845260208401935060208301925050600181019050611f7f565b5050509392505050565b600081359050611fc581612a78565b92915050565b600081519050611fda81612a78565b92915050565b600082601f830112611ff157600080fd5b8135612001848260208601611f4a565b91505092915050565b60008135905061201981612a8f565b92915050565b60008135905061202e81612aa6565b92915050565b60008151905061204381612aa6565b92915050565b60006020828403121561205b57600080fd5b600061206984828501611fb6565b91505092915050565b60006020828403121561208457600080fd5b600061209284828501611fcb565b91505092915050565b600080604083850312156120ae57600080fd5b60006120bc85828601611fb6565b92505060206120cd85828601611fb6565b9150509250929050565b6000806000606084860312156120ec57600080fd5b60006120fa86828701611fb6565b935050602061210b86828701611fb6565b925050604061211c8682870161201f565b9150509250925092565b6000806040838503121561213957600080fd5b600061214785828601611fb6565b92505060206121588582860161200a565b9150509250929050565b6000806040838503121561217557600080fd5b600061218385828601611fb6565b92505060206121948582860161201f565b9150509250929050565b6000602082840312156121b057600080fd5b600082013567ffffffffffffffff8111156121ca57600080fd5b6121d684828501611fe0565b91505092915050565b6000602082840312156121f157600080fd5b60006121ff8482850161201f565b91505092915050565b60006020828403121561221a57600080fd5b600061222884828501612034565b91505092915050565b61223a816128a8565b82525050565b612249816128ba565b82525050565b600061225a82612777565b6122648185612782565b93506122748185602086016128fd565b61227d81612a67565b840191505092915050565b6000612295602683612782565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006122fb600483612782565b91507f7a65726f000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b600061233b600983612782565b91507f6475706c696361746500000000000000000000000000000000000000000000006000830152602082019050919050565b600061237b600f83612782565b91507f657863656564732062616c616e636500000000000000000000000000000000006000830152602082019050919050565b60006123bb600a83612782565b91507f62656c6f77207a65726f000000000000000000000000000000000000000000006000830152602082019050919050565b60006123fb602083612782565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061243b601183612782565b91507f6578636565647320616c6c6f77616e63650000000000000000000000000000006000830152602082019050919050565b600061247b600c83612782565b91507f7a65726f206164647265737300000000000000000000000000000000000000006000830152602082019050919050565b60006124bb600783612782565b91507f6e6f7420796574000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006124fb600783612782565b91507f696e76616c6964000000000000000000000000000000000000000000000000006000830152602082019050919050565b612537816128e6565b82525050565b612546816128f0565b82525050565b60006020820190506125616000830184612231565b92915050565b600060208201905061257c6000830184612240565b92915050565b6000602082019050818103600083015261259c818461224f565b905092915050565b600060208201905081810360008301526125bd81612288565b9050919050565b600060208201905081810360008301526125dd816122ee565b9050919050565b600060208201905081810360008301526125fd8161232e565b9050919050565b6000602082019050818103600083015261261d8161236e565b9050919050565b6000602082019050818103600083015261263d816123ae565b9050919050565b6000602082019050818103600083015261265d816123ee565b9050919050565b6000602082019050818103600083015261267d8161242e565b9050919050565b6000602082019050818103600083015261269d8161246e565b9050919050565b600060208201905081810360008301526126bd816124ae565b9050919050565b600060208201905081810360008301526126dd816124ee565b9050919050565b60006020820190506126f9600083018461252e565b92915050565b6000602082019050612714600083018461253d565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561274157612740612a38565b5b8060405250919050565b600067ffffffffffffffff82111561276657612765612a38565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600061279e826128e6565b91506127a9836128e6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127de576127dd6129ab565b5b828201905092915050565b60006127f4826128e6565b91506127ff836128e6565b92508261280f5761280e6129da565b5b828204905092915050565b6000612825826128e6565b9150612830836128e6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612869576128686129ab565b5b828202905092915050565b600061287f826128e6565b915061288a836128e6565b92508282101561289d5761289c6129ab565b5b828203905092915050565b60006128b3826128c6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561291b578082015181840152602081019050612900565b8381111561292a576000848401525b50505050565b6000600282049050600182168061294857607f821691505b6020821081141561295c5761295b612a09565b5b50919050565b600061296d826128e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156129a05761299f6129ab565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b612a81816128a8565b8114612a8c57600080fd5b50565b612a98816128ba565b8114612aa357600080fd5b50565b612aaf816128e6565b8114612aba57600080fd5b5056fea264697066735822122002446a6ccc509ceff1c4cbf62b2257102f21cde6bfdcb03f3913c23b9acf862664736f6c634300080000330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000044645524e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044645524e00000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063a457c2d711610097578063dd62ed3e11610071578063dd62ed3e146104c1578063f2fde38b146104f1578063f3f367561461050d578063fae36986146105175761018e565b8063a457c2d714610431578063a9059cbb14610461578063c607cde7146104915761018e565b806370a0823114610381578063715018a6146103b157806379cc6790146103bb5780638368909c146103d75780638da5cb5b146103f557806395d89b41146104135761018e565b8063395093511161014b57806342966c681161012557806342966c68146102f9578063513da948146103155780636397f7a2146103335780636ba4c138146103515761018e565b806339509351146102695780633d3728b51461029957806340908298146102c95761018e565b806306fdde0314610193578063095ea7b3146101b15780630b102d1a146101e157806318160ddd146101fd57806323b872dd1461021b578063313ce5671461024b575b600080fd5b61019b610533565b6040516101a89190612582565b60405180910390f35b6101cb60048036038101906101c69190612162565b6105c5565b6040516101d89190612567565b60405180910390f35b6101fb60048036038101906101f69190612049565b6105e3565b005b6102056106fe565b60405161021291906126e4565b60405180910390f35b610235600480360381019061023091906120d7565b610708565b6040516102429190612567565b60405180910390f35b610253610852565b60405161026091906126ff565b60405180910390f35b610283600480360381019061027e9190612162565b61085b565b6040516102909190612567565b60405180910390f35b6102b360048036038101906102ae91906121df565b610907565b6040516102c091906126e4565b60405180910390f35b6102e360048036038101906102de9190612049565b610a31565b6040516102f09190612567565b60405180910390f35b610313600480360381019061030e91906121df565b610a51565b005b61031d610a65565b60405161032a91906126e4565b60405180910390f35b61033b610a6b565b60405161034891906126e4565b60405180910390f35b61036b6004803603810190610366919061219e565b610a78565b60405161037891906126e4565b60405180910390f35b61039b60048036038101906103969190612049565b610eed565b6040516103a891906126e4565b60405180910390f35b6103b9610f36565b005b6103d560048036038101906103d09190612162565b610fbe565b005b6103df611039565b6040516103ec91906126e4565b60405180910390f35b6103fd61103f565b60405161040a919061254c565b60405180910390f35b61041b611068565b6040516104289190612582565b60405180910390f35b61044b60048036038101906104469190612162565b6110fa565b6040516104589190612567565b60405180910390f35b61047b60048036038101906104769190612162565b6111e5565b6040516104889190612567565b60405180910390f35b6104ab60048036038101906104a691906121df565b611203565b6040516104b891906126e4565b60405180910390f35b6104db60048036038101906104d6919061209b565b611382565b6040516104e891906126e4565b60405180910390f35b61050b60048036038101906105069190612049565b611409565b005b610515611501565b005b610531600480360381019061052c9190612126565b6115bc565b005b60606009805461054290612930565b80601f016020809104026020016040519081016040528092919081815260200182805461056e90612930565b80156105bb5780601f10610590576101008083540402835291602001916105bb565b820191906000526020600020905b81548152906001019060200180831161059e57829003601f168201915b5050505050905090565b60006105d96105d2611693565b848461169b565b6001905092915050565b6105eb611693565b73ffffffffffffffffffffffffffffffffffffffff1661060961103f565b73ffffffffffffffffffffffffffffffffffffffff161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065690612644565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106ba57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600854905090565b6000610715848484611866565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610847576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107b1611693565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082890612664565b60405180910390fd5b6108458561083d611693565b85840361169b565b505b600190509392505050565b60006012905090565b60006108fd610868611693565b848460076000610876611693565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108f89190612793565b61169b565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b815260040161097b91906126e4565b60206040518083038186803b15801561099357600080fd5b505afa1580156109a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190612072565b73ffffffffffffffffffffffffffffffffffffffff1614156109ec57600080fd5b60008060046000858152602001908152602001600020541415610a1157600154610a26565b60046000848152602001908152602001600020545b905080915050919050565b60036020528060005260406000206000915054906101000a900460ff1681565b610a62610a5c611693565b82611aea565b50565b60015481565b6801a055690d9db8000081565b6000806001541415610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab6906126a4565b60405180910390fd5b6000805b8351811015610e9557600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3457600080fd5b505afa158015610b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6c9190612208565b848281518110610ba5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511115610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be5906126c4565b60405180910390fd5b6000600182610bfd9190612793565b90505b8451811015610cdf57848181518110610c42577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151858381518110610c83577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc3906125e4565b60405180910390fd5b8080610cd790612962565b915050610c00565b506000848281518110610d1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610d9791906126e4565b60206040518083038186803b158015610daf57600080fd5b505afa158015610dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de79190612072565b73ffffffffffffffffffffffffffffffffffffffff1614610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e34906126c4565b60405180910390fd5b6000610e4882611203565b905060008114610e8057610e658185611cc390919063ffffffff16565b93504260046000848152602001908152602001600020819055505b50508080610e8d90612962565b915050610ac3565b506000811415610eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed1906125c4565b60405180910390fd5b610ee43382611cd9565b80915050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f3e611693565b73ffffffffffffffffffffffffffffffffffffffff16610f5c61103f565b73ffffffffffffffffffffffffffffffffffffffff1614610fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa990612644565b60405180910390fd5b610fbc6000611e3a565b565b6000610fd183610fcc611693565b611382565b905081811015611016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100d90612664565b60405180910390fd5b61102a83611022611693565b84840361169b565b6110348383611aea565b505050565b60025481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a805461107790612930565b80601f01602080910402602001604051908101604052809291908181526020018280546110a390612930565b80156110f05780601f106110c5576101008083540402835291602001916110f0565b820191906000526020600020905b8154815290600101906020018083116110d357829003601f168201915b5050505050905090565b60008060076000611109611693565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90612624565b60405180910390fd5b6111da6111d1611693565b8585840361169b565b600191505092915050565b60006111f96111f2611693565b8484611866565b6001905092915050565b600080600154141561121457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b815260040161128791906126e4565b60206040518083038186803b15801561129f57600080fd5b505afa1580156112b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d79190612072565b73ffffffffffffffffffffffffffffffffffffffff1614156112f857600080fd5b600061130383610907565b9050600254811061131857600091505061137d565b6000600254421061132b5760025461132d565b425b90506000611374620151806113666801a055690d9db800006113588787611efe90919063ffffffff16565b611f1490919063ffffffff16565b611f2a90919063ffffffff16565b90508093505050505b919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611411611693565b73ffffffffffffffffffffffffffffffffffffffff1661142f61103f565b73ffffffffffffffffffffffffffffffffffffffff1614611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90612644565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec906125a4565b60405180910390fd5b6114fe81611e3a565b50565b611509611693565b73ffffffffffffffffffffffffffffffffffffffff1661152761103f565b73ffffffffffffffffffffffffffffffffffffffff161461157d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157490612644565b60405180910390fd5b60006001541461158c57600080fd5b60006002541461159b57600080fd5b426001819055506312cc03006001546115b49190612793565b600281905550565b6115c4611693565b73ffffffffffffffffffffffffffffffffffffffff166115e261103f565b73ffffffffffffffffffffffffffffffffffffffff1614611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90612644565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561170b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170290612684565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561177b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177290612684565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161185991906126e4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cd90612684565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193d90612684565b60405180910390fd5b611951838383611f40565b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf90612604565b60405180910390fd5b818103600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a6d9190612793565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ad191906126e4565b60405180910390a3611ae4848484611f45565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5190612684565b60405180910390fd5b611b6682600083611f40565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be490612604565b60405180910390fd5b818103600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160086000828254611c459190612874565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611caa91906126e4565b60405180910390a3611cbe83600084611f45565b505050565b60008183611cd19190612793565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4090612684565b60405180910390fd5b611d5560008383611f40565b8060086000828254611d679190612793565b9250508190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611dbd9190612793565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e2291906126e4565b60405180910390a3611e3660008383611f45565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183611f0c9190612874565b905092915050565b60008183611f22919061281a565b905092915050565b60008183611f3891906127e9565b905092915050565b505050565b505050565b6000611f5d611f588461274b565b61271a565b90508083825260208201905082856020860282011115611f7c57600080fd5b60005b85811015611fac5781611f92888261201f565b845260208401935060208301925050600181019050611f7f565b5050509392505050565b600081359050611fc581612a78565b92915050565b600081519050611fda81612a78565b92915050565b600082601f830112611ff157600080fd5b8135612001848260208601611f4a565b91505092915050565b60008135905061201981612a8f565b92915050565b60008135905061202e81612aa6565b92915050565b60008151905061204381612aa6565b92915050565b60006020828403121561205b57600080fd5b600061206984828501611fb6565b91505092915050565b60006020828403121561208457600080fd5b600061209284828501611fcb565b91505092915050565b600080604083850312156120ae57600080fd5b60006120bc85828601611fb6565b92505060206120cd85828601611fb6565b9150509250929050565b6000806000606084860312156120ec57600080fd5b60006120fa86828701611fb6565b935050602061210b86828701611fb6565b925050604061211c8682870161201f565b9150509250925092565b6000806040838503121561213957600080fd5b600061214785828601611fb6565b92505060206121588582860161200a565b9150509250929050565b6000806040838503121561217557600080fd5b600061218385828601611fb6565b92505060206121948582860161201f565b9150509250929050565b6000602082840312156121b057600080fd5b600082013567ffffffffffffffff8111156121ca57600080fd5b6121d684828501611fe0565b91505092915050565b6000602082840312156121f157600080fd5b60006121ff8482850161201f565b91505092915050565b60006020828403121561221a57600080fd5b600061222884828501612034565b91505092915050565b61223a816128a8565b82525050565b612249816128ba565b82525050565b600061225a82612777565b6122648185612782565b93506122748185602086016128fd565b61227d81612a67565b840191505092915050565b6000612295602683612782565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006122fb600483612782565b91507f7a65726f000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b600061233b600983612782565b91507f6475706c696361746500000000000000000000000000000000000000000000006000830152602082019050919050565b600061237b600f83612782565b91507f657863656564732062616c616e636500000000000000000000000000000000006000830152602082019050919050565b60006123bb600a83612782565b91507f62656c6f77207a65726f000000000000000000000000000000000000000000006000830152602082019050919050565b60006123fb602083612782565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061243b601183612782565b91507f6578636565647320616c6c6f77616e63650000000000000000000000000000006000830152602082019050919050565b600061247b600c83612782565b91507f7a65726f206164647265737300000000000000000000000000000000000000006000830152602082019050919050565b60006124bb600783612782565b91507f6e6f7420796574000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006124fb600783612782565b91507f696e76616c6964000000000000000000000000000000000000000000000000006000830152602082019050919050565b612537816128e6565b82525050565b612546816128f0565b82525050565b60006020820190506125616000830184612231565b92915050565b600060208201905061257c6000830184612240565b92915050565b6000602082019050818103600083015261259c818461224f565b905092915050565b600060208201905081810360008301526125bd81612288565b9050919050565b600060208201905081810360008301526125dd816122ee565b9050919050565b600060208201905081810360008301526125fd8161232e565b9050919050565b6000602082019050818103600083015261261d8161236e565b9050919050565b6000602082019050818103600083015261263d816123ae565b9050919050565b6000602082019050818103600083015261265d816123ee565b9050919050565b6000602082019050818103600083015261267d8161242e565b9050919050565b6000602082019050818103600083015261269d8161246e565b9050919050565b600060208201905081810360008301526126bd816124ae565b9050919050565b600060208201905081810360008301526126dd816124ee565b9050919050565b60006020820190506126f9600083018461252e565b92915050565b6000602082019050612714600083018461253d565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561274157612740612a38565b5b8060405250919050565b600067ffffffffffffffff82111561276657612765612a38565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600061279e826128e6565b91506127a9836128e6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127de576127dd6129ab565b5b828201905092915050565b60006127f4826128e6565b91506127ff836128e6565b92508261280f5761280e6129da565b5b828204905092915050565b6000612825826128e6565b9150612830836128e6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612869576128686129ab565b5b828202905092915050565b600061287f826128e6565b915061288a836128e6565b92508282101561289d5761289c6129ab565b5b828203905092915050565b60006128b3826128c6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561291b578082015181840152602081019050612900565b8381111561292a576000848401525b50505050565b6000600282049050600182168061294857607f821691505b6020821081141561295c5761295b612a09565b5b50919050565b600061296d826128e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156129a05761299f6129ab565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b612a81816128a8565b8114612a8c57600080fd5b50565b612a98816128ba565b8114612aa357600080fd5b50565b612aaf816128e6565b8114612aba57600080fd5b5056fea264697066735822122002446a6ccc509ceff1c4cbf62b2257102f21cde6bfdcb03f3913c23b9acf862664736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000044645524e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044645524e00000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : tokenName (string): FERN
Arg [1] : tokenSymbol (string): FERN
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [3] : 4645524e00000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 4645524e00000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.