ERC-20
Overview
Max Total Supply
49,986.991328947368419806 ZEUS
Holders
50
Market
Price
$0.00 @ 0.000000 FTM
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000067708804460663 ZEUSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
ZeusToken
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2022-04-19 */ /** *Submitted for verification at FtmScan.com on 2021-11-27 */ // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts v4.4.0 (utils/Address.sol) pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.0 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/security/Pausable.sol // OpenZeppelin Contracts v4.4.0 (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.0 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @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() { _transferOwnership(_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 { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `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/utils/SafeERC20.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `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/token/ERC20/extensions/ERC20Burnable.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/ERC20Burnable.sol) pragma solidity ^0.8.0; /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { uint256 currentAllowance = allowance(account, _msgSender()); require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance"); unchecked { _approve(account, _msgSender(), currentAllowance - amount); } _burn(account, amount); } } // File: zeus.sol //SPDX-License-Identifier: MIT pragma solidity 0.8.0; // K. /////////////////// IMPORTS ////////////////////// /////////////////// CONTRACT //////////////////// /* Token is paused in the beginning to prevent mishandling. * Then token will be unpaused manually before farming launch. * Token CANNOT be paused again once unpaused. */ contract ZeusToken is ERC20, ERC20Burnable, Ownable, Pausable { ////////////////// DECLARATIONS ///////////////// /* masterchef - masterchef address that will handle the minting. Owner cannot mint. * tokenSoftCap - Soft cap is implemented instead of a hard cap to have a flexible emission and additional supply if needed. * previousTokenCap - Records the previous token cap before the implemented change. * totalMinted - Counts the total mint and compares it with the softcap to limit minting over the set soft cap. * intialSupply - Initial mint for liquidity adding and giveaways. */ address public masterchef; uint256 public tokenSoftCap; uint256 public previousTokenCap = 0; uint256 public totalMinted = 0; uint256 public initialSupply = 0; bool public transferEnabled = false; /////////////////// EVENTS ////////////////////// event UpdatedTokenSoftCap(uint256 amount); event InitialSupplyMint(address indexed user, uint256 amount); event MasterchefInitialized(address indexed masterchef); event TransferEnabled(bool status); /////////////////// CONSTRUCTOR ///////////////// constructor (uint256 _tokenSoftCap, uint256 _initialSupply) ERC20("Zeus", "ZEUS") { require(_tokenSoftCap > 0, "ERROR: Token soft cap cannot be zero."); tokenSoftCap = _tokenSoftCap; initialSupply = _initialSupply; _mint(msg.sender, initialSupply); totalMinted = totalMinted + initialSupply; _pause(); emit InitialSupplyMint(msg.sender, initialSupply); } /////////////////// MODIFIERS /////////////////// // Throws if called by any account other than the Masterchef. modifier onlyMasterchef() { require(msg.sender == masterchef, "Caller is not the Masterchef"); _; } ////////////// PRIVILEGED FUNCTIONS ////////////// //This function initializes the masterchef address into the token address. This can only be called ONCE. function initializeMC(address _masterchef) external onlyOwner { require( masterchef == address(0) && _masterchef != address(0) && _masterchef != address(this), "ERROR: Masterchef cannot be the zero address." ); masterchef = _masterchef; emit MasterchefInitialized(masterchef); } // This function updates the token soft cap to a new one. A timelocked operator is highly recommended. function setTokenSoftCap(uint256 _newSoftCap) external onlyOwner { previousTokenCap = tokenSoftCap; tokenSoftCap = _newSoftCap; emit UpdatedTokenSoftCap(_newSoftCap); } // This function mints ZEUS tokens. Can only be called by the Masterchef. function mint(address _to, uint256 _amount) public onlyMasterchef whenNotPaused { require(tokenSoftCap >= totalMinted + _amount, "Token soft cap has been reached."); totalMinted = totalMinted + _amount; _mint(_to, _amount); } ////////// STATE MODIFYING FUNCTIONS ///////////// //Unpauses the token contract to allow token transfers. Just for safeguards nothing special. function transferEnable() external onlyOwner { require(transferEnabled == false, "Token transfers has already started."); transferEnabled = true; _unpause(); emit TransferEnabled(transferEnabled); } // This override function transfers tokens to a receipient whenever the contract is not paused. function transfer(address recipient, uint256 amount) public virtual override whenNotPaused returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } // This override function transfers tokens to a receipient whenever the contract is not paused. function transferFrom(address sender, address recipient, uint256 amount) public virtual override whenNotPaused returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = allowance(sender, msg.sender); require(currentAllowance >= amount, "ERC20: Transfer amount exceeds allowance."); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /// END OF CONTRACT /// }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"_tokenSoftCap","type":"uint256"},{"internalType":"uint256","name":"_initialSupply","type":"uint256"}],"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":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"InitialSupplyMint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"masterchef","type":"address"}],"name":"MasterchefInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"TransferEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UpdatedTokenSoftCap","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_masterchef","type":"address"}],"name":"initializeMC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"masterchef","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"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":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousTokenCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSoftCap","type":"uint256"}],"name":"setTokenSoftCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenSoftCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600060085560006009556000600a556000600b60006101000a81548160ff0219169083151502179055503480156200003b57600080fd5b506040516200320a3803806200320a83398181016040528101906200006191906200060d565b6040518060400160405280600481526020017f5a657573000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a455553000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000e592919062000546565b508060049080519060200190620000fe92919062000546565b50505062000121620001156200022660201b60201c565b6200022e60201b60201c565b6000600560146101000a81548160ff0219169083151502179055506000821162000182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000179906200079b565b60405180910390fd5b8160078190555080600a81905550620001a433600a54620002f460201b60201c565b600a54600954620001b691906200080d565b600981905550620001cc6200046d60201b60201c565b3373ffffffffffffffffffffffffffffffffffffffff167fd347a0de5076f1b7d1351fc93b1beb020c9bcbee74a6707bf5fe66d6703caf32600a54604051620002169190620007df565b60405180910390a2505062000956565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000367576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200035e90620007bd565b60405180910390fd5b6200037b600083836200052560201b60201c565b80600260008282546200038f91906200080d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620003e691906200080d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200044d9190620007df565b60405180910390a362000469600083836200052a60201b60201c565b5050565b6200047d6200052f60201b60201c565b15620004c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004b79062000779565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586200050c6200022660201b60201c565b6040516200051b91906200075c565b60405180910390a1565b505050565b505050565b6000600560149054906101000a900460ff16905090565b8280546200055490620008a8565b90600052602060002090601f016020900481019282620005785760008555620005c4565b82601f106200059357805160ff1916838001178555620005c4565b82800160010185558215620005c4579182015b82811115620005c3578251825591602001919060010190620005a6565b5b509050620005d39190620005d7565b5090565b5b80821115620005f2576000816000905550600101620005d8565b5090565b60008151905062000607816200093c565b92915050565b600080604083850312156200062157600080fd5b60006200063185828601620005f6565b92505060206200064485828601620005f6565b9150509250929050565b62000659816200086a565b82525050565b60006200066e601083620007fc565b91507f5061757361626c653a20706175736564000000000000000000000000000000006000830152602082019050919050565b6000620006b0602583620007fc565b91507f4552524f523a20546f6b656e20736f6674206361702063616e6e6f742062652060008301527f7a65726f2e0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000718601f83620007fc565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b62000756816200089e565b82525050565b60006020820190506200077360008301846200064e565b92915050565b6000602082019050818103600083015262000794816200065f565b9050919050565b60006020820190508181036000830152620007b681620006a1565b9050919050565b60006020820190508181036000830152620007d88162000709565b9050919050565b6000602082019050620007f660008301846200074b565b92915050565b600082825260208201905092915050565b60006200081a826200089e565b915062000827836200089e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200085f576200085e620008de565b5b828201905092915050565b600062000877826200087e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006002820490506001821680620008c157607f821691505b60208210811415620008d857620008d76200090d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b62000947816200089e565b81146200095357600080fd5b50565b6128a480620009666000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80635c975abb116100f9578063a457c2d711610097578063dd62ed3e11610071578063dd62ed3e1461049a578063f10ca36d146104ca578063f2fde38b146104e8578063fb1db27814610504576101a9565b8063a457c2d71461041c578063a9059cbb1461044c578063d7d5c0781461047c576101a9565b806379cc6790116100d357806379cc6790146103a65780638da5cb5b146103c257806395d89b41146103e0578063a2309ff8146103fe576101a9565b80635c975abb1461034e57806370a082311461036c578063715018a61461039c576101a9565b8063378dc3dc1161016657806340c10f191161014057806340c10f19146102dc57806342966c68146102f85780634cd412d51461031457806353db291314610332576101a9565b8063378dc3dc1461027257806339509351146102905780633ccbaf03146102c0576101a9565b806306fdde03146101ae578063095ea7b3146101cc57806318160ddd146101fc57806323b872dd1461021a578063242654a21461024a578063313ce56714610254575b600080fd5b6101b6610522565b6040516101c391906123b9565b60405180910390f35b6101e660048036038101906101e19190611bfb565b6105b4565b6040516101f3919061239e565b60405180910390f35b6102046105d2565b604051610211919061263b565b60405180910390f35b610234600480360381019061022f9190611bac565b6105dc565b604051610241919061239e565b60405180910390f35b6102526106a2565b005b61025c6107df565b6040516102699190612656565b60405180910390f35b61027a6107e8565b604051610287919061263b565b60405180910390f35b6102aa60048036038101906102a59190611bfb565b6107ee565b6040516102b7919061239e565b60405180910390f35b6102da60048036038101906102d59190611b47565b61089a565b005b6102f660048036038101906102f19190611bfb565b610ac1565b005b610312600480360381019061030d9190611c37565b610c0d565b005b61031c610c21565b604051610329919061239e565b60405180910390f35b61034c60048036038101906103479190611c37565b610c34565b005b610356610cfa565b604051610363919061239e565b60405180910390f35b61038660048036038101906103819190611b47565b610d11565b604051610393919061263b565b60405180910390f35b6103a4610d59565b005b6103c060048036038101906103bb9190611bfb565b610de1565b005b6103ca610e5c565b6040516103d79190612383565b60405180910390f35b6103e8610e86565b6040516103f591906123b9565b60405180910390f35b610406610f18565b604051610413919061263b565b60405180910390f35b61043660048036038101906104319190611bfb565b610f1e565b604051610443919061239e565b60405180910390f35b61046660048036038101906104619190611bfb565b611009565b604051610473919061239e565b60405180910390f35b61048461106f565b604051610491919061263b565b60405180910390f35b6104b460048036038101906104af9190611b70565b611075565b6040516104c1919061263b565b60405180910390f35b6104d26110fc565b6040516104df919061263b565b60405180910390f35b61050260048036038101906104fd9190611b47565b611102565b005b61050c6111fa565b6040516105199190612383565b60405180910390f35b6060600380546105319061279f565b80601f016020809104026020016040519081016040528092919081815260200182805461055d9061279f565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b5050505050905090565b60006105c86105c1611220565b8484611228565b6001905092915050565b6000600254905090565b60006105e6610cfa565b15610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061d906124db565b60405180910390fd5b6106318484846113f3565b600061063d8533611075565b905082811015610682576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610679906125bb565b60405180910390fd5b6106968561068e611220565b858403611228565b60019150509392505050565b6106aa611220565b73ffffffffffffffffffffffffffffffffffffffff166106c8610e5c565b73ffffffffffffffffffffffffffffffffffffffff161461071e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610715906124fb565b60405180910390fd5b60001515600b60009054906101000a900460ff16151514610774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076b9061241b565b60405180910390fd5b6001600b60006101000a81548160ff021916908315150217905550610797611674565b7fa410c62368e64b86d7722fd28e698d03bd00719ba95a861b50ceb65efdc6ca44600b60009054906101000a900460ff166040516107d5919061239e565b60405180910390a1565b60006012905090565b600a5481565b60006108906107fb611220565b848460016000610809611220565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461088b919061268d565b611228565b6001905092915050565b6108a2611220565b73ffffffffffffffffffffffffffffffffffffffff166108c0610e5c565b73ffffffffffffffffffffffffffffffffffffffff1614610916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090d906124fb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156109a15750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156109d957503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f9061259b565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f560af44e8521c1f80503d5e5137dfef35294bf103bc52f0105ba3db098372ef460405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b489061255b565b60405180910390fd5b610b59610cfa565b15610b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b90906124db565b60405180910390fd5b80600954610ba7919061268d565b6007541015610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be2906124bb565b60405180910390fd5b80600954610bf9919061268d565b600981905550610c098282611716565b5050565b610c1e610c18611220565b82611876565b50565b600b60009054906101000a900460ff1681565b610c3c611220565b73ffffffffffffffffffffffffffffffffffffffff16610c5a610e5c565b73ffffffffffffffffffffffffffffffffffffffff1614610cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca7906124fb565b60405180910390fd5b600754600881905550806007819055507f83d80b99c4283ab71d9579a782f9c4f3b5a16709732e5d2da15736290a8e129581604051610cef919061263b565b60405180910390a150565b6000600560149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d61611220565b73ffffffffffffffffffffffffffffffffffffffff16610d7f610e5c565b73ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc906124fb565b60405180910390fd5b610ddf6000611a4d565b565b6000610df483610def611220565b611075565b905081811015610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e309061251b565b60405180910390fd5b610e4d83610e45611220565b848403611228565b610e578383611876565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e959061279f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec19061279f565b8015610f0e5780601f10610ee357610100808354040283529160200191610f0e565b820191906000526020600020905b815481529060010190602001808311610ef157829003601f168201915b5050505050905090565b60095481565b60008060016000610f2d611220565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe1906125fb565b60405180910390fd5b610ffe610ff5611220565b85858403611228565b600191505092915050565b6000611013610cfa565b15611053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104a906124db565b60405180910390fd5b61106561105e611220565b84846113f3565b6001905092915050565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b61110a611220565b73ffffffffffffffffffffffffffffffffffffffff16611128610e5c565b73ffffffffffffffffffffffffffffffffffffffff161461117e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611175906124fb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e59061245b565b60405180910390fd5b6111f781611a4d565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f906125db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ff9061247b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113e6919061263b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145a9061257b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca906123db565b60405180910390fd5b6114de838383611b13565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b9061249b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115f7919061268d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165b919061263b565b60405180910390a361166e848484611b18565b50505050565b61167c610cfa565b6116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b2906123fb565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6116ff611220565b60405161170c9190612383565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d9061261b565b60405180910390fd5b61179260008383611b13565b80600260008282546117a4919061268d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117f9919061268d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161185e919061263b565b60405180910390a361187260008383611b18565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd9061253b565b60405180910390fd5b6118f282600083611b13565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f9061243b565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546119cf91906126e3565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a34919061263b565b60405180910390a3611a4883600084611b18565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081359050611b2c81612840565b92915050565b600081359050611b4181612857565b92915050565b600060208284031215611b5957600080fd5b6000611b6784828501611b1d565b91505092915050565b60008060408385031215611b8357600080fd5b6000611b9185828601611b1d565b9250506020611ba285828601611b1d565b9150509250929050565b600080600060608486031215611bc157600080fd5b6000611bcf86828701611b1d565b9350506020611be086828701611b1d565b9250506040611bf186828701611b32565b9150509250925092565b60008060408385031215611c0e57600080fd5b6000611c1c85828601611b1d565b9250506020611c2d85828601611b32565b9150509250929050565b600060208284031215611c4957600080fd5b6000611c5784828501611b32565b91505092915050565b611c6981612717565b82525050565b611c7881612729565b82525050565b6000611c8982612671565b611c93818561267c565b9350611ca381856020860161276c565b611cac8161282f565b840191505092915050565b6000611cc460238361267c565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d2a60148361267c565b91507f5061757361626c653a206e6f74207061757365640000000000000000000000006000830152602082019050919050565b6000611d6a60248361267c565b91507f546f6b656e207472616e73666572732068617320616c7265616479207374617260008301527f7465642e000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611dd060228361267c565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e3660268361267c565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e9c60228361267c565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f0260268361267c565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f6860208361267c565b91507f546f6b656e20736f66742063617020686173206265656e20726561636865642e6000830152602082019050919050565b6000611fa860108361267c565b91507f5061757361626c653a20706175736564000000000000000000000000000000006000830152602082019050919050565b6000611fe860208361267c565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061202860248361267c565b91507f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008301527f616e6365000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061208e60218361267c565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006120f4601c8361267c565b91507f43616c6c6572206973206e6f7420746865204d617374657263686566000000006000830152602082019050919050565b600061213460258361267c565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061219a602d8361267c565b91507f4552524f523a204d6173746572636865662063616e6e6f74206265207468652060008301527f7a65726f20616464726573732e000000000000000000000000000000000000006020830152604082019050919050565b600061220060298361267c565b91507f45524332303a205472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63652e00000000000000000000000000000000000000000000006020830152604082019050919050565b600061226660248361267c565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006122cc60258361267c565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612332601f8361267c565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b61236e81612755565b82525050565b61237d8161275f565b82525050565b60006020820190506123986000830184611c60565b92915050565b60006020820190506123b36000830184611c6f565b92915050565b600060208201905081810360008301526123d38184611c7e565b905092915050565b600060208201905081810360008301526123f481611cb7565b9050919050565b6000602082019050818103600083015261241481611d1d565b9050919050565b6000602082019050818103600083015261243481611d5d565b9050919050565b6000602082019050818103600083015261245481611dc3565b9050919050565b6000602082019050818103600083015261247481611e29565b9050919050565b6000602082019050818103600083015261249481611e8f565b9050919050565b600060208201905081810360008301526124b481611ef5565b9050919050565b600060208201905081810360008301526124d481611f5b565b9050919050565b600060208201905081810360008301526124f481611f9b565b9050919050565b6000602082019050818103600083015261251481611fdb565b9050919050565b600060208201905081810360008301526125348161201b565b9050919050565b6000602082019050818103600083015261255481612081565b9050919050565b60006020820190508181036000830152612574816120e7565b9050919050565b6000602082019050818103600083015261259481612127565b9050919050565b600060208201905081810360008301526125b48161218d565b9050919050565b600060208201905081810360008301526125d4816121f3565b9050919050565b600060208201905081810360008301526125f481612259565b9050919050565b60006020820190508181036000830152612614816122bf565b9050919050565b6000602082019050818103600083015261263481612325565b9050919050565b60006020820190506126506000830184612365565b92915050565b600060208201905061266b6000830184612374565b92915050565b600081519050919050565b600082825260208201905092915050565b600061269882612755565b91506126a383612755565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156126d8576126d76127d1565b5b828201905092915050565b60006126ee82612755565b91506126f983612755565b92508282101561270c5761270b6127d1565b5b828203905092915050565b600061272282612735565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561278a57808201518184015260208101905061276f565b83811115612799576000848401525b50505050565b600060028204905060018216806127b757607f821691505b602082108114156127cb576127ca612800565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61284981612717565b811461285457600080fd5b50565b61286081612755565b811461286b57600080fd5b5056fea26469706673582212203e116bca78445eeaa37aafa63556e8055e9b1d7599ce867b2d7e079a5bdee04964736f6c63430008000033000000000000000000000000000000000000000000000a968163f0a57b40000000000000000000000000000000000000000000000000001b1ae4d6e2ef500000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80635c975abb116100f9578063a457c2d711610097578063dd62ed3e11610071578063dd62ed3e1461049a578063f10ca36d146104ca578063f2fde38b146104e8578063fb1db27814610504576101a9565b8063a457c2d71461041c578063a9059cbb1461044c578063d7d5c0781461047c576101a9565b806379cc6790116100d357806379cc6790146103a65780638da5cb5b146103c257806395d89b41146103e0578063a2309ff8146103fe576101a9565b80635c975abb1461034e57806370a082311461036c578063715018a61461039c576101a9565b8063378dc3dc1161016657806340c10f191161014057806340c10f19146102dc57806342966c68146102f85780634cd412d51461031457806353db291314610332576101a9565b8063378dc3dc1461027257806339509351146102905780633ccbaf03146102c0576101a9565b806306fdde03146101ae578063095ea7b3146101cc57806318160ddd146101fc57806323b872dd1461021a578063242654a21461024a578063313ce56714610254575b600080fd5b6101b6610522565b6040516101c391906123b9565b60405180910390f35b6101e660048036038101906101e19190611bfb565b6105b4565b6040516101f3919061239e565b60405180910390f35b6102046105d2565b604051610211919061263b565b60405180910390f35b610234600480360381019061022f9190611bac565b6105dc565b604051610241919061239e565b60405180910390f35b6102526106a2565b005b61025c6107df565b6040516102699190612656565b60405180910390f35b61027a6107e8565b604051610287919061263b565b60405180910390f35b6102aa60048036038101906102a59190611bfb565b6107ee565b6040516102b7919061239e565b60405180910390f35b6102da60048036038101906102d59190611b47565b61089a565b005b6102f660048036038101906102f19190611bfb565b610ac1565b005b610312600480360381019061030d9190611c37565b610c0d565b005b61031c610c21565b604051610329919061239e565b60405180910390f35b61034c60048036038101906103479190611c37565b610c34565b005b610356610cfa565b604051610363919061239e565b60405180910390f35b61038660048036038101906103819190611b47565b610d11565b604051610393919061263b565b60405180910390f35b6103a4610d59565b005b6103c060048036038101906103bb9190611bfb565b610de1565b005b6103ca610e5c565b6040516103d79190612383565b60405180910390f35b6103e8610e86565b6040516103f591906123b9565b60405180910390f35b610406610f18565b604051610413919061263b565b60405180910390f35b61043660048036038101906104319190611bfb565b610f1e565b604051610443919061239e565b60405180910390f35b61046660048036038101906104619190611bfb565b611009565b604051610473919061239e565b60405180910390f35b61048461106f565b604051610491919061263b565b60405180910390f35b6104b460048036038101906104af9190611b70565b611075565b6040516104c1919061263b565b60405180910390f35b6104d26110fc565b6040516104df919061263b565b60405180910390f35b61050260048036038101906104fd9190611b47565b611102565b005b61050c6111fa565b6040516105199190612383565b60405180910390f35b6060600380546105319061279f565b80601f016020809104026020016040519081016040528092919081815260200182805461055d9061279f565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b5050505050905090565b60006105c86105c1611220565b8484611228565b6001905092915050565b6000600254905090565b60006105e6610cfa565b15610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061d906124db565b60405180910390fd5b6106318484846113f3565b600061063d8533611075565b905082811015610682576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610679906125bb565b60405180910390fd5b6106968561068e611220565b858403611228565b60019150509392505050565b6106aa611220565b73ffffffffffffffffffffffffffffffffffffffff166106c8610e5c565b73ffffffffffffffffffffffffffffffffffffffff161461071e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610715906124fb565b60405180910390fd5b60001515600b60009054906101000a900460ff16151514610774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076b9061241b565b60405180910390fd5b6001600b60006101000a81548160ff021916908315150217905550610797611674565b7fa410c62368e64b86d7722fd28e698d03bd00719ba95a861b50ceb65efdc6ca44600b60009054906101000a900460ff166040516107d5919061239e565b60405180910390a1565b60006012905090565b600a5481565b60006108906107fb611220565b848460016000610809611220565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461088b919061268d565b611228565b6001905092915050565b6108a2611220565b73ffffffffffffffffffffffffffffffffffffffff166108c0610e5c565b73ffffffffffffffffffffffffffffffffffffffff1614610916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090d906124fb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156109a15750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156109d957503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f9061259b565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f560af44e8521c1f80503d5e5137dfef35294bf103bc52f0105ba3db098372ef460405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b489061255b565b60405180910390fd5b610b59610cfa565b15610b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b90906124db565b60405180910390fd5b80600954610ba7919061268d565b6007541015610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be2906124bb565b60405180910390fd5b80600954610bf9919061268d565b600981905550610c098282611716565b5050565b610c1e610c18611220565b82611876565b50565b600b60009054906101000a900460ff1681565b610c3c611220565b73ffffffffffffffffffffffffffffffffffffffff16610c5a610e5c565b73ffffffffffffffffffffffffffffffffffffffff1614610cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca7906124fb565b60405180910390fd5b600754600881905550806007819055507f83d80b99c4283ab71d9579a782f9c4f3b5a16709732e5d2da15736290a8e129581604051610cef919061263b565b60405180910390a150565b6000600560149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d61611220565b73ffffffffffffffffffffffffffffffffffffffff16610d7f610e5c565b73ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc906124fb565b60405180910390fd5b610ddf6000611a4d565b565b6000610df483610def611220565b611075565b905081811015610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e309061251b565b60405180910390fd5b610e4d83610e45611220565b848403611228565b610e578383611876565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e959061279f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec19061279f565b8015610f0e5780601f10610ee357610100808354040283529160200191610f0e565b820191906000526020600020905b815481529060010190602001808311610ef157829003601f168201915b5050505050905090565b60095481565b60008060016000610f2d611220565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe1906125fb565b60405180910390fd5b610ffe610ff5611220565b85858403611228565b600191505092915050565b6000611013610cfa565b15611053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104a906124db565b60405180910390fd5b61106561105e611220565b84846113f3565b6001905092915050565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b61110a611220565b73ffffffffffffffffffffffffffffffffffffffff16611128610e5c565b73ffffffffffffffffffffffffffffffffffffffff161461117e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611175906124fb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e59061245b565b60405180910390fd5b6111f781611a4d565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f906125db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ff9061247b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113e6919061263b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145a9061257b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca906123db565b60405180910390fd5b6114de838383611b13565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b9061249b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115f7919061268d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165b919061263b565b60405180910390a361166e848484611b18565b50505050565b61167c610cfa565b6116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b2906123fb565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6116ff611220565b60405161170c9190612383565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d9061261b565b60405180910390fd5b61179260008383611b13565b80600260008282546117a4919061268d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117f9919061268d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161185e919061263b565b60405180910390a361187260008383611b18565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd9061253b565b60405180910390fd5b6118f282600083611b13565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f9061243b565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546119cf91906126e3565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a34919061263b565b60405180910390a3611a4883600084611b18565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081359050611b2c81612840565b92915050565b600081359050611b4181612857565b92915050565b600060208284031215611b5957600080fd5b6000611b6784828501611b1d565b91505092915050565b60008060408385031215611b8357600080fd5b6000611b9185828601611b1d565b9250506020611ba285828601611b1d565b9150509250929050565b600080600060608486031215611bc157600080fd5b6000611bcf86828701611b1d565b9350506020611be086828701611b1d565b9250506040611bf186828701611b32565b9150509250925092565b60008060408385031215611c0e57600080fd5b6000611c1c85828601611b1d565b9250506020611c2d85828601611b32565b9150509250929050565b600060208284031215611c4957600080fd5b6000611c5784828501611b32565b91505092915050565b611c6981612717565b82525050565b611c7881612729565b82525050565b6000611c8982612671565b611c93818561267c565b9350611ca381856020860161276c565b611cac8161282f565b840191505092915050565b6000611cc460238361267c565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d2a60148361267c565b91507f5061757361626c653a206e6f74207061757365640000000000000000000000006000830152602082019050919050565b6000611d6a60248361267c565b91507f546f6b656e207472616e73666572732068617320616c7265616479207374617260008301527f7465642e000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611dd060228361267c565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e3660268361267c565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e9c60228361267c565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f0260268361267c565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f6860208361267c565b91507f546f6b656e20736f66742063617020686173206265656e20726561636865642e6000830152602082019050919050565b6000611fa860108361267c565b91507f5061757361626c653a20706175736564000000000000000000000000000000006000830152602082019050919050565b6000611fe860208361267c565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061202860248361267c565b91507f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008301527f616e6365000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061208e60218361267c565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006120f4601c8361267c565b91507f43616c6c6572206973206e6f7420746865204d617374657263686566000000006000830152602082019050919050565b600061213460258361267c565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061219a602d8361267c565b91507f4552524f523a204d6173746572636865662063616e6e6f74206265207468652060008301527f7a65726f20616464726573732e000000000000000000000000000000000000006020830152604082019050919050565b600061220060298361267c565b91507f45524332303a205472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63652e00000000000000000000000000000000000000000000006020830152604082019050919050565b600061226660248361267c565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006122cc60258361267c565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612332601f8361267c565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b61236e81612755565b82525050565b61237d8161275f565b82525050565b60006020820190506123986000830184611c60565b92915050565b60006020820190506123b36000830184611c6f565b92915050565b600060208201905081810360008301526123d38184611c7e565b905092915050565b600060208201905081810360008301526123f481611cb7565b9050919050565b6000602082019050818103600083015261241481611d1d565b9050919050565b6000602082019050818103600083015261243481611d5d565b9050919050565b6000602082019050818103600083015261245481611dc3565b9050919050565b6000602082019050818103600083015261247481611e29565b9050919050565b6000602082019050818103600083015261249481611e8f565b9050919050565b600060208201905081810360008301526124b481611ef5565b9050919050565b600060208201905081810360008301526124d481611f5b565b9050919050565b600060208201905081810360008301526124f481611f9b565b9050919050565b6000602082019050818103600083015261251481611fdb565b9050919050565b600060208201905081810360008301526125348161201b565b9050919050565b6000602082019050818103600083015261255481612081565b9050919050565b60006020820190508181036000830152612574816120e7565b9050919050565b6000602082019050818103600083015261259481612127565b9050919050565b600060208201905081810360008301526125b48161218d565b9050919050565b600060208201905081810360008301526125d4816121f3565b9050919050565b600060208201905081810360008301526125f481612259565b9050919050565b60006020820190508181036000830152612614816122bf565b9050919050565b6000602082019050818103600083015261263481612325565b9050919050565b60006020820190506126506000830184612365565b92915050565b600060208201905061266b6000830184612374565b92915050565b600081519050919050565b600082825260208201905092915050565b600061269882612755565b91506126a383612755565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156126d8576126d76127d1565b5b828201905092915050565b60006126ee82612755565b91506126f983612755565b92508282101561270c5761270b6127d1565b5b828203905092915050565b600061272282612735565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561278a57808201518184015260208101905061276f565b83811115612799576000848401525b50505050565b600060028204905060018216806127b757607f821691505b602082108114156127cb576127ca612800565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61284981612717565b811461285457600080fd5b50565b61286081612755565b811461286b57600080fd5b5056fea26469706673582212203e116bca78445eeaa37aafa63556e8055e9b1d7599ce867b2d7e079a5bdee04964736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000a968163f0a57b40000000000000000000000000000000000000000000000000001b1ae4d6e2ef500000
-----Decoded View---------------
Arg [0] : _tokenSoftCap (uint256): 50000000000000000000000
Arg [1] : _initialSupply (uint256): 500000000000000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000a968163f0a57b400000
Arg [1] : 00000000000000000000000000000000000000000000001b1ae4d6e2ef500000
Deployed Bytecode Sourcemap
35420:4470:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23717:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25884:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24837:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39377:479;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38708:251;;;:::i;:::-;;24679:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36174:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27436:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37461:385;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38266:279;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34246:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36213:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37962:212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10246:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25008:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13145:103;;;:::i;:::-;;34656:368;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12494:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23936:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36137:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28154:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39068:199;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36095:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25586:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36061:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13403:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36029:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23717:100;23771:13;23804:5;23797:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23717:100;:::o;25884:169::-;25967:4;25984:39;25993:12;:10;:12::i;:::-;26007:7;26016:6;25984:8;:39::i;:::-;26041:4;26034:11;;25884:169;;;;:::o;24837:108::-;24898:7;24925:12;;24918:19;;24837:108;:::o;39377:479::-;39497:4;10572:8;:6;:8::i;:::-;10571:9;10563:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;39524:36:::1;39534:6;39542:9;39553:6;39524:9;:36::i;:::-;39573:24;39600:29;39610:6;39618:10;39600:9;:29::i;:::-;39573:56;;39668:6;39648:16;:26;;39640:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;39756:57;39765:6;39773:12;:10;:12::i;:::-;39806:6;39787:16;:25;39756:8;:57::i;:::-;39844:4;39837:11;;;39377:479:::0;;;;;:::o;38708:251::-;12725:12;:10;:12::i;:::-;12714:23;;:7;:5;:7::i;:::-;:23;;;12706:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38791:5:::1;38772:24;;:15;;;;;;;;;;;:24;;;38764:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;38876:4;38858:15;;:22;;;;;;;;;;;;;;;;;;38891:10;:8;:10::i;:::-;38919:32;38935:15;;;;;;;;;;;38919:32;;;;;;:::i;:::-;;;;;;;;38708:251::o:0;24679:93::-;24737:5;24762:2;24755:9;;24679:93;:::o;36174:32::-;;;;:::o;27436:215::-;27524:4;27541:80;27550:12;:10;:12::i;:::-;27564:7;27610:10;27573:11;:25;27585:12;:10;:12::i;:::-;27573:25;;;;;;;;;;;;;;;:34;27599:7;27573:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;27541:8;:80::i;:::-;27639:4;27632:11;;27436:215;;;;:::o;37461:385::-;12725:12;:10;:12::i;:::-;12714:23;;:7;:5;:7::i;:::-;:23;;;12706:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37578:1:::1;37556:24;;:10;;;;;;;;;;;:24;;;:67;;;;;37621:1;37598:25;;:11;:25;;;;37556:67;:113;;;;;37664:4;37641:28;;:11;:28;;;;37556:113;37534:208;;;;;;;;;;;;:::i;:::-;;;;;;;;;37776:11;37763:10;;:24;;;;;;;;;;;;;;;;;;37827:10;;;;;;;;;;;37805:33;;;;;;;;;;;;37461:385:::0;:::o;38266:279::-;37224:10;;;;;;;;;;;37210:24;;:10;:24;;;37202:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10572:8:::1;:6;:8::i;:::-;10571:9;10563:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;38395:7:::2;38381:11;;:21;;;;:::i;:::-;38365:12;;:37;;38357:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;38488:7;38474:11;;:21;;;;:::i;:::-;38460:11;:35;;;;38508:19;38514:3;38519:7;38508:5;:19::i;:::-;38266:279:::0;;:::o;34246:91::-;34302:27;34308:12;:10;:12::i;:::-;34322:6;34302:5;:27::i;:::-;34246:91;:::o;36213:35::-;;;;;;;;;;;;;:::o;37962:212::-;12725:12;:10;:12::i;:::-;12714:23;;:7;:5;:7::i;:::-;:23;;;12706:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38067:12:::1;;38048:16;:31;;;;38105:11;38090:12;:26;;;;38134:32;38154:11;38134:32;;;;;;:::i;:::-;;;;;;;;37962:212:::0;:::o;10246:86::-;10293:4;10317:7;;;;;;;;;;;10310:14;;10246:86;:::o;25008:127::-;25082:7;25109:9;:18;25119:7;25109:18;;;;;;;;;;;;;;;;25102:25;;25008:127;;;:::o;13145:103::-;12725:12;:10;:12::i;:::-;12714:23;;:7;:5;:7::i;:::-;:23;;;12706:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13210:30:::1;13237:1;13210:18;:30::i;:::-;13145:103::o:0;34656:368::-;34733:24;34760:32;34770:7;34779:12;:10;:12::i;:::-;34760:9;:32::i;:::-;34733:59;;34831:6;34811:16;:26;;34803:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;34914:58;34923:7;34932:12;:10;:12::i;:::-;34965:6;34946:16;:25;34914:8;:58::i;:::-;34994:22;35000:7;35009:6;34994:5;:22::i;:::-;34656:368;;;:::o;12494:87::-;12540:7;12567:6;;;;;;;;;;;12560:13;;12494:87;:::o;23936:104::-;23992:13;24025:7;24018:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23936:104;:::o;36137:30::-;;;;:::o;28154:413::-;28247:4;28264:24;28291:11;:25;28303:12;:10;:12::i;:::-;28291:25;;;;;;;;;;;;;;;:34;28317:7;28291:34;;;;;;;;;;;;;;;;28264:61;;28364:15;28344:16;:35;;28336:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;28457:67;28466:12;:10;:12::i;:::-;28480:7;28508:15;28489:16;:34;28457:8;:67::i;:::-;28555:4;28548:11;;;28154:413;;;;:::o;39068:199::-;39168:4;10572:8;:6;:8::i;:::-;10571:9;10563:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;39195:42:::1;39205:12;:10;:12::i;:::-;39219:9;39230:6;39195:9;:42::i;:::-;39255:4;39248:11;;39068:199:::0;;;;:::o;36095:35::-;;;;:::o;25586:151::-;25675:7;25702:11;:18;25714:5;25702:18;;;;;;;;;;;;;;;:27;25721:7;25702:27;;;;;;;;;;;;;;;;25695:34;;25586:151;;;;:::o;36061:27::-;;;;:::o;13403:201::-;12725:12;:10;:12::i;:::-;12714:23;;:7;:5;:7::i;:::-;:23;;;12706:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13512:1:::1;13492:22;;:8;:22;;;;13484:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13568:28;13587:8;13568:18;:28::i;:::-;13403:201:::0;:::o;36029:25::-;;;;;;;;;;;;;:::o;8900:98::-;8953:7;8980:10;8973:17;;8900:98;:::o;31838:380::-;31991:1;31974:19;;:5;:19;;;;31966:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32072:1;32053:21;;:7;:21;;;;32045:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32156:6;32126:11;:18;32138:5;32126:18;;;;;;;;;;;;;;;:27;32145:7;32126:27;;;;;;;;;;;;;;;:36;;;;32194:7;32178:32;;32187:5;32178:32;;;32203:6;32178:32;;;;;;:::i;:::-;;;;;;;;31838:380;;;:::o;29057:733::-;29215:1;29197:20;;:6;:20;;;;29189:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;29299:1;29278:23;;:9;:23;;;;29270:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;29354:47;29375:6;29383:9;29394:6;29354:20;:47::i;:::-;29414:21;29438:9;:17;29448:6;29438:17;;;;;;;;;;;;;;;;29414:41;;29491:6;29474:13;:23;;29466:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;29612:6;29596:13;:22;29576:9;:17;29586:6;29576:17;;;;;;;;;;;;;;;:42;;;;29664:6;29640:9;:20;29650:9;29640:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;29705:9;29688:35;;29697:6;29688:35;;;29716:6;29688:35;;;;;;:::i;:::-;;;;;;;;29736:46;29756:6;29764:9;29775:6;29736:19;:46::i;:::-;29057:733;;;;:::o;11305:120::-;10849:8;:6;:8::i;:::-;10841:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;11374:5:::1;11364:7;;:15;;;;;;;;;;;;;;;;;;11395:22;11404:12;:10;:12::i;:::-;11395:22;;;;;;:::i;:::-;;;;;;;;11305:120::o:0;30077:399::-;30180:1;30161:21;;:7;:21;;;;30153:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30231:49;30260:1;30264:7;30273:6;30231:20;:49::i;:::-;30309:6;30293:12;;:22;;;;;;;:::i;:::-;;;;;;;;30348:6;30326:9;:18;30336:7;30326:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;30391:7;30370:37;;30387:1;30370:37;;;30400:6;30370:37;;;;;;:::i;:::-;;;;;;;;30420:48;30448:1;30452:7;30461:6;30420:19;:48::i;:::-;30077:399;;:::o;30809:591::-;30912:1;30893:21;;:7;:21;;;;30885:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30965:49;30986:7;31003:1;31007:6;30965:20;:49::i;:::-;31027:22;31052:9;:18;31062:7;31052:18;;;;;;;;;;;;;;;;31027:43;;31107:6;31089:14;:24;;31081:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;31226:6;31209:14;:23;31188:9;:18;31198:7;31188:18;;;;;;;;;;;;;;;:44;;;;31270:6;31254:12;;:22;;;;;;;:::i;:::-;;;;;;;;31320:1;31294:37;;31303:7;31294:37;;;31324:6;31294:37;;;;;;:::i;:::-;;;;;;;;31344:48;31364:7;31381:1;31385:6;31344:19;:48::i;:::-;30809:591;;;:::o;13764:191::-;13838:16;13857:6;;;;;;;;;;;13838:25;;13883:8;13874:6;;:17;;;;;;;;;;;;;;;;;;13938:8;13907:40;;13928:8;13907:40;;;;;;;;;;;;13764:191;;:::o;32818:125::-;;;;:::o;33547:124::-;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;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::-;;;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::-;;;;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::-;;;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:262::-;;2057:2;2045:9;2036:7;2032:23;2028:32;2025:2;;;2073:1;2070;2063:12;2025:2;2116:1;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2087:117;2015:196;;;;:::o;2217:118::-;2304:24;2322:5;2304:24;:::i;:::-;2299:3;2292:37;2282:53;;:::o;2341:109::-;2422:21;2437:5;2422:21;:::i;:::-;2417:3;2410:34;2400:50;;:::o;2456:364::-;;2572:39;2605:5;2572:39;:::i;:::-;2627:71;2691:6;2686:3;2627:71;:::i;:::-;2620:78;;2707:52;2752:6;2747:3;2740:4;2733:5;2729:16;2707:52;:::i;:::-;2784:29;2806:6;2784:29;:::i;:::-;2779:3;2775:39;2768:46;;2548:272;;;;;:::o;2826:367::-;;2989:67;3053:2;3048:3;2989:67;:::i;:::-;2982:74;;3086:34;3082:1;3077:3;3073:11;3066:55;3152:5;3147:2;3142:3;3138:12;3131:27;3184:2;3179:3;3175:12;3168:19;;2972:221;;;:::o;3199:318::-;;3362:67;3426:2;3421:3;3362:67;:::i;:::-;3355:74;;3459:22;3455:1;3450:3;3446:11;3439:43;3508:2;3503:3;3499:12;3492:19;;3345:172;;;:::o;3523:368::-;;3686:67;3750:2;3745:3;3686:67;:::i;:::-;3679:74;;3783:34;3779:1;3774:3;3770:11;3763:55;3849:6;3844:2;3839:3;3835:12;3828:28;3882:2;3877:3;3873:12;3866:19;;3669:222;;;:::o;3897:366::-;;4060:67;4124:2;4119:3;4060:67;:::i;:::-;4053:74;;4157:34;4153:1;4148:3;4144:11;4137:55;4223:4;4218:2;4213:3;4209:12;4202:26;4254:2;4249:3;4245:12;4238:19;;4043:220;;;:::o;4269:370::-;;4432:67;4496:2;4491:3;4432:67;:::i;:::-;4425:74;;4529:34;4525:1;4520:3;4516:11;4509:55;4595:8;4590:2;4585:3;4581:12;4574:30;4630:2;4625:3;4621:12;4614:19;;4415:224;;;:::o;4645:366::-;;4808:67;4872:2;4867:3;4808:67;:::i;:::-;4801:74;;4905:34;4901:1;4896:3;4892:11;4885:55;4971:4;4966:2;4961:3;4957:12;4950:26;5002:2;4997:3;4993:12;4986:19;;4791:220;;;:::o;5017:370::-;;5180:67;5244:2;5239:3;5180:67;:::i;:::-;5173:74;;5277:34;5273:1;5268:3;5264:11;5257:55;5343:8;5338:2;5333:3;5329:12;5322:30;5378:2;5373:3;5369:12;5362:19;;5163:224;;;:::o;5393:330::-;;5556:67;5620:2;5615:3;5556:67;:::i;:::-;5549:74;;5653:34;5649:1;5644:3;5640:11;5633:55;5714:2;5709:3;5705:12;5698:19;;5539:184;;;:::o;5729:314::-;;5892:67;5956:2;5951:3;5892:67;:::i;:::-;5885:74;;5989:18;5985:1;5980:3;5976:11;5969:39;6034:2;6029:3;6025:12;6018:19;;5875:168;;;:::o;6049:330::-;;6212:67;6276:2;6271:3;6212:67;:::i;:::-;6205:74;;6309:34;6305:1;6300:3;6296:11;6289:55;6370:2;6365:3;6361:12;6354:19;;6195:184;;;:::o;6385:368::-;;6548:67;6612:2;6607:3;6548:67;:::i;:::-;6541:74;;6645:34;6641:1;6636:3;6632:11;6625:55;6711:6;6706:2;6701:3;6697:12;6690:28;6744:2;6739:3;6735:12;6728:19;;6531:222;;;:::o;6759:365::-;;6922:67;6986:2;6981:3;6922:67;:::i;:::-;6915:74;;7019:34;7015:1;7010:3;7006:11;6999:55;7085:3;7080:2;7075:3;7071:12;7064:25;7115:2;7110:3;7106:12;7099:19;;6905:219;;;:::o;7130:326::-;;7293:67;7357:2;7352:3;7293:67;:::i;:::-;7286:74;;7390:30;7386:1;7381:3;7377:11;7370:51;7447:2;7442:3;7438:12;7431:19;;7276:180;;;:::o;7462:369::-;;7625:67;7689:2;7684:3;7625:67;:::i;:::-;7618:74;;7722:34;7718:1;7713:3;7709:11;7702:55;7788:7;7783:2;7778:3;7774:12;7767:29;7822:2;7817:3;7813:12;7806:19;;7608:223;;;:::o;7837:377::-;;8000:67;8064:2;8059:3;8000:67;:::i;:::-;7993:74;;8097:34;8093:1;8088:3;8084:11;8077:55;8163:15;8158:2;8153:3;8149:12;8142:37;8205:2;8200:3;8196:12;8189:19;;7983:231;;;:::o;8220:373::-;;8383:67;8447:2;8442:3;8383:67;:::i;:::-;8376:74;;8480:34;8476:1;8471:3;8467:11;8460:55;8546:11;8541:2;8536:3;8532:12;8525:33;8584:2;8579:3;8575:12;8568:19;;8366:227;;;:::o;8599:368::-;;8762:67;8826:2;8821:3;8762:67;:::i;:::-;8755:74;;8859:34;8855:1;8850:3;8846:11;8839:55;8925:6;8920:2;8915:3;8911:12;8904:28;8958:2;8953:3;8949:12;8942:19;;8745:222;;;:::o;8973:369::-;;9136:67;9200:2;9195:3;9136:67;:::i;:::-;9129:74;;9233:34;9229:1;9224:3;9220:11;9213:55;9299:7;9294:2;9289:3;9285:12;9278:29;9333:2;9328:3;9324:12;9317:19;;9119:223;;;:::o;9348:329::-;;9511:67;9575:2;9570:3;9511:67;:::i;:::-;9504:74;;9608:33;9604:1;9599:3;9595:11;9588:54;9668:2;9663:3;9659:12;9652:19;;9494:183;;;:::o;9683:118::-;9770:24;9788:5;9770:24;:::i;:::-;9765:3;9758:37;9748:53;;:::o;9807:112::-;9890:22;9906:5;9890:22;:::i;:::-;9885:3;9878:35;9868:51;;:::o;9925:222::-;;10056:2;10045:9;10041:18;10033:26;;10069:71;10137:1;10126:9;10122:17;10113:6;10069:71;:::i;:::-;10023:124;;;;:::o;10153:210::-;;10278:2;10267:9;10263:18;10255:26;;10291:65;10353:1;10342:9;10338:17;10329:6;10291:65;:::i;:::-;10245:118;;;;:::o;10369:313::-;;10520:2;10509:9;10505:18;10497:26;;10569:9;10563:4;10559:20;10555:1;10544:9;10540:17;10533:47;10597:78;10670:4;10661:6;10597:78;:::i;:::-;10589:86;;10487:195;;;;:::o;10688:419::-;;10892:2;10881:9;10877:18;10869:26;;10941:9;10935:4;10931:20;10927:1;10916:9;10912:17;10905:47;10969:131;11095:4;10969:131;:::i;:::-;10961:139;;10859:248;;;:::o;11113:419::-;;11317:2;11306:9;11302:18;11294:26;;11366:9;11360:4;11356:20;11352:1;11341:9;11337:17;11330:47;11394:131;11520:4;11394:131;:::i;:::-;11386:139;;11284:248;;;:::o;11538:419::-;;11742:2;11731:9;11727:18;11719:26;;11791:9;11785:4;11781:20;11777:1;11766:9;11762:17;11755:47;11819:131;11945:4;11819:131;:::i;:::-;11811:139;;11709:248;;;:::o;11963:419::-;;12167:2;12156:9;12152:18;12144:26;;12216:9;12210:4;12206:20;12202:1;12191:9;12187:17;12180:47;12244:131;12370:4;12244:131;:::i;:::-;12236:139;;12134:248;;;:::o;12388:419::-;;12592:2;12581:9;12577:18;12569:26;;12641:9;12635:4;12631:20;12627:1;12616:9;12612:17;12605:47;12669:131;12795:4;12669:131;:::i;:::-;12661:139;;12559:248;;;:::o;12813:419::-;;13017:2;13006:9;13002:18;12994:26;;13066:9;13060:4;13056:20;13052:1;13041:9;13037:17;13030:47;13094:131;13220:4;13094:131;:::i;:::-;13086:139;;12984:248;;;:::o;13238:419::-;;13442:2;13431:9;13427:18;13419:26;;13491:9;13485:4;13481:20;13477:1;13466:9;13462:17;13455:47;13519:131;13645:4;13519:131;:::i;:::-;13511:139;;13409:248;;;:::o;13663:419::-;;13867:2;13856:9;13852:18;13844:26;;13916:9;13910:4;13906:20;13902:1;13891:9;13887:17;13880:47;13944:131;14070:4;13944:131;:::i;:::-;13936:139;;13834:248;;;:::o;14088:419::-;;14292:2;14281:9;14277:18;14269:26;;14341:9;14335:4;14331:20;14327:1;14316:9;14312:17;14305:47;14369:131;14495:4;14369:131;:::i;:::-;14361:139;;14259:248;;;:::o;14513:419::-;;14717:2;14706:9;14702:18;14694:26;;14766:9;14760:4;14756:20;14752:1;14741:9;14737:17;14730:47;14794:131;14920:4;14794:131;:::i;:::-;14786:139;;14684:248;;;:::o;14938:419::-;;15142:2;15131:9;15127:18;15119:26;;15191:9;15185:4;15181:20;15177:1;15166:9;15162:17;15155:47;15219:131;15345:4;15219:131;:::i;:::-;15211:139;;15109:248;;;:::o;15363:419::-;;15567:2;15556:9;15552:18;15544:26;;15616:9;15610:4;15606:20;15602:1;15591:9;15587:17;15580:47;15644:131;15770:4;15644:131;:::i;:::-;15636:139;;15534:248;;;:::o;15788:419::-;;15992:2;15981:9;15977:18;15969:26;;16041:9;16035:4;16031:20;16027:1;16016:9;16012:17;16005:47;16069:131;16195:4;16069:131;:::i;:::-;16061:139;;15959:248;;;:::o;16213:419::-;;16417:2;16406:9;16402:18;16394:26;;16466:9;16460:4;16456:20;16452:1;16441:9;16437:17;16430:47;16494:131;16620:4;16494:131;:::i;:::-;16486:139;;16384:248;;;:::o;16638:419::-;;16842:2;16831:9;16827:18;16819:26;;16891:9;16885:4;16881:20;16877:1;16866:9;16862:17;16855:47;16919:131;17045:4;16919:131;:::i;:::-;16911:139;;16809:248;;;:::o;17063:419::-;;17267:2;17256:9;17252:18;17244:26;;17316:9;17310:4;17306:20;17302:1;17291:9;17287:17;17280:47;17344:131;17470:4;17344:131;:::i;:::-;17336:139;;17234:248;;;:::o;17488:419::-;;17692:2;17681:9;17677:18;17669:26;;17741:9;17735:4;17731:20;17727:1;17716:9;17712:17;17705:47;17769:131;17895:4;17769:131;:::i;:::-;17761:139;;17659:248;;;:::o;17913:419::-;;18117:2;18106:9;18102:18;18094:26;;18166:9;18160:4;18156:20;18152:1;18141:9;18137:17;18130:47;18194:131;18320:4;18194:131;:::i;:::-;18186:139;;18084:248;;;:::o;18338:419::-;;18542:2;18531:9;18527:18;18519:26;;18591:9;18585:4;18581:20;18577:1;18566:9;18562:17;18555:47;18619:131;18745:4;18619:131;:::i;:::-;18611:139;;18509:248;;;:::o;18763:222::-;;18894:2;18883:9;18879:18;18871:26;;18907:71;18975:1;18964:9;18960:17;18951:6;18907:71;:::i;:::-;18861:124;;;;:::o;18991:214::-;;19118:2;19107:9;19103:18;19095:26;;19131:67;19195:1;19184:9;19180:17;19171:6;19131:67;:::i;:::-;19085:120;;;;:::o;19211:99::-;;19297:5;19291:12;19281:22;;19270:40;;;:::o;19316:169::-;;19434:6;19429:3;19422:19;19474:4;19469:3;19465:14;19450:29;;19412:73;;;;:::o;19491:305::-;;19550:20;19568:1;19550:20;:::i;:::-;19545:25;;19584:20;19602:1;19584:20;:::i;:::-;19579:25;;19738:1;19670:66;19666:74;19663:1;19660:81;19657:2;;;19744:18;;:::i;:::-;19657:2;19788:1;19785;19781:9;19774:16;;19535:261;;;;:::o;19802:191::-;;19862:20;19880:1;19862:20;:::i;:::-;19857:25;;19896:20;19914:1;19896:20;:::i;:::-;19891:25;;19935:1;19932;19929:8;19926:2;;;19940:18;;:::i;:::-;19926:2;19985:1;19982;19978:9;19970:17;;19847:146;;;;:::o;19999:96::-;;20065:24;20083:5;20065:24;:::i;:::-;20054:35;;20044:51;;;:::o;20101:90::-;;20178:5;20171:13;20164:21;20153:32;;20143:48;;;:::o;20197:126::-;;20274:42;20267:5;20263:54;20252:65;;20242:81;;;:::o;20329:77::-;;20395:5;20384:16;;20374:32;;;:::o;20412:86::-;;20487:4;20480:5;20476:16;20465:27;;20455:43;;;:::o;20504:307::-;20572:1;20582:113;20596:6;20593:1;20590:13;20582:113;;;20681:1;20676:3;20672:11;20666:18;20662:1;20657:3;20653:11;20646:39;20618:2;20615:1;20611:10;20606:15;;20582:113;;;20713:6;20710:1;20707:13;20704:2;;;20793:1;20784:6;20779:3;20775:16;20768:27;20704:2;20553:258;;;;:::o;20817:320::-;;20898:1;20892:4;20888:12;20878:22;;20945:1;20939:4;20935:12;20966:18;20956:2;;21022:4;21014:6;21010:17;21000:27;;20956:2;21084;21076:6;21073:14;21053:18;21050:38;21047:2;;;21103:18;;:::i;:::-;21047:2;20868:269;;;;:::o;21143:180::-;21191:77;21188:1;21181:88;21288:4;21285:1;21278:15;21312:4;21309:1;21302:15;21329:180;21377:77;21374:1;21367:88;21474:4;21471:1;21464:15;21498:4;21495:1;21488:15;21515:102;;21607:2;21603:7;21598:2;21591:5;21587:14;21583:28;21573:38;;21563:54;;;:::o;21623:122::-;21696:24;21714:5;21696:24;:::i;:::-;21689:5;21686:35;21676:2;;21735:1;21732;21725:12;21676:2;21666:79;:::o;21751:122::-;21824:24;21842:5;21824:24;:::i;:::-;21817:5;21814:35;21804:2;;21863:1;21860;21853:12;21804:2;21794:79;:::o
Swarm Source
ipfs://3e116bca78445eeaa37aafa63556e8055e9b1d7599ce867b2d7e079a5bdee049
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.