ERC-20
Overview
Max Total Supply
3,958.651055744203285586 WIHF
Holders
33
Total Transfers
-
Market
Price
$0.00 @ 0.000000 ETH
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
WrappedIHF
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at basescan.org on 2024-06-15 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.20; /** * @dev Interface for the optional metadata functions from the ERC20 standard. */ 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); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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; } } // File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol) pragma solidity ^0.8.20; /** * @dev Standard ERC20 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens. */ interface IERC20Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC20InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC20InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers. * @param spender Address that may be allowed to operate on tokens without being their owner. * @param allowance Amount of tokens a `spender` is allowed to operate with. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC20InvalidApprover(address approver); /** * @dev Indicates a failure with the `spender` to be approved. Used in approvals. * @param spender Address that may be allowed to operate on tokens without being their owner. */ error ERC20InvalidSpender(address spender); } /** * @dev Standard ERC721 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens. */ interface IERC721Errors { /** * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. * Used in balance queries. * @param owner Address of the current owner of a token. */ error ERC721InvalidOwner(address owner); /** * @dev Indicates a `tokenId` whose `owner` is the zero address. * @param tokenId Identifier number of a token. */ error ERC721NonexistentToken(uint256 tokenId); /** * @dev Indicates an error related to the ownership over a particular token. Used in transfers. * @param sender Address whose tokens are being transferred. * @param tokenId Identifier number of a token. * @param owner Address of the current owner of a token. */ error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC721InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC721InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param tokenId Identifier number of a token. */ error ERC721InsufficientApproval(address operator, uint256 tokenId); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC721InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC721InvalidOperator(address operator); } /** * @dev Standard ERC1155 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens. */ interface IERC1155Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. * @param tokenId Identifier number of a token. */ error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC1155InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC1155InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param owner Address of the current owner of a token. */ error ERC1155MissingApprovalForAll(address operator, address owner); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC1155InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC1155InvalidOperator(address operator); /** * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. * Used in batch transfers. * @param idsLength Length of the array of token identifiers * @param valuesLength Length of the array of token amounts */ error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.20; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. */ abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors { mapping(address account => uint256) private _balances; mapping(address account => mapping(address spender => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `value`. */ function transfer(address to, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _transfer(owner, to, value); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, value); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `value`. * - the caller must have allowance for ``from``'s tokens of at least * `value`. */ function transferFrom(address from, address to, uint256 value) public virtual returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, value); _transfer(from, to, value); return true; } /** * @dev Moves a `value` amount of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _transfer(address from, address to, uint256 value) internal { if (from == address(0)) { revert ERC20InvalidSender(address(0)); } if (to == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(from, to, value); } /** * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from` * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding * this function. * * Emits a {Transfer} event. */ function _update(address from, address to, uint256 value) internal virtual { if (from == address(0)) { // Overflow check required: The rest of the code assumes that totalSupply never overflows _totalSupply += value; } else { uint256 fromBalance = _balances[from]; if (fromBalance < value) { revert ERC20InsufficientBalance(from, fromBalance, value); } unchecked { // Overflow not possible: value <= fromBalance <= totalSupply. _balances[from] = fromBalance - value; } } if (to == address(0)) { unchecked { // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply. _totalSupply -= value; } } else { unchecked { // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256. _balances[to] += value; } } emit Transfer(from, to, value); } /** * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0). * Relies on the `_update` mechanism * * Emits a {Transfer} event with `from` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _mint(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(address(0), account, value); } /** * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply. * Relies on the `_update` mechanism. * * Emits a {Transfer} event with `to` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead */ function _burn(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidSender(address(0)); } _update(account, address(0), value); } /** * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. * * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument. */ function _approve(address owner, address spender, uint256 value) internal { _approve(owner, spender, value, true); } /** * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event. * * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any * `Approval` event during `transferFrom` operations. * * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to * true using the following override: * ``` * function _approve(address owner, address spender, uint256 value, bool) internal virtual override { * super._approve(owner, spender, value, true); * } * ``` * * Requirements are the same as {_approve}. */ function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual { if (owner == address(0)) { revert ERC20InvalidApprover(address(0)); } if (spender == address(0)) { revert ERC20InvalidSpender(address(0)); } _allowances[owner][spender] = value; if (emitEvent) { emit Approval(owner, spender, value); } } /** * @dev Updates `owner` s allowance for `spender` based on spent `value`. * * Does not update the allowance value in case of infinite allowance. * Revert if not enough allowance is available. * * Does not emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 value) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { if (currentAllowance < value) { revert ERC20InsufficientAllowance(spender, currentAllowance, value); } unchecked { _approve(owner, spender, currentAllowance - value, false); } } } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @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. * * The initial owner is set to the address provided by the deployer. 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; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: ihf/ihf1.sol pragma solidity ^0.8.0; contract WrappedIHF is ERC20, Ownable(msg.sender) { IERC20 public ihfToken; uint256 public feePercentage = 1; event Wrap(address indexed from, uint256 ihfAmount, uint256 wihfAmount); event Unwrap(address indexed from, uint256 wihfAmount, uint256 ihfAmount); constructor(IERC20 _ihfToken) ERC20("Wrapped IHF", "WIHF") { ihfToken = _ihfToken; } function wrap(uint256 ihfAmount) external { uint256 fee = ihfAmount * feePercentage / 100; uint256 amountToWrap = ihfAmount - fee; require(ihfToken.transferFrom(msg.sender, address(this), ihfAmount), "Transfer failed"); require(ihfToken.transfer(owner(), fee), "Fee transfer failed"); _mint(msg.sender, amountToWrap); emit Wrap(msg.sender, ihfAmount, amountToWrap); } function unwrap(uint256 wihfAmount) external { uint256 fee = wihfAmount * feePercentage / 100; uint256 amountToUnwrap = wihfAmount - fee; _burn(msg.sender, wihfAmount); require(ihfToken.transfer(msg.sender, amountToUnwrap), "Transfer failed"); require(ihfToken.transfer(owner(), fee), "Fee transfer failed"); emit Unwrap(msg.sender, wihfAmount, amountToUnwrap); } function withdrawERC20(IERC20 token, uint256 amount) external onlyOwner { require(token != ihfToken, "Cannot withdraw IHF"); require(token.transfer(owner(), amount), "Transfer failed"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_ihfToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"wihfAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ihfAmount","type":"uint256"}],"name":"Unwrap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"ihfAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"wihfAmount","type":"uint256"}],"name":"Wrap","type":"event"},{"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":"spender","type":"address"},{"internalType":"uint256","name":"value","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ihfToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"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":[],"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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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"},{"inputs":[{"internalType":"uint256","name":"wihfAmount","type":"uint256"}],"name":"unwrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ihfAmount","type":"uint256"}],"name":"wrap","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526001600755348015610014575f80fd5b5060405161226c38038061226c833981810160405281019061003691906102bd565b336040518060400160405280600b81526020017f57726170706564204948460000000000000000000000000000000000000000008152506040518060400160405280600481526020017f574948460000000000000000000000000000000000000000000000000000000081525081600390816100b29190610522565b5080600490816100c29190610522565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610135575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161012c9190610600565b60405180910390fd5b6101448161018b60201b60201c565b508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610619565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61027b82610252565b9050919050565b5f61028c82610271565b9050919050565b61029c81610282565b81146102a6575f80fd5b50565b5f815190506102b781610293565b92915050565b5f602082840312156102d2576102d161024e565b5b5f6102df848285016102a9565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061036357607f821691505b6020821081036103765761037561031f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261039d565b6103e2868361039d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61042661042161041c846103fa565b610403565b6103fa565b9050919050565b5f819050919050565b61043f8361040c565b61045361044b8261042d565b8484546103a9565b825550505050565b5f90565b61046761045b565b610472818484610436565b505050565b5b818110156104955761048a5f8261045f565b600181019050610478565b5050565b601f8211156104da576104ab8161037c565b6104b48461038e565b810160208510156104c3578190505b6104d76104cf8561038e565b830182610477565b50505b505050565b5f82821c905092915050565b5f6104fa5f19846008026104df565b1980831691505092915050565b5f61051283836104eb565b9150826002028217905092915050565b61052b826102e8565b67ffffffffffffffff811115610544576105436102f2565b5b61054e825461034c565b610559828285610499565b5f60209050601f83116001811461058a575f8415610578578287015190505b6105828582610507565b8655506105e9565b601f1984166105988661037c565b5f5b828110156105bf5784890151825560018201915060208501945060208101905061059a565b868310156105dc57848901516105d8601f8916826104eb565b8355505b6001600288020188555050505b505050505050565b6105fa81610271565b82525050565b5f6020820190506106135f8301846105f1565b92915050565b611c46806106265f395ff3fe608060405234801561000f575f80fd5b5060043610610109575f3560e01c80638da5cb5b116100a0578063a9059cbb1161006f578063a9059cbb14610295578063dd62ed3e146102c5578063de0e9a3e146102f5578063ea598cb014610311578063f2fde38b1461032d57610109565b80638da5cb5b1461021f57806395d89b411461023d578063a001ecdd1461025b578063a1db97821461027957610109565b8063313ce567116100dc578063313ce567146101a957806370a08231146101c7578063715018a6146101f75780638c89af031461020157610109565b806306fdde031461010d578063095ea7b31461012b57806318160ddd1461015b57806323b872dd14610179575b5f80fd5b610115610349565b60405161012291906114c6565b60405180910390f35b61014560048036038101906101409190611577565b6103d9565b60405161015291906115cf565b60405180910390f35b6101636103fb565b60405161017091906115f7565b60405180910390f35b610193600480360381019061018e9190611610565b610404565b6040516101a091906115cf565b60405180910390f35b6101b1610432565b6040516101be919061167b565b60405180910390f35b6101e160048036038101906101dc9190611694565b61043a565b6040516101ee91906115f7565b60405180910390f35b6101ff61047f565b005b610209610492565b604051610216919061171a565b60405180910390f35b6102276104b7565b6040516102349190611742565b60405180910390f35b6102456104df565b60405161025291906114c6565b60405180910390f35b61026361056f565b60405161027091906115f7565b60405180910390f35b610293600480360381019061028e9190611796565b610575565b005b6102af60048036038101906102aa9190611577565b6106d1565b6040516102bc91906115cf565b60405180910390f35b6102df60048036038101906102da91906117d4565b6106f3565b6040516102ec91906115f7565b60405180910390f35b61030f600480360381019061030a9190611812565b610775565b005b61032b60048036038101906103269190611812565b6109bd565b005b61034760048036038101906103429190611694565b610c07565b005b6060600380546103589061186a565b80601f01602080910402602001604051908101604052809291908181526020018280546103849061186a565b80156103cf5780601f106103a6576101008083540402835291602001916103cf565b820191905f5260205f20905b8154815290600101906020018083116103b257829003601f168201915b5050505050905090565b5f806103e3610c8b565b90506103f0818585610c92565b600191505092915050565b5f600254905090565b5f8061040e610c8b565b905061041b858285610ca4565b610426858585610d36565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610487610e26565b6104905f610ead565b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546104ee9061186a565b80601f016020809104026020016040519081016040528092919081815260200182805461051a9061186a565b80156105655780601f1061053c57610100808354040283529160200191610565565b820191905f5260205f20905b81548152906001019060200180831161054857829003601f168201915b5050505050905090565b60075481565b61057d610e26565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361060c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610603906118e4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6106306104b7565b836040518363ffffffff1660e01b815260040161064e929190611902565b6020604051808303815f875af115801561066a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068e9190611953565b6106cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c4906119c8565b60405180910390fd5b5050565b5f806106db610c8b565b90506106e8818585610d36565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f6064600754836107869190611a13565b6107909190611a81565b90505f818361079f9190611ab1565b90506107ab3384610f70565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610807929190611902565b6020604051808303815f875af1158015610823573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108479190611953565b610886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087d906119c8565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6108cb6104b7565b846040518363ffffffff1660e01b81526004016108e9929190611902565b6020604051808303815f875af1158015610905573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109299190611953565b610968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095f90611b2e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167fe8e8d3915b94f03b4f3342716334ae94bd6f36775da7b263c908889b93d0574b84836040516109b0929190611b4c565b60405180910390a2505050565b5f6064600754836109ce9190611a13565b6109d89190611a81565b90505f81836109e79190611ab1565b905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401610a4793929190611b73565b6020604051808303815f875af1158015610a63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a879190611953565b610ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abd906119c8565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610b0b6104b7565b846040518363ffffffff1660e01b8152600401610b29929190611902565b6020604051808303815f875af1158015610b45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b699190611953565b610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f90611b2e565b60405180910390fd5b610bb23382610fef565b3373ffffffffffffffffffffffffffffffffffffffff167f18a5ed48bb0a697c64a5aef8f28cec1f29ab01da27a45c5f835099781ef1ea468483604051610bfa929190611b4c565b60405180910390a2505050565b610c0f610e26565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c7f575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610c769190611742565b60405180910390fd5b610c8881610ead565b50565b5f33905090565b610c9f838383600161106e565b505050565b5f610caf84846106f3565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d305781811015610d21578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610d1893929190611ba8565b60405180910390fd5b610d2f84848484035f61106e565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610da6575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610d9d9190611742565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e16575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610e0d9190611742565b60405180910390fd5b610e2183838361123d565b505050565b610e2e610c8b565b73ffffffffffffffffffffffffffffffffffffffff16610e4c6104b7565b73ffffffffffffffffffffffffffffffffffffffff1614610eab57610e6f610c8b565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610ea29190611742565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fe0575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610fd79190611742565b60405180910390fd5b610feb825f8361123d565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361105f575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016110569190611742565b60405180910390fd5b61106a5f838361123d565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036110de575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016110d59190611742565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361114e575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016111459190611742565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611237578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161122e91906115f7565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361128d578060025f8282546112819190611bdd565b9250508190555061135b565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611316578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161130d93929190611ba8565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113a2578060025f82825403925050819055506113ec565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161144991906115f7565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61149882611456565b6114a28185611460565b93506114b2818560208601611470565b6114bb8161147e565b840191505092915050565b5f6020820190508181035f8301526114de818461148e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611513826114ea565b9050919050565b61152381611509565b811461152d575f80fd5b50565b5f8135905061153e8161151a565b92915050565b5f819050919050565b61155681611544565b8114611560575f80fd5b50565b5f813590506115718161154d565b92915050565b5f806040838503121561158d5761158c6114e6565b5b5f61159a85828601611530565b92505060206115ab85828601611563565b9150509250929050565b5f8115159050919050565b6115c9816115b5565b82525050565b5f6020820190506115e25f8301846115c0565b92915050565b6115f181611544565b82525050565b5f60208201905061160a5f8301846115e8565b92915050565b5f805f60608486031215611627576116266114e6565b5b5f61163486828701611530565b935050602061164586828701611530565b925050604061165686828701611563565b9150509250925092565b5f60ff82169050919050565b61167581611660565b82525050565b5f60208201905061168e5f83018461166c565b92915050565b5f602082840312156116a9576116a86114e6565b5b5f6116b684828501611530565b91505092915050565b5f819050919050565b5f6116e26116dd6116d8846114ea565b6116bf565b6114ea565b9050919050565b5f6116f3826116c8565b9050919050565b5f611704826116e9565b9050919050565b611714816116fa565b82525050565b5f60208201905061172d5f83018461170b565b92915050565b61173c81611509565b82525050565b5f6020820190506117555f830184611733565b92915050565b5f61176582611509565b9050919050565b6117758161175b565b811461177f575f80fd5b50565b5f813590506117908161176c565b92915050565b5f80604083850312156117ac576117ab6114e6565b5b5f6117b985828601611782565b92505060206117ca85828601611563565b9150509250929050565b5f80604083850312156117ea576117e96114e6565b5b5f6117f785828601611530565b925050602061180885828601611530565b9150509250929050565b5f60208284031215611827576118266114e6565b5b5f61183484828501611563565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061188157607f821691505b6020821081036118945761189361183d565b5b50919050565b7f43616e6e6f7420776974686472617720494846000000000000000000000000005f82015250565b5f6118ce601383611460565b91506118d98261189a565b602082019050919050565b5f6020820190508181035f8301526118fb816118c2565b9050919050565b5f6040820190506119155f830185611733565b61192260208301846115e8565b9392505050565b611932816115b5565b811461193c575f80fd5b50565b5f8151905061194d81611929565b92915050565b5f60208284031215611968576119676114e6565b5b5f6119758482850161193f565b91505092915050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f6119b2600f83611460565b91506119bd8261197e565b602082019050919050565b5f6020820190508181035f8301526119df816119a6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a1d82611544565b9150611a2883611544565b9250828202611a3681611544565b91508282048414831517611a4d57611a4c6119e6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611a8b82611544565b9150611a9683611544565b925082611aa657611aa5611a54565b5b828204905092915050565b5f611abb82611544565b9150611ac683611544565b9250828203905081811115611ade57611add6119e6565b5b92915050565b7f466565207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f611b18601383611460565b9150611b2382611ae4565b602082019050919050565b5f6020820190508181035f830152611b4581611b0c565b9050919050565b5f604082019050611b5f5f8301856115e8565b611b6c60208301846115e8565b9392505050565b5f606082019050611b865f830186611733565b611b936020830185611733565b611ba060408301846115e8565b949350505050565b5f606082019050611bbb5f830186611733565b611bc860208301856115e8565b611bd560408301846115e8565b949350505050565b5f611be782611544565b9150611bf283611544565b9250828201905080821115611c0a57611c096119e6565b5b9291505056fea2646970667358221220a6a4d22e068dcc66e119945d1dcce3c49c795a5f79da9d9034bf290bfa3b404b64736f6c634300081a00330000000000000000000000003b9728bd65ca2c11a817ce39a6e91808cceef6fd
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610109575f3560e01c80638da5cb5b116100a0578063a9059cbb1161006f578063a9059cbb14610295578063dd62ed3e146102c5578063de0e9a3e146102f5578063ea598cb014610311578063f2fde38b1461032d57610109565b80638da5cb5b1461021f57806395d89b411461023d578063a001ecdd1461025b578063a1db97821461027957610109565b8063313ce567116100dc578063313ce567146101a957806370a08231146101c7578063715018a6146101f75780638c89af031461020157610109565b806306fdde031461010d578063095ea7b31461012b57806318160ddd1461015b57806323b872dd14610179575b5f80fd5b610115610349565b60405161012291906114c6565b60405180910390f35b61014560048036038101906101409190611577565b6103d9565b60405161015291906115cf565b60405180910390f35b6101636103fb565b60405161017091906115f7565b60405180910390f35b610193600480360381019061018e9190611610565b610404565b6040516101a091906115cf565b60405180910390f35b6101b1610432565b6040516101be919061167b565b60405180910390f35b6101e160048036038101906101dc9190611694565b61043a565b6040516101ee91906115f7565b60405180910390f35b6101ff61047f565b005b610209610492565b604051610216919061171a565b60405180910390f35b6102276104b7565b6040516102349190611742565b60405180910390f35b6102456104df565b60405161025291906114c6565b60405180910390f35b61026361056f565b60405161027091906115f7565b60405180910390f35b610293600480360381019061028e9190611796565b610575565b005b6102af60048036038101906102aa9190611577565b6106d1565b6040516102bc91906115cf565b60405180910390f35b6102df60048036038101906102da91906117d4565b6106f3565b6040516102ec91906115f7565b60405180910390f35b61030f600480360381019061030a9190611812565b610775565b005b61032b60048036038101906103269190611812565b6109bd565b005b61034760048036038101906103429190611694565b610c07565b005b6060600380546103589061186a565b80601f01602080910402602001604051908101604052809291908181526020018280546103849061186a565b80156103cf5780601f106103a6576101008083540402835291602001916103cf565b820191905f5260205f20905b8154815290600101906020018083116103b257829003601f168201915b5050505050905090565b5f806103e3610c8b565b90506103f0818585610c92565b600191505092915050565b5f600254905090565b5f8061040e610c8b565b905061041b858285610ca4565b610426858585610d36565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610487610e26565b6104905f610ead565b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546104ee9061186a565b80601f016020809104026020016040519081016040528092919081815260200182805461051a9061186a565b80156105655780601f1061053c57610100808354040283529160200191610565565b820191905f5260205f20905b81548152906001019060200180831161054857829003601f168201915b5050505050905090565b60075481565b61057d610e26565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361060c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610603906118e4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6106306104b7565b836040518363ffffffff1660e01b815260040161064e929190611902565b6020604051808303815f875af115801561066a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068e9190611953565b6106cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c4906119c8565b60405180910390fd5b5050565b5f806106db610c8b565b90506106e8818585610d36565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f6064600754836107869190611a13565b6107909190611a81565b90505f818361079f9190611ab1565b90506107ab3384610f70565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610807929190611902565b6020604051808303815f875af1158015610823573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108479190611953565b610886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087d906119c8565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6108cb6104b7565b846040518363ffffffff1660e01b81526004016108e9929190611902565b6020604051808303815f875af1158015610905573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109299190611953565b610968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095f90611b2e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167fe8e8d3915b94f03b4f3342716334ae94bd6f36775da7b263c908889b93d0574b84836040516109b0929190611b4c565b60405180910390a2505050565b5f6064600754836109ce9190611a13565b6109d89190611a81565b90505f81836109e79190611ab1565b905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401610a4793929190611b73565b6020604051808303815f875af1158015610a63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a879190611953565b610ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abd906119c8565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610b0b6104b7565b846040518363ffffffff1660e01b8152600401610b29929190611902565b6020604051808303815f875af1158015610b45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b699190611953565b610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f90611b2e565b60405180910390fd5b610bb23382610fef565b3373ffffffffffffffffffffffffffffffffffffffff167f18a5ed48bb0a697c64a5aef8f28cec1f29ab01da27a45c5f835099781ef1ea468483604051610bfa929190611b4c565b60405180910390a2505050565b610c0f610e26565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c7f575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610c769190611742565b60405180910390fd5b610c8881610ead565b50565b5f33905090565b610c9f838383600161106e565b505050565b5f610caf84846106f3565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d305781811015610d21578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610d1893929190611ba8565b60405180910390fd5b610d2f84848484035f61106e565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610da6575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610d9d9190611742565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e16575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610e0d9190611742565b60405180910390fd5b610e2183838361123d565b505050565b610e2e610c8b565b73ffffffffffffffffffffffffffffffffffffffff16610e4c6104b7565b73ffffffffffffffffffffffffffffffffffffffff1614610eab57610e6f610c8b565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610ea29190611742565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fe0575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610fd79190611742565b60405180910390fd5b610feb825f8361123d565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361105f575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016110569190611742565b60405180910390fd5b61106a5f838361123d565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036110de575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016110d59190611742565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361114e575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016111459190611742565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611237578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161122e91906115f7565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361128d578060025f8282546112819190611bdd565b9250508190555061135b565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611316578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161130d93929190611ba8565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113a2578060025f82825403925050819055506113ec565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161144991906115f7565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61149882611456565b6114a28185611460565b93506114b2818560208601611470565b6114bb8161147e565b840191505092915050565b5f6020820190508181035f8301526114de818461148e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611513826114ea565b9050919050565b61152381611509565b811461152d575f80fd5b50565b5f8135905061153e8161151a565b92915050565b5f819050919050565b61155681611544565b8114611560575f80fd5b50565b5f813590506115718161154d565b92915050565b5f806040838503121561158d5761158c6114e6565b5b5f61159a85828601611530565b92505060206115ab85828601611563565b9150509250929050565b5f8115159050919050565b6115c9816115b5565b82525050565b5f6020820190506115e25f8301846115c0565b92915050565b6115f181611544565b82525050565b5f60208201905061160a5f8301846115e8565b92915050565b5f805f60608486031215611627576116266114e6565b5b5f61163486828701611530565b935050602061164586828701611530565b925050604061165686828701611563565b9150509250925092565b5f60ff82169050919050565b61167581611660565b82525050565b5f60208201905061168e5f83018461166c565b92915050565b5f602082840312156116a9576116a86114e6565b5b5f6116b684828501611530565b91505092915050565b5f819050919050565b5f6116e26116dd6116d8846114ea565b6116bf565b6114ea565b9050919050565b5f6116f3826116c8565b9050919050565b5f611704826116e9565b9050919050565b611714816116fa565b82525050565b5f60208201905061172d5f83018461170b565b92915050565b61173c81611509565b82525050565b5f6020820190506117555f830184611733565b92915050565b5f61176582611509565b9050919050565b6117758161175b565b811461177f575f80fd5b50565b5f813590506117908161176c565b92915050565b5f80604083850312156117ac576117ab6114e6565b5b5f6117b985828601611782565b92505060206117ca85828601611563565b9150509250929050565b5f80604083850312156117ea576117e96114e6565b5b5f6117f785828601611530565b925050602061180885828601611530565b9150509250929050565b5f60208284031215611827576118266114e6565b5b5f61183484828501611563565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061188157607f821691505b6020821081036118945761189361183d565b5b50919050565b7f43616e6e6f7420776974686472617720494846000000000000000000000000005f82015250565b5f6118ce601383611460565b91506118d98261189a565b602082019050919050565b5f6020820190508181035f8301526118fb816118c2565b9050919050565b5f6040820190506119155f830185611733565b61192260208301846115e8565b9392505050565b611932816115b5565b811461193c575f80fd5b50565b5f8151905061194d81611929565b92915050565b5f60208284031215611968576119676114e6565b5b5f6119758482850161193f565b91505092915050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f6119b2600f83611460565b91506119bd8261197e565b602082019050919050565b5f6020820190508181035f8301526119df816119a6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a1d82611544565b9150611a2883611544565b9250828202611a3681611544565b91508282048414831517611a4d57611a4c6119e6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611a8b82611544565b9150611a9683611544565b925082611aa657611aa5611a54565b5b828204905092915050565b5f611abb82611544565b9150611ac683611544565b9250828203905081811115611ade57611add6119e6565b5b92915050565b7f466565207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f611b18601383611460565b9150611b2382611ae4565b602082019050919050565b5f6020820190508181035f830152611b4581611b0c565b9050919050565b5f604082019050611b5f5f8301856115e8565b611b6c60208301846115e8565b9392505050565b5f606082019050611b865f830186611733565b611b936020830185611733565b611ba060408301846115e8565b949350505050565b5f606082019050611bbb5f830186611733565b611bc860208301856115e8565b611bd560408301846115e8565b949350505050565b5f611be782611544565b9150611bf283611544565b9250828201905080821115611c0a57611c096119e6565b5b9291505056fea2646970667358221220a6a4d22e068dcc66e119945d1dcce3c49c795a5f79da9d9034bf290bfa3b404b64736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003b9728bd65ca2c11a817ce39a6e91808cceef6fd
-----Decoded View---------------
Arg [0] : _ihfToken (address): 0x3B9728bD65Ca2c11a817ce39A6e91808CceeF6FD
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000003b9728bd65ca2c11a817ce39a6e91808cceef6fd
Deployed Bytecode Sourcemap
25761:1488:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13190:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15483:190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14292:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16251:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14143:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14454:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24865:103;;;:::i;:::-;;25818:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24190:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13400:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25847:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27034:210;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14777:182;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15022:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26594:428;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26154:432;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25123:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13190:91;13235:13;13268:5;13261:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13190:91;:::o;15483:190::-;15556:4;15573:13;15589:12;:10;:12::i;:::-;15573:28;;15612:31;15621:5;15628:7;15637:5;15612:8;:31::i;:::-;15661:4;15654:11;;;15483:190;;;;:::o;14292:99::-;14344:7;14371:12;;14364:19;;14292:99;:::o;16251:249::-;16338:4;16355:15;16373:12;:10;:12::i;:::-;16355:30;;16396:37;16412:4;16418:7;16427:5;16396:15;:37::i;:::-;16444:26;16454:4;16460:2;16464:5;16444:9;:26::i;:::-;16488:4;16481:11;;;16251:249;;;;;:::o;14143:84::-;14192:5;14217:2;14210:9;;14143:84;:::o;14454:118::-;14519:7;14546:9;:18;14556:7;14546:18;;;;;;;;;;;;;;;;14539:25;;14454:118;;;:::o;24865:103::-;24076:13;:11;:13::i;:::-;24930:30:::1;24957:1;24930:18;:30::i;:::-;24865:103::o:0;25818:22::-;;;;;;;;;;;;;:::o;24190:87::-;24236:7;24263:6;;;;;;;;;;;24256:13;;24190:87;:::o;13400:95::-;13447:13;13480:7;13473:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13400:95;:::o;25847:32::-;;;;:::o;27034:210::-;24076:13;:11;:13::i;:::-;27134:8:::1;;;;;;;;;;;27125:17;;:5;:17;;::::0;27117:49:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27185:5;:14;;;27200:7;:5;:7::i;:::-;27209:6;27185:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27177:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;27034:210:::0;;:::o;14777:182::-;14846:4;14863:13;14879:12;:10;:12::i;:::-;14863:28;;14902:27;14912:5;14919:2;14923:5;14902:9;:27::i;:::-;14947:4;14940:11;;;14777:182;;;;:::o;15022:142::-;15102:7;15129:11;:18;15141:5;15129:18;;;;;;;;;;;;;;;:27;15148:7;15129:27;;;;;;;;;;;;;;;;15122:34;;15022:142;;;;:::o;26594:428::-;26650:11;26693:3;26677:13;;26664:10;:26;;;;:::i;:::-;:32;;;;:::i;:::-;26650:46;;26707:22;26745:3;26732:10;:16;;;;:::i;:::-;26707:41;;26761:29;26767:10;26779;26761:5;:29::i;:::-;26811:8;;;;;;;;;;;:17;;;26829:10;26841:14;26811:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26803:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26895:8;;;;;;;;;;;:17;;;26913:7;:5;:7::i;:::-;26922:3;26895:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26887:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;26975:10;26968:46;;;26987:10;26999:14;26968:46;;;;;;;:::i;:::-;;;;;;;;26639:383;;26594:428;:::o;26154:432::-;26207:11;26249:3;26233:13;;26221:9;:25;;;;:::i;:::-;:31;;;;:::i;:::-;26207:45;;26263:20;26298:3;26286:9;:15;;;;:::i;:::-;26263:38;;26322:8;;;;;;;;;;;:21;;;26344:10;26364:4;26371:9;26322:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26314:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;26420:8;;;;;;;;;;;:17;;;26438:7;:5;:7::i;:::-;26447:3;26420:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26412:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;26488:31;26494:10;26506:12;26488:5;:31::i;:::-;26542:10;26537:41;;;26554:9;26565:12;26537:41;;;;;;;:::i;:::-;;;;;;;;26196:390;;26154:432;:::o;25123:220::-;24076:13;:11;:13::i;:::-;25228:1:::1;25208:22;;:8;:22;;::::0;25204:93:::1;;25282:1;25254:31;;;;;;;;;;;:::i;:::-;;;;;;;;25204:93;25307:28;25326:8;25307:18;:28::i;:::-;25123:220:::0;:::o;4302:98::-;4355:7;4382:10;4375:17;;4302:98;:::o;20310:130::-;20395:37;20404:5;20411:7;20420:5;20427:4;20395:8;:37::i;:::-;20310:130;;;:::o;22026:487::-;22126:24;22153:25;22163:5;22170:7;22153:9;:25::i;:::-;22126:52;;22213:17;22193:16;:37;22189:317;;22270:5;22251:16;:24;22247:132;;;22330:7;22339:16;22357:5;22303:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;22247:132;22422:57;22431:5;22438:7;22466:5;22447:16;:24;22473:5;22422:8;:57::i;:::-;22189:317;22115:398;22026:487;;;:::o;16885:308::-;16985:1;16969:18;;:4;:18;;;16965:88;;17038:1;17011:30;;;;;;;;;;;:::i;:::-;;;;;;;;16965:88;17081:1;17067:16;;:2;:16;;;17063:88;;17136:1;17107:32;;;;;;;;;;;:::i;:::-;;;;;;;;17063:88;17161:24;17169:4;17175:2;17179:5;17161:7;:24::i;:::-;16885:308;;;:::o;24355:166::-;24426:12;:10;:12::i;:::-;24415:23;;:7;:5;:7::i;:::-;:23;;;24411:103;;24489:12;:10;:12::i;:::-;24462:40;;;;;;;;;;;:::i;:::-;;;;;;;;24411:103;24355:166::o;25503:191::-;25577:16;25596:6;;;;;;;;;;;25577:25;;25622:8;25613:6;;:17;;;;;;;;;;;;;;;;;;25677:8;25646:40;;25667:8;25646:40;;;;;;;;;;;;25566:128;25503:191;:::o;19546:211::-;19636:1;19617:21;;:7;:21;;;19613:91;;19689:1;19662:30;;;;;;;;;;;:::i;:::-;;;;;;;;19613:91;19714:35;19722:7;19739:1;19743:5;19714:7;:35::i;:::-;19546:211;;:::o;19005:213::-;19095:1;19076:21;;:7;:21;;;19072:93;;19150:1;19121:32;;;;;;;;;;;:::i;:::-;;;;;;;;19072:93;19175:35;19191:1;19195:7;19204:5;19175:7;:35::i;:::-;19005:213;;:::o;21291:443::-;21421:1;21404:19;;:5;:19;;;21400:91;;21476:1;21447:32;;;;;;;;;;;:::i;:::-;;;;;;;;21400:91;21524:1;21505:21;;:7;:21;;;21501:92;;21578:1;21550:31;;;;;;;;;;;:::i;:::-;;;;;;;;21501:92;21633:5;21603:11;:18;21615:5;21603:18;;;;;;;;;;;;;;;:27;21622:7;21603:27;;;;;;;;;;;;;;;:35;;;;21653:9;21649:78;;;21700:7;21684:31;;21693:5;21684:31;;;21709:5;21684:31;;;;;;:::i;:::-;;;;;;;;21649:78;21291:443;;;;:::o;17517:1135::-;17623:1;17607:18;;:4;:18;;;17603:552;;17761:5;17745:12;;:21;;;;;;;:::i;:::-;;;;;;;;17603:552;;;17799:19;17821:9;:15;17831:4;17821:15;;;;;;;;;;;;;;;;17799:37;;17869:5;17855:11;:19;17851:117;;;17927:4;17933:11;17946:5;17902:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;17851:117;18123:5;18109:11;:19;18091:9;:15;18101:4;18091:15;;;;;;;;;;;;;;;:37;;;;17784:371;17603:552;18185:1;18171:16;;:2;:16;;;18167:435;;18353:5;18337:12;;:21;;;;;;;;;;;18167:435;;;18570:5;18553:9;:13;18563:2;18553:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;18167:435;18634:2;18619:25;;18628:4;18619:25;;;18638:5;18619:25;;;;;;:::i;:::-;;;;;;;;17517:1135;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:60::-;5109:3;5130:5;5123:12;;5081:60;;;:::o;5147:142::-;5197:9;5230:53;5248:34;5257:24;5275:5;5257:24;:::i;:::-;5248:34;:::i;:::-;5230:53;:::i;:::-;5217:66;;5147:142;;;:::o;5295:126::-;5345:9;5378:37;5409:5;5378:37;:::i;:::-;5365:50;;5295:126;;;:::o;5427:139::-;5490:9;5523:37;5554:5;5523:37;:::i;:::-;5510:50;;5427:139;;;:::o;5572:157::-;5672:50;5716:5;5672:50;:::i;:::-;5667:3;5660:63;5572:157;;:::o;5735:248::-;5841:4;5879:2;5868:9;5864:18;5856:26;;5892:84;5973:1;5962:9;5958:17;5949:6;5892:84;:::i;:::-;5735:248;;;;:::o;5989:118::-;6076:24;6094:5;6076:24;:::i;:::-;6071:3;6064:37;5989:118;;:::o;6113:222::-;6206:4;6244:2;6233:9;6229:18;6221:26;;6257:71;6325:1;6314:9;6310:17;6301:6;6257:71;:::i;:::-;6113:222;;;;:::o;6341:109::-;6391:7;6420:24;6438:5;6420:24;:::i;:::-;6409:35;;6341:109;;;:::o;6456:148::-;6542:37;6573:5;6542:37;:::i;:::-;6535:5;6532:48;6522:76;;6594:1;6591;6584:12;6522:76;6456:148;:::o;6610:165::-;6669:5;6707:6;6694:20;6685:29;;6723:46;6763:5;6723:46;:::i;:::-;6610:165;;;;:::o;6781:500::-;6862:6;6870;6919:2;6907:9;6898:7;6894:23;6890:32;6887:119;;;6925:79;;:::i;:::-;6887:119;7045:1;7070:66;7128:7;7119:6;7108:9;7104:22;7070:66;:::i;:::-;7060:76;;7016:130;7185:2;7211:53;7256:7;7247:6;7236:9;7232:22;7211:53;:::i;:::-;7201:63;;7156:118;6781:500;;;;;:::o;7287:474::-;7355:6;7363;7412:2;7400:9;7391:7;7387:23;7383:32;7380:119;;;7418:79;;:::i;:::-;7380:119;7538:1;7563:53;7608:7;7599:6;7588:9;7584:22;7563:53;:::i;:::-;7553:63;;7509:117;7665:2;7691:53;7736:7;7727:6;7716:9;7712:22;7691:53;:::i;:::-;7681:63;;7636:118;7287:474;;;;;:::o;7767:329::-;7826:6;7875:2;7863:9;7854:7;7850:23;7846:32;7843:119;;;7881:79;;:::i;:::-;7843:119;8001:1;8026:53;8071:7;8062:6;8051:9;8047:22;8026:53;:::i;:::-;8016:63;;7972:117;7767:329;;;;:::o;8102:180::-;8150:77;8147:1;8140:88;8247:4;8244:1;8237:15;8271:4;8268:1;8261:15;8288:320;8332:6;8369:1;8363:4;8359:12;8349:22;;8416:1;8410:4;8406:12;8437:18;8427:81;;8493:4;8485:6;8481:17;8471:27;;8427:81;8555:2;8547:6;8544:14;8524:18;8521:38;8518:84;;8574:18;;:::i;:::-;8518:84;8339:269;8288:320;;;:::o;8614:169::-;8754:21;8750:1;8742:6;8738:14;8731:45;8614:169;:::o;8789:366::-;8931:3;8952:67;9016:2;9011:3;8952:67;:::i;:::-;8945:74;;9028:93;9117:3;9028:93;:::i;:::-;9146:2;9141:3;9137:12;9130:19;;8789:366;;;:::o;9161:419::-;9327:4;9365:2;9354:9;9350:18;9342:26;;9414:9;9408:4;9404:20;9400:1;9389:9;9385:17;9378:47;9442:131;9568:4;9442:131;:::i;:::-;9434:139;;9161:419;;;:::o;9586:332::-;9707:4;9745:2;9734:9;9730:18;9722:26;;9758:71;9826:1;9815:9;9811:17;9802:6;9758:71;:::i;:::-;9839:72;9907:2;9896:9;9892:18;9883:6;9839:72;:::i;:::-;9586:332;;;;;:::o;9924:116::-;9994:21;10009:5;9994:21;:::i;:::-;9987:5;9984:32;9974:60;;10030:1;10027;10020:12;9974:60;9924:116;:::o;10046:137::-;10100:5;10131:6;10125:13;10116:22;;10147:30;10171:5;10147:30;:::i;:::-;10046:137;;;;:::o;10189:345::-;10256:6;10305:2;10293:9;10284:7;10280:23;10276:32;10273:119;;;10311:79;;:::i;:::-;10273:119;10431:1;10456:61;10509:7;10500:6;10489:9;10485:22;10456:61;:::i;:::-;10446:71;;10402:125;10189:345;;;;:::o;10540:165::-;10680:17;10676:1;10668:6;10664:14;10657:41;10540:165;:::o;10711:366::-;10853:3;10874:67;10938:2;10933:3;10874:67;:::i;:::-;10867:74;;10950:93;11039:3;10950:93;:::i;:::-;11068:2;11063:3;11059:12;11052:19;;10711:366;;;:::o;11083:419::-;11249:4;11287:2;11276:9;11272:18;11264:26;;11336:9;11330:4;11326:20;11322:1;11311:9;11307:17;11300:47;11364:131;11490:4;11364:131;:::i;:::-;11356:139;;11083:419;;;:::o;11508:180::-;11556:77;11553:1;11546:88;11653:4;11650:1;11643:15;11677:4;11674:1;11667:15;11694:410;11734:7;11757:20;11775:1;11757:20;:::i;:::-;11752:25;;11791:20;11809:1;11791:20;:::i;:::-;11786:25;;11846:1;11843;11839:9;11868:30;11886:11;11868:30;:::i;:::-;11857:41;;12047:1;12038:7;12034:15;12031:1;12028:22;12008:1;12001:9;11981:83;11958:139;;12077:18;;:::i;:::-;11958:139;11742:362;11694:410;;;;:::o;12110:180::-;12158:77;12155:1;12148:88;12255:4;12252:1;12245:15;12279:4;12276:1;12269:15;12296:185;12336:1;12353:20;12371:1;12353:20;:::i;:::-;12348:25;;12387:20;12405:1;12387:20;:::i;:::-;12382:25;;12426:1;12416:35;;12431:18;;:::i;:::-;12416:35;12473:1;12470;12466:9;12461:14;;12296:185;;;;:::o;12487:194::-;12527:4;12547:20;12565:1;12547:20;:::i;:::-;12542:25;;12581:20;12599:1;12581:20;:::i;:::-;12576:25;;12625:1;12622;12618:9;12610:17;;12649:1;12643:4;12640:11;12637:37;;;12654:18;;:::i;:::-;12637:37;12487:194;;;;:::o;12687:169::-;12827:21;12823:1;12815:6;12811:14;12804:45;12687:169;:::o;12862:366::-;13004:3;13025:67;13089:2;13084:3;13025:67;:::i;:::-;13018:74;;13101:93;13190:3;13101:93;:::i;:::-;13219:2;13214:3;13210:12;13203:19;;12862:366;;;:::o;13234:419::-;13400:4;13438:2;13427:9;13423:18;13415:26;;13487:9;13481:4;13477:20;13473:1;13462:9;13458:17;13451:47;13515:131;13641:4;13515:131;:::i;:::-;13507:139;;13234:419;;;:::o;13659:332::-;13780:4;13818:2;13807:9;13803:18;13795:26;;13831:71;13899:1;13888:9;13884:17;13875:6;13831:71;:::i;:::-;13912:72;13980:2;13969:9;13965:18;13956:6;13912:72;:::i;:::-;13659:332;;;;;:::o;13997:442::-;14146:4;14184:2;14173:9;14169:18;14161:26;;14197:71;14265:1;14254:9;14250:17;14241:6;14197:71;:::i;:::-;14278:72;14346:2;14335:9;14331:18;14322:6;14278:72;:::i;:::-;14360;14428:2;14417:9;14413:18;14404:6;14360:72;:::i;:::-;13997:442;;;;;;:::o;14445:::-;14594:4;14632:2;14621:9;14617:18;14609:26;;14645:71;14713:1;14702:9;14698:17;14689:6;14645:71;:::i;:::-;14726:72;14794:2;14783:9;14779:18;14770:6;14726:72;:::i;:::-;14808;14876:2;14865:9;14861:18;14852:6;14808:72;:::i;:::-;14445:442;;;;;;:::o;14893:191::-;14933:3;14952:20;14970:1;14952:20;:::i;:::-;14947:25;;14986:20;15004:1;14986:20;:::i;:::-;14981:25;;15029:1;15026;15022:9;15015:16;;15050:3;15047:1;15044:10;15041:36;;;15057:18;;:::i;:::-;15041:36;14893:191;;;;:::o
Swarm Source
ipfs://a6a4d22e068dcc66e119945d1dcce3c49c795a5f79da9d9034bf290bfa3b404b
[ 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.