Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Decentralized Web
Overview
Max Total Supply
625,357,143 CLH
Holders
581 (0.00%)
Market
Price
$0.00 @ 0.000000 ETH (-1.82%)
Onchain Market Cap
$443,784.70
Circulating Supply Market Cap
$377,622.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
181,787.434901599407382699 CLHValue
$129.01 ( ~0.0407882806831877 Eth) [0.0291%]Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
ClearToken
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-30 */ // File: @openzeppelin/contracts/introspection/IERC1820Registry.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the global ERC1820 Registry, as defined in the * https://eips.ethereum.org/EIPS/eip-1820[EIP]. Accounts may register * implementers for interfaces in this registry, as well as query support. * * Implementers may be shared by multiple accounts, and can also implement more * than a single interface for each account. Contracts can implement interfaces * for themselves, but externally-owned accounts (EOA) must delegate this to a * contract. * * {IERC165} interfaces can also be queried via the registry. * * For an in-depth explanation and source code analysis, see the EIP text. */ interface IERC1820Registry { /** * @dev Sets `newManager` as the manager for `account`. A manager of an * account is able to set interface implementers for it. * * By default, each account is its own manager. Passing a value of `0x0` in * `newManager` will reset the manager to this initial state. * * Emits a {ManagerChanged} event. * * Requirements: * * - the caller must be the current manager for `account`. */ function setManager(address account, address newManager) external; /** * @dev Returns the manager for `account`. * * See {setManager}. */ function getManager(address account) external view returns (address); /** * @dev Sets the `implementer` contract as ``account``'s implementer for * `interfaceHash`. * * `account` being the zero address is an alias for the caller's address. * The zero address can also be used in `implementer` to remove an old one. * * See {interfaceHash} to learn how these are created. * * Emits an {InterfaceImplementerSet} event. * * Requirements: * * - the caller must be the current manager for `account`. * - `interfaceHash` must not be an {IERC165} interface id (i.e. it must not * end in 28 zeroes). * - `implementer` must implement {IERC1820Implementer} and return true when * queried for support, unless `implementer` is the caller. See * {IERC1820Implementer-canImplementInterfaceForAddress}. */ function setInterfaceImplementer(address account, bytes32 _interfaceHash, address implementer) external; /** * @dev Returns the implementer of `interfaceHash` for `account`. If no such * implementer is registered, returns the zero address. * * If `interfaceHash` is an {IERC165} interface id (i.e. it ends with 28 * zeroes), `account` will be queried for support of it. * * `account` being the zero address is an alias for the caller's address. */ function getInterfaceImplementer(address account, bytes32 _interfaceHash) external view returns (address); /** * @dev Returns the interface hash for an `interfaceName`, as defined in the * corresponding * https://eips.ethereum.org/EIPS/eip-1820#interface-name[section of the EIP]. */ function interfaceHash(string calldata interfaceName) external pure returns (bytes32); /** * @notice Updates the cache with whether the contract implements an ERC165 interface or not. * @param account Address of the contract for which to update the cache. * @param interfaceId ERC165 interface for which to update the cache. */ function updateERC165Cache(address account, bytes4 interfaceId) external; /** * @notice Checks whether a contract implements an ERC165 interface or not. * If the result is not cached a direct lookup on the contract address is performed. * If the result is not cached or the cached value is out-of-date, the cache MUST be updated manually by calling * {updateERC165Cache} with the contract address. * @param account Address of the contract to check. * @param interfaceId ERC165 interface to check. * @return True if `account` implements `interfaceId`, false otherwise. */ function implementsERC165Interface(address account, bytes4 interfaceId) external view returns (bool); /** * @notice Checks whether a contract implements an ERC165 interface or not without using nor updating the cache. * @param account Address of the contract to check. * @param interfaceId ERC165 interface to check. * @return True if `account` implements `interfaceId`, false otherwise. */ function implementsERC165InterfaceNoCache(address account, bytes4 interfaceId) external view returns (bool); event InterfaceImplementerSet(address indexed account, bytes32 indexed interfaceHash, address indexed implementer); event ManagerChanged(address indexed account, address indexed newManager); } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity >=0.6.2 <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; // solhint-disable-next-line no-inline-assembly 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"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (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"); // solhint-disable-next-line avoid-low-level-calls (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"); // solhint-disable-next-line avoid-low-level-calls (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"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/math/SafeMath.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity >=0.6.0 <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/ERC777/IERC777Sender.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the ERC777TokensSender standard as defined in the EIP. * * {IERC777} Token holders can be notified of operations performed on their * tokens by having a contract implement this interface (contract holders can be * their own implementer) and registering it on the * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 global registry]. * * See {IERC1820Registry} and {ERC1820Implementer}. */ interface IERC777Sender { /** * @dev Called by an {IERC777} token contract whenever a registered holder's * (`from`) tokens are about to be moved or destroyed. The type of operation * is conveyed by `to` being the zero address or not. * * This call occurs _before_ the token contract's state is updated, so * {IERC777-balanceOf}, etc., can be used to query the pre-operation state. * * This function may revert to prevent the operation from being executed. */ function tokensToSend( address operator, address from, address to, uint256 amount, bytes calldata userData, bytes calldata operatorData ) external; } // File: @openzeppelin/contracts/token/ERC777/IERC777Recipient.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the ERC777TokensRecipient standard as defined in the EIP. * * Accounts can be notified of {IERC777} tokens being sent to them by having a * contract implement this interface (contract holders can be their own * implementer) and registering it on the * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 global registry]. * * See {IERC1820Registry} and {ERC1820Implementer}. */ interface IERC777Recipient { /** * @dev Called by an {IERC777} token contract whenever tokens are being * moved or created into a registered account (`to`). The type of operation * is conveyed by `from` being the zero address or not. * * This call occurs _after_ the token contract's state is updated, so * {IERC777-balanceOf}, etc., can be used to query the post-operation state. * * This function may revert to prevent the operation from being executed. */ function tokensReceived( address operator, address from, address to, uint256 amount, bytes calldata userData, bytes calldata operatorData ) external; } // File: @openzeppelin/contracts/token/ERC777/IERC777.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the ERC777Token standard as defined in the EIP. * * This contract uses the * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let * token holders and recipients react to token movements by using setting implementers * for the associated interfaces in said registry. See {IERC1820Registry} and * {ERC1820Implementer}. */ interface IERC777 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() external view returns (string memory); /** * @dev Returns the smallest part of the token that is not divisible. This * means all token operations (creation, movement and destruction) must have * amounts that are a multiple of this number. * * For most token contracts, this value will equal 1. */ function granularity() external view returns (uint256); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by an account (`owner`). */ function balanceOf(address owner) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * If send or receive hooks are registered for the caller and `recipient`, * the corresponding functions will be called with `data` and empty * `operatorData`. See {IERC777Sender} and {IERC777Recipient}. * * Emits a {Sent} event. * * Requirements * * - the caller must have at least `amount` tokens. * - `recipient` cannot be the zero address. * - if `recipient` is a contract, it must implement the {IERC777Recipient} * interface. */ function send(address recipient, uint256 amount, bytes calldata data) external; /** * @dev Destroys `amount` tokens from the caller's account, reducing the * total supply. * * If a send hook is registered for the caller, the corresponding function * will be called with `data` and empty `operatorData`. See {IERC777Sender}. * * Emits a {Burned} event. * * Requirements * * - the caller must have at least `amount` tokens. */ function burn(uint256 amount, bytes calldata data) external; /** * @dev Returns true if an account is an operator of `tokenHolder`. * Operators can send and burn tokens on behalf of their owners. All * accounts are their own operator. * * See {operatorSend} and {operatorBurn}. */ function isOperatorFor(address operator, address tokenHolder) external view returns (bool); /** * @dev Make an account an operator of the caller. * * See {isOperatorFor}. * * Emits an {AuthorizedOperator} event. * * Requirements * * - `operator` cannot be calling address. */ function authorizeOperator(address operator) external; /** * @dev Revoke an account's operator status for the caller. * * See {isOperatorFor} and {defaultOperators}. * * Emits a {RevokedOperator} event. * * Requirements * * - `operator` cannot be calling address. */ function revokeOperator(address operator) external; /** * @dev Returns the list of default operators. These accounts are operators * for all token holders, even if {authorizeOperator} was never called on * them. * * This list is immutable, but individual holders may revoke these via * {revokeOperator}, in which case {isOperatorFor} will return false. */ function defaultOperators() external view returns (address[] memory); /** * @dev Moves `amount` tokens from `sender` to `recipient`. The caller must * be an operator of `sender`. * * If send or receive hooks are registered for `sender` and `recipient`, * the corresponding functions will be called with `data` and * `operatorData`. See {IERC777Sender} and {IERC777Recipient}. * * Emits a {Sent} event. * * Requirements * * - `sender` cannot be the zero address. * - `sender` must have at least `amount` tokens. * - the caller must be an operator for `sender`. * - `recipient` cannot be the zero address. * - if `recipient` is a contract, it must implement the {IERC777Recipient} * interface. */ function operatorSend( address sender, address recipient, uint256 amount, bytes calldata data, bytes calldata operatorData ) external; /** * @dev Destroys `amount` tokens from `account`, reducing the total supply. * The caller must be an operator of `account`. * * If a send hook is registered for `account`, the corresponding function * will be called with `data` and `operatorData`. See {IERC777Sender}. * * Emits a {Burned} event. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. * - the caller must be an operator for `account`. */ function operatorBurn( address account, uint256 amount, bytes calldata data, bytes calldata operatorData ) external; event Sent( address indexed operator, address indexed from, address indexed to, uint256 amount, bytes data, bytes operatorData ); event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData); event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData); event AuthorizedOperator(address indexed operator, address indexed tokenHolder); event RevokedOperator(address indexed operator, address indexed tokenHolder); } // File: @openzeppelin/contracts/utils/Context.sol pragma solidity >=0.6.0 <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 GSN 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 payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: contracts/OwnableV2.sol pragma solidity >=0.6.0 <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 OwnableV2 is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @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 { emit OwnershipTransferred(_owner, address(0)); _owner = 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" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function setOwner(address newOwner) internal { _owner = newOwner; } } // File: contracts/Pausable.sol pragma solidity 0.6.12; /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is OwnableV2 { event Pause(); event Unpause(); bool public paused = false; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() public onlyOwner whenNotPaused { paused = true; emit Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() public onlyOwner whenPaused { paused = false; emit Unpause(); } } // File: @openzeppelin/contracts/token/ERC777/ERC777.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Implementation of the {IERC777} 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}. * * Support for ERC20 is included in this contract, as specified by the EIP: both * the ERC777 and ERC20 interfaces can be safely used when interacting with it. * Both {IERC777-Sent} and {IERC20-Transfer} events are emitted on token * movements. * * Additionally, the {IERC777-granularity} value is hard-coded to `1`, meaning that there * are no special restrictions in the amount of tokens that created, moved, or * destroyed. This makes integration with ERC20 applications seamless. */ contract ERC777 is Context, IERC777, IERC20 { using SafeMath for uint256; using Address for address; IERC1820Registry constant internal _ERC1820_REGISTRY = IERC1820Registry(0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24); mapping(address => uint256) private _balances; uint256 private _totalSupply; string private _name; string private _symbol; // We inline the result of the following hashes because Solidity doesn't resolve them at compile time. // See https://github.com/ethereum/solidity/issues/4024. // keccak256("ERC777TokensSender") bytes32 constant private _TOKENS_SENDER_INTERFACE_HASH = 0x29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe895; // keccak256("ERC777TokensRecipient") bytes32 constant private _TOKENS_RECIPIENT_INTERFACE_HASH = 0xb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b; // This isn't ever read from - it's only used to respond to the defaultOperators query. address[] private _defaultOperatorsArray; // Immutable, but accounts may revoke them (tracked in __revokedDefaultOperators). mapping(address => bool) private _defaultOperators; // For each account, a mapping of its operators and revoked default operators. mapping(address => mapping(address => bool)) private _operators; mapping(address => mapping(address => bool)) private _revokedDefaultOperators; // ERC20-allowances mapping (address => mapping (address => uint256)) private _allowances; /** * @dev `defaultOperators` may be an empty array. */ constructor( string memory name_, string memory symbol_, address[] memory defaultOperators_ ) public { _name = name_; _symbol = symbol_; _defaultOperatorsArray = defaultOperators_; for (uint256 i = 0; i < _defaultOperatorsArray.length; i++) { _defaultOperators[_defaultOperatorsArray[i]] = true; } // register interfaces _ERC1820_REGISTRY.setInterfaceImplementer(address(this), keccak256("ERC777Token"), address(this)); _ERC1820_REGISTRY.setInterfaceImplementer(address(this), keccak256("ERC20Token"), address(this)); } /** * @dev See {IERC777-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC777-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {ERC20-decimals}. * * Always returns 18, as per the * [ERC777 EIP](https://eips.ethereum.org/EIPS/eip-777#backward-compatibility). */ function decimals() public pure virtual returns (uint8) { return 18; } /** * @dev See {IERC777-granularity}. * * This implementation always returns `1`. */ function granularity() public view virtual override returns (uint256) { return 1; } /** * @dev See {IERC777-totalSupply}. */ function totalSupply() public view virtual override(IERC20, IERC777) returns (uint256) { return _totalSupply; } /** * @dev Returns the amount of tokens owned by an account (`tokenHolder`). */ function balanceOf(address tokenHolder) public view virtual override(IERC20, IERC777) returns (uint256) { return _balances[tokenHolder]; } /** * @dev See {IERC777-send}. * * Also emits a {IERC20-Transfer} event for ERC20 compatibility. */ function send(address recipient, uint256 amount, bytes memory data) public virtual override { _send(_msgSender(), recipient, amount, data, "", true); } /** * @dev See {IERC20-transfer}. * * Unlike `send`, `recipient` is _not_ required to implement the {IERC777Recipient} * interface if it is a contract. * * Also emits a {Sent} event. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { require(recipient != address(0), "ERC777: transfer to the zero address"); address from = _msgSender(); _callTokensToSend(from, from, recipient, amount, "", ""); _move(from, from, recipient, amount, "", ""); _callTokensReceived(from, from, recipient, amount, "", "", false); return true; } /** * @dev See {IERC777-burn}. * * Also emits a {IERC20-Transfer} event for ERC20 compatibility. */ function burn(uint256 amount, bytes memory data) public virtual override { _burn(_msgSender(), amount, data, ""); } /** * @dev See {IERC777-isOperatorFor}. */ function isOperatorFor(address operator, address tokenHolder) public view virtual override returns (bool) { return operator == tokenHolder || (_defaultOperators[operator] && !_revokedDefaultOperators[tokenHolder][operator]) || _operators[tokenHolder][operator]; } /** * @dev See {IERC777-authorizeOperator}. */ function authorizeOperator(address operator) public virtual override { require(_msgSender() != operator, "ERC777: authorizing self as operator"); if (_defaultOperators[operator]) { delete _revokedDefaultOperators[_msgSender()][operator]; } else { _operators[_msgSender()][operator] = true; } emit AuthorizedOperator(operator, _msgSender()); } /** * @dev See {IERC777-revokeOperator}. */ function revokeOperator(address operator) public virtual override { require(operator != _msgSender(), "ERC777: revoking self as operator"); if (_defaultOperators[operator]) { _revokedDefaultOperators[_msgSender()][operator] = true; } else { delete _operators[_msgSender()][operator]; } emit RevokedOperator(operator, _msgSender()); } /** * @dev See {IERC777-defaultOperators}. */ function defaultOperators() public view virtual override returns (address[] memory) { return _defaultOperatorsArray; } /** * @dev See {IERC777-operatorSend}. * * Emits {Sent} and {IERC20-Transfer} events. */ function operatorSend( address sender, address recipient, uint256 amount, bytes memory data, bytes memory operatorData ) public virtual override { require(isOperatorFor(_msgSender(), sender), "ERC777: caller is not an operator for holder"); _send(sender, recipient, amount, data, operatorData, true); } /** * @dev See {IERC777-operatorBurn}. * * Emits {Burned} and {IERC20-Transfer} events. */ function operatorBurn(address account, uint256 amount, bytes memory data, bytes memory operatorData) public virtual override { require(isOperatorFor(_msgSender(), account), "ERC777: caller is not an operator for holder"); _burn(account, amount, data, operatorData); } /** * @dev See {IERC20-allowance}. * * Note that operator and allowance concepts are orthogonal: operators may * not have allowance, and accounts with allowance may not be operators * themselves. */ function allowance(address holder, address spender) public view virtual override returns (uint256) { return _allowances[holder][spender]; } /** * @dev See {IERC20-approve}. * * Note that accounts cannot have allowance issued by their operators. */ function approve(address spender, uint256 value) public virtual override returns (bool) { address holder = _msgSender(); _approve(holder, spender, value); return true; } /** * @dev See {IERC20-transferFrom}. * * Note that operator and allowance concepts are orthogonal: operators cannot * call `transferFrom` (unless they have allowance), and accounts with * allowance cannot call `operatorSend` (unless they are operators). * * Emits {Sent}, {IERC20-Transfer} and {IERC20-Approval} events. */ function transferFrom(address holder, address recipient, uint256 amount) public virtual override returns (bool) { require(recipient != address(0), "ERC777: transfer to the zero address"); require(holder != address(0), "ERC777: transfer from the zero address"); address spender = _msgSender(); _callTokensToSend(spender, holder, recipient, amount, "", ""); _move(spender, holder, recipient, amount, "", ""); _approve(holder, spender, _allowances[holder][spender].sub(amount, "ERC777: transfer amount exceeds allowance")); _callTokensReceived(spender, holder, recipient, amount, "", "", false); return true; } /** * @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * If a send hook is registered for `account`, the corresponding function * will be called with `operator`, `data` and `operatorData`. * * See {IERC777Sender} and {IERC777Recipient}. * * Emits {Minted} and {IERC20-Transfer} events. * * Requirements * * - `account` cannot be the zero address. * - if `account` is a contract, it must implement the {IERC777Recipient} * interface. */ function _mint( address account, uint256 amount, bytes memory userData, bytes memory operatorData ) internal virtual { require(account != address(0), "ERC777: mint to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), account, amount); // Update state variables _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); _callTokensReceived(operator, address(0), account, amount, userData, operatorData, true); emit Minted(operator, account, amount, userData, operatorData); emit Transfer(address(0), account, amount); } /** * @dev Send tokens * @param from address token holder address * @param to address recipient address * @param amount uint256 amount of tokens to transfer * @param userData bytes extra information provided by the token holder (if any) * @param operatorData bytes extra information provided by the operator (if any) * @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient */ function _send( address from, address to, uint256 amount, bytes memory userData, bytes memory operatorData, bool requireReceptionAck ) internal virtual { require(from != address(0), "ERC777: send from the zero address"); require(to != address(0), "ERC777: send to the zero address"); address operator = _msgSender(); _callTokensToSend(operator, from, to, amount, userData, operatorData); _move(operator, from, to, amount, userData, operatorData); _callTokensReceived(operator, from, to, amount, userData, operatorData, requireReceptionAck); } /** * @dev Burn tokens * @param from address token holder address * @param amount uint256 amount of tokens to burn * @param data bytes extra information provided by the token holder * @param operatorData bytes extra information provided by the operator (if any) */ function _burn( address from, uint256 amount, bytes memory data, bytes memory operatorData ) internal virtual { require(from != address(0), "ERC777: burn from the zero address"); address operator = _msgSender(); _callTokensToSend(operator, from, address(0), amount, data, operatorData); _beforeTokenTransfer(operator, from, address(0), amount); // Update state variables _balances[from] = _balances[from].sub(amount, "ERC777: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Burned(operator, from, amount, data, operatorData); emit Transfer(from, address(0), amount); } function _move( address operator, address from, address to, uint256 amount, bytes memory userData, bytes memory operatorData ) private { _beforeTokenTransfer(operator, from, to, amount); _balances[from] = _balances[from].sub(amount, "ERC777: transfer amount exceeds balance"); _balances[to] = _balances[to].add(amount); emit Sent(operator, from, to, amount, userData, operatorData); emit Transfer(from, to, amount); } /** * @dev See {ERC20-_approve}. * * Note that accounts cannot have allowance issued by their operators. */ function _approve(address holder, address spender, uint256 value) internal { require(holder != address(0), "ERC777: approve from the zero address"); require(spender != address(0), "ERC777: approve to the zero address"); _allowances[holder][spender] = value; emit Approval(holder, spender, value); } /** * @dev Call from.tokensToSend() if the interface is registered * @param operator address operator requesting the transfer * @param from address token holder address * @param to address recipient address * @param amount uint256 amount of tokens to transfer * @param userData bytes extra information provided by the token holder (if any) * @param operatorData bytes extra information provided by the operator (if any) */ function _callTokensToSend( address operator, address from, address to, uint256 amount, bytes memory userData, bytes memory operatorData ) private { address implementer = _ERC1820_REGISTRY.getInterfaceImplementer(from, _TOKENS_SENDER_INTERFACE_HASH); if (implementer != address(0)) { IERC777Sender(implementer).tokensToSend(operator, from, to, amount, userData, operatorData); } } /** * @dev Call to.tokensReceived() if the interface is registered. Reverts if the recipient is a contract but * tokensReceived() was not registered for the recipient * @param operator address operator requesting the transfer * @param from address token holder address * @param to address recipient address * @param amount uint256 amount of tokens to transfer * @param userData bytes extra information provided by the token holder (if any) * @param operatorData bytes extra information provided by the operator (if any) * @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient */ function _callTokensReceived( address operator, address from, address to, uint256 amount, bytes memory userData, bytes memory operatorData, bool requireReceptionAck ) private { address implementer = _ERC1820_REGISTRY.getInterfaceImplementer(to, _TOKENS_RECIPIENT_INTERFACE_HASH); if (implementer != address(0)) { IERC777Recipient(implementer).tokensReceived(operator, from, to, amount, userData, operatorData); } else if (requireReceptionAck) { require(!to.isContract(), "ERC777: token recipient contract has no implementer for ERC777TokensRecipient"); } } /** * @dev Hook that is called before any token transfer. This includes * calls to {send}, {transfer}, {operatorSend}, minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to 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 operator, address from, address to, uint256 amount) internal virtual { } } // File: contracts/ClearToken.sol pragma solidity 0.6.12; contract ClearToken is ERC777, Pausable { mapping(address => bool) public greyList; event AddGreyList(address indexed user); event RemoveGreyList(address indexed user); /** * @dev `defaultOperators` may be an empty array. */ constructor( string memory name_, string memory symbol_, address[] memory defaultOperators_, uint256[] memory initAmount, address[] memory initReceiver, address _owner ) public ERC777(name_, symbol_, defaultOperators_) { setOwner(_owner); for (uint256 i = 0; i < initAmount.length; i++) { _mint(initReceiver[i], initAmount[i], "", ""); } } function operatorMint( address account, uint256 amount, bytes memory userData, bytes memory operatorData ) external onlyOwner { _mint(account, amount, userData, operatorData); } function addGreyList(address _user) external onlyOwner { require(_user != address(0), "zero address"); require(!greyList[_user], "in the list"); greyList[_user] = true; emit AddGreyList(_user); } function removeGreyList(address _user) external onlyOwner { require(_user != address(0), "zero address"); require(greyList[_user], "removed"); greyList[_user] = false; emit RemoveGreyList(_user); } function _beforeTokenTransfer( address, address from, address, uint256 ) internal override whenNotPaused { require(!greyList[from], "in greyList"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address[]","name":"defaultOperators_","type":"address[]"},{"internalType":"uint256[]","name":"initAmount","type":"uint256[]"},{"internalType":"address[]","name":"initReceiver","type":"address[]"},{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"AddGreyList","type":"event"},{"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":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","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":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"RemoveGreyList","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","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":[],"name":"Unpause","type":"event"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addGreyList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"greyList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeGreyList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600960146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b50604051620051e9380380620051e9833981810160405260c08110156200005257600080fd5b81019080805160405193929190846401000000008211156200007357600080fd5b838201915060208201858111156200008a57600080fd5b8251866001820283011164010000000082111715620000a857600080fd5b8083526020830192505050908051906020019080838360005b83811015620000de578082015181840152602081019050620000c1565b50505050905090810190601f1680156200010c5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200013057600080fd5b838201915060208201858111156200014757600080fd5b82518660018202830111640100000000821117156200016557600080fd5b8083526020830192505050908051906020019080838360005b838110156200019b5780820151818401526020810190506200017e565b50505050905090810190601f168015620001c95780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084640100000000821115620001ed57600080fd5b838201915060208201858111156200020457600080fd5b82518660208202830111640100000000821117156200022257600080fd5b8083526020830192505050908051906020019060200280838360005b838110156200025b5780820151818401526020810190506200023e565b50505050905001604052602001805160405193929190846401000000008211156200028557600080fd5b838201915060208201858111156200029c57600080fd5b8251866020820283011164010000000082111715620002ba57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015620002f3578082015181840152602081019050620002d6565b50505050905001604052602001805160405193929190846401000000008211156200031d57600080fd5b838201915060208201858111156200033457600080fd5b82518660208202830111640100000000821117156200035257600080fd5b8083526020830192505050908051906020019060200280838360005b838110156200038b5780820151818401526020810190506200036e565b50505050905001604052602001805190602001909291905050508585858260029080519060200190620003c092919062000f71565b508160039080519060200190620003d992919062000f71565b508060049080519060200190620003f292919062000ff8565b5060005b600480549050811015620004a257600160056000600484815481106200041857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050620003f6565b50731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce2177054306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156200056757600080fd5b505af11580156200057c573d6000803e3d6000fd5b50505050731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156200064457600080fd5b505af115801562000659573d6000803e3d6000fd5b505050505050506200067181620006f360201b60201c565b60005b8351811015620006e657620006d88382815181106200068f57fe5b6020026020010151858381518110620006a457fe5b602002602001015160405180602001604052806000815250604051806020016040528060008152506200073760201b60201c565b808060010191505062000674565b50505050505050620010e3565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415620007db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b6000620007ed62000a8b60201b60201c565b905062000804816000878762000a9360201b60201c565b620008208460015462000b7560201b620028c91790919060201c565b6001819055506200087e846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b7560201b620028c91790919060201c565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620008d981600087878787600162000bfe60201b60201c565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015620009775780820151818401526020810190506200095a565b50505050905090810190601f168015620009a55780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015620009e0578082015181840152602081019050620009c3565b50505050905090810190601f16801562000a0e5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b600033905090565b600960149054906101000a900460ff161562000aae57600080fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161562000b6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f696e20677265794c69737400000000000000000000000000000000000000000081525060200191505060405180910390fd5b50505050565b60008082840190508381101562000bf4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801562000ca757600080fd5b505afa15801562000cbc573d6000803e3d6000fd5b505050506040513d602081101562000cd357600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161462000ec7578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101562000deb57808201518184015260208101905062000dce565b50505050905090810190601f16801562000e195780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101562000e5457808201518184015260208101905062000e37565b50505050905090810190601f16801562000e825780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801562000ea857600080fd5b505af115801562000ebd573d6000803e3d6000fd5b5050505062000f54565b811562000f535762000efa8673ffffffffffffffffffffffffffffffffffffffff1662000f5e60201b620029511760201c565b1562000f52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d8152602001806200519c604d913960600191505060405180910390fd5b5b5b5050505050505050565b600080823b905060008111915050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000fb457805160ff191683800117855562000fe5565b8280016001018555821562000fe5579182015b8281111562000fe457825182559160200191906001019062000fc7565b5b50905062000ff4919062001087565b5090565b82805482825590600052602060002090810192821562001074579160200282015b82811115620010735782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062001019565b5b509050620010839190620010a6565b5090565b5b80821115620010a257600081600090555060010162001088565b5090565b5b80821115620010df57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620010a7565b5090565b6140a980620010f36000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80638456cb59116100f9578063cbb4f53711610097578063f2fde38b11610071578063f2fde38b14610bb6578063fad8b32a14610bfa578063fc673c4f14610c3e578063fe9d930314610dba576101c4565b8063cbb4f53714610a80578063d95b637114610ac4578063dd62ed3e14610b3e576101c4565b806395d89b41116100d357806395d89b4114610738578063999de9cc146107bb5780639bd9bbc614610937578063a9059cbb14610a1c576101c4565b80638456cb59146106b65780638da5cb5b146106c0578063959b8c3f146106f4576101c4565b80633f4ba83a1161016657806362ad1b831161014057806362ad1b83146104745780636fe8f7641461061057806370a0823114610654578063715018a6146106ac576101c4565b80633f4ba83a1461042c578063556f0dc7146104365780635c975abb14610454576101c4565b806318160ddd116101a257806318160ddd1461030f57806323b872dd1461032d57806330e412ad146103b1578063313ce5671461040b576101c4565b806306e48538146101c957806306fdde0314610228578063095ea7b3146102ab575b600080fd5b6101d1610e7f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102145780820151818401526020810190506101f9565b505050509050019250505060405180910390f35b610230610f0d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610270578082015181840152602081019050610255565b50505050905090810190601f16801561029d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102f7600480360360408110156102c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610faf565b60405180821515815260200191505060405180910390f35b610317610fd2565b6040518082815260200191505060405180910390f35b6103996004803603606081101561034357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fdc565b60405180821515815260200191505060405180910390f35b6103f3600480360360208110156103c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061123a565b60405180821515815260200191505060405180910390f35b61041361125a565b604051808260ff16815260200191505060405180910390f35b610434611263565b005b61043e611374565b6040518082815260200191505060405180910390f35b61045c61137d565b60405180821515815260200191505060405180910390f35b61060e600480360360a081101561048a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104f157600080fd5b82018360208201111561050357600080fd5b8035906020019184600183028401116401000000008311171561052557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561058857600080fd5b82018360208201111561059a57600080fd5b803590602001918460018302840111640100000000831117156105bc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611390565b005b6106526004803603602081101561062657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061140c565b005b6106966004803603602081101561066a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116bc565b6040518082815260200191505060405180910390f35b6106b4611704565b005b6106be611874565b005b6106c8611986565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107366004803603602081101561070a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119b0565b005b610740611c27565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610780578082015181840152602081019050610765565b50505050905090810190601f1680156107ad5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610935600480360360808110156107d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561081857600080fd5b82018360208201111561082a57600080fd5b8035906020019184600183028401116401000000008311171561084c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156108af57600080fd5b8201836020820111156108c157600080fd5b803590602001918460018302840111640100000000831117156108e357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611cc9565b005b610a1a6004803603606081101561094d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561099457600080fd5b8201836020820111156109a657600080fd5b803590602001918460018302840111640100000000831117156109c857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611d8a565b005b610a6860048036036040811015610a3257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611db4565b60405180821515815260200191505060405180910390f35b610ac260048036036020811015610a9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ed8565b005b610b2660048036036040811015610ada57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612187565b60405180821515815260200191505060405180910390f35b610ba060048036036040811015610b5457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612338565b6040518082815260200191505060405180910390f35b610bf860048036036020811015610bcc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123bf565b005b610c3c60048036036020811015610c1057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125b4565b005b610db860048036036080811015610c5457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610c9b57600080fd5b820183602082011115610cad57600080fd5b80359060200191846001830284011164010000000083111715610ccf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610d3257600080fd5b820183602082011115610d4457600080fd5b80359060200191846001830284011164010000000083111715610d6657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061282b565b005b610e7d60048036036040811015610dd057600080fd5b810190808035906020019092919080359060200190640100000000811115610df757600080fd5b820183602082011115610e0957600080fd5b80359060200191846001830284011164010000000083111715610e2b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506128a3565b005b60606004805480602002602001604051908101604052809291908181526020018280548015610f0357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610eb9575b5050505050905090565b606060028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fa55780601f10610f7a57610100808354040283529160200191610fa5565b820191906000526020600020905b815481529060010190602001808311610f8857829003601f168201915b5050505050905090565b600080610fba612964565b9050610fc781858561296c565b600191505092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611063576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613f8f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806140086026913960400191505060405180910390fd5b60006110f3612964565b9050611121818686866040518060200160405280600081525060405180602001604052806000815250612b63565b61114d818686866040518060200160405280600081525060405180602001604052806000815250612e25565b61120085826111fb86604051806060016040528060298152602001613fdf60299139600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131349092919063ffffffff16565b61296c565b61122e81868686604051806020016040528060008152506040518060200160405280600081525060006131ee565b60019150509392505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b60006012905090565b61126b612964565b73ffffffffffffffffffffffffffffffffffffffff16611289611986565b73ffffffffffffffffffffffffffffffffffffffff1614611312576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600960149054906101000a900460ff1661132b57600080fd5b6000600960146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60006001905090565b600960149054906101000a900460ff1681565b6113a161139b612964565b86612187565b6113f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613fb3602c913960400191505060405180910390fd5b61140585858585856001613531565b5050505050565b611414612964565b73ffffffffffffffffffffffffffffffffffffffff16611432611986565b73ffffffffffffffffffffffffffffffffffffffff16146114bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561155e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f7a65726f2061646472657373000000000000000000000000000000000000000081525060200191505060405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561161e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f696e20746865206c69737400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6c79169e5e7d7cfaacb282c70e77c3c2dbe012f4d9c5d454b8237697f2d59d3c60405160405180910390a250565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61170c612964565b73ffffffffffffffffffffffffffffffffffffffff1661172a611986565b73ffffffffffffffffffffffffffffffffffffffff16146117b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61187c612964565b73ffffffffffffffffffffffffffffffffffffffff1661189a611986565b73ffffffffffffffffffffffffffffffffffffffff1614611923576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600960149054906101000a900460ff161561193d57600080fd5b6001600960146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8073ffffffffffffffffffffffffffffffffffffffff166119cf612964565b73ffffffffffffffffffffffffffffffffffffffff161415611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613efd6024913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b265760076000611a9a612964565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055611bc3565b600160066000611b34612964565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b611bcb612964565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611cbf5780601f10611c9457610100808354040283529160200191611cbf565b820191906000526020600020905b815481529060010190602001808311611ca257829003601f168201915b5050505050905090565b611cd1612964565b73ffffffffffffffffffffffffffffffffffffffff16611cef611986565b73ffffffffffffffffffffffffffffffffffffffff1614611d78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611d848484848461369a565b50505050565b611daf611d95612964565b848484604051806020016040528060008152506001613531565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613f8f6024913960400191505060405180910390fd5b6000611e45612964565b9050611e73818286866040518060200160405280600081525060405180602001604052806000815250612b63565b611e9f818286866040518060200160405280600081525060405180602001604052806000815250612e25565b611ecd81828686604051806020016040528060008152506040518060200160405280600081525060006131ee565b600191505092915050565b611ee0612964565b73ffffffffffffffffffffffffffffffffffffffff16611efe611986565b73ffffffffffffffffffffffffffffffffffffffff1614611f87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561202a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f7a65726f2061646472657373000000000000000000000000000000000000000081525060200191505060405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f72656d6f7665640000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f745351baf42fee790acfc3f618a2336a92b63569d1708c6e4e0c162b8642630260405160405180910390a250565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061229f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561229e5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b806123305750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6123c7612964565b73ffffffffffffffffffffffffffffffffffffffff166123e5611986565b73ffffffffffffffffffffffffffffffffffffffff161461246e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613eb56026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6125bc612964565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613f216021913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612733576001600760006126a0612964565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506127c7565b6006600061273f612964565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b6127cf612964565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b61283c612836612964565b85612187565b612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613fb3602c913960400191505060405180910390fd5b61289d848484846139c1565b50505050565b6128c56128ae612964565b8383604051806020016040528060008152506139c1565b5050565b600080828401905083811015612947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080823b905060008111915050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613e476025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140516023913960400191505060405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015612c0b57600080fd5b505afa158015612c1f573d6000803e3d6000fd5b505050506040513d6020811015612c3557600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612e1c578073ffffffffffffffffffffffffffffffffffffffff166375ab97828888888888886040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612d4b578082015181840152602081019050612d30565b50505050905090810190601f168015612d785780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612db1578082015181840152602081019050612d96565b50505050905090810190601f168015612dde5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015612e0357600080fd5b505af1158015612e17573d6000803e3d6000fd5b505050505b50505050505050565b612e3186868686613ce3565b612e9c83604051806060016040528060278152602001613e8e602791396000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131349092919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f2f836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015613024578082015181840152602081019050613009565b50505050905090810190601f1680156130515780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561308a57808201518184015260208101905061306f565b50505050905090810190601f1680156130b75780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a48373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b60008383111582906131e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156131a657808201518184015260208101905061318b565b50505050905090810190601f1680156131d35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561329657600080fd5b505afa1580156132aa573d6000803e3d6000fd5b505050506040513d60208110156132c057600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146134aa578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156133d55780820151818401526020810190506133ba565b50505050905090810190601f1680156134025780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561343b578082015181840152602081019050613420565b50505050905090810190601f1680156134685780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561348d57600080fd5b505af11580156134a1573d6000803e3d6000fd5b50505050613527565b8115613526576134cf8673ffffffffffffffffffffffffffffffffffffffff16612951565b15613525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d815260200180613f42604d913960600191505060405180910390fd5b5b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156135b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613e6c6022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561365a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a2073656e6420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b6000613664612964565b9050613674818888888888612b63565b613682818888888888612e25565b613691818888888888886131ee565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561373d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b6000613747612964565b90506137568160008787613ce3565b61376b846001546128c990919063ffffffff16565b6001819055506137c2846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c990919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138158160008787878760016131ee565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156138b1578082015181840152602081019050613896565b50505050905090810190601f1680156138de5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156139175780820151818401526020810190506138fc565b50505050905090810190601f1680156139445780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613edb6022913960400191505060405180910390fd5b6000613a51612964565b9050613a6281866000878787612b63565b613a6f8186600087613ce3565b613ada8460405180606001604052806023815260200161402e602391396000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131349092919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b3184600154613dc390919063ffffffff16565b6001819055508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015613bd3578082015181840152602081019050613bb8565b50505050905090810190601f168015613c005780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015613c39578082015181840152602081019050613c1e565b50505050905090810190601f168015613c665780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b600960149054906101000a900460ff1615613cfd57600080fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613dbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f696e20677265794c69737400000000000000000000000000000000000000000081525060200191505060405180910390fd5b50505050565b600082821115613e3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b81830390509291505056fe4552433737373a20617070726f76652066726f6d20746865207a65726f20616464726573734552433737373a2073656e642066726f6d20746865207a65726f20616464726573734552433737373a207472616e7366657220616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433737373a206275726e2066726f6d20746865207a65726f20616464726573734552433737373a20617574686f72697a696e672073656c66206173206f70657261746f724552433737373a207265766f6b696e672073656c66206173206f70657261746f724552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e744552433737373a207472616e7366657220746f20746865207a65726f20616464726573734552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c6465724552433737373a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654552433737373a207472616e736665722066726f6d20746865207a65726f20616464726573734552433737373a206275726e20616d6f756e7420657863656564732062616c616e63654552433737373a20617070726f766520746f20746865207a65726f2061646472657373a2646970667358221220e471821c0585bf07a562aa3e5a6563f67cdb1700049bd61f743228750bd0425f64736f6c634300060c00334552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e7400000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000921c13069fcdc3083c26b5fd1fe3d7ada867c0680000000000000000000000000000000000000000000000000000000000000013434c656172696e67486f75736520546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003434c4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000921c13069fcdc3083c26b5fd1fe3d7ada867c06800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000019d971e4fe8401e7400000000000000000000000000000000000000000000000014f99579f7667eaefc00000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a79e5f5d600ff452ea1c8176dca91ab9597bf7b1000000000000000000000000a79e5f5d600ff452ea1c8176dca91ab9597bf7b1
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80638456cb59116100f9578063cbb4f53711610097578063f2fde38b11610071578063f2fde38b14610bb6578063fad8b32a14610bfa578063fc673c4f14610c3e578063fe9d930314610dba576101c4565b8063cbb4f53714610a80578063d95b637114610ac4578063dd62ed3e14610b3e576101c4565b806395d89b41116100d357806395d89b4114610738578063999de9cc146107bb5780639bd9bbc614610937578063a9059cbb14610a1c576101c4565b80638456cb59146106b65780638da5cb5b146106c0578063959b8c3f146106f4576101c4565b80633f4ba83a1161016657806362ad1b831161014057806362ad1b83146104745780636fe8f7641461061057806370a0823114610654578063715018a6146106ac576101c4565b80633f4ba83a1461042c578063556f0dc7146104365780635c975abb14610454576101c4565b806318160ddd116101a257806318160ddd1461030f57806323b872dd1461032d57806330e412ad146103b1578063313ce5671461040b576101c4565b806306e48538146101c957806306fdde0314610228578063095ea7b3146102ab575b600080fd5b6101d1610e7f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102145780820151818401526020810190506101f9565b505050509050019250505060405180910390f35b610230610f0d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610270578082015181840152602081019050610255565b50505050905090810190601f16801561029d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102f7600480360360408110156102c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610faf565b60405180821515815260200191505060405180910390f35b610317610fd2565b6040518082815260200191505060405180910390f35b6103996004803603606081101561034357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fdc565b60405180821515815260200191505060405180910390f35b6103f3600480360360208110156103c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061123a565b60405180821515815260200191505060405180910390f35b61041361125a565b604051808260ff16815260200191505060405180910390f35b610434611263565b005b61043e611374565b6040518082815260200191505060405180910390f35b61045c61137d565b60405180821515815260200191505060405180910390f35b61060e600480360360a081101561048a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104f157600080fd5b82018360208201111561050357600080fd5b8035906020019184600183028401116401000000008311171561052557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561058857600080fd5b82018360208201111561059a57600080fd5b803590602001918460018302840111640100000000831117156105bc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611390565b005b6106526004803603602081101561062657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061140c565b005b6106966004803603602081101561066a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116bc565b6040518082815260200191505060405180910390f35b6106b4611704565b005b6106be611874565b005b6106c8611986565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107366004803603602081101561070a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119b0565b005b610740611c27565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610780578082015181840152602081019050610765565b50505050905090810190601f1680156107ad5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610935600480360360808110156107d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561081857600080fd5b82018360208201111561082a57600080fd5b8035906020019184600183028401116401000000008311171561084c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156108af57600080fd5b8201836020820111156108c157600080fd5b803590602001918460018302840111640100000000831117156108e357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611cc9565b005b610a1a6004803603606081101561094d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561099457600080fd5b8201836020820111156109a657600080fd5b803590602001918460018302840111640100000000831117156109c857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611d8a565b005b610a6860048036036040811015610a3257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611db4565b60405180821515815260200191505060405180910390f35b610ac260048036036020811015610a9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ed8565b005b610b2660048036036040811015610ada57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612187565b60405180821515815260200191505060405180910390f35b610ba060048036036040811015610b5457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612338565b6040518082815260200191505060405180910390f35b610bf860048036036020811015610bcc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123bf565b005b610c3c60048036036020811015610c1057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125b4565b005b610db860048036036080811015610c5457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610c9b57600080fd5b820183602082011115610cad57600080fd5b80359060200191846001830284011164010000000083111715610ccf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610d3257600080fd5b820183602082011115610d4457600080fd5b80359060200191846001830284011164010000000083111715610d6657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061282b565b005b610e7d60048036036040811015610dd057600080fd5b810190808035906020019092919080359060200190640100000000811115610df757600080fd5b820183602082011115610e0957600080fd5b80359060200191846001830284011164010000000083111715610e2b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506128a3565b005b60606004805480602002602001604051908101604052809291908181526020018280548015610f0357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610eb9575b5050505050905090565b606060028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fa55780601f10610f7a57610100808354040283529160200191610fa5565b820191906000526020600020905b815481529060010190602001808311610f8857829003601f168201915b5050505050905090565b600080610fba612964565b9050610fc781858561296c565b600191505092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611063576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613f8f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806140086026913960400191505060405180910390fd5b60006110f3612964565b9050611121818686866040518060200160405280600081525060405180602001604052806000815250612b63565b61114d818686866040518060200160405280600081525060405180602001604052806000815250612e25565b61120085826111fb86604051806060016040528060298152602001613fdf60299139600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131349092919063ffffffff16565b61296c565b61122e81868686604051806020016040528060008152506040518060200160405280600081525060006131ee565b60019150509392505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b60006012905090565b61126b612964565b73ffffffffffffffffffffffffffffffffffffffff16611289611986565b73ffffffffffffffffffffffffffffffffffffffff1614611312576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600960149054906101000a900460ff1661132b57600080fd5b6000600960146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60006001905090565b600960149054906101000a900460ff1681565b6113a161139b612964565b86612187565b6113f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613fb3602c913960400191505060405180910390fd5b61140585858585856001613531565b5050505050565b611414612964565b73ffffffffffffffffffffffffffffffffffffffff16611432611986565b73ffffffffffffffffffffffffffffffffffffffff16146114bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561155e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f7a65726f2061646472657373000000000000000000000000000000000000000081525060200191505060405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561161e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f696e20746865206c69737400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6c79169e5e7d7cfaacb282c70e77c3c2dbe012f4d9c5d454b8237697f2d59d3c60405160405180910390a250565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61170c612964565b73ffffffffffffffffffffffffffffffffffffffff1661172a611986565b73ffffffffffffffffffffffffffffffffffffffff16146117b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61187c612964565b73ffffffffffffffffffffffffffffffffffffffff1661189a611986565b73ffffffffffffffffffffffffffffffffffffffff1614611923576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600960149054906101000a900460ff161561193d57600080fd5b6001600960146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8073ffffffffffffffffffffffffffffffffffffffff166119cf612964565b73ffffffffffffffffffffffffffffffffffffffff161415611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613efd6024913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b265760076000611a9a612964565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055611bc3565b600160066000611b34612964565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b611bcb612964565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611cbf5780601f10611c9457610100808354040283529160200191611cbf565b820191906000526020600020905b815481529060010190602001808311611ca257829003601f168201915b5050505050905090565b611cd1612964565b73ffffffffffffffffffffffffffffffffffffffff16611cef611986565b73ffffffffffffffffffffffffffffffffffffffff1614611d78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611d848484848461369a565b50505050565b611daf611d95612964565b848484604051806020016040528060008152506001613531565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613f8f6024913960400191505060405180910390fd5b6000611e45612964565b9050611e73818286866040518060200160405280600081525060405180602001604052806000815250612b63565b611e9f818286866040518060200160405280600081525060405180602001604052806000815250612e25565b611ecd81828686604051806020016040528060008152506040518060200160405280600081525060006131ee565b600191505092915050565b611ee0612964565b73ffffffffffffffffffffffffffffffffffffffff16611efe611986565b73ffffffffffffffffffffffffffffffffffffffff1614611f87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561202a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f7a65726f2061646472657373000000000000000000000000000000000000000081525060200191505060405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f72656d6f7665640000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f745351baf42fee790acfc3f618a2336a92b63569d1708c6e4e0c162b8642630260405160405180910390a250565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061229f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561229e5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b806123305750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6123c7612964565b73ffffffffffffffffffffffffffffffffffffffff166123e5611986565b73ffffffffffffffffffffffffffffffffffffffff161461246e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613eb56026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6125bc612964565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613f216021913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612733576001600760006126a0612964565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506127c7565b6006600061273f612964565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b6127cf612964565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b61283c612836612964565b85612187565b612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613fb3602c913960400191505060405180910390fd5b61289d848484846139c1565b50505050565b6128c56128ae612964565b8383604051806020016040528060008152506139c1565b5050565b600080828401905083811015612947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080823b905060008111915050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613e476025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140516023913960400191505060405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015612c0b57600080fd5b505afa158015612c1f573d6000803e3d6000fd5b505050506040513d6020811015612c3557600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612e1c578073ffffffffffffffffffffffffffffffffffffffff166375ab97828888888888886040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612d4b578082015181840152602081019050612d30565b50505050905090810190601f168015612d785780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612db1578082015181840152602081019050612d96565b50505050905090810190601f168015612dde5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015612e0357600080fd5b505af1158015612e17573d6000803e3d6000fd5b505050505b50505050505050565b612e3186868686613ce3565b612e9c83604051806060016040528060278152602001613e8e602791396000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131349092919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f2f836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015613024578082015181840152602081019050613009565b50505050905090810190601f1680156130515780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561308a57808201518184015260208101905061306f565b50505050905090810190601f1680156130b75780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a48373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b60008383111582906131e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156131a657808201518184015260208101905061318b565b50505050905090810190601f1680156131d35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561329657600080fd5b505afa1580156132aa573d6000803e3d6000fd5b505050506040513d60208110156132c057600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146134aa578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156133d55780820151818401526020810190506133ba565b50505050905090810190601f1680156134025780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561343b578082015181840152602081019050613420565b50505050905090810190601f1680156134685780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561348d57600080fd5b505af11580156134a1573d6000803e3d6000fd5b50505050613527565b8115613526576134cf8673ffffffffffffffffffffffffffffffffffffffff16612951565b15613525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d815260200180613f42604d913960600191505060405180910390fd5b5b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156135b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613e6c6022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561365a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a2073656e6420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b6000613664612964565b9050613674818888888888612b63565b613682818888888888612e25565b613691818888888888886131ee565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561373d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b6000613747612964565b90506137568160008787613ce3565b61376b846001546128c990919063ffffffff16565b6001819055506137c2846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c990919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138158160008787878760016131ee565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156138b1578082015181840152602081019050613896565b50505050905090810190601f1680156138de5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156139175780820151818401526020810190506138fc565b50505050905090810190601f1680156139445780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613edb6022913960400191505060405180910390fd5b6000613a51612964565b9050613a6281866000878787612b63565b613a6f8186600087613ce3565b613ada8460405180606001604052806023815260200161402e602391396000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131349092919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b3184600154613dc390919063ffffffff16565b6001819055508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015613bd3578082015181840152602081019050613bb8565b50505050905090810190601f168015613c005780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015613c39578082015181840152602081019050613c1e565b50505050905090810190601f168015613c665780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b600960149054906101000a900460ff1615613cfd57600080fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613dbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f696e20677265794c69737400000000000000000000000000000000000000000081525060200191505060405180910390fd5b50505050565b600082821115613e3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b81830390509291505056fe4552433737373a20617070726f76652066726f6d20746865207a65726f20616464726573734552433737373a2073656e642066726f6d20746865207a65726f20616464726573734552433737373a207472616e7366657220616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433737373a206275726e2066726f6d20746865207a65726f20616464726573734552433737373a20617574686f72697a696e672073656c66206173206f70657261746f724552433737373a207265766f6b696e672073656c66206173206f70657261746f724552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e744552433737373a207472616e7366657220746f20746865207a65726f20616464726573734552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c6465724552433737373a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654552433737373a207472616e736665722066726f6d20746865207a65726f20616464726573734552433737373a206275726e20616d6f756e7420657863656564732062616c616e63654552433737373a20617070726f766520746f20746865207a65726f2061646472657373a2646970667358221220e471821c0585bf07a562aa3e5a6563f67cdb1700049bd61f743228750bd0425f64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000921c13069fcdc3083c26b5fd1fe3d7ada867c0680000000000000000000000000000000000000000000000000000000000000013434c656172696e67486f75736520546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003434c4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000921c13069fcdc3083c26b5fd1fe3d7ada867c06800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000019d971e4fe8401e7400000000000000000000000000000000000000000000000014f99579f7667eaefc00000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a79e5f5d600ff452ea1c8176dca91ab9597bf7b1000000000000000000000000a79e5f5d600ff452ea1c8176dca91ab9597bf7b1
-----Decoded View---------------
Arg [0] : name_ (string): CLearingHouse Token
Arg [1] : symbol_ (string): CLH
Arg [2] : defaultOperators_ (address[]): 0x921C13069FCDC3083C26B5fd1Fe3D7ADA867c068
Arg [3] : initAmount (uint256[]): 500000000000000000000000000,25357143000000000000000000
Arg [4] : initReceiver (address[]): 0xA79e5F5D600ff452EA1c8176Dca91Ab9597bF7b1,0xA79e5F5D600ff452EA1c8176Dca91Ab9597bF7b1
Arg [5] : _owner (address): 0x921C13069FCDC3083C26B5fd1Fe3D7ADA867c068
-----Encoded View---------------
18 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [4] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [5] : 000000000000000000000000921c13069fcdc3083c26b5fd1fe3d7ada867c068
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000013
Arg [7] : 434c656172696e67486f75736520546f6b656e00000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [9] : 434c480000000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [11] : 000000000000000000000000921c13069fcdc3083c26b5fd1fe3d7ada867c068
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [13] : 0000000000000000000000000000000000000000019d971e4fe8401e74000000
Arg [14] : 00000000000000000000000000000000000000000014f99579f7667eaefc0000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [16] : 000000000000000000000000a79e5f5d600ff452ea1c8176dca91ab9597bf7b1
Arg [17] : 000000000000000000000000a79e5f5d600ff452ea1c8176dca91ab9597bf7b1
Deployed Bytecode Sourcemap
54174:1654:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43418:132;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39528:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45047:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;40354:125;;;:::i;:::-;;;;;;;;;;;;;;;;;;;45624:694;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;54221:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;39985:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36219:105;;;:::i;:::-;;40191:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35538:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;43676:407;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;55131:236;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40584:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34593:148;;;:::i;:::-;;36021:103;;;:::i;:::-;;33942:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;42441:423;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;39689:104;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54891:232;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40873:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;41280:451;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;55375:238;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;42066:303;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;44749:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34896:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;42933:414;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;44211:290;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;41868:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;43418:132;43484:16;43520:22;43513:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43418:132;:::o;39528:100::-;39582:13;39615:5;39608:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39528:100;:::o;45047:201::-;45129:4;45146:14;45163:12;:10;:12::i;:::-;45146:29;;45186:32;45195:6;45203:7;45212:5;45186:8;:32::i;:::-;45236:4;45229:11;;;45047:201;;;;:::o;40354:125::-;40432:7;40459:12;;40452:19;;40354:125;:::o;45624:694::-;45730:4;45776:1;45755:23;;:9;:23;;;;45747:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45856:1;45838:20;;:6;:20;;;;45830:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45914:15;45932:12;:10;:12::i;:::-;45914:30;;45957:61;45975:7;45984:6;45992:9;46003:6;45957:61;;;;;;;;;;;;;;;;;;;;;;;;:17;:61::i;:::-;46031:49;46037:7;46046:6;46054:9;46065:6;46031:49;;;;;;;;;;;;;;;;;;;;;;;;:5;:49::i;:::-;46091:112;46100:6;46108:7;46117:85;46150:6;46117:85;;;;;;;;;;;;;;;;;:11;:19;46129:6;46117:19;;;;;;;;;;;;;;;:28;46137:7;46117:28;;;;;;;;;;;;;;;;:32;;:85;;;;;:::i;:::-;46091:8;:112::i;:::-;46216:70;46236:7;46245:6;46253:9;46264:6;46216:70;;;;;;;;;;;;;;;;;;;;;;;;46280:5;46216:19;:70::i;:::-;46306:4;46299:11;;;45624:694;;;;;:::o;54221:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;39985:84::-;40034:5;40059:2;40052:9;;39985:84;:::o;36219:105::-;34173:12;:10;:12::i;:::-;34162:23;;:7;:5;:7::i;:::-;:23;;;34154:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35902:6:::1;;;;;;;;;;;35894:15;;;::::0;::::1;;36286:5:::2;36277:6;;:14;;;;;;;;;;;;;;;;;;36307:9;;;;;;;;;;36219:105::o:0;40191:97::-;40252:7;40279:1;40272:8;;40191:97;:::o;35538:26::-;;;;;;;;;;;;;:::o;43676:407::-;43922:35;43936:12;:10;:12::i;:::-;43950:6;43922:13;:35::i;:::-;43914:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44017:58;44023:6;44031:9;44042:6;44050:4;44056:12;44070:4;44017:5;:58::i;:::-;43676:407;;;;;:::o;55131:236::-;34173:12;:10;:12::i;:::-;34162:23;;:7;:5;:7::i;:::-;:23;;;34154:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55222:1:::1;55205:19;;:5;:19;;;;55197:44;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;55261:8;:15;55270:5;55261:15;;;;;;;;;;;;;;;;;;;;;;;;;55260:16;55252:40;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;55321:4;55303:8;:15;55312:5;55303:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;55353:5;55341:18;;;;;;;;;;;;55131:236:::0;:::o;40584:152::-;40679:7;40706:9;:22;40716:11;40706:22;;;;;;;;;;;;;;;;40699:29;;40584:152;;;:::o;34593:148::-;34173:12;:10;:12::i;:::-;34162:23;;:7;:5;:7::i;:::-;:23;;;34154:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34700:1:::1;34663:40;;34684:6;;;;;;;;;;;34663:40;;;;;;;;;;;;34731:1;34714:6;;:19;;;;;;;;;;;;;;;;;;34593:148::o:0;36021:103::-;34173:12;:10;:12::i;:::-;34162:23;;:7;:5;:7::i;:::-;:23;;;34154:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35724:6:::1;;;;;;;;;;;35723:7;35715:16;;;::::0;::::1;;36089:4:::2;36080:6;;:13;;;;;;;;;;;;;;;;;;36109:7;;;;;;;;;;36021:103::o:0;33942:87::-;33988:7;34015:6;;;;;;;;;;;34008:13;;33942:87;:::o;42441:423::-;42546:8;42530:24;;:12;:10;:12::i;:::-;:24;;;;42522:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42612:17;:27;42630:8;42612:27;;;;;;;;;;;;;;;;;;;;;;;;;42608:189;;;42663:24;:38;42688:12;:10;:12::i;:::-;42663:38;;;;;;;;;;;;;;;:48;42702:8;42663:48;;;;;;;;;;;;;;;;42656:55;;;;;;;;;;;42608:189;;;42781:4;42744:10;:24;42755:12;:10;:12::i;:::-;42744:24;;;;;;;;;;;;;;;:34;42769:8;42744:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;42608:189;42843:12;:10;:12::i;:::-;42814:42;;42833:8;42814:42;;;;;;;;;;;;42441:423;:::o;39689:104::-;39745:13;39778:7;39771:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39689:104;:::o;54891:232::-;34173:12;:10;:12::i;:::-;34162:23;;:7;:5;:7::i;:::-;:23;;;34154:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55069:46:::1;55075:7;55084:6;55092:8;55102:12;55069:5;:46::i;:::-;54891:232:::0;;;;:::o;40873:166::-;40977:54;40983:12;:10;:12::i;:::-;40997:9;41008:6;41016:4;40977:54;;;;;;;;;;;;41026:4;40977:5;:54::i;:::-;40873:166;;;:::o;41280:451::-;41366:4;41412:1;41391:23;;:9;:23;;;;41383:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41468:12;41483;:10;:12::i;:::-;41468:27;;41508:56;41526:4;41532;41538:9;41549:6;41508:56;;;;;;;;;;;;;;;;;;;;;;;;:17;:56::i;:::-;41577:44;41583:4;41589;41595:9;41606:6;41577:44;;;;;;;;;;;;;;;;;;;;;;;;:5;:44::i;:::-;41634:65;41654:4;41660;41666:9;41677:6;41634:65;;;;;;;;;;;;;;;;;;;;;;;;41693:5;41634:19;:65::i;:::-;41719:4;41712:11;;;41280:451;;;;:::o;55375:238::-;34173:12;:10;:12::i;:::-;34162:23;;:7;:5;:7::i;:::-;:23;;;34154:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55469:1:::1;55452:19;;:5;:19;;;;55444:44;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;55507:8;:15;55516:5;55507:15;;;;;;;;;;;;;;;;;;;;;;;;;55499:35;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;55563:5;55545:8;:15;55554:5;55545:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;55599:5;55584:21;;;;;;;;;;;;55375:238:::0;:::o;42066:303::-;42166:4;42202:11;42190:23;;:8;:23;;;:121;;;;42231:17;:27;42249:8;42231:27;;;;;;;;;;;;;;;;;;;;;;;;;:79;;;;;42263:24;:37;42288:11;42263:37;;;;;;;;;;;;;;;:47;42301:8;42263:47;;;;;;;;;;;;;;;;;;;;;;;;;42262:48;42231:79;42190:121;:171;;;;42328:10;:23;42339:11;42328:23;;;;;;;;;;;;;;;:33;42352:8;42328:33;;;;;;;;;;;;;;;;;;;;;;;;;42190:171;42183:178;;42066:303;;;;:::o;44749:153::-;44839:7;44866:11;:19;44878:6;44866:19;;;;;;;;;;;;;;;:28;44886:7;44866:28;;;;;;;;;;;;;;;;44859:35;;44749:153;;;;:::o;34896:281::-;34173:12;:10;:12::i;:::-;34162:23;;:7;:5;:7::i;:::-;:23;;;34154:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35019:1:::1;34999:22;;:8;:22;;;;34977:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35132:8;35103:38;;35124:6;;;;;;;;;;;35103:38;;;;;;;;;;;;35161:8;35152:6;;:17;;;;;;;;;;;;;;;;;;34896:281:::0;:::o;42933:414::-;43031:12;:10;:12::i;:::-;43019:24;;:8;:24;;;;43011:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43098:17;:27;43116:8;43098:27;;;;;;;;;;;;;;;;;;;;;;;;;43094:189;;;43193:4;43142:24;:38;43167:12;:10;:12::i;:::-;43142:38;;;;;;;;;;;;;;;:48;43181:8;43142:48;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;43094:189;;;43237:10;:24;43248:12;:10;:12::i;:::-;43237:24;;;;;;;;;;;;;;;:34;43262:8;43237:34;;;;;;;;;;;;;;;;43230:41;;;;;;;;;;;43094:189;43326:12;:10;:12::i;:::-;43300:39;;43316:8;43300:39;;;;;;;;;;;;42933:414;:::o;44211:290::-;44355:36;44369:12;:10;:12::i;:::-;44383:7;44355:13;:36::i;:::-;44347:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44451:42;44457:7;44466:6;44474:4;44480:12;44451:5;:42::i;:::-;44211:290;;;;:::o;41868:130::-;41953:37;41959:12;:10;:12::i;:::-;41973:6;41981:4;41953:37;;;;;;;;;;;;:5;:37::i;:::-;41868:130;;:::o;15752:179::-;15810:7;15830:9;15846:1;15842;:5;15830:17;;15871:1;15866;:6;;15858:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15922:1;15915:8;;;15752:179;;;;:::o;5696:422::-;5756:4;5964:12;6075:7;6063:20;6055:28;;6109:1;6102:4;:8;6095:15;;;5696:422;;;:::o;32739:106::-;32792:15;32827:10;32820:17;;32739:106;:::o;50613:341::-;50725:1;50707:20;;:6;:20;;;;50699:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50807:1;50788:21;;:7;:21;;;;50780:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50893:5;50862:11;:19;50874:6;50862:19;;;;;;;;;;;;;;;:28;50882:7;50862:28;;;;;;;;;;;;;;;:36;;;;50931:7;50914:32;;50923:6;50914:32;;;50940:5;50914:32;;;;;;;;;;;;;;;;;;50613:341;;;:::o;51438:498::-;51669:19;37364:42;51691:41;;;51733:4;37843:66;51739:29;;51691:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51669:100;;51807:1;51784:25;;:11;:25;;;51780:149;;51840:11;51826:39;;;51866:8;51876:4;51882:2;51886:6;51894:8;51904:12;51826:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51780:149;51438:498;;;;;;;:::o;49924:544::-;50143:48;50164:8;50174:4;50180:2;50184:6;50143:20;:48::i;:::-;50222:70;50242:6;50222:70;;;;;;;;;;;;;;;;;:9;:15;50232:4;50222:15;;;;;;;;;;;;;;;;:19;;:70;;;;;:::i;:::-;50204:9;:15;50214:4;50204:15;;;;;;;;;;;;;;;:88;;;;50319:25;50337:6;50319:9;:13;50329:2;50319:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;50303:9;:13;50313:2;50303:13;;;;;;;;;;;;;;;:41;;;;50383:2;50362:56;;50377:4;50362:56;;50367:8;50362:56;;;50387:6;50395:8;50405:12;50362:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50449:2;50434:26;;50443:4;50434:26;;;50453:6;50434:26;;;;;;;;;;;;;;;;;;49924:544;;;;;;:::o;18579:166::-;18665:7;18698:1;18693;:6;;18701:12;18685:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18736:1;18732;:5;18725:12;;18579:166;;;;;:::o;52638:705::-;52906:19;37364:42;52928:41;;;52970:2;38030:66;52974:32;;52928:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52906:101;;53045:1;53022:25;;:11;:25;;;53018:318;;53081:11;53064:44;;;53109:8;53119:4;53125:2;53129:6;53137:8;53147:12;53064:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53018:318;;;53182:19;53178:158;;;53227:15;:2;:13;;;:15::i;:::-;53226:16;53218:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53178:158;53018:318;52638:705;;;;;;;;:::o;48154:691::-;48423:1;48407:18;;:4;:18;;;;48399:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48497:1;48483:16;;:2;:16;;;;48475:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48549:16;48568:12;:10;:12::i;:::-;48549:31;;48593:69;48611:8;48621:4;48627:2;48631:6;48639:8;48649:12;48593:17;:69::i;:::-;48675:57;48681:8;48691:4;48697:2;48701:6;48709:8;48719:12;48675:5;:57::i;:::-;48745:92;48765:8;48775:4;48781:2;48785:6;48793:8;48803:12;48817:19;48745;:92::i;:::-;48154:691;;;;;;;:::o;46907:760::-;47126:1;47107:21;;:7;:21;;;;47099:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47178:16;47197:12;:10;:12::i;:::-;47178:31;;47222:59;47243:8;47261:1;47265:7;47274:6;47222:20;:59::i;:::-;47344:24;47361:6;47344:12;;:16;;:24;;;;:::i;:::-;47329:12;:39;;;;47400:30;47423:6;47400:9;:18;47410:7;47400:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;47379:9;:18;47389:7;47379:18;;;;;;;;;;;;;;;:51;;;;47443:88;47463:8;47481:1;47485:7;47494:6;47502:8;47512:12;47526:4;47443:19;:88::i;:::-;47566:7;47549:57;;47556:8;47549:57;;;47575:6;47583:8;47593:12;47549:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47643:7;47622:37;;47639:1;47622:37;;;47652:6;47622:37;;;;;;;;;;;;;;;;;;46907:760;;;;;:::o;49159:757::-;49368:1;49352:18;;:4;:18;;;;49344:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49422:16;49441:12;:10;:12::i;:::-;49422:31;;49466:73;49484:8;49494:4;49508:1;49512:6;49520:4;49526:12;49466:17;:73::i;:::-;49552:56;49573:8;49583:4;49597:1;49601:6;49552:20;:56::i;:::-;49674:66;49694:6;49674:66;;;;;;;;;;;;;;;;;:9;:15;49684:4;49674:15;;;;;;;;;;;;;;;;:19;;:66;;;;;:::i;:::-;49656:9;:15;49666:4;49656:15;;;;;;;;;;;;;;;:84;;;;49766:24;49783:6;49766:12;;:16;;:24;;;;:::i;:::-;49751:12;:39;;;;49825:4;49808:50;;49815:8;49808:50;;;49831:6;49839:4;49845:12;49808:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49897:1;49874:34;;49883:4;49874:34;;;49901:6;49874:34;;;;;;;;;;;;;;;;;;49159:757;;;;;:::o;55621:204::-;35724:6;;;;;;;;;;;35723:7;35715:16;;;;;;55787:8:::1;:14;55796:4;55787:14;;;;;;;;;;;;;;;;;;;;;;;;;55786:15;55778:39;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;55621:204:::0;;;;:::o;16214:158::-;16272:7;16305:1;16300;:6;;16292:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16363:1;16359;:5;16352:12;;16214:158;;;;:::o
Swarm Source
ipfs://e471821c0585bf07a562aa3e5a6563f67cdb1700049bd61f743228750bd0425f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.