Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Healthcare
Overview
Max Total Supply
1,351,591.576109169554263506 AVEX!
Holders
111 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
78.31231182 AVEX!Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Token
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-07-27 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity 0.8.4; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // SPDX-License-Identifier: MIT /** * @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/Context.sol /* * @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/ERC20.sol /** * @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 guidelines: functions revert instead * of 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: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, 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}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), 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}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - 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) { _approve(_msgSender(), spender, _allowances[_msgSender()][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) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), 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: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, 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 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/access/Ownable.sol /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Counters.sol /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/utils/Strings.sol /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/contracts/utils/Address.sol /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private 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/token/ERC721/IERC721.sol /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` 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 tokenId ) internal virtual {} } // File: contracts/inflating_avex_token (1).sol /* =========================================================================================================*/ // ---------------------------------------------------------------------------- // Safe maths // ---------------------------------------------------------------------------- library SafeMath { function add(uint a, uint b) internal pure returns (uint c) { c = a + b; require(c >= a); } function sub(uint a, uint b) internal pure returns (uint c) { require(b <= a); c = a - b; } function mul(uint a, uint b) internal pure returns (uint c) { c = a * b; require(a == 0 || c / a == b); } function div(uint a, uint b) internal pure returns (uint c) { require(b > 0); c = a / b; } function ceil(uint256 a, uint256 m) internal pure returns (uint256) { uint256 c = add(a,m); uint256 d = sub(c,1); return div(mul(d,m),m); } } // ---------------------------------------------------------------------------- // Owned contract // ---------------------------------------------------------------------------- contract Owned { address public owner; event OwnershipTransferred(address indexed _from, address indexed _to); modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership(address _newOwner) public onlyOwner { emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } // ---------------------------------------------------------------------------- // ERC Token Standard #20 Interface // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // ERC20 Token, with the addition of symbol, name and decimals and assisted // token transfers // ---------------------------------------------------------------------------- contract Token is IERC20, Owned { using SafeMath for uint; string public symbol; string public name; uint8 public decimals; uint public _totalSupply; uint private inflationRate = 1 * 10 ** 4; uint private inflationRateDecline = 100; //1% decline uint private lastTimeInflated = 0; uint private nextTimeInflated = 0; uint private dayInSeconds = 86400; uint private inflationIntervalInDays; uint private inflationInterval; uint256 private dailyDropBaseAmount = 100000; uint256 private dailyDropLimit = 35000000; uint private dailyDropRate = 10; uint256 private dailyDropTotalMintedAmount = 0; address private dropDestinationWallet; address private dropBiospheresTreasuryWallet; mapping(address => uint) public balances; mapping(address => mapping(address => uint)) public allowed; event TokensMinted(uint256 tokens, address minter, address to); event TokensBurned(uint256 tokens, address burner, address _from); // ------------------------------------------------------------------------ // Constructor // ------------------------------------------------------------------------ constructor(string memory _name, string memory _symbol, uint256 _initialSupply, uint8 _decimals, uint _inflationIntervalInDays, address _dropDestinationWallet, address _dropBiospheresTreasuryWallet) public { symbol = _symbol; name = _name; decimals = _decimals; _totalSupply = _initialSupply * 10**uint(decimals); //500000 inflationIntervalInDays = _inflationIntervalInDays; inflationInterval = dayInSeconds * inflationIntervalInDays; dailyDropLimit = dailyDropLimit * 10**uint(decimals); dailyDropBaseAmount = dailyDropBaseAmount * 10**uint(decimals); dropDestinationWallet = _dropDestinationWallet; dropBiospheresTreasuryWallet = _dropBiospheresTreasuryWallet; owner = address(msg.sender); balances[address(owner)] = _totalSupply; checkIfNeedToInflate(); emit Transfer(address(0),address(owner), _totalSupply); } // ------------------------------------------------------------------------ // Don't Accepts ETH // ------------------------------------------------------------------------ fallback() external payable { revert(); } function checkIfNeedToInflate() internal returns (bool) { bool needToInflate = false; if (lastTimeInflated == 0) { lastTimeInflated = block.timestamp; nextTimeInflated = lastTimeInflated.add(inflationInterval); //set next inflation date }else{ if (block.timestamp >= nextTimeInflated) { needToInflate = true; } } return needToInflate; } function mintDailyDrop() public returns (bool success) { require(dropDestinationWallet != address(0), "Daily Drop: Destination Address not set"); require(dropBiospheresTreasuryWallet != address(0), "Daily Drop: Biospheres Treasury Address not set"); //check if daily drop limit is already reached require(dailyDropTotalMintedAmount < dailyDropLimit, "Daily Drop: Limit has been reached"); //check if below 1 token on the balance, this is avoid dusts from stopping the process require(balances[dropDestinationWallet] < 1 * 10**uint(decimals), "Daily Drop: Destination Wallet still has balance"); uint256 tokensToDrop = dailyDropBaseAmount.mul(dailyDropRate); tokensToDrop = tokensToDrop.div(100); // check if the new drop will go over the limit, adjust it to only hit the limit if ( dailyDropTotalMintedAmount + tokensToDrop > dailyDropLimit ) { tokensToDrop = dailyDropLimit.sub(dailyDropTotalMintedAmount); } dailyDropTotalMintedAmount = dailyDropTotalMintedAmount.add(tokensToDrop); dailyDropBaseAmount = dailyDropBaseAmount.add(tokensToDrop); balances[dropDestinationWallet] = balances[dropDestinationWallet].add(tokensToDrop); _totalSupply = _totalSupply.add(tokensToDrop); emit TokensMinted(tokensToDrop, msg.sender, dropDestinationWallet); balances[dropBiospheresTreasuryWallet] = balances[dropBiospheresTreasuryWallet].add(tokensToDrop); _totalSupply = _totalSupply.add(tokensToDrop); emit TokensMinted(tokensToDrop, msg.sender, dropBiospheresTreasuryWallet); return true; } function setDailyDropDestinationAddress(address _destinationAddress) public onlyOwner returns (bool success){ dropDestinationWallet = _destinationAddress; return true; } function setDailyDropBiospheresTreasuryAddress(address _destinationAddress) public onlyOwner returns (bool success){ dropBiospheresTreasuryWallet = _destinationAddress; return true; } function getDailyDropDestinationAddress() public view returns (address){ return dropDestinationWallet; } function getDailyDropBiospheresTreasuryAddress() public view returns (address){ return dropBiospheresTreasuryWallet; } function getDailyDropBaseAmount() public view returns (uint256) { return dailyDropBaseAmount; } function getDailyDropTotalMintedAmount() public view returns (uint256) { return dailyDropTotalMintedAmount; } function getInflationRate() public view returns (uint256) { return inflationRate; } function getNextInflationTimestamp() public view returns (uint256) { return nextTimeInflated; } function getLastInflationTimestamp() public view returns (uint256) { return lastTimeInflated; } function getInflationIntervalInSeconds() public view returns (uint256) { return inflationInterval; } function inflateTokenAmount() internal returns (uint256){ uint256 tokensToDivide = _totalSupply.mul(inflationRate); uint256 tokensToMint = tokensToDivide.div(10 ** 6); uint newInflationRate = inflationRate.sub(inflationRate.div(inflationRateDecline)); // set new inflationrate to less than previous inflation rate inflationRate = newInflationRate; lastTimeInflated = nextTimeInflated; nextTimeInflated = lastTimeInflated.add(inflationInterval); return tokensToMint; } function burn(uint256 tokens, address _Address) external onlyOwner{ require(balances[_Address] >= tokens); balances[_Address] = balances[_Address].sub(tokens); _totalSupply = _totalSupply.sub(tokens); emit TokensBurned(tokens, msg.sender, _Address); emit Transfer(_Address, address(0), tokens); } /*===============================ERC20 functions=====================================*/ function totalSupply() public view override returns (uint){ return _totalSupply; } // ------------------------------------------------------------------------ // Get the token balance for account `tokenOwner` // ------------------------------------------------------------------------ function balanceOf(address tokenOwner) public view override returns (uint balance) { return balances[tokenOwner]; } // ------------------------------------------------------------------------ // Transfer the balance from token owner's account to `to` account // - Owner's account must have sufficient balance to transfer // - 0 value transfers are allowed // ------------------------------------------------------------------------ function transfer(address to, uint tokens) public override returns (bool success) { // prevent transfer to 0x0, use burn instead require(to != address(0)); require(balances[msg.sender] >= tokens ); balances[msg.sender] = balances[msg.sender].sub(tokens); // check if need to inflate bool needToInflate = checkIfNeedToInflate(); if (needToInflate) { uint256 tokensToMint = inflateTokenAmount(); _totalSupply = _totalSupply.add(tokensToMint); balances[owner] = balances[owner].add(tokensToMint); emit TokensMinted(tokensToMint, msg.sender, to); } require(balances[to] + tokens >= balances[to]); // Transfer the tokens to "to" address balances[to] = balances[to].add(tokens); // emit Transfer event to "to" address emit Transfer(msg.sender,to,tokens); return true; } // ------------------------------------------------------------------------ // Transfer `tokens` from the `from` account to the `to` account // // The calling account must already have sufficient tokens approve(...)-d // for spending from the `from` account and // - From account must have sufficient balance to transfer // - Spender must have sufficient allowance to transfer // - 0 value transfers are allowed // ------------------------------------------------------------------------ function transferFrom(address from, address to, uint tokens) public override returns (bool success){ require(from != address(0)); require(to != address(0)); require(tokens <= allowed[from][msg.sender]); //check allowance require(balances[from] >= tokens); // check if sufficient balance exist or not balances[from] = balances[from].sub(tokens); // check if need to inflate bool needToInflate = checkIfNeedToInflate(); if (needToInflate) { uint256 tokensToMint = inflateTokenAmount(); _totalSupply = _totalSupply.add(tokensToMint); balances[owner] = balances[owner].add(tokensToMint); emit TokensMinted(tokensToMint, msg.sender, to); } require(balances[to] + tokens >= balances[to]); // Transfer the unburned tokens to "to" address balances[to] = balances[to].add(tokens); allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens); emit Transfer(from,to,tokens); return true; } // ------------------------------------------------------------------------ // Token owner can approve for `spender` to transferFrom(...) `tokens` // from the token owner's account // ------------------------------------------------------------------------ function approve(address spender, uint tokens) public override returns (bool success){ require(spender != address(0)); require(tokens <= balances[msg.sender]); require(tokens >= 0); require(allowed[msg.sender][spender] == 0 || tokens == 0); allowed[msg.sender][spender] = tokens; emit Approval(msg.sender,spender,tokens); return true; } // ------------------------------------------------------------------------ // Returns the amount of tokens approved by the owner that can be // transferred to the spender's account // ------------------------------------------------------------------------ function allowance(address tokenOwner, address spender) public view override returns (uint remaining) { return allowed[tokenOwner][spender]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_initialSupply","type":"uint256"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint256","name":"_inflationIntervalInDays","type":"uint256"},{"internalType":"address","name":"_dropDestinationWallet","type":"address"},{"internalType":"address","name":"_dropBiospheresTreasuryWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"address","name":"burner","type":"address"},{"indexed":false,"internalType":"address","name":"_from","type":"address"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"TokensMinted","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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"address","name":"_Address","type":"address"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDailyDropBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDailyDropBiospheresTreasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDailyDropDestinationAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDailyDropTotalMintedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInflationIntervalInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInflationRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastInflationTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextInflationTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintDailyDrop","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"_destinationAddress","type":"address"}],"name":"setDailyDropBiospheresTreasuryAddress","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_destinationAddress","type":"address"}],"name":"setDailyDropDestinationAddress","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"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":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405261271060055560646006556000600755600060085562015180600955620186a0600c556302160ec0600d55600a600e556000600f553480156200004657600080fd5b50604051620035053803806200350583398181016040528101906200006c919062000531565b856001908051906020019062000084929190620003ca565b5086600290805190602001906200009d929190620003ca565b5083600360006101000a81548160ff021916908360ff160217905550600360009054906101000a900460ff1660ff16600a620000da919062000755565b85620000e7919062000892565b60048190555082600a81905550600a5460095462000106919062000892565b600b81905550600360009054906101000a900460ff1660ff16600a6200012d919062000755565b600d546200013c919062000892565b600d81905550600360009054906101000a900460ff1660ff16600a62000163919062000755565b600c5462000172919062000892565b600c8190555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600454601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002b16200034960201b60201c565b5060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000334919062000621565b60405180910390a35050505050505062000ad9565b60008060009050600060075414156200038d574260078190555062000381600b54600754620003a460201b62001f4d1790919060201c565b6008819055506200039d565b60085442106200039c57600190505b5b8091505090565b60008183620003b491906200069d565b905082811015620003c457600080fd5b92915050565b828054620003d89062000974565b90600052602060002090601f016020900481019282620003fc576000855562000448565b82601f106200041757805160ff191683800117855562000448565b8280016001018555821562000448579182015b82811115620004475782518255916020019190600101906200042a565b5b5090506200045791906200045b565b5090565b5b80821115620004765760008160009055506001016200045c565b5090565b6000620004916200048b8462000667565b6200063e565b905082815260208101848484011115620004aa57600080fd5b620004b78482856200093e565b509392505050565b600081519050620004d08162000a8b565b92915050565b600082601f830112620004e857600080fd5b8151620004fa8482602086016200047a565b91505092915050565b600081519050620005148162000aa5565b92915050565b6000815190506200052b8162000abf565b92915050565b600080600080600080600060e0888a0312156200054d57600080fd5b600088015167ffffffffffffffff8111156200056857600080fd5b620005768a828b01620004d6565b975050602088015167ffffffffffffffff8111156200059457600080fd5b620005a28a828b01620004d6565b9650506040620005b58a828b0162000503565b9550506060620005c88a828b016200051a565b9450506080620005db8a828b0162000503565b93505060a0620005ee8a828b01620004bf565b92505060c0620006018a828b01620004bf565b91505092959891949750929550565b6200061b8162000927565b82525050565b600060208201905062000638600083018462000610565b92915050565b60006200064a6200065d565b9050620006588282620009aa565b919050565b6000604051905090565b600067ffffffffffffffff82111562000685576200068462000a3e565b5b620006908262000a6d565b9050602081019050919050565b6000620006aa8262000927565b9150620006b78362000927565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620006ef57620006ee620009e0565b5b828201905092915050565b6000808291508390505b60018511156200074c57808604811115620007245762000723620009e0565b5b6001851615620007345780820291505b8081029050620007448562000a7e565b945062000704565b94509492505050565b6000620007628262000927565b91506200076f8362000927565b92506200079e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007a6565b905092915050565b600082620007b857600190506200088b565b81620007c857600090506200088b565b8160018114620007e15760028114620007ec5762000822565b60019150506200088b565b60ff841115620008015762000800620009e0565b5b8360020a9150848211156200081b576200081a620009e0565b5b506200088b565b5060208310610133831016604e8410600b84101617156200085c5782820a905083811115620008565762000855620009e0565b5b6200088b565b6200086b8484846001620006fa565b92509050818404811115620008855762000884620009e0565b5b81810290505b9392505050565b60006200089f8262000927565b9150620008ac8362000927565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620008e857620008e7620009e0565b5b828202905092915050565b6000620009008262000907565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200095e57808201518184015260208101905062000941565b838111156200096e576000848401525b50505050565b600060028204905060018216806200098d57607f821691505b60208210811415620009a457620009a362000a0f565b5b50919050565b620009b58262000a6d565b810181811067ffffffffffffffff82111715620009d757620009d662000a3e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b62000a9681620008f3565b811462000aa257600080fd5b50565b62000ab08162000927565b811462000abc57600080fd5b50565b62000aca8162000931565b811462000ad657600080fd5b50565b612a1c8062000ae96000396000f3fe6080604052600436106101855760003560e01c8063819df2c4116100d1578063dd62ed3e1161008a578063f17d22dc11610064578063f17d22dc146105bb578063f22fcced146105f8578063f2fde38b14610635578063fcd3533c1461065e57610186565b8063dd62ed3e14610528578063dde6390714610565578063ed5697401461059057610186565b8063819df2c4146104145780638d5cf0071461043f5780638da5cb5b1461046a57806395d89b4114610495578063a9059cbb146104c0578063da9f8b85146104fd57610186565b806327e235e31161013e5780633eaaf86b116101185780633eaaf86b14610344578063410107ac1461036f5780635c6581651461039a57806370a08231146103d757610186565b806327e235e3146102b1578063313ce567146102ee5780633e890e981461031957610186565b806306fdde031461018b578063095ea7b3146101b6578063120d658e146101f357806318160ddd1461021e578063217c2d6c1461024957806323b872dd1461027457610186565b5b600080fd5b34801561019757600080fd5b506101a0610687565b6040516101ad9190612366565b60405180910390f35b3480156101c257600080fd5b506101dd60048036038101906101d891906121b7565b610715565b6040516101ea919061234b565b60405180910390f35b3480156101ff57600080fd5b5061020861092e565b6040516102159190612408565b60405180910390f35b34801561022a57600080fd5b50610233610938565b6040516102409190612408565b60405180910390f35b34801561025557600080fd5b5061025e610942565b60405161026b9190612408565b60405180910390f35b34801561028057600080fd5b5061029b60048036038101906102969190612168565b61094c565b6040516102a8919061234b565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190612103565b610f23565b6040516102e59190612408565b60405180910390f35b3480156102fa57600080fd5b50610303610f3b565b604051610310919061245a565b60405180910390f35b34801561032557600080fd5b5061032e610f4e565b60405161033b9190612330565b60405180910390f35b34801561035057600080fd5b50610359610f78565b6040516103669190612408565b60405180910390f35b34801561037b57600080fd5b50610384610f7e565b6040516103919190612330565b60405180910390f35b3480156103a657600080fd5b506103c160048036038101906103bc919061212c565b610fa8565b6040516103ce9190612408565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f99190612103565b610fcd565b60405161040b9190612408565b60405180910390f35b34801561042057600080fd5b50610429611016565b6040516104369190612408565b60405180910390f35b34801561044b57600080fd5b50610454611020565b6040516104619190612408565b60405180910390f35b34801561047657600080fd5b5061047f61102a565b60405161048c9190612330565b60405180910390f35b3480156104a157600080fd5b506104aa61104e565b6040516104b79190612366565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e291906121b7565b6110dc565b6040516104f4919061234b565b60405180910390f35b34801561050957600080fd5b506105126114e0565b60405161051f919061234b565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a919061212c565b611a5a565b60405161055c9190612408565b60405180910390f35b34801561057157600080fd5b5061057a611ae1565b6040516105879190612408565b60405180910390f35b34801561059c57600080fd5b506105a5611aeb565b6040516105b29190612408565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd9190612103565b611af5565b6040516105ef919061234b565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190612103565b611b9a565b60405161062c919061234b565b60405180910390f35b34801561064157600080fd5b5061065c60048036038101906106579190612103565b611c3f565b005b34801561066a57600080fd5b50610685600480360381019061068091906121f3565b611d54565b005b600280546106949061279f565b80601f01602080910402602001604051908101604052809291908181526020018280546106c09061279f565b801561070d5780601f106106e25761010080835404028352916020019161070d565b820191906000526020600020905b8154815290600101906020018083116106f057829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561075057600080fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561079c57600080fd5b60008210156107aa57600080fd5b6000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806108355750600082145b61083e57600080fd5b81601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161091c9190612408565b60405180910390a36001905092915050565b6000600c54905090565b6000600454905090565b6000600754905090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561098757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109c157600080fd5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610a4a57600080fd5b81601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610a9657600080fd5b610ae882601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f7090919063ffffffff16565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000610b35611f93565b90508015610c78576000610b47611fe4565b9050610b5e81600454611f4d90919063ffffffff16565b600481905550610bd781601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4d90919063ffffffff16565b601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f4c4fa1e366e2f60c4c4b018f7ab5b15419b1ad450e677587a56d922f90ba64e9813387604051610c6e93929190612423565b60405180910390a1505b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d039190612491565b1015610d0e57600080fd5b610d6083601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4d90919063ffffffff16565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e3283601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f7090919063ffffffff16565b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610f0f9190612408565b60405180910390a360019150509392505050565b60126020528060005260406000206000915090505481565b600360009054906101000a900460ff1681565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6013602052816000526040600020602052806000526040600020600091509150505481565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600554905090565b6000600f54905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6001805461105b9061279f565b80601f01602080910402602001604051908101604052809291908181526020018280546110879061279f565b80156110d45780601f106110a9576101008083540402835291602001916110d4565b820191906000526020600020905b8154815290600101906020018083116110b757829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561111757600080fd5b81601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561116357600080fd5b6111b582601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f7090919063ffffffff16565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611202611f93565b90508015611345576000611214611fe4565b905061122b81600454611f4d90919063ffffffff16565b6004819055506112a481601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4d90919063ffffffff16565b601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f4c4fa1e366e2f60c4c4b018f7ab5b15419b1ad450e677587a56d922f90ba64e981338760405161133b93929190612423565b60405180910390a1505b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113d09190612491565b10156113db57600080fd5b61142d83601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4d90919063ffffffff16565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114cd9190612408565b60405180910390a3600191505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a906123e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fc90612388565b60405180910390fd5b600d54600f541061164b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611642906123c8565b60405180910390fd5b600360009054906101000a900460ff1660ff16600a61166a919061256b565b60016116769190612689565b60126000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f906123a8565b60405180910390fd5b6000611731600e54600c5461207f90919063ffffffff16565b90506117476064826120b790919063ffffffff16565b9050600d5481600f5461175a9190612491565b111561177a57611777600f54600d54611f7090919063ffffffff16565b90505b61178f81600f54611f4d90919063ffffffff16565b600f819055506117aa81600c54611f4d90919063ffffffff16565b600c819055506118248160126000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4d90919063ffffffff16565b60126000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061189e81600454611f4d90919063ffffffff16565b6004819055507f4c4fa1e366e2f60c4c4b018f7ab5b15419b1ad450e677587a56d922f90ba64e98133601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516118f993929190612423565b60405180910390a16119758160126000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4d90919063ffffffff16565b60126000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119ef81600454611f4d90919063ffffffff16565b6004819055507f4c4fa1e366e2f60c4c4b018f7ab5b15419b1ad450e677587a56d922f90ba64e98133601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611a4a93929190612423565b60405180910390a1600191505090565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600854905090565b6000600b54905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b5057600080fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bf557600080fd5b81601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c9757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611dac57600080fd5b81601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611df857600080fd5b611e4a82601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f7090919063ffffffff16565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ea282600454611f7090919063ffffffff16565b6004819055507f98360426e8601da793e58d23059fb0e187d79434699ff033c0f6662f7eccd35c823383604051611edb93929190612423565b60405180910390a1600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f419190612408565b60405180910390a35050565b60008183611f5b9190612491565b905082811015611f6a57600080fd5b92915050565b600082821115611f7f57600080fd5b8183611f8b91906126e3565b905092915050565b6000806000905060006007541415611fce5742600781905550611fc3600b54600754611f4d90919063ffffffff16565b600881905550611fdd565b6008544210611fdc57600190505b5b8091505090565b600080611ffe60055460045461207f90919063ffffffff16565b90506000612018620f4240836120b790919063ffffffff16565b905060006120476120366006546005546120b790919063ffffffff16565b600554611f7090919063ffffffff16565b905080600581905550600854600781905550612070600b54600754611f4d90919063ffffffff16565b60088190555081935050505090565b6000818361208d9190612689565b905060008314806120a857508183826120a691906124e7565b145b6120b157600080fd5b92915050565b60008082116120c557600080fd5b81836120d191906124e7565b905092915050565b6000813590506120e8816129b8565b92915050565b6000813590506120fd816129cf565b92915050565b60006020828403121561211557600080fd5b6000612123848285016120d9565b91505092915050565b6000806040838503121561213f57600080fd5b600061214d858286016120d9565b925050602061215e858286016120d9565b9150509250929050565b60008060006060848603121561217d57600080fd5b600061218b868287016120d9565b935050602061219c868287016120d9565b92505060406121ad868287016120ee565b9150509250925092565b600080604083850312156121ca57600080fd5b60006121d8858286016120d9565b92505060206121e9858286016120ee565b9150509250929050565b6000806040838503121561220657600080fd5b6000612214858286016120ee565b9250506020612225858286016120d9565b9150509250929050565b61223881612717565b82525050565b61224781612729565b82525050565b600061225882612475565b6122628185612480565b935061227281856020860161276c565b61227b8161285e565b840191505092915050565b6000612293602f83612480565b915061229e8261287c565b604082019050919050565b60006122b6603083612480565b91506122c1826128cb565b604082019050919050565b60006122d9602283612480565b91506122e48261291a565b604082019050919050565b60006122fc602783612480565b915061230782612969565b604082019050919050565b61231b81612755565b82525050565b61232a8161275f565b82525050565b6000602082019050612345600083018461222f565b92915050565b6000602082019050612360600083018461223e565b92915050565b60006020820190508181036000830152612380818461224d565b905092915050565b600060208201905081810360008301526123a181612286565b9050919050565b600060208201905081810360008301526123c1816122a9565b9050919050565b600060208201905081810360008301526123e1816122cc565b9050919050565b60006020820190508181036000830152612401816122ef565b9050919050565b600060208201905061241d6000830184612312565b92915050565b60006060820190506124386000830186612312565b612445602083018561222f565b612452604083018461222f565b949350505050565b600060208201905061246f6000830184612321565b92915050565b600081519050919050565b600082825260208201905092915050565b600061249c82612755565b91506124a783612755565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156124dc576124db6127d1565b5b828201905092915050565b60006124f282612755565b91506124fd83612755565b92508261250d5761250c612800565b5b828204905092915050565b6000808291508390505b60018511156125625780860481111561253e5761253d6127d1565b5b600185161561254d5780820291505b808102905061255b8561286f565b9450612522565b94509492505050565b600061257682612755565b915061258183612755565b92506125ae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846125b6565b905092915050565b6000826125c65760019050612682565b816125d45760009050612682565b81600181146125ea57600281146125f457612623565b6001915050612682565b60ff841115612606576126056127d1565b5b8360020a91508482111561261d5761261c6127d1565b5b50612682565b5060208310610133831016604e8410600b84101617156126585782820a905083811115612653576126526127d1565b5b612682565b6126658484846001612518565b9250905081840481111561267c5761267b6127d1565b5b81810290505b9392505050565b600061269482612755565b915061269f83612755565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126d8576126d76127d1565b5b828202905092915050565b60006126ee82612755565b91506126f983612755565b92508282101561270c5761270b6127d1565b5b828203905092915050565b600061272282612735565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561278a57808201518184015260208101905061276f565b83811115612799576000848401525b50505050565b600060028204905060018216806127b757607f821691505b602082108114156127cb576127ca61282f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f4461696c792044726f703a2042696f737068657265732054726561737572792060008201527f41646472657373206e6f74207365740000000000000000000000000000000000602082015250565b7f4461696c792044726f703a2044657374696e6174696f6e2057616c6c6574207360008201527f74696c6c206861732062616c616e636500000000000000000000000000000000602082015250565b7f4461696c792044726f703a204c696d697420686173206265656e20726561636860008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b7f4461696c792044726f703a2044657374696e6174696f6e20416464726573732060008201527f6e6f742073657400000000000000000000000000000000000000000000000000602082015250565b6129c181612717565b81146129cc57600080fd5b50565b6129d881612755565b81146129e357600080fd5b5056fea2646970667358221220c358047d44e165193e7c985198c0502a0ec9572bc52bad4c60888f7d20f6c2bf64736f6c6343000804003300000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000001276900000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000002cf885c7a92bb95f56c1e40a1e131ce801050830000000000000000000000002eba0eb5246bf0bc6a1a3847fc2c49913decf11c00000000000000000000000000000000000000000000000000000000000000074145564f4c56450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054156455821000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101855760003560e01c8063819df2c4116100d1578063dd62ed3e1161008a578063f17d22dc11610064578063f17d22dc146105bb578063f22fcced146105f8578063f2fde38b14610635578063fcd3533c1461065e57610186565b8063dd62ed3e14610528578063dde6390714610565578063ed5697401461059057610186565b8063819df2c4146104145780638d5cf0071461043f5780638da5cb5b1461046a57806395d89b4114610495578063a9059cbb146104c0578063da9f8b85146104fd57610186565b806327e235e31161013e5780633eaaf86b116101185780633eaaf86b14610344578063410107ac1461036f5780635c6581651461039a57806370a08231146103d757610186565b806327e235e3146102b1578063313ce567146102ee5780633e890e981461031957610186565b806306fdde031461018b578063095ea7b3146101b6578063120d658e146101f357806318160ddd1461021e578063217c2d6c1461024957806323b872dd1461027457610186565b5b600080fd5b34801561019757600080fd5b506101a0610687565b6040516101ad9190612366565b60405180910390f35b3480156101c257600080fd5b506101dd60048036038101906101d891906121b7565b610715565b6040516101ea919061234b565b60405180910390f35b3480156101ff57600080fd5b5061020861092e565b6040516102159190612408565b60405180910390f35b34801561022a57600080fd5b50610233610938565b6040516102409190612408565b60405180910390f35b34801561025557600080fd5b5061025e610942565b60405161026b9190612408565b60405180910390f35b34801561028057600080fd5b5061029b60048036038101906102969190612168565b61094c565b6040516102a8919061234b565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190612103565b610f23565b6040516102e59190612408565b60405180910390f35b3480156102fa57600080fd5b50610303610f3b565b604051610310919061245a565b60405180910390f35b34801561032557600080fd5b5061032e610f4e565b60405161033b9190612330565b60405180910390f35b34801561035057600080fd5b50610359610f78565b6040516103669190612408565b60405180910390f35b34801561037b57600080fd5b50610384610f7e565b6040516103919190612330565b60405180910390f35b3480156103a657600080fd5b506103c160048036038101906103bc919061212c565b610fa8565b6040516103ce9190612408565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f99190612103565b610fcd565b60405161040b9190612408565b60405180910390f35b34801561042057600080fd5b50610429611016565b6040516104369190612408565b60405180910390f35b34801561044b57600080fd5b50610454611020565b6040516104619190612408565b60405180910390f35b34801561047657600080fd5b5061047f61102a565b60405161048c9190612330565b60405180910390f35b3480156104a157600080fd5b506104aa61104e565b6040516104b79190612366565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e291906121b7565b6110dc565b6040516104f4919061234b565b60405180910390f35b34801561050957600080fd5b506105126114e0565b60405161051f919061234b565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a919061212c565b611a5a565b60405161055c9190612408565b60405180910390f35b34801561057157600080fd5b5061057a611ae1565b6040516105879190612408565b60405180910390f35b34801561059c57600080fd5b506105a5611aeb565b6040516105b29190612408565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd9190612103565b611af5565b6040516105ef919061234b565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190612103565b611b9a565b60405161062c919061234b565b60405180910390f35b34801561064157600080fd5b5061065c60048036038101906106579190612103565b611c3f565b005b34801561066a57600080fd5b50610685600480360381019061068091906121f3565b611d54565b005b600280546106949061279f565b80601f01602080910402602001604051908101604052809291908181526020018280546106c09061279f565b801561070d5780601f106106e25761010080835404028352916020019161070d565b820191906000526020600020905b8154815290600101906020018083116106f057829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561075057600080fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561079c57600080fd5b60008210156107aa57600080fd5b6000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806108355750600082145b61083e57600080fd5b81601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161091c9190612408565b60405180910390a36001905092915050565b6000600c54905090565b6000600454905090565b6000600754905090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561098757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109c157600080fd5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610a4a57600080fd5b81601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610a9657600080fd5b610ae882601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f7090919063ffffffff16565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000610b35611f93565b90508015610c78576000610b47611fe4565b9050610b5e81600454611f4d90919063ffffffff16565b600481905550610bd781601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4d90919063ffffffff16565b601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f4c4fa1e366e2f60c4c4b018f7ab5b15419b1ad450e677587a56d922f90ba64e9813387604051610c6e93929190612423565b60405180910390a1505b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d039190612491565b1015610d0e57600080fd5b610d6083601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4d90919063ffffffff16565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e3283601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f7090919063ffffffff16565b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610f0f9190612408565b60405180910390a360019150509392505050565b60126020528060005260406000206000915090505481565b600360009054906101000a900460ff1681565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6013602052816000526040600020602052806000526040600020600091509150505481565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600554905090565b6000600f54905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6001805461105b9061279f565b80601f01602080910402602001604051908101604052809291908181526020018280546110879061279f565b80156110d45780601f106110a9576101008083540402835291602001916110d4565b820191906000526020600020905b8154815290600101906020018083116110b757829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561111757600080fd5b81601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561116357600080fd5b6111b582601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f7090919063ffffffff16565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611202611f93565b90508015611345576000611214611fe4565b905061122b81600454611f4d90919063ffffffff16565b6004819055506112a481601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4d90919063ffffffff16565b601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f4c4fa1e366e2f60c4c4b018f7ab5b15419b1ad450e677587a56d922f90ba64e981338760405161133b93929190612423565b60405180910390a1505b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113d09190612491565b10156113db57600080fd5b61142d83601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4d90919063ffffffff16565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114cd9190612408565b60405180910390a3600191505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a906123e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fc90612388565b60405180910390fd5b600d54600f541061164b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611642906123c8565b60405180910390fd5b600360009054906101000a900460ff1660ff16600a61166a919061256b565b60016116769190612689565b60126000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f906123a8565b60405180910390fd5b6000611731600e54600c5461207f90919063ffffffff16565b90506117476064826120b790919063ffffffff16565b9050600d5481600f5461175a9190612491565b111561177a57611777600f54600d54611f7090919063ffffffff16565b90505b61178f81600f54611f4d90919063ffffffff16565b600f819055506117aa81600c54611f4d90919063ffffffff16565b600c819055506118248160126000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4d90919063ffffffff16565b60126000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061189e81600454611f4d90919063ffffffff16565b6004819055507f4c4fa1e366e2f60c4c4b018f7ab5b15419b1ad450e677587a56d922f90ba64e98133601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516118f993929190612423565b60405180910390a16119758160126000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4d90919063ffffffff16565b60126000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119ef81600454611f4d90919063ffffffff16565b6004819055507f4c4fa1e366e2f60c4c4b018f7ab5b15419b1ad450e677587a56d922f90ba64e98133601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611a4a93929190612423565b60405180910390a1600191505090565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600854905090565b6000600b54905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b5057600080fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bf557600080fd5b81601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c9757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611dac57600080fd5b81601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611df857600080fd5b611e4a82601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f7090919063ffffffff16565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ea282600454611f7090919063ffffffff16565b6004819055507f98360426e8601da793e58d23059fb0e187d79434699ff033c0f6662f7eccd35c823383604051611edb93929190612423565b60405180910390a1600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f419190612408565b60405180910390a35050565b60008183611f5b9190612491565b905082811015611f6a57600080fd5b92915050565b600082821115611f7f57600080fd5b8183611f8b91906126e3565b905092915050565b6000806000905060006007541415611fce5742600781905550611fc3600b54600754611f4d90919063ffffffff16565b600881905550611fdd565b6008544210611fdc57600190505b5b8091505090565b600080611ffe60055460045461207f90919063ffffffff16565b90506000612018620f4240836120b790919063ffffffff16565b905060006120476120366006546005546120b790919063ffffffff16565b600554611f7090919063ffffffff16565b905080600581905550600854600781905550612070600b54600754611f4d90919063ffffffff16565b60088190555081935050505090565b6000818361208d9190612689565b905060008314806120a857508183826120a691906124e7565b145b6120b157600080fd5b92915050565b60008082116120c557600080fd5b81836120d191906124e7565b905092915050565b6000813590506120e8816129b8565b92915050565b6000813590506120fd816129cf565b92915050565b60006020828403121561211557600080fd5b6000612123848285016120d9565b91505092915050565b6000806040838503121561213f57600080fd5b600061214d858286016120d9565b925050602061215e858286016120d9565b9150509250929050565b60008060006060848603121561217d57600080fd5b600061218b868287016120d9565b935050602061219c868287016120d9565b92505060406121ad868287016120ee565b9150509250925092565b600080604083850312156121ca57600080fd5b60006121d8858286016120d9565b92505060206121e9858286016120ee565b9150509250929050565b6000806040838503121561220657600080fd5b6000612214858286016120ee565b9250506020612225858286016120d9565b9150509250929050565b61223881612717565b82525050565b61224781612729565b82525050565b600061225882612475565b6122628185612480565b935061227281856020860161276c565b61227b8161285e565b840191505092915050565b6000612293602f83612480565b915061229e8261287c565b604082019050919050565b60006122b6603083612480565b91506122c1826128cb565b604082019050919050565b60006122d9602283612480565b91506122e48261291a565b604082019050919050565b60006122fc602783612480565b915061230782612969565b604082019050919050565b61231b81612755565b82525050565b61232a8161275f565b82525050565b6000602082019050612345600083018461222f565b92915050565b6000602082019050612360600083018461223e565b92915050565b60006020820190508181036000830152612380818461224d565b905092915050565b600060208201905081810360008301526123a181612286565b9050919050565b600060208201905081810360008301526123c1816122a9565b9050919050565b600060208201905081810360008301526123e1816122cc565b9050919050565b60006020820190508181036000830152612401816122ef565b9050919050565b600060208201905061241d6000830184612312565b92915050565b60006060820190506124386000830186612312565b612445602083018561222f565b612452604083018461222f565b949350505050565b600060208201905061246f6000830184612321565b92915050565b600081519050919050565b600082825260208201905092915050565b600061249c82612755565b91506124a783612755565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156124dc576124db6127d1565b5b828201905092915050565b60006124f282612755565b91506124fd83612755565b92508261250d5761250c612800565b5b828204905092915050565b6000808291508390505b60018511156125625780860481111561253e5761253d6127d1565b5b600185161561254d5780820291505b808102905061255b8561286f565b9450612522565b94509492505050565b600061257682612755565b915061258183612755565b92506125ae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846125b6565b905092915050565b6000826125c65760019050612682565b816125d45760009050612682565b81600181146125ea57600281146125f457612623565b6001915050612682565b60ff841115612606576126056127d1565b5b8360020a91508482111561261d5761261c6127d1565b5b50612682565b5060208310610133831016604e8410600b84101617156126585782820a905083811115612653576126526127d1565b5b612682565b6126658484846001612518565b9250905081840481111561267c5761267b6127d1565b5b81810290505b9392505050565b600061269482612755565b915061269f83612755565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126d8576126d76127d1565b5b828202905092915050565b60006126ee82612755565b91506126f983612755565b92508282101561270c5761270b6127d1565b5b828203905092915050565b600061272282612735565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561278a57808201518184015260208101905061276f565b83811115612799576000848401525b50505050565b600060028204905060018216806127b757607f821691505b602082108114156127cb576127ca61282f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f4461696c792044726f703a2042696f737068657265732054726561737572792060008201527f41646472657373206e6f74207365740000000000000000000000000000000000602082015250565b7f4461696c792044726f703a2044657374696e6174696f6e2057616c6c6574207360008201527f74696c6c206861732062616c616e636500000000000000000000000000000000602082015250565b7f4461696c792044726f703a204c696d697420686173206265656e20726561636860008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b7f4461696c792044726f703a2044657374696e6174696f6e20416464726573732060008201527f6e6f742073657400000000000000000000000000000000000000000000000000602082015250565b6129c181612717565b81146129cc57600080fd5b50565b6129d881612755565b81146129e357600080fd5b5056fea2646970667358221220c358047d44e165193e7c985198c0502a0ec9572bc52bad4c60888f7d20f6c2bf64736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000001276900000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000002cf885c7a92bb95f56c1e40a1e131ce801050830000000000000000000000002eba0eb5246bf0bc6a1a3847fc2c49913decf11c00000000000000000000000000000000000000000000000000000000000000074145564f4c56450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054156455821000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): AEVOLVE
Arg [1] : _symbol (string): AVEX!
Arg [2] : _initialSupply (uint256): 1210000
Arg [3] : _decimals (uint8): 18
Arg [4] : _inflationIntervalInDays (uint256): 30
Arg [5] : _dropDestinationWallet (address): 0x02cf885C7A92bB95F56C1e40a1e131cE80105083
Arg [6] : _dropBiospheresTreasuryWallet (address): 0x2EBa0eB5246BF0BC6a1a3847Fc2C49913deCF11C
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [2] : 0000000000000000000000000000000000000000000000000000000000127690
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [4] : 000000000000000000000000000000000000000000000000000000000000001e
Arg [5] : 00000000000000000000000002cf885c7a92bb95f56c1e40a1e131ce80105083
Arg [6] : 0000000000000000000000002eba0eb5246bf0bc6a1a3847fc2c49913decf11c
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [8] : 4145564f4c564500000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [10] : 4156455821000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
53466:11881:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55916:8;;;53568:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;64492:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;58930:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;60668:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;59416:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;63049:1148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;54253:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53594:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;58785:133;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53622:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;58654:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;54300:59;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;60986:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;59186:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;59051:123;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52652:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53541;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;61464:1033;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;56449:1769;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;65182:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;59295:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;59537:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;58435:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;58230:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52846:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;60211:346;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53568:19;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;64492:404::-;64564:12;64615:1;64596:21;;:7;:21;;;;64588:30;;;;;;64647:8;:20;64656:10;64647:20;;;;;;;;;;;;;;;;64637:6;:30;;64629:39;;;;;;64697:1;64687:6;:11;;64679:20;;;;;;64750:1;64718:7;:19;64726:10;64718:19;;;;;;;;;;;;;;;:28;64738:7;64718:28;;;;;;;;;;;;;;;;:33;:48;;;;64765:1;64755:6;:11;64718:48;64710:57;;;;;;64809:6;64778:7;:19;64786:10;64778:19;;;;;;;;;;;;;;;:28;64798:7;64778:28;;;;;;;;;;;;;;;:37;;;;64851:7;64831:35;;64840:10;64831:35;;;64859:6;64831:35;;;;;;:::i;:::-;;;;;;;;64884:4;64877:11;;64492:404;;;;:::o;58930:109::-;58985:7;59012:19;;59005:26;;58930:109;:::o;60668:95::-;60721:4;60743:12;;60736:19;;60668:95;:::o;59416:109::-;59474:7;59501:16;;59494:23;;59416:109;:::o;63049:1148::-;63135:12;63183:1;63167:18;;:4;:18;;;;63159:27;;;;;;63219:1;63205:16;;:2;:16;;;;63197:25;;;;;;63251:7;:13;63259:4;63251:13;;;;;;;;;;;;;;;:25;63265:10;63251:25;;;;;;;;;;;;;;;;63241:6;:35;;63233:44;;;;;;63332:6;63314:8;:14;63323:4;63314:14;;;;;;;;;;;;;;;;:24;;63306:33;;;;;;63421:26;63440:6;63421:8;:14;63430:4;63421:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;63404:8;:14;63413:4;63404:14;;;;;;;;;;;;;;;:43;;;;63505:18;63526:22;:20;:22::i;:::-;63505:43;;63573:13;63569:279;;;63603:20;63626;:18;:20::i;:::-;63603:43;;63677:30;63694:12;63677;;:16;;:30;;;;:::i;:::-;63662:12;:45;;;;63741:33;63761:12;63741:8;:15;63750:5;;;;;;;;;;;63741:15;;;;;;;;;;;;;;;;:19;;:33;;;;:::i;:::-;63723:8;:15;63732:5;;;;;;;;;;;63723:15;;;;;;;;;;;;;;;:51;;;;63794:42;63807:12;63821:10;63833:2;63794:42;;;;;;;;:::i;:::-;;;;;;;;63569:279;;63901:8;:12;63910:2;63901:12;;;;;;;;;;;;;;;;63891:6;63876:8;:12;63885:2;63876:12;;;;;;;;;;;;;;;;:21;;;;:::i;:::-;:37;;63868:46;;;;;;63997:24;64014:6;63997:8;:12;64006:2;63997:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;63982:8;:12;63991:2;63982:12;;;;;;;;;;;;;;;:39;;;;64070:37;64100:6;64070:7;:13;64078:4;64070:13;;;;;;;;;;;;;;;:25;64084:10;64070:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;64042:7;:13;64050:4;64042:13;;;;;;;;;;;;;;;:25;64056:10;64042:25;;;;;;;;;;;;;;;:65;;;;64147:2;64133:24;;64142:4;64133:24;;;64150:6;64133:24;;;;;;:::i;:::-;;;;;;;;64185:4;64178:11;;;63049:1148;;;;;:::o;54253:40::-;;;;;;;;;;;;;;;;;:::o;53594:21::-;;;;;;;;;;;;;:::o;58785:133::-;58856:7;58882:28;;;;;;;;;;;58875:35;;58785:133;:::o;53622:24::-;;;;:::o;58654:119::-;58718:7;58744:21;;;;;;;;;;;58737:28;;58654:119;:::o;54300:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;60986:129::-;61055:12;61087:8;:20;61096:10;61087:20;;;;;;;;;;;;;;;;61080:27;;60986:129;;;:::o;59186:97::-;59235:7;59262:13;;59255:20;;59186:97;:::o;59051:123::-;59113:7;59140:26;;59133:33;;59051:123;:::o;52652:20::-;;;;;;;;;;;;:::o;53541:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;61464:1033::-;61532:12;61633:1;61619:16;;:2;:16;;;;61611:25;;;;;;61679:6;61655:8;:20;61664:10;61655:20;;;;;;;;;;;;;;;;:30;;61647:40;;;;;;61731:32;61756:6;61731:8;:20;61740:10;61731:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;61708:8;:20;61717:10;61708:20;;;;;;;;;;;;;;;:55;;;;61826:18;61847:22;:20;:22::i;:::-;61826:43;;61894:13;61890:279;;;61924:20;61947;:18;:20::i;:::-;61924:43;;61998:30;62015:12;61998;;:16;;:30;;;;:::i;:::-;61983:12;:45;;;;62062:33;62082:12;62062:8;:15;62071:5;;;;;;;;;;;62062:15;;;;;;;;;;;;;;;;:19;;:33;;;;:::i;:::-;62044:8;:15;62053:5;;;;;;;;;;;62044:15;;;;;;;;;;;;;;;:51;;;;62115:42;62128:12;62142:10;62154:2;62115:42;;;;;;;;:::i;:::-;;;;;;;;61890:279;;62232:8;:12;62241:2;62232:12;;;;;;;;;;;;;;;;62222:6;62207:8;:12;62216:2;62207:12;;;;;;;;;;;;;;;;:21;;;;:::i;:::-;:37;;62199:46;;;;;;62329:24;62346:6;62329:8;:12;62338:2;62329:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;62314:8;:12;62323:2;62314:12;;;;;;;;;;;;;;;:39;;;;62447:2;62427:30;;62436:10;62427:30;;;62450:6;62427:30;;;;;;:::i;:::-;;;;;;;;62485:4;62478:11;;;61464:1033;;;;:::o;56449:1769::-;56490:12;56566:1;56533:35;;:21;;;;;;;;;;;:35;;;;56525:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;56671:1;56631:42;;:28;;;;;;;;;;;:42;;;;56623:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;56839:14;;56810:26;;:43;56802:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;57064:8;;;;;;;;;;;57059:14;;57055:2;:18;;;;:::i;:::-;57051:1;:22;;;;:::i;:::-;57017:8;:31;57026:21;;;;;;;;;;;57017:31;;;;;;;;;;;;;;;;:56;57009:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;57147:20;57170:38;57194:13;;57170:19;;:23;;:38;;;;:::i;:::-;57147:61;;57234:21;57251:3;57234:12;:16;;:21;;;;:::i;:::-;57219:36;;57415:14;;57400:12;57371:26;;:41;;;;:::i;:::-;:58;57366:154;;;57462:46;57481:26;;57462:14;;:18;;:46;;;;:::i;:::-;57447:61;;57366:154;57569:44;57600:12;57569:26;;:30;;:44;;;;:::i;:::-;57540:26;:73;;;;57646:37;57670:12;57646:19;;:23;;:37;;;;:::i;:::-;57624:19;:59;;;;57738:49;57774:12;57738:8;:31;57747:21;;;;;;;;;;;57738:31;;;;;;;;;;;;;;;;:35;;:49;;;;:::i;:::-;57704:8;:31;57713:21;;;;;;;;;;;57704:31;;;;;;;;;;;;;;;:83;;;;57813:30;57830:12;57813;;:16;;:30;;;;:::i;:::-;57798:12;:45;;;;57859:61;57872:12;57886:10;57898:21;;;;;;;;;;;57859:61;;;;;;;;:::i;:::-;;;;;;;;57982:56;58025:12;57982:8;:38;57991:28;;;;;;;;;;;57982:38;;;;;;;;;;;;;;;;:42;;:56;;;;:::i;:::-;57941:8;:38;57950:28;;;;;;;;;;;57941:38;;;;;;;;;;;;;;;:97;;;;58064:30;58081:12;58064;;:16;;:30;;;;:::i;:::-;58049:12;:45;;;;58110:68;58123:12;58137:10;58149:28;;;;;;;;;;;58110:68;;;;;;;;:::i;:::-;;;;;;;;58206:4;58199:11;;;56449:1769;:::o;65182:156::-;65268:14;65302:7;:19;65310:10;65302:19;;;;;;;;;;;;;;;:28;65322:7;65302:28;;;;;;;;;;;;;;;;65295:35;;65182:156;;;;:::o;59295:109::-;59353:7;59380:16;;59373:23;;59295:109;:::o;59537:114::-;59599:7;59626:17;;59619:24;;59537:114;:::o;58435:207::-;58538:12;52812:5;;;;;;;;;;;52798:19;;:10;:19;;;52790:28;;;;;;58593:19:::1;58562:28;;:50;;;;;;;;;;;;;;;;;;58630:4;58623:11;;58435:207:::0;;;:::o;58230:193::-;58326:12;52812:5;;;;;;;;;;;52798:19;;:10;:19;;;52790:28;;;;;;58374:19:::1;58350:21;;:43;;;;;;;;;;;;;;;;;;58411:4;58404:11;;58230:193:::0;;;:::o;52846:153::-;52812:5;;;;;;;;;;52798:19;;:10;:19;;;52790:28;;;;;;52953:9:::1;52925:38;;52946:5;::::0;::::1;;;;;;;;52925:38;;;;;;;;;;;;52982:9;52974:5;::::0;:17:::1;;;;;;;;;;;;;;;;;;52846:153:::0;:::o;60211:346::-;52812:5;;;;;;;;;;52798:19;;:10;:19;;;52790:28;;;;;;60318:6:::1;60296:8;:18;60305:8;60296:18;;;;;;;;;;;;;;;;:28;;60288:37;;;::::0;::::1;;60357:30;60380:6;60357:8;:18;60366:8;60357:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;60336:8;:18;60345:8;60336:18;;;;;;;;;;;;;;;:51;;;;60413:24;60430:6;60413:12;;:16;;:24;;;;:::i;:::-;60398:12;:39;;;;60453:42;60466:6;60474:10;60486:8;60453:42;;;;;;;;:::i;:::-;;;;;;;;60538:1;60511:38;;60520:8;60511:38;;;60542:6;60511:38;;;;;;:::i;:::-;;;;;;;;60211:346:::0;;:::o;51772:114::-;51824:6;51851:1;51847;:5;;;;:::i;:::-;51843:9;;51876:1;51871;:6;;51863:15;;;;;;51772:114;;;;:::o;51892:::-;51944:6;51976:1;51971;:6;;51963:15;;;;;;51997:1;51993;:5;;;;:::i;:::-;51989:9;;51892:114;;;;:::o;55948:489::-;55998:4;56015:18;56036:5;56015:26;;56077:1;56057:16;;:21;56053:336;;;56114:15;56095:16;:34;;;;56163:39;56184:17;;56163:16;;:20;;:39;;;;:::i;:::-;56144:16;:58;;;;56053:336;;;56284:16;;56265:15;:35;56261:117;;56357:4;56341:20;;56261:117;56053:336;56416:13;56409:20;;;55948:489;:::o;59663:536::-;59711:7;59730:22;59755:31;59772:13;;59755:12;;:16;;:31;;;;:::i;:::-;59730:56;;59797:20;59820:27;59839:7;59820:14;:18;;:27;;;;:::i;:::-;59797:50;;59858:21;59882:58;59900:39;59918:20;;59900:13;;:17;;:39;;;;:::i;:::-;59882:13;;:17;;:58;;;;:::i;:::-;59858:82;;60029:16;60013:13;:32;;;;60075:16;;60056;:35;;;;60122:39;60143:17;;60122:16;;:20;;:39;;;;:::i;:::-;60103:16;:58;;;;60179:12;60172:19;;;;;59663:536;:::o;52012:128::-;52064:6;52091:1;52087;:5;;;;:::i;:::-;52083:9;;52116:1;52111;:6;:20;;;;52130:1;52125;52121;:5;;;;:::i;:::-;:10;52111:20;52103:29;;;;;;52012:128;;;;:::o;52146:113::-;52198:6;52229:1;52225;:5;52217:14;;;;;;52250:1;52246;:5;;;;:::i;:::-;52242:9;;52146:113;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;633:6;641;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;1055:6;1063;1071;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;1604:6;1612;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:407::-;2017:6;2025;2074:2;2062:9;2053:7;2049:23;2045:32;2042:2;;;2090:1;2087;2080:12;2042:2;2133:1;2158:53;2203:7;2194:6;2183:9;2179:22;2158:53;:::i;:::-;2148:63;;2104:117;2260:2;2286:53;2331:7;2322:6;2311:9;2307:22;2286:53;:::i;:::-;2276:63;;2231:118;2032:324;;;;;:::o;2362:118::-;2449:24;2467:5;2449:24;:::i;:::-;2444:3;2437:37;2427:53;;:::o;2486:109::-;2567:21;2582:5;2567:21;:::i;:::-;2562:3;2555:34;2545:50;;:::o;2601:364::-;2689:3;2717:39;2750:5;2717:39;:::i;:::-;2772:71;2836:6;2831:3;2772:71;:::i;:::-;2765:78;;2852:52;2897:6;2892:3;2885:4;2878:5;2874:16;2852:52;:::i;:::-;2929:29;2951:6;2929:29;:::i;:::-;2924:3;2920:39;2913:46;;2693:272;;;;;:::o;2971:366::-;3113:3;3134:67;3198:2;3193:3;3134:67;:::i;:::-;3127:74;;3210:93;3299:3;3210:93;:::i;:::-;3328:2;3323:3;3319:12;3312:19;;3117:220;;;:::o;3343:366::-;3485:3;3506:67;3570:2;3565:3;3506:67;:::i;:::-;3499:74;;3582:93;3671:3;3582:93;:::i;:::-;3700:2;3695:3;3691:12;3684:19;;3489:220;;;:::o;3715:366::-;3857:3;3878:67;3942:2;3937:3;3878:67;:::i;:::-;3871:74;;3954:93;4043:3;3954:93;:::i;:::-;4072:2;4067:3;4063:12;4056:19;;3861:220;;;:::o;4087:366::-;4229:3;4250:67;4314:2;4309:3;4250:67;:::i;:::-;4243:74;;4326:93;4415:3;4326:93;:::i;:::-;4444:2;4439:3;4435:12;4428:19;;4233:220;;;:::o;4459:118::-;4546:24;4564:5;4546:24;:::i;:::-;4541:3;4534:37;4524:53;;:::o;4583:112::-;4666:22;4682:5;4666:22;:::i;:::-;4661:3;4654:35;4644:51;;:::o;4701:222::-;4794:4;4832:2;4821:9;4817:18;4809:26;;4845:71;4913:1;4902:9;4898:17;4889:6;4845:71;:::i;:::-;4799:124;;;;:::o;4929:210::-;5016:4;5054:2;5043:9;5039:18;5031:26;;5067:65;5129:1;5118:9;5114:17;5105:6;5067:65;:::i;:::-;5021:118;;;;:::o;5145:313::-;5258:4;5296:2;5285:9;5281:18;5273:26;;5345:9;5339:4;5335:20;5331:1;5320:9;5316:17;5309:47;5373:78;5446:4;5437:6;5373:78;:::i;:::-;5365:86;;5263:195;;;;:::o;5464:419::-;5630:4;5668:2;5657:9;5653:18;5645:26;;5717:9;5711:4;5707:20;5703:1;5692:9;5688:17;5681:47;5745:131;5871:4;5745:131;:::i;:::-;5737:139;;5635:248;;;:::o;5889:419::-;6055:4;6093:2;6082:9;6078:18;6070:26;;6142:9;6136:4;6132:20;6128:1;6117:9;6113:17;6106:47;6170:131;6296:4;6170:131;:::i;:::-;6162:139;;6060:248;;;:::o;6314:419::-;6480:4;6518:2;6507:9;6503:18;6495:26;;6567:9;6561:4;6557:20;6553:1;6542:9;6538:17;6531:47;6595:131;6721:4;6595:131;:::i;:::-;6587:139;;6485:248;;;:::o;6739:419::-;6905:4;6943:2;6932:9;6928:18;6920:26;;6992:9;6986:4;6982:20;6978:1;6967:9;6963:17;6956:47;7020:131;7146:4;7020:131;:::i;:::-;7012:139;;6910:248;;;:::o;7164:222::-;7257:4;7295:2;7284:9;7280:18;7272:26;;7308:71;7376:1;7365:9;7361:17;7352:6;7308:71;:::i;:::-;7262:124;;;;:::o;7392:442::-;7541:4;7579:2;7568:9;7564:18;7556:26;;7592:71;7660:1;7649:9;7645:17;7636:6;7592:71;:::i;:::-;7673:72;7741:2;7730:9;7726:18;7717:6;7673:72;:::i;:::-;7755;7823:2;7812:9;7808:18;7799:6;7755:72;:::i;:::-;7546:288;;;;;;:::o;7840:214::-;7929:4;7967:2;7956:9;7952:18;7944:26;;7980:67;8044:1;8033:9;8029:17;8020:6;7980:67;:::i;:::-;7934:120;;;;:::o;8060:99::-;8112:6;8146:5;8140:12;8130:22;;8119:40;;;:::o;8165:169::-;8249:11;8283:6;8278:3;8271:19;8323:4;8318:3;8314:14;8299:29;;8261:73;;;;:::o;8340:305::-;8380:3;8399:20;8417:1;8399:20;:::i;:::-;8394:25;;8433:20;8451:1;8433:20;:::i;:::-;8428:25;;8587:1;8519:66;8515:74;8512:1;8509:81;8506:2;;;8593:18;;:::i;:::-;8506:2;8637:1;8634;8630:9;8623:16;;8384:261;;;;:::o;8651:185::-;8691:1;8708:20;8726:1;8708:20;:::i;:::-;8703:25;;8742:20;8760:1;8742:20;:::i;:::-;8737:25;;8781:1;8771:2;;8786:18;;:::i;:::-;8771:2;8828:1;8825;8821:9;8816:14;;8693:143;;;;:::o;8842:848::-;8903:5;8910:4;8934:6;8925:15;;8958:5;8949:14;;8972:712;8993:1;8983:8;8980:15;8972:712;;;9088:4;9083:3;9079:14;9073:4;9070:24;9067:2;;;9097:18;;:::i;:::-;9067:2;9147:1;9137:8;9133:16;9130:2;;;9562:4;9555:5;9551:16;9542:25;;9130:2;9612:4;9606;9602:15;9594:23;;9642:32;9665:8;9642:32;:::i;:::-;9630:44;;8972:712;;;8915:775;;;;;;;:::o;9696:285::-;9756:5;9780:23;9798:4;9780:23;:::i;:::-;9772:31;;9824:27;9842:8;9824:27;:::i;:::-;9812:39;;9870:104;9907:66;9897:8;9891:4;9870:104;:::i;:::-;9861:113;;9762:219;;;;:::o;9987:1073::-;10041:5;10232:8;10222:2;;10253:1;10244:10;;10255:5;;10222:2;10281:4;10271:2;;10298:1;10289:10;;10300:5;;10271:2;10367:4;10415:1;10410:27;;;;10451:1;10446:191;;;;10360:277;;10410:27;10428:1;10419:10;;10430:5;;;10446:191;10491:3;10481:8;10478:17;10475:2;;;10498:18;;:::i;:::-;10475:2;10547:8;10544:1;10540:16;10531:25;;10582:3;10575:5;10572:14;10569:2;;;10589:18;;:::i;:::-;10569:2;10622:5;;;10360:277;;10746:2;10736:8;10733:16;10727:3;10721:4;10718:13;10714:36;10696:2;10686:8;10683:16;10678:2;10672:4;10669:12;10665:35;10649:111;10646:2;;;10802:8;10796:4;10792:19;10783:28;;10837:3;10830:5;10827:14;10824:2;;;10844:18;;:::i;:::-;10824:2;10877:5;;10646:2;10917:42;10955:3;10945:8;10939:4;10936:1;10917:42;:::i;:::-;10902:57;;;;10991:4;10986:3;10982:14;10975:5;10972:25;10969:2;;;11000:18;;:::i;:::-;10969:2;11049:4;11042:5;11038:16;11029:25;;10047:1013;;;;;;:::o;11066:348::-;11106:7;11129:20;11147:1;11129:20;:::i;:::-;11124:25;;11163:20;11181:1;11163:20;:::i;:::-;11158:25;;11351:1;11283:66;11279:74;11276:1;11273:81;11268:1;11261:9;11254:17;11250:105;11247:2;;;11358:18;;:::i;:::-;11247:2;11406:1;11403;11399:9;11388:20;;11114:300;;;;:::o;11420:191::-;11460:4;11480:20;11498:1;11480:20;:::i;:::-;11475:25;;11514:20;11532:1;11514:20;:::i;:::-;11509:25;;11553:1;11550;11547:8;11544:2;;;11558:18;;:::i;:::-;11544:2;11603:1;11600;11596:9;11588:17;;11465:146;;;;:::o;11617:96::-;11654:7;11683:24;11701:5;11683:24;:::i;:::-;11672:35;;11662:51;;;:::o;11719:90::-;11753:7;11796:5;11789:13;11782:21;11771:32;;11761:48;;;:::o;11815:126::-;11852:7;11892:42;11885:5;11881:54;11870:65;;11860:81;;;:::o;11947:77::-;11984:7;12013:5;12002:16;;11992:32;;;:::o;12030:86::-;12065:7;12105:4;12098:5;12094:16;12083:27;;12073:43;;;:::o;12122:307::-;12190:1;12200:113;12214:6;12211:1;12208:13;12200:113;;;12299:1;12294:3;12290:11;12284:18;12280:1;12275:3;12271:11;12264:39;12236:2;12233:1;12229:10;12224:15;;12200:113;;;12331:6;12328:1;12325:13;12322:2;;;12411:1;12402:6;12397:3;12393:16;12386:27;12322:2;12171:258;;;;:::o;12435:320::-;12479:6;12516:1;12510:4;12506:12;12496:22;;12563:1;12557:4;12553:12;12584:18;12574:2;;12640:4;12632:6;12628:17;12618:27;;12574:2;12702;12694:6;12691:14;12671:18;12668:38;12665:2;;;12721:18;;:::i;:::-;12665:2;12486:269;;;;:::o;12761:180::-;12809:77;12806:1;12799:88;12906:4;12903:1;12896:15;12930:4;12927:1;12920:15;12947:180;12995:77;12992:1;12985:88;13092:4;13089:1;13082:15;13116:4;13113:1;13106:15;13133:180;13181:77;13178:1;13171:88;13278:4;13275:1;13268:15;13302:4;13299:1;13292:15;13319:102;13360:6;13411:2;13407:7;13402:2;13395:5;13391:14;13387:28;13377:38;;13367:54;;;:::o;13427:102::-;13469:8;13516:5;13513:1;13509:13;13488:34;;13478:51;;;:::o;13535:234::-;13675:34;13671:1;13663:6;13659:14;13652:58;13744:17;13739:2;13731:6;13727:15;13720:42;13641:128;:::o;13775:235::-;13915:34;13911:1;13903:6;13899:14;13892:58;13984:18;13979:2;13971:6;13967:15;13960:43;13881:129;:::o;14016:221::-;14156:34;14152:1;14144:6;14140:14;14133:58;14225:4;14220:2;14212:6;14208:15;14201:29;14122:115;:::o;14243:226::-;14383:34;14379:1;14371:6;14367:14;14360:58;14452:9;14447:2;14439:6;14435:15;14428:34;14349:120;:::o;14475:122::-;14548:24;14566:5;14548:24;:::i;:::-;14541:5;14538:35;14528:2;;14587:1;14584;14577:12;14528:2;14518:79;:::o;14603:122::-;14676:24;14694:5;14676:24;:::i;:::-;14669:5;14666:35;14656:2;;14715:1;14712;14705:12;14656:2;14646:79;:::o
Swarm Source
ipfs://c358047d44e165193e7c985198c0502a0ec9572bc52bad4c60888f7d20f6c2bf
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.