Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60806040 | 14970831 | 884 days ago | IN | 0 ETH | 0.07568272 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
OtoCoToken
Compiler Version
v0.8.3+commit.8d00100c
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-06-16 */ // Sources flattened with hardhat v2.9.3 https://hardhat.org // File @openzeppelin/contracts/token/ERC20/[email protected] // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) 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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, 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); } // File @openzeppelin/contracts/token/ERC20/extensions/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @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); } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/token/ERC20/[email protected] // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @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}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * 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. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * 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 override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override 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 value {ERC20} uses, unless this function is * 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 override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override 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 `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` 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 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); 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 `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, _allowances[owner][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = _allowances[owner][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * 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. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` 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. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Spend `amount` form the allowance of `owner` toward `spender`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // File @openzeppelin/contracts-upgradeable/utils/[email protected] // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library AddressUpgradeable { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File @openzeppelin/contracts-upgradeable/proxy/utils/[email protected] // OpenZeppelin Contracts (last updated v4.6.0) (proxy/utils/Initializable.sol) pragma solidity ^0.8.2; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. * * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be * reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in * case an upgrade adds a module that needs to be initialized. * * For example: * * [.hljs-theme-light.nopadding] * ``` * contract MyToken is ERC20Upgradeable { * function initialize() initializer public { * __ERC20_init("MyToken", "MTK"); * } * } * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { * function initializeV2() reinitializer(2) public { * __ERC20Permit_init("MyToken"); * } * } * ``` * * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. * * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. * * [CAUTION] * ==== * Avoid leaving a contract uninitialized. * * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: * * [.hljs-theme-light.nopadding] * ``` * /// @custom:oz-upgrades-unsafe-allow constructor * constructor() { * _disableInitializers(); * } * ``` * ==== */ abstract contract Initializable { /** * @dev Indicates that the contract has been initialized. * @custom:oz-retyped-from bool */ uint8 private _initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private _initializing; /** * @dev Triggered when the contract has been initialized or reinitialized. */ event Initialized(uint8 version); /** * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope, * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`. */ modifier initializer() { bool isTopLevelCall = _setInitializedVersion(1); if (isTopLevelCall) { _initializing = true; } _; if (isTopLevelCall) { _initializing = false; emit Initialized(1); } } /** * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be * used to initialize parent contracts. * * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original * initialization step. This is essential to configure modules that are added through upgrades and that require * initialization. * * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in * a contract, executing them in the right order is up to the developer or operator. */ modifier reinitializer(uint8 version) { bool isTopLevelCall = _setInitializedVersion(version); if (isTopLevelCall) { _initializing = true; } _; if (isTopLevelCall) { _initializing = false; emit Initialized(version); } } /** * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the * {initializer} and {reinitializer} modifiers, directly or indirectly. */ modifier onlyInitializing() { require(_initializing, "Initializable: contract is not initializing"); _; } /** * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call. * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized * to any version. It is recommended to use this to lock implementation contracts that are designed to be called * through proxies. */ function _disableInitializers() internal virtual { _setInitializedVersion(type(uint8).max); } function _setInitializedVersion(uint8 version) private returns (bool) { // If the contract is initializing we ignore whether _initialized is set in order to support multiple // inheritance patterns, but we only do this in the context of a constructor, and for the lowest level // of initializers, because in other contexts the contract may have been reentered. if (_initializing) { require( version == 1 && !AddressUpgradeable.isContract(address(this)), "Initializable: contract is already initialized" ); return false; } else { require(_initialized < version, "Initializable: contract is already initialized"); _initialized = version; return true; } } } // File contracts/utils/OtoCoToken.sol pragma solidity ^0.8.0; contract OtoCoToken is ERC20, Initializable { // uint256 private _totalSupply; string private __name; string private __symbol; constructor() ERC20("", "") { _disableInitializers(); } function initialize (string memory name_, string memory symbol_, uint256 supply_, address member_) public initializer { __name = name_; __symbol = symbol_; _mint(member_, supply_); } /** * @dev Returns the name of the token. */ function name() public view override returns (string memory) { return __name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view override returns (string memory) { return __symbol; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","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":[{"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":"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":[],"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":[{"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":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"supply_","type":"uint256"},{"internalType":"address","name":"member_","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"amount","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":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051806020016040528060008152506040518060200160405280600081525081600390805190602001906200004a929190620001be565b50806004908051906020019062000063929190620001be565b505050620000766200007c60201b60201c565b6200037c565b6200008e60ff6200009160201b60201c565b50565b6000600560019054906101000a900460ff16156200011c5760018260ff16148015620000d05750620000ce306200019b60201b620007751760201c565b155b62000112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001099062000295565b60405180910390fd5b6000905062000196565b8160ff16600560009054906101000a900460ff1660ff161062000176576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200016d9062000295565b60405180910390fd5b81600560006101000a81548160ff021916908360ff160217905550600190505b919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054620001cc90620002c8565b90600052602060002090601f016020900481019282620001f057600085556200023c565b82601f106200020b57805160ff19168380011785556200023c565b828001600101855582156200023c579182015b828111156200023b5782518255916020019190600101906200021e565b5b5090506200024b91906200024f565b5090565b5b808211156200026a57600081600090555060010162000250565b5090565b60006200027d602e83620002b7565b91506200028a826200032d565b604082019050919050565b60006020820190508181036000830152620002b0816200026e565b9050919050565b600082825260208201905092915050565b60006002820490506001821680620002e157607f821691505b60208210811415620002f857620002f7620002fe565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b611a3d806200038c6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146101a357806395d89b41146101d3578063a457c2d7146101f1578063a9059cbb14610221578063bd3a13f614610251578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190611374565b60405180910390f35b6100f160048036038101906100ec91906110bf565b61032f565b6040516100fe919061133e565b60405180910390f35b61010f610352565b60405161011c91906114b6565b60405180910390f35b61013f600480360381019061013a9190611070565b61035c565b60405161014c919061133e565b60405180910390f35b61015d61038b565b60405161016a91906114d1565b60405180910390f35b61018d600480360381019061018891906110bf565b610394565b60405161019a919061133e565b60405180910390f35b6101bd60048036038101906101b8919061100b565b61043e565b6040516101ca91906114b6565b60405180910390f35b6101db610486565b6040516101e89190611374565b60405180910390f35b61020b600480360381019061020691906110bf565b610518565b604051610218919061133e565b60405180910390f35b61023b600480360381019061023691906110bf565b610602565b604051610248919061133e565b60405180910390f35b61026b600480360381019061026691906110fb565b610625565b005b61028760048036038101906102829190611034565b6106ee565b60405161029491906114b6565b60405180910390f35b6060600680546102ac9061165d565b80601f01602080910402602001604051908101604052809291908181526020018280546102d89061165d565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a610798565b90506103478185856107a0565b600191505092915050565b6000600254905090565b600080610367610798565b905061037485828561096b565b61037f8585856109f7565b60019150509392505050565b60006012905090565b60008061039f610798565b9050610433818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461042e919061155e565b6107a0565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600780546104959061165d565b80601f01602080910402602001604051908101604052809291908181526020018280546104c19061165d565b801561050e5780601f106104e35761010080835404028352916020019161050e565b820191906000526020600020905b8154815290600101906020018083116104f157829003601f168201915b5050505050905090565b600080610523610798565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838110156105e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e090611476565b60405180910390fd5b6105f682868684036107a0565b60019250505092915050565b60008061060d610798565b905061061a8185856109f7565b600191505092915050565b60006106316001610c78565b90508015610655576001600560016101000a81548160ff0219169083151502179055505b846006908051906020019061066b929190610ed6565b508360079080519060200190610682929190610ed6565b5061068d8284610d6c565b80156106e7576000600560016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516106de9190611359565b60405180910390a15b5050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080790611456565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610880576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610877906113b6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161095e91906114b6565b60405180910390a3505050565b600061097784846106ee565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109f157818110156109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da906113d6565b60405180910390fd5b6109f084848484036107a0565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5e90611436565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ace90611396565b60405180910390fd5b610ae2838383610ecc565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5f906113f6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bfb919061155e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c5f91906114b6565b60405180910390a3610c72848484610ed1565b50505050565b6000600560019054906101000a900460ff1615610cf05760018260ff16148015610ca85750610ca630610775565b155b610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90611416565b60405180910390fd5b60009050610d67565b8160ff16600560009054906101000a900460ff1660ff1610610d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3e90611416565b60405180910390fd5b81600560006101000a81548160ff021916908360ff160217905550600190505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd390611496565b60405180910390fd5b610de860008383610ecc565b8060026000828254610dfa919061155e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e4f919061155e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610eb491906114b6565b60405180910390a3610ec860008383610ed1565b5050565b505050565b505050565b828054610ee29061165d565b90600052602060002090601f016020900481019282610f045760008555610f4b565b82601f10610f1d57805160ff1916838001178555610f4b565b82800160010185558215610f4b579182015b82811115610f4a578251825591602001919060010190610f2f565b5b509050610f589190610f5c565b5090565b5b80821115610f75576000816000905550600101610f5d565b5090565b6000610f8c610f8784611511565b6114ec565b905082815260208101848484011115610fa457600080fd5b610faf84828561161b565b509392505050565b600081359050610fc6816119d9565b92915050565b600082601f830112610fdd57600080fd5b8135610fed848260208601610f79565b91505092915050565b600081359050611005816119f0565b92915050565b60006020828403121561101d57600080fd5b600061102b84828501610fb7565b91505092915050565b6000806040838503121561104757600080fd5b600061105585828601610fb7565b925050602061106685828601610fb7565b9150509250929050565b60008060006060848603121561108557600080fd5b600061109386828701610fb7565b93505060206110a486828701610fb7565b92505060406110b586828701610ff6565b9150509250925092565b600080604083850312156110d257600080fd5b60006110e085828601610fb7565b92505060206110f185828601610ff6565b9150509250929050565b6000806000806080858703121561111157600080fd5b600085013567ffffffffffffffff81111561112b57600080fd5b61113787828801610fcc565b945050602085013567ffffffffffffffff81111561115457600080fd5b61116087828801610fcc565b935050604061117187828801610ff6565b925050606061118287828801610fb7565b91505092959194509250565b611197816115c6565b82525050565b6111a681611609565b82525050565b60006111b782611542565b6111c1818561154d565b93506111d181856020860161162a565b6111da8161174d565b840191505092915050565b60006111f260238361154d565b91506111fd8261175e565b604082019050919050565b600061121560228361154d565b9150611220826117ad565b604082019050919050565b6000611238601d8361154d565b9150611243826117fc565b602082019050919050565b600061125b60268361154d565b915061126682611825565b604082019050919050565b600061127e602e8361154d565b915061128982611874565b604082019050919050565b60006112a160258361154d565b91506112ac826118c3565b604082019050919050565b60006112c460248361154d565b91506112cf82611912565b604082019050919050565b60006112e760258361154d565b91506112f282611961565b604082019050919050565b600061130a601f8361154d565b9150611315826119b0565b602082019050919050565b611329816115f2565b82525050565b611338816115fc565b82525050565b6000602082019050611353600083018461118e565b92915050565b600060208201905061136e600083018461119d565b92915050565b6000602082019050818103600083015261138e81846111ac565b905092915050565b600060208201905081810360008301526113af816111e5565b9050919050565b600060208201905081810360008301526113cf81611208565b9050919050565b600060208201905081810360008301526113ef8161122b565b9050919050565b6000602082019050818103600083015261140f8161124e565b9050919050565b6000602082019050818103600083015261142f81611271565b9050919050565b6000602082019050818103600083015261144f81611294565b9050919050565b6000602082019050818103600083015261146f816112b7565b9050919050565b6000602082019050818103600083015261148f816112da565b9050919050565b600060208201905081810360008301526114af816112fd565b9050919050565b60006020820190506114cb6000830184611320565b92915050565b60006020820190506114e6600083018461132f565b92915050565b60006114f6611507565b9050611502828261168f565b919050565b6000604051905090565b600067ffffffffffffffff82111561152c5761152b61171e565b5b6115358261174d565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000611569826115f2565b9150611574836115f2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156115a9576115a86116c0565b5b828201905092915050565b60006115bf826115d2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611614826115fc565b9050919050565b82818337600083830152505050565b60005b8381101561164857808201518184015260208101905061162d565b83811115611657576000848401525b50505050565b6000600282049050600182168061167557607f821691505b60208210811415611689576116886116ef565b5b50919050565b6116988261174d565b810181811067ffffffffffffffff821117156116b7576116b661171e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6119e2816115b4565b81146119ed57600080fd5b50565b6119f9816115f2565b8114611a0457600080fd5b5056fea26469706673582212204ba2b15d08d7b65b6a4e71e30c03bc696ffd025ee066d7dd31525a7746d7b64864736f6c63430008030033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146101a357806395d89b41146101d3578063a457c2d7146101f1578063a9059cbb14610221578063bd3a13f614610251578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190611374565b60405180910390f35b6100f160048036038101906100ec91906110bf565b61032f565b6040516100fe919061133e565b60405180910390f35b61010f610352565b60405161011c91906114b6565b60405180910390f35b61013f600480360381019061013a9190611070565b61035c565b60405161014c919061133e565b60405180910390f35b61015d61038b565b60405161016a91906114d1565b60405180910390f35b61018d600480360381019061018891906110bf565b610394565b60405161019a919061133e565b60405180910390f35b6101bd60048036038101906101b8919061100b565b61043e565b6040516101ca91906114b6565b60405180910390f35b6101db610486565b6040516101e89190611374565b60405180910390f35b61020b600480360381019061020691906110bf565b610518565b604051610218919061133e565b60405180910390f35b61023b600480360381019061023691906110bf565b610602565b604051610248919061133e565b60405180910390f35b61026b600480360381019061026691906110fb565b610625565b005b61028760048036038101906102829190611034565b6106ee565b60405161029491906114b6565b60405180910390f35b6060600680546102ac9061165d565b80601f01602080910402602001604051908101604052809291908181526020018280546102d89061165d565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a610798565b90506103478185856107a0565b600191505092915050565b6000600254905090565b600080610367610798565b905061037485828561096b565b61037f8585856109f7565b60019150509392505050565b60006012905090565b60008061039f610798565b9050610433818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461042e919061155e565b6107a0565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600780546104959061165d565b80601f01602080910402602001604051908101604052809291908181526020018280546104c19061165d565b801561050e5780601f106104e35761010080835404028352916020019161050e565b820191906000526020600020905b8154815290600101906020018083116104f157829003601f168201915b5050505050905090565b600080610523610798565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838110156105e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e090611476565b60405180910390fd5b6105f682868684036107a0565b60019250505092915050565b60008061060d610798565b905061061a8185856109f7565b600191505092915050565b60006106316001610c78565b90508015610655576001600560016101000a81548160ff0219169083151502179055505b846006908051906020019061066b929190610ed6565b508360079080519060200190610682929190610ed6565b5061068d8284610d6c565b80156106e7576000600560016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516106de9190611359565b60405180910390a15b5050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080790611456565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610880576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610877906113b6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161095e91906114b6565b60405180910390a3505050565b600061097784846106ee565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109f157818110156109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da906113d6565b60405180910390fd5b6109f084848484036107a0565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5e90611436565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ace90611396565b60405180910390fd5b610ae2838383610ecc565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5f906113f6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bfb919061155e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c5f91906114b6565b60405180910390a3610c72848484610ed1565b50505050565b6000600560019054906101000a900460ff1615610cf05760018260ff16148015610ca85750610ca630610775565b155b610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90611416565b60405180910390fd5b60009050610d67565b8160ff16600560009054906101000a900460ff1660ff1610610d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3e90611416565b60405180910390fd5b81600560006101000a81548160ff021916908360ff160217905550600190505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd390611496565b60405180910390fd5b610de860008383610ecc565b8060026000828254610dfa919061155e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e4f919061155e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610eb491906114b6565b60405180910390a3610ec860008383610ed1565b5050565b505050565b505050565b828054610ee29061165d565b90600052602060002090601f016020900481019282610f045760008555610f4b565b82601f10610f1d57805160ff1916838001178555610f4b565b82800160010185558215610f4b579182015b82811115610f4a578251825591602001919060010190610f2f565b5b509050610f589190610f5c565b5090565b5b80821115610f75576000816000905550600101610f5d565b5090565b6000610f8c610f8784611511565b6114ec565b905082815260208101848484011115610fa457600080fd5b610faf84828561161b565b509392505050565b600081359050610fc6816119d9565b92915050565b600082601f830112610fdd57600080fd5b8135610fed848260208601610f79565b91505092915050565b600081359050611005816119f0565b92915050565b60006020828403121561101d57600080fd5b600061102b84828501610fb7565b91505092915050565b6000806040838503121561104757600080fd5b600061105585828601610fb7565b925050602061106685828601610fb7565b9150509250929050565b60008060006060848603121561108557600080fd5b600061109386828701610fb7565b93505060206110a486828701610fb7565b92505060406110b586828701610ff6565b9150509250925092565b600080604083850312156110d257600080fd5b60006110e085828601610fb7565b92505060206110f185828601610ff6565b9150509250929050565b6000806000806080858703121561111157600080fd5b600085013567ffffffffffffffff81111561112b57600080fd5b61113787828801610fcc565b945050602085013567ffffffffffffffff81111561115457600080fd5b61116087828801610fcc565b935050604061117187828801610ff6565b925050606061118287828801610fb7565b91505092959194509250565b611197816115c6565b82525050565b6111a681611609565b82525050565b60006111b782611542565b6111c1818561154d565b93506111d181856020860161162a565b6111da8161174d565b840191505092915050565b60006111f260238361154d565b91506111fd8261175e565b604082019050919050565b600061121560228361154d565b9150611220826117ad565b604082019050919050565b6000611238601d8361154d565b9150611243826117fc565b602082019050919050565b600061125b60268361154d565b915061126682611825565b604082019050919050565b600061127e602e8361154d565b915061128982611874565b604082019050919050565b60006112a160258361154d565b91506112ac826118c3565b604082019050919050565b60006112c460248361154d565b91506112cf82611912565b604082019050919050565b60006112e760258361154d565b91506112f282611961565b604082019050919050565b600061130a601f8361154d565b9150611315826119b0565b602082019050919050565b611329816115f2565b82525050565b611338816115fc565b82525050565b6000602082019050611353600083018461118e565b92915050565b600060208201905061136e600083018461119d565b92915050565b6000602082019050818103600083015261138e81846111ac565b905092915050565b600060208201905081810360008301526113af816111e5565b9050919050565b600060208201905081810360008301526113cf81611208565b9050919050565b600060208201905081810360008301526113ef8161122b565b9050919050565b6000602082019050818103600083015261140f8161124e565b9050919050565b6000602082019050818103600083015261142f81611271565b9050919050565b6000602082019050818103600083015261144f81611294565b9050919050565b6000602082019050818103600083015261146f816112b7565b9050919050565b6000602082019050818103600083015261148f816112da565b9050919050565b600060208201905081810360008301526114af816112fd565b9050919050565b60006020820190506114cb6000830184611320565b92915050565b60006020820190506114e6600083018461132f565b92915050565b60006114f6611507565b9050611502828261168f565b919050565b6000604051905090565b600067ffffffffffffffff82111561152c5761152b61171e565b5b6115358261174d565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000611569826115f2565b9150611574836115f2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156115a9576115a86116c0565b5b828201905092915050565b60006115bf826115d2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611614826115fc565b9050919050565b82818337600083830152505050565b60005b8381101561164857808201518184015260208101905061162d565b83811115611657576000848401525b50505050565b6000600282049050600182168061167557607f821691505b60208210811415611689576116886116ef565b5b50919050565b6116988261174d565b810181811067ffffffffffffffff821117156116b7576116b661171e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6119e2816115b4565b81146119ed57600080fd5b50565b6119f9816115f2565b8114611a0457600080fd5b5056fea26469706673582212204ba2b15d08d7b65b6a4e71e30c03bc696ffd025ee066d7dd31525a7746d7b64864736f6c63430008030033
Deployed Bytecode Sourcemap
31444:824:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31956:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9113:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7882:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9894:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7724:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10598:240;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8053:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32168:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11341:438;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8386:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31672:214;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8642:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31956:93;32002:13;32035:6;32028:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31956:93;:::o;9113:201::-;9196:4;9213:13;9229:12;:10;:12::i;:::-;9213:28;;9252:32;9261:5;9268:7;9277:6;9252:8;:32::i;:::-;9302:4;9295:11;;;9113:201;;;;:::o;7882:108::-;7943:7;7970:12;;7963:19;;7882:108;:::o;9894:295::-;10025:4;10042:15;10060:12;:10;:12::i;:::-;10042:30;;10083:38;10099:4;10105:7;10114:6;10083:15;:38::i;:::-;10132:27;10142:4;10148:2;10152:6;10132:9;:27::i;:::-;10177:4;10170:11;;;9894:295;;;;;:::o;7724:93::-;7782:5;7807:2;7800:9;;7724:93;:::o;10598:240::-;10686:4;10703:13;10719:12;:10;:12::i;:::-;10703:28;;10742:66;10751:5;10758:7;10797:10;10767:11;:18;10779:5;10767:18;;;;;;;;;;;;;;;:27;10786:7;10767:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;10742:8;:66::i;:::-;10826:4;10819:11;;;10598:240;;;;:::o;8053:127::-;8127:7;8154:9;:18;8164:7;8154:18;;;;;;;;;;;;;;;;8147:25;;8053:127;;;:::o;32168:97::-;32216:13;32249:8;32242:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32168:97;:::o;11341:438::-;11434:4;11451:13;11467:12;:10;:12::i;:::-;11451:28;;11490:24;11517:11;:18;11529:5;11517:18;;;;;;;;;;;;;;;:27;11536:7;11517:27;;;;;;;;;;;;;;;;11490:54;;11583:15;11563:16;:35;;11555:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11676:60;11685:5;11692:7;11720:15;11701:16;:34;11676:8;:60::i;:::-;11767:4;11760:11;;;;11341:438;;;;:::o;8386:193::-;8465:4;8482:13;8498:12;:10;:12::i;:::-;8482:28;;8521;8531:5;8538:2;8542:6;8521:9;:28::i;:::-;8567:4;8560:11;;;8386:193;;;;:::o;31672:214::-;28313:19;28335:25;28358:1;28335:22;:25::i;:::-;28313:47;;28375:14;28371:67;;;28422:4;28406:13;;:20;;;;;;;;;;;;;;;;;;28371:67;31810:5:::1;31801:6;:14;;;;;;;;;;;;:::i;:::-;;31837:7;31826:8;:18;;;;;;;;;;;;:::i;:::-;;31855:23;31861:7;31870;31855:5;:23::i;:::-;28464:14:::0;28460:102;;;28511:5;28495:13;;:21;;;;;;;;;;;;;;;;;;28536:14;28548:1;28536:14;;;;;;:::i;:::-;;;;;;;;28460:102;31672:214;;;;;:::o;8642:151::-;8731:7;8758:11;:18;8770:5;8758:18;;;;;;;;;;;;;;;:27;8777:7;8758:27;;;;;;;;;;;;;;;;8751:34;;8642:151;;;;:::o;18828:326::-;18888:4;19145:1;19123:7;:19;;;:23;19116:30;;18828:326;;;:::o;4400:98::-;4453:7;4480:10;4473:17;;4400:98;:::o;14977:380::-;15130:1;15113:19;;:5;:19;;;;15105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15211:1;15192:21;;:7;:21;;;;15184:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15295:6;15265:11;:18;15277:5;15265:18;;;;;;;;;;;;;;;:27;15284:7;15265:27;;;;;;;;;;;;;;;:36;;;;15333:7;15317:32;;15326:5;15317:32;;;15342:6;15317:32;;;;;;:::i;:::-;;;;;;;;14977:380;;;:::o;15644:453::-;15779:24;15806:25;15816:5;15823:7;15806:9;:25::i;:::-;15779:52;;15866:17;15846:16;:37;15842:248;;15928:6;15908:16;:26;;15900:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16012:51;16021:5;16028:7;16056:6;16037:16;:25;16012:8;:51::i;:::-;15842:248;15644:453;;;;:::o;12258:671::-;12405:1;12389:18;;:4;:18;;;;12381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12482:1;12468:16;;:2;:16;;;;12460:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12537:38;12558:4;12564:2;12568:6;12537:20;:38::i;:::-;12588:19;12610:9;:15;12620:4;12610:15;;;;;;;;;;;;;;;;12588:37;;12659:6;12644:11;:21;;12636:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12776:6;12762:11;:20;12744:9;:15;12754:4;12744:15;;;;;;;;;;;;;;;:38;;;;12821:6;12804:9;:13;12814:2;12804:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;12860:2;12845:26;;12854:4;12845:26;;;12864:6;12845:26;;;;;;:::i;:::-;;;;;;;;12884:37;12904:4;12910:2;12914:6;12884:19;:37::i;:::-;12258:671;;;;:::o;30543:823::-;30607:4;30944:13;;;;;;;;;;;30940:419;;;31011:1;31000:7;:12;;;:61;;;;;31017:44;31055:4;31017:29;:44::i;:::-;31016:45;31000:61;30974:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;31165:5;31158:12;;;;30940:419;31226:7;31211:22;;:12;;;;;;;;;;;:22;;;31203:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;31314:7;31299:12;;:22;;;;;;;;;;;;;;;;;;31343:4;31336:11;;30543:823;;;;:::o;13216:399::-;13319:1;13300:21;;:7;:21;;;;13292:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13370:49;13399:1;13403:7;13412:6;13370:20;:49::i;:::-;13448:6;13432:12;;:22;;;;;;;:::i;:::-;;;;;;;;13487:6;13465:9;:18;13475:7;13465:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;13530:7;13509:37;;13526:1;13509:37;;;13539:6;13509:37;;;;;;:::i;:::-;;;;;;;;13559:48;13587:1;13591:7;13600:6;13559:19;:48::i;:::-;13216:399;;:::o;16697:125::-;;;;:::o;17426:124::-;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:345:1:-;;110:66;126:49;168:6;126:49;:::i;:::-;110:66;:::i;:::-;101:75;;199:6;192:5;185:21;237:4;230:5;226:16;275:3;266:6;261:3;257:16;254:25;251:2;;;292:1;289;282:12;251:2;305:41;339:6;334:3;329;305:41;:::i;:::-;91:261;;;;;;:::o;358:139::-;;442:6;429:20;420:29;;458:33;485:5;458:33;:::i;:::-;410:87;;;;:::o;517:273::-;;622:3;615:4;607:6;603:17;599:27;589:2;;640:1;637;630:12;589:2;680:6;667:20;705:79;780:3;772:6;765:4;757:6;753:17;705:79;:::i;:::-;696:88;;579:211;;;;;:::o;796:139::-;;880:6;867:20;858:29;;896:33;923:5;896:33;:::i;:::-;848:87;;;;:::o;941:262::-;;1049:2;1037:9;1028:7;1024:23;1020:32;1017:2;;;1065:1;1062;1055:12;1017:2;1108:1;1133:53;1178:7;1169:6;1158:9;1154:22;1133:53;:::i;:::-;1123:63;;1079:117;1007:196;;;;:::o;1209:407::-;;;1334:2;1322:9;1313:7;1309:23;1305:32;1302:2;;;1350:1;1347;1340:12;1302:2;1393:1;1418:53;1463:7;1454:6;1443:9;1439:22;1418:53;:::i;:::-;1408:63;;1364:117;1520:2;1546:53;1591:7;1582:6;1571:9;1567:22;1546:53;:::i;:::-;1536:63;;1491:118;1292:324;;;;;:::o;1622:552::-;;;;1764:2;1752:9;1743:7;1739:23;1735:32;1732:2;;;1780:1;1777;1770:12;1732:2;1823:1;1848:53;1893:7;1884:6;1873:9;1869:22;1848:53;:::i;:::-;1838:63;;1794:117;1950:2;1976:53;2021:7;2012:6;2001:9;1997:22;1976:53;:::i;:::-;1966:63;;1921:118;2078:2;2104:53;2149:7;2140:6;2129:9;2125:22;2104:53;:::i;:::-;2094:63;;2049:118;1722:452;;;;;:::o;2180:407::-;;;2305:2;2293:9;2284:7;2280:23;2276:32;2273:2;;;2321:1;2318;2311:12;2273:2;2364:1;2389:53;2434:7;2425:6;2414:9;2410:22;2389:53;:::i;:::-;2379:63;;2335:117;2491:2;2517:53;2562:7;2553:6;2542:9;2538:22;2517:53;:::i;:::-;2507:63;;2462:118;2263:324;;;;;:::o;2593:924::-;;;;;2772:3;2760:9;2751:7;2747:23;2743:33;2740:2;;;2789:1;2786;2779:12;2740:2;2860:1;2849:9;2845:17;2832:31;2890:18;2882:6;2879:30;2876:2;;;2922:1;2919;2912:12;2876:2;2950:63;3005:7;2996:6;2985:9;2981:22;2950:63;:::i;:::-;2940:73;;2803:220;3090:2;3079:9;3075:18;3062:32;3121:18;3113:6;3110:30;3107:2;;;3153:1;3150;3143:12;3107:2;3181:63;3236:7;3227:6;3216:9;3212:22;3181:63;:::i;:::-;3171:73;;3033:221;3293:2;3319:53;3364:7;3355:6;3344:9;3340:22;3319:53;:::i;:::-;3309:63;;3264:118;3421:2;3447:53;3492:7;3483:6;3472:9;3468:22;3447:53;:::i;:::-;3437:63;;3392:118;2730:787;;;;;;;:::o;3523:109::-;3604:21;3619:5;3604:21;:::i;:::-;3599:3;3592:34;3582:50;;:::o;3638:143::-;3731:43;3768:5;3731:43;:::i;:::-;3726:3;3719:56;3709:72;;:::o;3787:364::-;;3903:39;3936:5;3903:39;:::i;:::-;3958:71;4022:6;4017:3;3958:71;:::i;:::-;3951:78;;4038:52;4083:6;4078:3;4071:4;4064:5;4060:16;4038:52;:::i;:::-;4115:29;4137:6;4115:29;:::i;:::-;4110:3;4106:39;4099:46;;3879:272;;;;;:::o;4157:366::-;;4320:67;4384:2;4379:3;4320:67;:::i;:::-;4313:74;;4396:93;4485:3;4396:93;:::i;:::-;4514:2;4509:3;4505:12;4498:19;;4303:220;;;:::o;4529:366::-;;4692:67;4756:2;4751:3;4692:67;:::i;:::-;4685:74;;4768:93;4857:3;4768:93;:::i;:::-;4886:2;4881:3;4877:12;4870:19;;4675:220;;;:::o;4901:366::-;;5064:67;5128:2;5123:3;5064:67;:::i;:::-;5057:74;;5140:93;5229:3;5140:93;:::i;:::-;5258:2;5253:3;5249:12;5242:19;;5047:220;;;:::o;5273:366::-;;5436:67;5500:2;5495:3;5436:67;:::i;:::-;5429:74;;5512:93;5601:3;5512:93;:::i;:::-;5630:2;5625:3;5621:12;5614:19;;5419:220;;;:::o;5645:366::-;;5808:67;5872:2;5867:3;5808:67;:::i;:::-;5801:74;;5884:93;5973:3;5884:93;:::i;:::-;6002:2;5997:3;5993:12;5986:19;;5791:220;;;:::o;6017:366::-;;6180:67;6244:2;6239:3;6180:67;:::i;:::-;6173:74;;6256:93;6345:3;6256:93;:::i;:::-;6374:2;6369:3;6365:12;6358:19;;6163:220;;;:::o;6389:366::-;;6552:67;6616:2;6611:3;6552:67;:::i;:::-;6545:74;;6628:93;6717:3;6628:93;:::i;:::-;6746:2;6741:3;6737:12;6730:19;;6535:220;;;:::o;6761:366::-;;6924:67;6988:2;6983:3;6924:67;:::i;:::-;6917:74;;7000:93;7089:3;7000:93;:::i;:::-;7118:2;7113:3;7109:12;7102:19;;6907:220;;;:::o;7133:366::-;;7296:67;7360:2;7355:3;7296:67;:::i;:::-;7289:74;;7372:93;7461:3;7372:93;:::i;:::-;7490:2;7485:3;7481:12;7474:19;;7279:220;;;:::o;7505:118::-;7592:24;7610:5;7592:24;:::i;:::-;7587:3;7580:37;7570:53;;:::o;7629:112::-;7712:22;7728:5;7712:22;:::i;:::-;7707:3;7700:35;7690:51;;:::o;7747:210::-;;7872:2;7861:9;7857:18;7849:26;;7885:65;7947:1;7936:9;7932:17;7923:6;7885:65;:::i;:::-;7839:118;;;;:::o;7963:234::-;;8100:2;8089:9;8085:18;8077:26;;8113:77;8187:1;8176:9;8172:17;8163:6;8113:77;:::i;:::-;8067:130;;;;:::o;8203:313::-;;8354:2;8343:9;8339:18;8331:26;;8403:9;8397:4;8393:20;8389:1;8378:9;8374:17;8367:47;8431:78;8504:4;8495:6;8431:78;:::i;:::-;8423:86;;8321:195;;;;:::o;8522:419::-;;8726:2;8715:9;8711:18;8703:26;;8775:9;8769:4;8765:20;8761:1;8750:9;8746:17;8739:47;8803:131;8929:4;8803:131;:::i;:::-;8795:139;;8693:248;;;:::o;8947:419::-;;9151:2;9140:9;9136:18;9128:26;;9200:9;9194:4;9190:20;9186:1;9175:9;9171:17;9164:47;9228:131;9354:4;9228:131;:::i;:::-;9220:139;;9118:248;;;:::o;9372:419::-;;9576:2;9565:9;9561:18;9553:26;;9625:9;9619:4;9615:20;9611:1;9600:9;9596:17;9589:47;9653:131;9779:4;9653:131;:::i;:::-;9645:139;;9543:248;;;:::o;9797:419::-;;10001:2;9990:9;9986:18;9978:26;;10050:9;10044:4;10040:20;10036:1;10025:9;10021:17;10014:47;10078:131;10204:4;10078:131;:::i;:::-;10070:139;;9968:248;;;:::o;10222:419::-;;10426:2;10415:9;10411:18;10403:26;;10475:9;10469:4;10465:20;10461:1;10450:9;10446:17;10439:47;10503:131;10629:4;10503:131;:::i;:::-;10495:139;;10393:248;;;:::o;10647:419::-;;10851:2;10840:9;10836:18;10828:26;;10900:9;10894:4;10890:20;10886:1;10875:9;10871:17;10864:47;10928:131;11054:4;10928:131;:::i;:::-;10920:139;;10818:248;;;:::o;11072:419::-;;11276:2;11265:9;11261:18;11253:26;;11325:9;11319:4;11315:20;11311:1;11300:9;11296:17;11289:47;11353:131;11479:4;11353:131;:::i;:::-;11345:139;;11243:248;;;:::o;11497:419::-;;11701:2;11690:9;11686:18;11678:26;;11750:9;11744:4;11740:20;11736:1;11725:9;11721:17;11714:47;11778:131;11904:4;11778:131;:::i;:::-;11770:139;;11668:248;;;:::o;11922:419::-;;12126:2;12115:9;12111:18;12103:26;;12175:9;12169:4;12165:20;12161:1;12150:9;12146:17;12139:47;12203:131;12329:4;12203:131;:::i;:::-;12195:139;;12093:248;;;:::o;12347:222::-;;12478:2;12467:9;12463:18;12455:26;;12491:71;12559:1;12548:9;12544:17;12535:6;12491:71;:::i;:::-;12445:124;;;;:::o;12575:214::-;;12702:2;12691:9;12687:18;12679:26;;12715:67;12779:1;12768:9;12764:17;12755:6;12715:67;:::i;:::-;12669:120;;;;:::o;12795:129::-;;12856:20;;:::i;:::-;12846:30;;12885:33;12913:4;12905:6;12885:33;:::i;:::-;12836:88;;;:::o;12930:75::-;;12996:2;12990:9;12980:19;;12970:35;:::o;13011:308::-;;13163:18;13155:6;13152:30;13149:2;;;13185:18;;:::i;:::-;13149:2;13223:29;13245:6;13223:29;:::i;:::-;13215:37;;13307:4;13301;13297:15;13289:23;;13078:241;;;:::o;13325:99::-;;13411:5;13405:12;13395:22;;13384:40;;;:::o;13430:169::-;;13548:6;13543:3;13536:19;13588:4;13583:3;13579:14;13564:29;;13526:73;;;;:::o;13605:305::-;;13664:20;13682:1;13664:20;:::i;:::-;13659:25;;13698:20;13716:1;13698:20;:::i;:::-;13693:25;;13852:1;13784:66;13780:74;13777:1;13774:81;13771:2;;;13858:18;;:::i;:::-;13771:2;13902:1;13899;13895:9;13888:16;;13649:261;;;;:::o;13916:96::-;;13982:24;14000:5;13982:24;:::i;:::-;13971:35;;13961:51;;;:::o;14018:90::-;;14095:5;14088:13;14081:21;14070:32;;14060:48;;;:::o;14114:126::-;;14191:42;14184:5;14180:54;14169:65;;14159:81;;;:::o;14246:77::-;;14312:5;14301:16;;14291:32;;;:::o;14329:86::-;;14404:4;14397:5;14393:16;14382:27;;14372:43;;;:::o;14421:117::-;;14510:22;14526:5;14510:22;:::i;:::-;14497:35;;14487:51;;;:::o;14544:154::-;14628:6;14623:3;14618;14605:30;14690:1;14681:6;14676:3;14672:16;14665:27;14595:103;;;:::o;14704:307::-;14772:1;14782:113;14796:6;14793:1;14790:13;14782:113;;;14881:1;14876:3;14872:11;14866:18;14862:1;14857:3;14853:11;14846:39;14818:2;14815:1;14811:10;14806:15;;14782:113;;;14913:6;14910:1;14907:13;14904:2;;;14993:1;14984:6;14979:3;14975:16;14968:27;14904:2;14753:258;;;;:::o;15017:320::-;;15098:1;15092:4;15088:12;15078:22;;15145:1;15139:4;15135:12;15166:18;15156:2;;15222:4;15214:6;15210:17;15200:27;;15156:2;15284;15276:6;15273:14;15253:18;15250:38;15247:2;;;15303:18;;:::i;:::-;15247:2;15068:269;;;;:::o;15343:281::-;15426:27;15448:4;15426:27;:::i;:::-;15418:6;15414:40;15556:6;15544:10;15541:22;15520:18;15508:10;15505:34;15502:62;15499:2;;;15567:18;;:::i;:::-;15499:2;15607:10;15603:2;15596:22;15386:238;;;:::o;15630:180::-;15678:77;15675:1;15668:88;15775:4;15772:1;15765:15;15799:4;15796:1;15789:15;15816:180;15864:77;15861:1;15854:88;15961:4;15958:1;15951:15;15985:4;15982:1;15975:15;16002:180;16050:77;16047:1;16040:88;16147:4;16144:1;16137:15;16171:4;16168:1;16161:15;16188:102;;16280:2;16276:7;16271:2;16264:5;16260:14;16256:28;16246:38;;16236:54;;;:::o;16296:222::-;16436:34;16432:1;16424:6;16420:14;16413:58;16505:5;16500:2;16492:6;16488:15;16481:30;16402:116;:::o;16524:221::-;16664:34;16660:1;16652:6;16648:14;16641:58;16733:4;16728:2;16720:6;16716:15;16709:29;16630:115;:::o;16751:179::-;16891:31;16887:1;16879:6;16875:14;16868:55;16857:73;:::o;16936:225::-;17076:34;17072:1;17064:6;17060:14;17053:58;17145:8;17140:2;17132:6;17128:15;17121:33;17042:119;:::o;17167:233::-;17307:34;17303:1;17295:6;17291:14;17284:58;17376:16;17371:2;17363:6;17359:15;17352:41;17273:127;:::o;17406:224::-;17546:34;17542:1;17534:6;17530:14;17523:58;17615:7;17610:2;17602:6;17598:15;17591:32;17512:118;:::o;17636:223::-;17776:34;17772:1;17764:6;17760:14;17753:58;17845:6;17840:2;17832:6;17828:15;17821:31;17742:117;:::o;17865:224::-;18005:34;18001:1;17993:6;17989:14;17982:58;18074:7;18069:2;18061:6;18057:15;18050:32;17971:118;:::o;18095:181::-;18235:33;18231:1;18223:6;18219:14;18212:57;18201:75;:::o;18282:122::-;18355:24;18373:5;18355:24;:::i;:::-;18348:5;18345:35;18335:2;;18394:1;18391;18384:12;18335:2;18325:79;:::o;18410:122::-;18483:24;18501:5;18483:24;:::i;:::-;18476:5;18473:35;18463:2;;18522:1;18519;18512:12;18463:2;18453:79;:::o
Swarm Source
ipfs://4ba2b15d08d7b65b6a4e71e30c03bc696ffd025ee066d7dd31525a7746d7b648
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.