More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 19,897 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 44969527 | 57 secs ago | IN | 0 BNB | 0.00009549 | ||||
Approve | 44969518 | 1 min ago | IN | 0 BNB | 0.00004752 | ||||
Approve | 44969512 | 1 min ago | IN | 0 BNB | 0.00009549 | ||||
Approve | 44969445 | 5 mins ago | IN | 0 BNB | 0.00005204 | ||||
Approve | 44969410 | 6 mins ago | IN | 0 BNB | 0.00009549 | ||||
Approve | 44969402 | 7 mins ago | IN | 0 BNB | 0.00004731 | ||||
Approve | 44969372 | 8 mins ago | IN | 0 BNB | 0.00004731 | ||||
Approve | 44969367 | 8 mins ago | IN | 0 BNB | 0.00009549 | ||||
Transfer | 44969332 | 10 mins ago | IN | 0 BNB | 0.0001133 | ||||
Approve | 44969326 | 11 mins ago | IN | 0 BNB | 0.00004728 | ||||
Transfer | 44969274 | 13 mins ago | IN | 0 BNB | 0.0000942 | ||||
Approve | 44969255 | 14 mins ago | IN | 0 BNB | 0.00018823 | ||||
Approve | 44969240 | 15 mins ago | IN | 0 BNB | 0.00004728 | ||||
Approve | 44969185 | 18 mins ago | IN | 0 BNB | 0.00003021 | ||||
Approve | 44969177 | 18 mins ago | IN | 0 BNB | 0.00005334 | ||||
Approve | 44969078 | 23 mins ago | IN | 0 BNB | 0.00004731 | ||||
Approve | 44969040 | 25 mins ago | IN | 0 BNB | 0.0000948 | ||||
Approve | 44969002 | 27 mins ago | IN | 0 BNB | 0.0000474 | ||||
Approve | 44968991 | 27 mins ago | IN | 0 BNB | 0.00009473 | ||||
Approve | 44968983 | 28 mins ago | IN | 0 BNB | 0.00009549 | ||||
Approve | 44968836 | 35 mins ago | IN | 0 BNB | 0.0000948 | ||||
Approve | 44968834 | 35 mins ago | IN | 0 BNB | 0.00033117 | ||||
Approve | 44968791 | 37 mins ago | IN | 0 BNB | 0.00004731 | ||||
Approve | 44968763 | 39 mins ago | IN | 0 BNB | 0.00004731 | ||||
Approve | 44968730 | 40 mins ago | IN | 0 BNB | 0.00023655 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
44969533 | 39 secs ago | 0.00030457 BNB | ||||
44969533 | 39 secs ago | 0.00091371 BNB | ||||
44969533 | 39 secs ago | 0.00091371 BNB | ||||
44969533 | 39 secs ago | 0.00091371 BNB | ||||
44969533 | 39 secs ago | 0.0030457 BNB | ||||
44969530 | 48 secs ago | 0.00182312 BNB | ||||
44969530 | 48 secs ago | 0.00546938 BNB | ||||
44969530 | 48 secs ago | 0.00546938 BNB | ||||
44969530 | 48 secs ago | 0.00546938 BNB | ||||
44969530 | 48 secs ago | 0.01823127 BNB | ||||
44969525 | 1 min ago | 0.00161762 BNB | ||||
44969525 | 1 min ago | 0.00485286 BNB | ||||
44969525 | 1 min ago | 0.00485286 BNB | ||||
44969525 | 1 min ago | 0.00485286 BNB | ||||
44969525 | 1 min ago | 0.01617623 BNB | ||||
44969487 | 2 mins ago | 0.00014199 BNB | ||||
44969487 | 2 mins ago | 0.00042597 BNB | ||||
44969487 | 2 mins ago | 0.00042597 BNB | ||||
44969487 | 2 mins ago | 0.00042597 BNB | ||||
44969487 | 2 mins ago | 0.0014199 BNB | ||||
44969486 | 3 mins ago | 0.00014884 BNB | ||||
44969486 | 3 mins ago | 0.00044654 BNB | ||||
44969486 | 3 mins ago | 0.00044654 BNB | ||||
44969486 | 3 mins ago | 0.00044654 BNB | ||||
44969486 | 3 mins ago | 0.00148847 BNB |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
GTGOLD
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at BscScan.com on 2024-12-07 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC-20 standard as defined in the ERC. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets a `value` amount of tokens as the allowance of `spender` over the * caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.20; /** * @dev Interface for the optional metadata functions from the ERC-20 standard. */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } // File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol // OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol) pragma solidity ^0.8.20; /** * @dev Standard ERC-20 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens. */ interface IERC20Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC20InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC20InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers. * @param spender Address that may be allowed to operate on tokens without being their owner. * @param allowance Amount of tokens a `spender` is allowed to operate with. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC20InvalidApprover(address approver); /** * @dev Indicates a failure with the `spender` to be approved. Used in approvals. * @param spender Address that may be allowed to operate on tokens without being their owner. */ error ERC20InvalidSpender(address spender); } /** * @dev Standard ERC-721 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens. */ interface IERC721Errors { /** * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. * Used in balance queries. * @param owner Address of the current owner of a token. */ error ERC721InvalidOwner(address owner); /** * @dev Indicates a `tokenId` whose `owner` is the zero address. * @param tokenId Identifier number of a token. */ error ERC721NonexistentToken(uint256 tokenId); /** * @dev Indicates an error related to the ownership over a particular token. Used in transfers. * @param sender Address whose tokens are being transferred. * @param tokenId Identifier number of a token. * @param owner Address of the current owner of a token. */ error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC721InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC721InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param tokenId Identifier number of a token. */ error ERC721InsufficientApproval(address operator, uint256 tokenId); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC721InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC721InvalidOperator(address operator); } /** * @dev Standard ERC-1155 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens. */ interface IERC1155Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. * @param tokenId Identifier number of a token. */ error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC1155InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC1155InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param owner Address of the current owner of a token. */ error ERC1155MissingApprovalForAll(address operator, address owner); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC1155InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC1155InvalidOperator(address operator); /** * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. * Used in batch transfers. * @param idsLength Length of the array of token identifiers * @param valuesLength Length of the array of token amounts */ error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.20; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC-20 * applications. */ abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors { mapping(address account => uint256) private _balances; mapping(address account => mapping(address spender => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `value`. */ function transfer(address to, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _transfer(owner, to, value); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, value); return true; } /** * @dev See {IERC20-transferFrom}. * * Skips emitting an {Approval} event indicating an allowance update. This is not * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `value`. * - the caller must have allowance for ``from``'s tokens of at least * `value`. */ function transferFrom(address from, address to, uint256 value) public virtual returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, value); _transfer(from, to, value); return true; } /** * @dev Moves a `value` amount of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _transfer(address from, address to, uint256 value) virtual internal { if (from == address(0)) { revert ERC20InvalidSender(address(0)); } if (to == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(from, to, value); } /** * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from` * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding * this function. * * Emits a {Transfer} event. */ function _update(address from, address to, uint256 value) internal virtual { if (from == address(0)) { // Overflow check required: The rest of the code assumes that totalSupply never overflows _totalSupply += value; } else { uint256 fromBalance = _balances[from]; if (fromBalance < value) { revert ERC20InsufficientBalance(from, fromBalance, value); } unchecked { // Overflow not possible: value <= fromBalance <= totalSupply. _balances[from] = fromBalance - value; } } if (to == address(0)) { unchecked { // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply. _totalSupply -= value; } } else { unchecked { // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256. _balances[to] += value; } } emit Transfer(from, to, value); } /** * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0). * Relies on the `_update` mechanism * * Emits a {Transfer} event with `from` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _mint(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(address(0), account, value); } /** * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply. * Relies on the `_update` mechanism. * * Emits a {Transfer} event with `to` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead */ function _burn(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidSender(address(0)); } _update(account, address(0), value); } /** * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. * * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument. */ function _approve(address owner, address spender, uint256 value) internal { _approve(owner, spender, value, true); } /** * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event. * * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any * `Approval` event during `transferFrom` operations. * * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to * true using the following override: * * ```solidity * function _approve(address owner, address spender, uint256 value, bool) internal virtual override { * super._approve(owner, spender, value, true); * } * ``` * * Requirements are the same as {_approve}. */ function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual { if (owner == address(0)) { revert ERC20InvalidApprover(address(0)); } if (spender == address(0)) { revert ERC20InvalidSpender(address(0)); } _allowances[owner][spender] = value; if (emitEvent) { emit Approval(owner, spender, value); } } /** * @dev Updates `owner` s allowance for `spender` based on spent `value`. * * Does not update the allowance value in case of infinite allowance. * Revert if not enough allowance is available. * * Does not emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 value) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { if (currentAllowance < value) { revert ERC20InsufficientAllowance(spender, currentAllowance, value); } unchecked { _approve(owner, spender, currentAllowance - value, false); } } } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Errors.sol // OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol) pragma solidity ^0.8.20; /** * @dev Collection of common custom errors used in multiple contracts * * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. * It is recommended to avoid relying on the error API for critical functionality. * * _Available since v5.1._ */ library Errors { /** * @dev The ETH balance of the account is not enough to perform the operation. */ error InsufficientBalance(uint256 balance, uint256 needed); /** * @dev A call to an address target failed. The target may have reverted. */ error FailedCall(); /** * @dev The deployment failed. */ error FailedDeployment(); /** * @dev A necessary precompile is missing. */ error MissingPrecompile(address); } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v5.1.0) (utils/Address.sol) pragma solidity ^0.8.20; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev There's no code at `target` (it is not a contract). */ error AddressEmptyCode(address target); /** * @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://consensys.net/diligence/blog/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.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { if (address(this).balance < amount) { revert Errors.InsufficientBalance(address(this).balance, amount); } (bool success, ) = recipient.call{value: amount}(""); if (!success) { revert Errors.FailedCall(); } } /** * @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 or custom error, it is bubbled * up by this function (like regular Solidity function calls). However, if * the call reverted with no returned reason, this function reverts with a * {Errors.FailedCall} error. * * 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. */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0); } /** * @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`. */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { if (address(this).balance < value) { revert Errors.InsufficientBalance(address(this).balance, value); } (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target * was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case * of an unsuccessful call. */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata ) internal view returns (bytes memory) { if (!success) { _revert(returndata); } else { // only check if target is a contract if the call was successful and the return data is empty // otherwise we already know that it was a contract if (returndata.length == 0 && target.code.length == 0) { revert AddressEmptyCode(target); } return returndata; } } /** * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the * revert reason or with a default {Errors.FailedCall} error. */ function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) { if (!success) { _revert(returndata); } else { return returndata; } } /** * @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}. */ function _revert(bytes memory returndata) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly ("memory-safe") { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert Errors.FailedCall(); } } } // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ 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) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { 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) { unchecked { // 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) { unchecked { 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) { unchecked { 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) { return a + b; } /** * @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) { 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) { return a * b; } /** * @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. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { 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) { 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) { unchecked { 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. * * 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) { unchecked { 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) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: 120602/coinv6.sol pragma solidity ^0.8.0; interface IPancakePair { function sync() external; } interface IPancakeFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IPancakeRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); } contract GTGOLD is ERC20, Ownable { using SafeMath for uint256; using Address for address; bool addLiquidityFlag = false; bool swapIng; bool public tradingEnable = false; uint256 tradeStartTime; uint256 public _minWallet = 8*10**18; uint256 public minSwapFee = 5000 ether; uint256 public maxPancakeBuy = 100_000_000 ether; uint256 public maxPancakeSell = 100_000_000 ether; uint256 public feeBase = 10000; uint256 public feeBurn = 10; uint256 public feeMarketing = 1480; uint256 public feeBuild = 1480; uint256 public feePowers = 30; uint256 public feeTotal = feeBurn + feeMarketing + feePowers + feeBuild; mapping(address => bool) _autoPair; mapping(address=> bool) private excludeFeeList; address public ownerWallet = 0x5c988630A4bf95D57b27176BbFC9C84Fa55b4F16; address public marketAddress = 0xc9bCF79cc3A3614e80852E66fB8351a87a49d445; address public technologyAddress = 0x798388130C6c1Ceb71f91a363102CF34Ac73AEDF; address public basePricePoolAddress = 0x474F8150f1cC7A04F262d5490c89F129fA662Bfe; address public immutable usdt = 0xF86AF2FBcf6A0479B21b1d3a4Af3893F63207FE7; address public immutable pairETH; address public immutable pairUSDT; IPancakeRouter router = IPancakeRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E); bool public lpBurnEnabled = true; uint256 public lpBurnFrequency = 1 hours; uint256 public lastLpBurnTime; uint256 public percentForLPBurn = 25; uint256 public percentDiv = 10000; event AutoNukeLP(uint256 lpBalance, uint256 burnAmount, uint256 time); event SwapTokenForFee(uint256 ethFeeAmount, uint256 time); event ChangeBasePricePoolAddress(address basePricePoolAddress, uint256 time); event ChangeRate(uint256 feeBurn, uint256 feeMarketing, uint256 feePowers, uint256 feeBuild, uint256 time); event ChangePancakeBuyAndSell(uint256 maxPancakeBuy, uint256 maxPancakeSell, uint256 time); constructor(address initialOwner) ERC20("GTGOLD COIN", "GTGOLD") Ownable(initialOwner){ IPancakeFactory factory = IPancakeFactory(router.factory()); pairETH = factory.createPair(address(this), router.WETH()); pairUSDT = factory.createPair(address(this), usdt); _autoPair[pairETH] = true; _autoPair[pairUSDT] = true; excludeFeeList[ownerWallet] = true; excludeFeeList[marketAddress] = true; excludeFeeList[technologyAddress] = true; excludeFeeList[basePricePoolAddress] = true; excludeFeeList[_msgSender()] = true; excludeFeeList[address(this)] = true; excludeFeeList[address(0xdead)] = true; //210_000_000_000 _mint(address(0xdead), 35_000_000_000 ether); _mint(address(this), 60_000_000_000 ether); _mint(initialOwner, 115_000_000_000 ether); _approve(address(this), address(router), 210_000_000_000 ether); } function isContract(address addr) public view returns (bool) { uint size; assembly { size := extcodesize(addr) } return size > 0; } function isExcludeFee(address account) public view returns (bool) { return excludeFeeList[account]; } receive() external payable {} function setLaunch(bool value) external onlyOwner { require(tradingEnable != value, "launched"); require(value, "cannot close"); tradingEnable = value; tradeStartTime = block.timestamp; } function setExcludeFee( address[] calldata addrs, bool value ) external onlyOwner { for (uint256 i = 0; i < addrs.length; i++) { excludeFeeList[addrs[i]] = value; } } function setAutoLPBurnSettings( uint256 _frequencyInSeconds, uint256 _percent, uint256 _div, bool _Enabled ) external onlyOwner { require(_percent <= 500, "percent too high"); require(_frequencyInSeconds >= 100, "frequency too shrot"); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; percentDiv = _div; lpBurnEnabled = _Enabled; } function addLiquidity() external payable onlyOwner { require(!addLiquidityFlag, "already addLiquidity"); uint256 amountInETH = msg.value/4; uint256 amountInToken = 30_000_000_000 ether; _approve(address(this), address(router), ~uint256(0)); router.addLiquidityETH{value: amountInETH}( address(this), amountInToken, 0, 0, _msgSender(), block.timestamp ); uint256 usdtAmountIn = swapETHToToken(usdt, amountInETH, address(this)); IERC20(usdt).approve(address(router), usdtAmountIn); router.addLiquidity( address(this), usdt, amountInToken, usdtAmountIn, 0, 0, _msgSender(), block.timestamp ); payable(basePricePoolAddress).transfer(amountInETH.mul(2)); addLiquidityFlag = true; } function _transfer( address from, address to, uint256 amount ) internal virtual override { if(tradingEnable) { if(block.timestamp > tradeStartTime.add(3600)) { feeMarketing = 30; feeBuild = 30; feeTotal = feeBurn + feeMarketing + feePowers + feeBuild; maxPancakeBuy = 0; maxPancakeSell = 0; } } if(from != address(this) && balanceOf(from).sub(amount) < _minWallet) { amount = balanceOf(from).sub(_minWallet); } if(_autoPair[from] || _autoPair[to]) { address _user; //buy if(_autoPair[from]) { _user = to; if(maxPancakeBuy != 0 && _user != address(this) && !excludeFeeList[_user]){ require(amount <= maxPancakeBuy, "Fail: more than max"); } } //sell else if(_autoPair[to]) { _user = from; if(maxPancakeSell != 0 && amount > maxPancakeSell && _user != address(this) && !excludeFeeList[_user]){ amount = maxPancakeSell; } } } if (!isExcludeFee(from) && !isExcludeFee(to)) { require(tradingEnable, "not Launch"); uint256 fee = (amount * feeTotal) / feeBase; super._transfer(from, address(this), fee); amount -= fee; if (_autoPair[to]) { autoBurnUniswapPair(); if (!swapIng) { swapIng = true; swapTokenForFee(); swapIng = false; } } } super._transfer(from, to, amount); } function autoBurnUniswapPair() internal { if(lpBurnEnabled) { if (block.timestamp - lastLpBurnTime > lpBurnFrequency) { burnPair(pairETH); lastLpBurnTime = block.timestamp; } } } function burnPair(address _pair) internal { uint256 liquidityPairBalance = balanceOf(_pair); uint256 amountToBurn = (liquidityPairBalance * percentForLPBurn) / percentDiv; if (amountToBurn > 0) { super._transfer(_pair, address(0xdead), amountToBurn); IPancakePair(_pair).sync(); emit AutoNukeLP( liquidityPairBalance, amountToBurn, block.timestamp ); } } function swapTokenForFee() private { uint256 balance = balanceOf(address(this)); if (balance > minSwapFee) { uint256 amountOut = swapTokenToETH(balance); if(amountOut > 0) { payable(marketAddress).transfer( (amountOut * feeMarketing) / feeTotal ); payable(technologyAddress).transfer( (amountOut * feeBuild) / feeTotal ); payable(basePricePoolAddress).transfer( (amountOut * feePowers) / feeTotal ); swapETHToToken( address(this), (amountOut * feeBurn) / feeTotal, address(0xdead) ); emit SwapTokenForFee(amountOut, block.timestamp); } } } function swapTokenToETH(uint256 tokenAmount) private returns (uint256 amountOut) { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); uint256 beforeEthBalance = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); uint256 afterEthBalance = address(this).balance; amountOut = afterEthBalance.sub(beforeEthBalance); } function swapETHToToken( address token, uint256 amount, address to ) private returns (uint256 amountOut) { address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = token; IERC20 erc20 = IERC20(token); uint256 beforeBlanace = erc20.balanceOf(to); router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: amount }(0, path, to, block.timestamp); uint256 afterBlanace = erc20.balanceOf(to); amountOut = afterBlanace.sub(beforeBlanace); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lpBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"basePricePoolAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ChangeBasePricePoolAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxPancakeBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxPancakeSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ChangePancakeBuyAndSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"feeBurn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeMarketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feePowers","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeBuild","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ChangeRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"ethFeeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"SwapTokenForFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_minWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"basePricePoolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBuild","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feePowers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludeFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPancakeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPancakeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairUSDT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDiv","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"uint256","name":"_div","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"technologyAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e06040525f600560146101000a81548160ff0219169083151502179055505f600560166101000a81548160ff021916908315150217905550676f05b59d3b20000060075569010f0cf064dd592000006008556a52b7d2dcc80cd2e40000006009556a52b7d2dcc80cd2e4000000600a55612710600b55600a600c556105c8600d556105c8600e55601e600f55600e54600f54600d54600c546100a2919061103e565b6100ac919061103e565b6100b6919061103e565b601055735c988630a4bf95d57b27176bbfc9c84fa55b4f1660135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c9bcf79cc3a3614e80852e66fb8351a87a49d44560145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073798388130c6c1ceb71f91a363102cf34ac73aedf60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073474f8150f1cc7a04f262d5490c89f129fa662bfe60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f86af2fbcf6a0479b21b1d3a4af3893f63207fe773ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152507310ed43c718714eb63d5aa57b78b54704e256024e60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601760146101000a81548160ff021916908315150217905550610e106018556019601a55612710601b553480156102db575f80fd5b50604051614b68380380614b6883398181016040528101906102fd91906110cf565b806040518060400160405280600b81526020017f4754474f4c4420434f494e0000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4754474f4c4400000000000000000000000000000000000000000000000000008152508160039081610379919061132b565b508060049081610389919061132b565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036103fc575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016103f39190611409565b60405180910390fd5b61040b81610ab960201b60201c565b505f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b91906110cf565b90508073ffffffffffffffffffffffffffffffffffffffff1663c9c653963060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610524573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061054891906110cf565b6040518363ffffffff1660e01b8152600401610565929190611422565b6020604051808303815f875af1158015610581573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a591906110cf565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c9c65396306080516040518363ffffffff1660e01b8152600401610615929190611422565b6020604051808303815f875af1158015610631573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065591906110cf565b73ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050600160115f60a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f60c05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f610921610b7c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610a3a61dead6b71175249d9818853b8000000610b8360201b60201c565b610a56306bc1ded63574de0e4660000000610b8360201b60201c565b610a73826c017395c53bcaa99b5c38000000610b8360201b60201c565b610ab23060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166c02a68bedbb190931f650000000610c0860201b60201c565b50506114a6565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bf3575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610bea9190611409565b60405180910390fd5b610c045f8383610c2060201b60201c565b5050565b610c1b8383836001610e3960201b60201c565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c70578060025f828254610c64919061103e565b92505081905550610d3e565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610cf9578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610cf093929190611458565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d85578060025f8282540392505081905550610dcf565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e2c919061148d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ea9575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610ea09190611409565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f19575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610f109190611409565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611002578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ff9919061148d565b60405180910390a35b50505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61104882611008565b915061105383611008565b925082820190508082111561106b5761106a611011565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61109e82611075565b9050919050565b6110ae81611094565b81146110b8575f80fd5b50565b5f815190506110c9816110a5565b92915050565b5f602082840312156110e4576110e3611071565b5b5f6110f1848285016110bb565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061117557607f821691505b60208210810361118857611187611131565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026111ea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826111af565b6111f486836111af565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61122f61122a61122584611008565b61120c565b611008565b9050919050565b5f819050919050565b61124883611215565b61125c61125482611236565b8484546111bb565b825550505050565b5f90565b611270611264565b61127b81848461123f565b505050565b5b8181101561129e576112935f82611268565b600181019050611281565b5050565b601f8211156112e3576112b48161118e565b6112bd846111a0565b810160208510156112cc578190505b6112e06112d8856111a0565b830182611280565b50505b505050565b5f82821c905092915050565b5f6113035f19846008026112e8565b1980831691505092915050565b5f61131b83836112f4565b9150826002028217905092915050565b611334826110fa565b67ffffffffffffffff81111561134d5761134c611104565b5b611357825461115e565b6113628282856112a2565b5f60209050601f831160018114611393575f8415611381578287015190505b61138b8582611310565b8655506113f2565b601f1984166113a18661118e565b5f5b828110156113c8578489015182556001820191506020850194506020810190506113a3565b868310156113e557848901516113e1601f8916826112f4565b8355505b6001600288020188555050505b505050505050565b61140381611094565b82525050565b5f60208201905061141c5f8301846113fa565b92915050565b5f6040820190506114355f8301856113fa565b61144260208301846113fa565b9392505050565b61145281611008565b82525050565b5f60608201905061146b5f8301866113fa565b6114786020830185611449565b6114856040830184611449565b949350505050565b5f6020820190506114a05f830184611449565b92915050565b60805160a05160c05161367c6114ec5f395f610bee01525f8181610fda01526121a401525f8181610aa30152818161115701528181611181015261127c015261367c5ff3fe608060405260043610610249575f3560e01c806379f3913b11610138578063a4c82a00116100b5578063dc8eea4811610079578063dc8eea4814610852578063dcace9ab1461087c578063dd62ed3e146108b8578063dff86202146108f4578063e8078d941461091e578063f2fde38b1461092857610250565b8063a4c82a0014610772578063a901992a1461079c578063a9059cbb146107c4578063be5ca24914610800578063c222740d1461082a57610250565b806394417e23116100fc57806394417e23146106a05780639452e81a146106ca57806395623641146106f457806395d89b411461071e57806395e911a81461074857610250565b806379f3913b146105ce57806380765726146105f85780638da5cb5b1461062257806392c892d61461064c5780639335dcb71461067657610250565b80632f48ab7d116101c657806343801b101161018a57806343801b10146105005780634702838e1461052a578063583fef341461055257806370a082311461057c578063715018a6146105b857610250565b80632f48ab7d1461042e578063313ce56714610458578063374994731461048257806337bfc1ef146104ac5780633fd9f32e146104d657610250565b806318160ddd1161020d57806318160ddd1461034a578063199ffc721461037457806323b872dd1461039e5780632c3e486c146103da5780632e82f1a01461040457610250565b806306fdde03146102545780630881f5581461027e578063095ea7b3146102a857806316279055146102e45780631693e8d41461032057610250565b3661025057005b5f80fd5b34801561025f575f80fd5b50610268610950565b6040516102759190612971565b60405180910390f35b348015610289575f80fd5b506102926109e0565b60405161029f91906129d0565b60405180910390f35b3480156102b3575f80fd5b506102ce60048036038101906102c99190612a4e565b610a05565b6040516102db9190612aa6565b60405180910390f35b3480156102ef575f80fd5b5061030a60048036038101906103059190612abf565b610a27565b6040516103179190612aa6565b60405180910390f35b34801561032b575f80fd5b50610334610a38565b6040516103419190612aa6565b60405180910390f35b348015610355575f80fd5b5061035e610a4b565b60405161036b9190612af9565b60405180910390f35b34801561037f575f80fd5b50610388610a54565b6040516103959190612af9565b60405180910390f35b3480156103a9575f80fd5b506103c460048036038101906103bf9190612b12565b610a5a565b6040516103d19190612aa6565b60405180910390f35b3480156103e5575f80fd5b506103ee610a88565b6040516103fb9190612af9565b60405180910390f35b34801561040f575f80fd5b50610418610a8e565b6040516104259190612aa6565b60405180910390f35b348015610439575f80fd5b50610442610aa1565b60405161044f91906129d0565b60405180910390f35b348015610463575f80fd5b5061046c610ac5565b6040516104799190612b7d565b60405180910390f35b34801561048d575f80fd5b50610496610acd565b6040516104a39190612af9565b60405180910390f35b3480156104b7575f80fd5b506104c0610ad3565b6040516104cd9190612af9565b60405180910390f35b3480156104e1575f80fd5b506104ea610ad9565b6040516104f79190612af9565b60405180910390f35b34801561050b575f80fd5b50610514610adf565b6040516105219190612af9565b60405180910390f35b348015610535575f80fd5b50610550600480360381019061054b9190612c21565b610ae5565b005b34801561055d575f80fd5b50610566610b88565b6040516105739190612af9565b60405180910390f35b348015610587575f80fd5b506105a2600480360381019061059d9190612abf565b610b8e565b6040516105af9190612af9565b60405180910390f35b3480156105c3575f80fd5b506105cc610bd3565b005b3480156105d9575f80fd5b506105e2610be6565b6040516105ef9190612af9565b60405180910390f35b348015610603575f80fd5b5061060c610bec565b60405161061991906129d0565b60405180910390f35b34801561062d575f80fd5b50610636610c10565b60405161064391906129d0565b60405180910390f35b348015610657575f80fd5b50610660610c38565b60405161066d9190612af9565b60405180910390f35b348015610681575f80fd5b5061068a610c3e565b60405161069791906129d0565b60405180910390f35b3480156106ab575f80fd5b506106b4610c63565b6040516106c191906129d0565b60405180910390f35b3480156106d5575f80fd5b506106de610c88565b6040516106eb9190612af9565b60405180910390f35b3480156106ff575f80fd5b50610708610c8e565b60405161071591906129d0565b60405180910390f35b348015610729575f80fd5b50610732610cb3565b60405161073f9190612971565b60405180910390f35b348015610753575f80fd5b5061075c610d43565b6040516107699190612af9565b60405180910390f35b34801561077d575f80fd5b50610786610d49565b6040516107939190612af9565b60405180910390f35b3480156107a7575f80fd5b506107c260048036038101906107bd9190612c7e565b610d4f565b005b3480156107cf575f80fd5b506107ea60048036038101906107e59190612a4e565b610e15565b6040516107f79190612aa6565b60405180910390f35b34801561080b575f80fd5b50610814610e37565b6040516108219190612af9565b60405180910390f35b348015610835575f80fd5b50610850600480360381019061084b9190612ce2565b610e3d565b005b34801561085d575f80fd5b50610866610efe565b6040516108739190612af9565b60405180910390f35b348015610887575f80fd5b506108a2600480360381019061089d9190612abf565b610f04565b6040516108af9190612aa6565b60405180910390f35b3480156108c3575f80fd5b506108de60048036038101906108d99190612d0d565b610f56565b6040516108eb9190612af9565b60405180910390f35b3480156108ff575f80fd5b50610908610fd8565b60405161091591906129d0565b60405180910390f35b610926610ffc565b005b348015610933575f80fd5b5061094e60048036038101906109499190612abf565b6113a6565b005b60606003805461095f90612d78565b80601f016020809104026020016040519081016040528092919081815260200182805461098b90612d78565b80156109d65780601f106109ad576101008083540402835291602001916109d6565b820191905f5260205f20905b8154815290600101906020018083116109b957829003601f168201915b5050505050905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80610a0f61142a565b9050610a1c818585611431565b600191505092915050565b5f80823b90505f8111915050919050565b600560169054906101000a900460ff1681565b5f600254905090565b601a5481565b5f80610a6461142a565b9050610a71858285611443565b610a7c8585856114d5565b60019150509392505050565b60185481565b601760149054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f6012905090565b60085481565b60105481565b601b5481565b600f5481565b610aed611a0a565b5f5b83839050811015610b82578160125f868685818110610b1157610b10612da8565b5b9050602002016020810190610b269190612abf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610aef565b50505050565b600c5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bdb611a0a565b610be45f611a91565b565b600e5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054610cc290612d78565b80601f0160208091040260200160405190810160405280929190818152602001828054610cee90612d78565b8015610d395780601f10610d1057610100808354040283529160200191610d39565b820191905f5260205f20905b815481529060010190602001808311610d1c57829003601f168201915b5050505050905090565b600b5481565b60195481565b610d57611a0a565b6101f4831115610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9390612e1f565b60405180910390fd5b6064841015610de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd790612e87565b60405180910390fd5b8360188190555082601a8190555081601b8190555080601760146101000a81548160ff02191690831515021790555050505050565b5f80610e1f61142a565b9050610e2c8185856114d5565b600191505092915050565b60095481565b610e45611a0a565b801515600560169054906101000a900460ff16151503610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9190612eef565b60405180910390fd5b80610eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed190612f57565b60405180910390fd5b80600560166101000a81548160ff0219169083151502179055504260068190555050565b600a5481565b5f60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611004611a0a565b600560149054906101000a900460ff1615611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90612fbf565b60405180910390fd5b5f6004346110629190613037565b90505f6b60ef6b1aba6f07233000000090506110a13060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f19611431565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f806110eb61142a565b426040518863ffffffff1660e01b815260040161110d969594939291906130a9565b60606040518083038185885af1158015611129573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061114e919061311c565b5050505f61117d7f00000000000000000000000000000000000000000000000000000000000000008430611b54565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016111fb92919061316c565b6020604051808303815f875af1158015611217573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123b91906131a7565b5060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700307f000000000000000000000000000000000000000000000000000000000000000085855f806112a761142a565b426040518963ffffffff1660e01b81526004016112cb9897969594939291906131d2565b6060604051808303815f875af11580156112e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130b919061311c565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61135d600286611e7590919063ffffffff16565b90811502906040515f60405180830381858888f19350505050158015611385573d5f803e3d5ffd5b506001600560146101000a81548160ff021916908315150217905550505050565b6113ae611a0a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361141e575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161141591906129d0565b60405180910390fd5b61142781611a91565b50565b5f33905090565b61143e8383836001611e8a565b505050565b5f61144e8484610f56565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114cf57818110156114c0578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016114b79392919061324e565b60405180910390fd5b6114ce84848484035f611e8a565b5b50505050565b600560169054906101000a900460ff161561155857611501610e1060065461205990919063ffffffff16565b42111561155757601e600d81905550601e600e81905550600e54600f54600d54600c5461152e9190613283565b6115389190613283565b6115429190613283565b6010819055505f6009819055505f600a819055505b5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115af57506007546115ad8261159f86610b8e565b61206e90919063ffffffff16565b105b156115d4576115d16007546115c385610b8e565b61206e90919063ffffffff16565b90505b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061166f575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156118a7575f60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156117a8578290505f6009541415801561170557503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611758575060125f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117a3576009548211156117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179990613300565b60405180910390fd5b5b6118a5565b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156118a4578390505f600a541415801561180d5750600a5482115b801561184557503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611898575060125f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118a357600a5491505b5b5b505b6118b083610f04565b1580156118c357506118c182610f04565b155b156119fa57600560169054906101000a900460ff16611917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190e90613368565b60405180910390fd5b5f600b54601054836119299190613386565b6119339190613037565b9050611940843083612083565b808261194c91906133c7565b915060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156119f8576119a5612173565b600560159054906101000a900460ff166119f7576001600560156101000a81548160ff0219169083151502179055506119dc6121d3565b5f600560156101000a81548160ff0219169083151502179055505b5b505b611a05838383612083565b505050565b611a1261142a565b73ffffffffffffffffffffffffffffffffffffffff16611a30610c10565b73ffffffffffffffffffffffffffffffffffffffff1614611a8f57611a5361142a565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611a8691906129d0565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80600267ffffffffffffffff811115611b7157611b706133fa565b5b604051908082528060200260200182016040528015611b9f5781602001602082028036833780820191505090505b50905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c30919061343b565b815f81518110611c4357611c42612da8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508481600181518110611c9257611c91612da8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f8590505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401611d0a91906129d0565b602060405180830381865afa158015611d25573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d499190613466565b905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95875f8689426040518663ffffffff1660e01b8152600401611dac9493929190613548565b5f604051808303818588803b158015611dc3575f80fd5b505af1158015611dd5573d5f803e3d5ffd5b50505050505f8273ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b8152600401611e1491906129d0565b602060405180830381865afa158015611e2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e539190613466565b9050611e68828261206e90919063ffffffff16565b9450505050509392505050565b5f8183611e829190613386565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611efa575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611ef191906129d0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f6a575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611f6191906129d0565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015612053578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161204a9190612af9565b60405180910390a35b50505050565b5f81836120669190613283565b905092915050565b5f818361207b91906133c7565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120f3575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016120ea91906129d0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612163575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161215a91906129d0565b60405180910390fd5b61216e8383836123e1565b505050565b601760149054906101000a900460ff16156121d1576018546019544261219991906133c7565b11156121d0576121c87f00000000000000000000000000000000000000000000000000000000000000006125fa565b426019819055505b5b565b5f6121dd30610b8e565b90506008548111156123de575f6121f3826126d5565b90505f8111156123dc5760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601054600d54846122499190613386565b6122539190613037565b90811502906040515f60405180830381858888f1935050505015801561227b573d5f803e3d5ffd5b5060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601054600e54846122c89190613386565b6122d29190613037565b90811502906040515f60405180830381858888f193505050501580156122fa573d5f803e3d5ffd5b5060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601054600f54846123479190613386565b6123519190613037565b90811502906040515f60405180830381858888f19350505050158015612379573d5f803e3d5ffd5b506123a130601054600c548461238f9190613386565b6123999190613037565b61dead611b54565b507fbfd09f86688d4875ae5d8fa9b0150047e1d9b731d14715825dba3ba38a8e2d2f81426040516123d3929190613592565b60405180910390a15b505b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612431578060025f8282546124259190613283565b925050819055506124ff565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156124ba578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016124b19392919061324e565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612546578060025f8282540392505081905550612590565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125ed9190612af9565b60405180910390a3505050565b5f61260482610b8e565b90505f601b54601a54836126189190613386565b6126229190613037565b90505f8111156126d0576126398361dead83612083565b8273ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561267e575f80fd5b505af1158015612690573d5f803e3d5ffd5b505050507f9cb560eb3a76b2c70f0528d86a83cc0464d10dd0ccc94ba95bd11b93eac93da68282426040516126c7939291906135b9565b60405180910390a15b505050565b5f80600267ffffffffffffffff8111156126f2576126f16133fa565b5b6040519080825280602002602001820160405280156127205781602001602082028036833780820191505090505b50905030815f8151811061273757612736612da8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127ff919061343b565b8160018151811061281357612812612da8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f47905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8530426040518663ffffffff1660e01b81526004016128b39594939291906135ee565b5f604051808303815f87803b1580156128ca575f80fd5b505af11580156128dc573d5f803e3d5ffd5b505050505f4790506128f7828261206e90919063ffffffff16565b9350505050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61294382612901565b61294d818561290b565b935061295d81856020860161291b565b61296681612929565b840191505092915050565b5f6020820190508181035f8301526129898184612939565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129ba82612991565b9050919050565b6129ca816129b0565b82525050565b5f6020820190506129e35f8301846129c1565b92915050565b5f80fd5b5f80fd5b6129fa816129b0565b8114612a04575f80fd5b50565b5f81359050612a15816129f1565b92915050565b5f819050919050565b612a2d81612a1b565b8114612a37575f80fd5b50565b5f81359050612a4881612a24565b92915050565b5f8060408385031215612a6457612a636129e9565b5b5f612a7185828601612a07565b9250506020612a8285828601612a3a565b9150509250929050565b5f8115159050919050565b612aa081612a8c565b82525050565b5f602082019050612ab95f830184612a97565b92915050565b5f60208284031215612ad457612ad36129e9565b5b5f612ae184828501612a07565b91505092915050565b612af381612a1b565b82525050565b5f602082019050612b0c5f830184612aea565b92915050565b5f805f60608486031215612b2957612b286129e9565b5b5f612b3686828701612a07565b9350506020612b4786828701612a07565b9250506040612b5886828701612a3a565b9150509250925092565b5f60ff82169050919050565b612b7781612b62565b82525050565b5f602082019050612b905f830184612b6e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612bb757612bb6612b96565b5b8235905067ffffffffffffffff811115612bd457612bd3612b9a565b5b602083019150836020820283011115612bf057612bef612b9e565b5b9250929050565b612c0081612a8c565b8114612c0a575f80fd5b50565b5f81359050612c1b81612bf7565b92915050565b5f805f60408486031215612c3857612c376129e9565b5b5f84013567ffffffffffffffff811115612c5557612c546129ed565b5b612c6186828701612ba2565b93509350506020612c7486828701612c0d565b9150509250925092565b5f805f8060808587031215612c9657612c956129e9565b5b5f612ca387828801612a3a565b9450506020612cb487828801612a3a565b9350506040612cc587828801612a3a565b9250506060612cd687828801612c0d565b91505092959194509250565b5f60208284031215612cf757612cf66129e9565b5b5f612d0484828501612c0d565b91505092915050565b5f8060408385031215612d2357612d226129e9565b5b5f612d3085828601612a07565b9250506020612d4185828601612a07565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612d8f57607f821691505b602082108103612da257612da1612d4b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f70657263656e7420746f6f2068696768000000000000000000000000000000005f82015250565b5f612e0960108361290b565b9150612e1482612dd5565b602082019050919050565b5f6020820190508181035f830152612e3681612dfd565b9050919050565b7f6672657175656e637920746f6f207368726f74000000000000000000000000005f82015250565b5f612e7160138361290b565b9150612e7c82612e3d565b602082019050919050565b5f6020820190508181035f830152612e9e81612e65565b9050919050565b7f6c61756e636865640000000000000000000000000000000000000000000000005f82015250565b5f612ed960088361290b565b9150612ee482612ea5565b602082019050919050565b5f6020820190508181035f830152612f0681612ecd565b9050919050565b7f63616e6e6f7420636c6f736500000000000000000000000000000000000000005f82015250565b5f612f41600c8361290b565b9150612f4c82612f0d565b602082019050919050565b5f6020820190508181035f830152612f6e81612f35565b9050919050565b7f616c7265616479206164644c69717569646974790000000000000000000000005f82015250565b5f612fa960148361290b565b9150612fb482612f75565b602082019050919050565b5f6020820190508181035f830152612fd681612f9d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61304182612a1b565b915061304c83612a1b565b92508261305c5761305b612fdd565b5b828204905092915050565b5f819050919050565b5f819050919050565b5f61309361308e61308984613067565b613070565b612a1b565b9050919050565b6130a381613079565b82525050565b5f60c0820190506130bc5f8301896129c1565b6130c96020830188612aea565b6130d6604083018761309a565b6130e3606083018661309a565b6130f060808301856129c1565b6130fd60a0830184612aea565b979650505050505050565b5f8151905061311681612a24565b92915050565b5f805f60608486031215613133576131326129e9565b5b5f61314086828701613108565b935050602061315186828701613108565b925050604061316286828701613108565b9150509250925092565b5f60408201905061317f5f8301856129c1565b61318c6020830184612aea565b9392505050565b5f815190506131a181612bf7565b92915050565b5f602082840312156131bc576131bb6129e9565b5b5f6131c984828501613193565b91505092915050565b5f610100820190506131e65f83018b6129c1565b6131f3602083018a6129c1565b6132006040830189612aea565b61320d6060830188612aea565b61321a608083018761309a565b61322760a083018661309a565b61323460c08301856129c1565b61324160e0830184612aea565b9998505050505050505050565b5f6060820190506132615f8301866129c1565b61326e6020830185612aea565b61327b6040830184612aea565b949350505050565b5f61328d82612a1b565b915061329883612a1b565b92508282019050808211156132b0576132af61300a565b5b92915050565b7f4661696c3a206d6f7265207468616e206d6178000000000000000000000000005f82015250565b5f6132ea60138361290b565b91506132f5826132b6565b602082019050919050565b5f6020820190508181035f830152613317816132de565b9050919050565b7f6e6f74204c61756e6368000000000000000000000000000000000000000000005f82015250565b5f613352600a8361290b565b915061335d8261331e565b602082019050919050565b5f6020820190508181035f83015261337f81613346565b9050919050565b5f61339082612a1b565b915061339b83612a1b565b92508282026133a981612a1b565b915082820484148315176133c0576133bf61300a565b5b5092915050565b5f6133d182612a1b565b91506133dc83612a1b565b92508282039050818111156133f4576133f361300a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613435816129f1565b92915050565b5f602082840312156134505761344f6129e9565b5b5f61345d84828501613427565b91505092915050565b5f6020828403121561347b5761347a6129e9565b5b5f61348884828501613108565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134c3816129b0565b82525050565b5f6134d483836134ba565b60208301905092915050565b5f602082019050919050565b5f6134f682613491565b613500818561349b565b935061350b836134ab565b805f5b8381101561353b57815161352288826134c9565b975061352d836134e0565b92505060018101905061350e565b5085935050505092915050565b5f60808201905061355b5f83018761309a565b818103602083015261356d81866134ec565b905061357c60408301856129c1565b6135896060830184612aea565b95945050505050565b5f6040820190506135a55f830185612aea565b6135b26020830184612aea565b9392505050565b5f6060820190506135cc5f830186612aea565b6135d96020830185612aea565b6135e66040830184612aea565b949350505050565b5f60a0820190506136015f830188612aea565b61360e602083018761309a565b818103604083015261362081866134ec565b905061362f60608301856129c1565b61363c6080830184612aea565b969550505050505056fea2646970667358221220f11fe287354ba898773c915b89b352ee8dcff5a51ed8ab1162ee65ca963a1b3a64736f6c634300081a0033000000000000000000000000c9967123512873764b249be8a47cdc69eb4207fd
Deployed Bytecode
0x608060405260043610610249575f3560e01c806379f3913b11610138578063a4c82a00116100b5578063dc8eea4811610079578063dc8eea4814610852578063dcace9ab1461087c578063dd62ed3e146108b8578063dff86202146108f4578063e8078d941461091e578063f2fde38b1461092857610250565b8063a4c82a0014610772578063a901992a1461079c578063a9059cbb146107c4578063be5ca24914610800578063c222740d1461082a57610250565b806394417e23116100fc57806394417e23146106a05780639452e81a146106ca57806395623641146106f457806395d89b411461071e57806395e911a81461074857610250565b806379f3913b146105ce57806380765726146105f85780638da5cb5b1461062257806392c892d61461064c5780639335dcb71461067657610250565b80632f48ab7d116101c657806343801b101161018a57806343801b10146105005780634702838e1461052a578063583fef341461055257806370a082311461057c578063715018a6146105b857610250565b80632f48ab7d1461042e578063313ce56714610458578063374994731461048257806337bfc1ef146104ac5780633fd9f32e146104d657610250565b806318160ddd1161020d57806318160ddd1461034a578063199ffc721461037457806323b872dd1461039e5780632c3e486c146103da5780632e82f1a01461040457610250565b806306fdde03146102545780630881f5581461027e578063095ea7b3146102a857806316279055146102e45780631693e8d41461032057610250565b3661025057005b5f80fd5b34801561025f575f80fd5b50610268610950565b6040516102759190612971565b60405180910390f35b348015610289575f80fd5b506102926109e0565b60405161029f91906129d0565b60405180910390f35b3480156102b3575f80fd5b506102ce60048036038101906102c99190612a4e565b610a05565b6040516102db9190612aa6565b60405180910390f35b3480156102ef575f80fd5b5061030a60048036038101906103059190612abf565b610a27565b6040516103179190612aa6565b60405180910390f35b34801561032b575f80fd5b50610334610a38565b6040516103419190612aa6565b60405180910390f35b348015610355575f80fd5b5061035e610a4b565b60405161036b9190612af9565b60405180910390f35b34801561037f575f80fd5b50610388610a54565b6040516103959190612af9565b60405180910390f35b3480156103a9575f80fd5b506103c460048036038101906103bf9190612b12565b610a5a565b6040516103d19190612aa6565b60405180910390f35b3480156103e5575f80fd5b506103ee610a88565b6040516103fb9190612af9565b60405180910390f35b34801561040f575f80fd5b50610418610a8e565b6040516104259190612aa6565b60405180910390f35b348015610439575f80fd5b50610442610aa1565b60405161044f91906129d0565b60405180910390f35b348015610463575f80fd5b5061046c610ac5565b6040516104799190612b7d565b60405180910390f35b34801561048d575f80fd5b50610496610acd565b6040516104a39190612af9565b60405180910390f35b3480156104b7575f80fd5b506104c0610ad3565b6040516104cd9190612af9565b60405180910390f35b3480156104e1575f80fd5b506104ea610ad9565b6040516104f79190612af9565b60405180910390f35b34801561050b575f80fd5b50610514610adf565b6040516105219190612af9565b60405180910390f35b348015610535575f80fd5b50610550600480360381019061054b9190612c21565b610ae5565b005b34801561055d575f80fd5b50610566610b88565b6040516105739190612af9565b60405180910390f35b348015610587575f80fd5b506105a2600480360381019061059d9190612abf565b610b8e565b6040516105af9190612af9565b60405180910390f35b3480156105c3575f80fd5b506105cc610bd3565b005b3480156105d9575f80fd5b506105e2610be6565b6040516105ef9190612af9565b60405180910390f35b348015610603575f80fd5b5061060c610bec565b60405161061991906129d0565b60405180910390f35b34801561062d575f80fd5b50610636610c10565b60405161064391906129d0565b60405180910390f35b348015610657575f80fd5b50610660610c38565b60405161066d9190612af9565b60405180910390f35b348015610681575f80fd5b5061068a610c3e565b60405161069791906129d0565b60405180910390f35b3480156106ab575f80fd5b506106b4610c63565b6040516106c191906129d0565b60405180910390f35b3480156106d5575f80fd5b506106de610c88565b6040516106eb9190612af9565b60405180910390f35b3480156106ff575f80fd5b50610708610c8e565b60405161071591906129d0565b60405180910390f35b348015610729575f80fd5b50610732610cb3565b60405161073f9190612971565b60405180910390f35b348015610753575f80fd5b5061075c610d43565b6040516107699190612af9565b60405180910390f35b34801561077d575f80fd5b50610786610d49565b6040516107939190612af9565b60405180910390f35b3480156107a7575f80fd5b506107c260048036038101906107bd9190612c7e565b610d4f565b005b3480156107cf575f80fd5b506107ea60048036038101906107e59190612a4e565b610e15565b6040516107f79190612aa6565b60405180910390f35b34801561080b575f80fd5b50610814610e37565b6040516108219190612af9565b60405180910390f35b348015610835575f80fd5b50610850600480360381019061084b9190612ce2565b610e3d565b005b34801561085d575f80fd5b50610866610efe565b6040516108739190612af9565b60405180910390f35b348015610887575f80fd5b506108a2600480360381019061089d9190612abf565b610f04565b6040516108af9190612aa6565b60405180910390f35b3480156108c3575f80fd5b506108de60048036038101906108d99190612d0d565b610f56565b6040516108eb9190612af9565b60405180910390f35b3480156108ff575f80fd5b50610908610fd8565b60405161091591906129d0565b60405180910390f35b610926610ffc565b005b348015610933575f80fd5b5061094e60048036038101906109499190612abf565b6113a6565b005b60606003805461095f90612d78565b80601f016020809104026020016040519081016040528092919081815260200182805461098b90612d78565b80156109d65780601f106109ad576101008083540402835291602001916109d6565b820191905f5260205f20905b8154815290600101906020018083116109b957829003601f168201915b5050505050905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80610a0f61142a565b9050610a1c818585611431565b600191505092915050565b5f80823b90505f8111915050919050565b600560169054906101000a900460ff1681565b5f600254905090565b601a5481565b5f80610a6461142a565b9050610a71858285611443565b610a7c8585856114d5565b60019150509392505050565b60185481565b601760149054906101000a900460ff1681565b7f000000000000000000000000f86af2fbcf6a0479b21b1d3a4af3893f63207fe781565b5f6012905090565b60085481565b60105481565b601b5481565b600f5481565b610aed611a0a565b5f5b83839050811015610b82578160125f868685818110610b1157610b10612da8565b5b9050602002016020810190610b269190612abf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610aef565b50505050565b600c5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bdb611a0a565b610be45f611a91565b565b600e5481565b7f000000000000000000000000149b5ee753297dbd9d40062a5bbdba4e30834bb381565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054610cc290612d78565b80601f0160208091040260200160405190810160405280929190818152602001828054610cee90612d78565b8015610d395780601f10610d1057610100808354040283529160200191610d39565b820191905f5260205f20905b815481529060010190602001808311610d1c57829003601f168201915b5050505050905090565b600b5481565b60195481565b610d57611a0a565b6101f4831115610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9390612e1f565b60405180910390fd5b6064841015610de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd790612e87565b60405180910390fd5b8360188190555082601a8190555081601b8190555080601760146101000a81548160ff02191690831515021790555050505050565b5f80610e1f61142a565b9050610e2c8185856114d5565b600191505092915050565b60095481565b610e45611a0a565b801515600560169054906101000a900460ff16151503610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9190612eef565b60405180910390fd5b80610eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed190612f57565b60405180910390fd5b80600560166101000a81548160ff0219169083151502179055504260068190555050565b600a5481565b5f60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7f0000000000000000000000006e8e5d36fe2eb742c68cc9f41a4e6829b6b216c981565b611004611a0a565b600560149054906101000a900460ff1615611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90612fbf565b60405180910390fd5b5f6004346110629190613037565b90505f6b60ef6b1aba6f07233000000090506110a13060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f19611431565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f806110eb61142a565b426040518863ffffffff1660e01b815260040161110d969594939291906130a9565b60606040518083038185885af1158015611129573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061114e919061311c565b5050505f61117d7f000000000000000000000000f86af2fbcf6a0479b21b1d3a4af3893f63207fe78430611b54565b90507f000000000000000000000000f86af2fbcf6a0479b21b1d3a4af3893f63207fe773ffffffffffffffffffffffffffffffffffffffff1663095ea7b360175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016111fb92919061316c565b6020604051808303815f875af1158015611217573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123b91906131a7565b5060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700307f000000000000000000000000f86af2fbcf6a0479b21b1d3a4af3893f63207fe785855f806112a761142a565b426040518963ffffffff1660e01b81526004016112cb9897969594939291906131d2565b6060604051808303815f875af11580156112e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130b919061311c565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61135d600286611e7590919063ffffffff16565b90811502906040515f60405180830381858888f19350505050158015611385573d5f803e3d5ffd5b506001600560146101000a81548160ff021916908315150217905550505050565b6113ae611a0a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361141e575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161141591906129d0565b60405180910390fd5b61142781611a91565b50565b5f33905090565b61143e8383836001611e8a565b505050565b5f61144e8484610f56565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114cf57818110156114c0578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016114b79392919061324e565b60405180910390fd5b6114ce84848484035f611e8a565b5b50505050565b600560169054906101000a900460ff161561155857611501610e1060065461205990919063ffffffff16565b42111561155757601e600d81905550601e600e81905550600e54600f54600d54600c5461152e9190613283565b6115389190613283565b6115429190613283565b6010819055505f6009819055505f600a819055505b5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115af57506007546115ad8261159f86610b8e565b61206e90919063ffffffff16565b105b156115d4576115d16007546115c385610b8e565b61206e90919063ffffffff16565b90505b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061166f575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156118a7575f60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156117a8578290505f6009541415801561170557503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611758575060125f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117a3576009548211156117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179990613300565b60405180910390fd5b5b6118a5565b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156118a4578390505f600a541415801561180d5750600a5482115b801561184557503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611898575060125f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118a357600a5491505b5b5b505b6118b083610f04565b1580156118c357506118c182610f04565b155b156119fa57600560169054906101000a900460ff16611917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190e90613368565b60405180910390fd5b5f600b54601054836119299190613386565b6119339190613037565b9050611940843083612083565b808261194c91906133c7565b915060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156119f8576119a5612173565b600560159054906101000a900460ff166119f7576001600560156101000a81548160ff0219169083151502179055506119dc6121d3565b5f600560156101000a81548160ff0219169083151502179055505b5b505b611a05838383612083565b505050565b611a1261142a565b73ffffffffffffffffffffffffffffffffffffffff16611a30610c10565b73ffffffffffffffffffffffffffffffffffffffff1614611a8f57611a5361142a565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611a8691906129d0565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80600267ffffffffffffffff811115611b7157611b706133fa565b5b604051908082528060200260200182016040528015611b9f5781602001602082028036833780820191505090505b50905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c30919061343b565b815f81518110611c4357611c42612da8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508481600181518110611c9257611c91612da8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f8590505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401611d0a91906129d0565b602060405180830381865afa158015611d25573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d499190613466565b905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95875f8689426040518663ffffffff1660e01b8152600401611dac9493929190613548565b5f604051808303818588803b158015611dc3575f80fd5b505af1158015611dd5573d5f803e3d5ffd5b50505050505f8273ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b8152600401611e1491906129d0565b602060405180830381865afa158015611e2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e539190613466565b9050611e68828261206e90919063ffffffff16565b9450505050509392505050565b5f8183611e829190613386565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611efa575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611ef191906129d0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f6a575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611f6191906129d0565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015612053578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161204a9190612af9565b60405180910390a35b50505050565b5f81836120669190613283565b905092915050565b5f818361207b91906133c7565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120f3575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016120ea91906129d0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612163575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161215a91906129d0565b60405180910390fd5b61216e8383836123e1565b505050565b601760149054906101000a900460ff16156121d1576018546019544261219991906133c7565b11156121d0576121c87f0000000000000000000000006e8e5d36fe2eb742c68cc9f41a4e6829b6b216c96125fa565b426019819055505b5b565b5f6121dd30610b8e565b90506008548111156123de575f6121f3826126d5565b90505f8111156123dc5760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601054600d54846122499190613386565b6122539190613037565b90811502906040515f60405180830381858888f1935050505015801561227b573d5f803e3d5ffd5b5060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601054600e54846122c89190613386565b6122d29190613037565b90811502906040515f60405180830381858888f193505050501580156122fa573d5f803e3d5ffd5b5060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601054600f54846123479190613386565b6123519190613037565b90811502906040515f60405180830381858888f19350505050158015612379573d5f803e3d5ffd5b506123a130601054600c548461238f9190613386565b6123999190613037565b61dead611b54565b507fbfd09f86688d4875ae5d8fa9b0150047e1d9b731d14715825dba3ba38a8e2d2f81426040516123d3929190613592565b60405180910390a15b505b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612431578060025f8282546124259190613283565b925050819055506124ff565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156124ba578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016124b19392919061324e565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612546578060025f8282540392505081905550612590565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125ed9190612af9565b60405180910390a3505050565b5f61260482610b8e565b90505f601b54601a54836126189190613386565b6126229190613037565b90505f8111156126d0576126398361dead83612083565b8273ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561267e575f80fd5b505af1158015612690573d5f803e3d5ffd5b505050507f9cb560eb3a76b2c70f0528d86a83cc0464d10dd0ccc94ba95bd11b93eac93da68282426040516126c7939291906135b9565b60405180910390a15b505050565b5f80600267ffffffffffffffff8111156126f2576126f16133fa565b5b6040519080825280602002602001820160405280156127205781602001602082028036833780820191505090505b50905030815f8151811061273757612736612da8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127ff919061343b565b8160018151811061281357612812612da8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f47905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8530426040518663ffffffff1660e01b81526004016128b39594939291906135ee565b5f604051808303815f87803b1580156128ca575f80fd5b505af11580156128dc573d5f803e3d5ffd5b505050505f4790506128f7828261206e90919063ffffffff16565b9350505050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61294382612901565b61294d818561290b565b935061295d81856020860161291b565b61296681612929565b840191505092915050565b5f6020820190508181035f8301526129898184612939565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129ba82612991565b9050919050565b6129ca816129b0565b82525050565b5f6020820190506129e35f8301846129c1565b92915050565b5f80fd5b5f80fd5b6129fa816129b0565b8114612a04575f80fd5b50565b5f81359050612a15816129f1565b92915050565b5f819050919050565b612a2d81612a1b565b8114612a37575f80fd5b50565b5f81359050612a4881612a24565b92915050565b5f8060408385031215612a6457612a636129e9565b5b5f612a7185828601612a07565b9250506020612a8285828601612a3a565b9150509250929050565b5f8115159050919050565b612aa081612a8c565b82525050565b5f602082019050612ab95f830184612a97565b92915050565b5f60208284031215612ad457612ad36129e9565b5b5f612ae184828501612a07565b91505092915050565b612af381612a1b565b82525050565b5f602082019050612b0c5f830184612aea565b92915050565b5f805f60608486031215612b2957612b286129e9565b5b5f612b3686828701612a07565b9350506020612b4786828701612a07565b9250506040612b5886828701612a3a565b9150509250925092565b5f60ff82169050919050565b612b7781612b62565b82525050565b5f602082019050612b905f830184612b6e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612bb757612bb6612b96565b5b8235905067ffffffffffffffff811115612bd457612bd3612b9a565b5b602083019150836020820283011115612bf057612bef612b9e565b5b9250929050565b612c0081612a8c565b8114612c0a575f80fd5b50565b5f81359050612c1b81612bf7565b92915050565b5f805f60408486031215612c3857612c376129e9565b5b5f84013567ffffffffffffffff811115612c5557612c546129ed565b5b612c6186828701612ba2565b93509350506020612c7486828701612c0d565b9150509250925092565b5f805f8060808587031215612c9657612c956129e9565b5b5f612ca387828801612a3a565b9450506020612cb487828801612a3a565b9350506040612cc587828801612a3a565b9250506060612cd687828801612c0d565b91505092959194509250565b5f60208284031215612cf757612cf66129e9565b5b5f612d0484828501612c0d565b91505092915050565b5f8060408385031215612d2357612d226129e9565b5b5f612d3085828601612a07565b9250506020612d4185828601612a07565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612d8f57607f821691505b602082108103612da257612da1612d4b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f70657263656e7420746f6f2068696768000000000000000000000000000000005f82015250565b5f612e0960108361290b565b9150612e1482612dd5565b602082019050919050565b5f6020820190508181035f830152612e3681612dfd565b9050919050565b7f6672657175656e637920746f6f207368726f74000000000000000000000000005f82015250565b5f612e7160138361290b565b9150612e7c82612e3d565b602082019050919050565b5f6020820190508181035f830152612e9e81612e65565b9050919050565b7f6c61756e636865640000000000000000000000000000000000000000000000005f82015250565b5f612ed960088361290b565b9150612ee482612ea5565b602082019050919050565b5f6020820190508181035f830152612f0681612ecd565b9050919050565b7f63616e6e6f7420636c6f736500000000000000000000000000000000000000005f82015250565b5f612f41600c8361290b565b9150612f4c82612f0d565b602082019050919050565b5f6020820190508181035f830152612f6e81612f35565b9050919050565b7f616c7265616479206164644c69717569646974790000000000000000000000005f82015250565b5f612fa960148361290b565b9150612fb482612f75565b602082019050919050565b5f6020820190508181035f830152612fd681612f9d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61304182612a1b565b915061304c83612a1b565b92508261305c5761305b612fdd565b5b828204905092915050565b5f819050919050565b5f819050919050565b5f61309361308e61308984613067565b613070565b612a1b565b9050919050565b6130a381613079565b82525050565b5f60c0820190506130bc5f8301896129c1565b6130c96020830188612aea565b6130d6604083018761309a565b6130e3606083018661309a565b6130f060808301856129c1565b6130fd60a0830184612aea565b979650505050505050565b5f8151905061311681612a24565b92915050565b5f805f60608486031215613133576131326129e9565b5b5f61314086828701613108565b935050602061315186828701613108565b925050604061316286828701613108565b9150509250925092565b5f60408201905061317f5f8301856129c1565b61318c6020830184612aea565b9392505050565b5f815190506131a181612bf7565b92915050565b5f602082840312156131bc576131bb6129e9565b5b5f6131c984828501613193565b91505092915050565b5f610100820190506131e65f83018b6129c1565b6131f3602083018a6129c1565b6132006040830189612aea565b61320d6060830188612aea565b61321a608083018761309a565b61322760a083018661309a565b61323460c08301856129c1565b61324160e0830184612aea565b9998505050505050505050565b5f6060820190506132615f8301866129c1565b61326e6020830185612aea565b61327b6040830184612aea565b949350505050565b5f61328d82612a1b565b915061329883612a1b565b92508282019050808211156132b0576132af61300a565b5b92915050565b7f4661696c3a206d6f7265207468616e206d6178000000000000000000000000005f82015250565b5f6132ea60138361290b565b91506132f5826132b6565b602082019050919050565b5f6020820190508181035f830152613317816132de565b9050919050565b7f6e6f74204c61756e6368000000000000000000000000000000000000000000005f82015250565b5f613352600a8361290b565b915061335d8261331e565b602082019050919050565b5f6020820190508181035f83015261337f81613346565b9050919050565b5f61339082612a1b565b915061339b83612a1b565b92508282026133a981612a1b565b915082820484148315176133c0576133bf61300a565b5b5092915050565b5f6133d182612a1b565b91506133dc83612a1b565b92508282039050818111156133f4576133f361300a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613435816129f1565b92915050565b5f602082840312156134505761344f6129e9565b5b5f61345d84828501613427565b91505092915050565b5f6020828403121561347b5761347a6129e9565b5b5f61348884828501613108565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134c3816129b0565b82525050565b5f6134d483836134ba565b60208301905092915050565b5f602082019050919050565b5f6134f682613491565b613500818561349b565b935061350b836134ab565b805f5b8381101561353b57815161352288826134c9565b975061352d836134e0565b92505060018101905061350e565b5085935050505092915050565b5f60808201905061355b5f83018761309a565b818103602083015261356d81866134ec565b905061357c60408301856129c1565b6135896060830184612aea565b95945050505050565b5f6040820190506135a55f830185612aea565b6135b26020830184612aea565b9392505050565b5f6060820190506135cc5f830186612aea565b6135d96020830185612aea565b6135e66040830184612aea565b949350505050565b5f60a0820190506136015f830188612aea565b61360e602083018761309a565b818103604083015261362081866134ec565b905061362f60608301856129c1565b61363c6080830184612aea565b969550505050505056fea2646970667358221220f11fe287354ba898773c915b89b352ee8dcff5a51ed8ab1162ee65ca963a1b3a64736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c9967123512873764b249be8a47cdc69eb4207fd
-----Decoded View---------------
Arg [0] : initialOwner (address): 0xc9967123512873764b249BE8A47CDc69Eb4207FD
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c9967123512873764b249be8a47cdc69eb4207fd
Deployed Bytecode Sourcemap
41141:10098:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13005:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42189:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15298:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44173:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41304:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14107:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42657:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16098:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42574:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42535:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42278:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13958:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41418:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41767:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42700:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41727:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44766:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41615:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14269:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24736:103;;;;;;;;;;;;;:::i;:::-;;41690:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42398:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24061:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41375:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41947:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42105:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41649:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42025:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13215:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41578:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42621:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44999:450;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14592:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41465:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44530:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41520:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44370:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14837:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42359:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45459:979;;;:::i;:::-;;24994:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13005:91;13050:13;13083:5;13076:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13005:91;:::o;42189:80::-;;;;;;;;;;;;;:::o;15298:190::-;15371:4;15388:13;15404:12;:10;:12::i;:::-;15388:28;;15427:31;15436:5;15443:7;15452:5;15427:8;:31::i;:::-;15476:4;15469:11;;;15298:190;;;;:::o;44173:185::-;44228:4;44245:9;44309:4;44297:17;44289:25;;44349:1;44342:4;:8;44335:15;;;44173:185;;;:::o;41304:33::-;;;;;;;;;;;;;:::o;14107:99::-;14159:7;14186:12;;14179:19;;14107:99;:::o;42657:36::-;;;;:::o;16098:249::-;16185:4;16202:15;16220:12;:10;:12::i;:::-;16202:30;;16243:37;16259:4;16265:7;16274:5;16243:15;:37::i;:::-;16291:26;16301:4;16307:2;16311:5;16291:9;:26::i;:::-;16335:4;16328:11;;;16098:249;;;;;:::o;42574:40::-;;;;:::o;42535:32::-;;;;;;;;;;;;;:::o;42278:74::-;;;:::o;13958:84::-;14007:5;14032:2;14025:9;;13958:84;:::o;41418:38::-;;;;:::o;41767:71::-;;;;:::o;42700:33::-;;;;:::o;41727:29::-;;;;:::o;44766:225::-;23947:13;:11;:13::i;:::-;44887:9:::1;44882:102;44906:5;;:12;;44902:1;:16;44882:102;;;44967:5;44940:14;:24;44955:5;;44961:1;44955:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;44940:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;44920:3;;;;;;;44882:102;;;;44766:225:::0;;;:::o;41615:27::-;;;;:::o;14269:118::-;14334:7;14361:9;:18;14371:7;14361:18;;;;;;;;;;;;;;;;14354:25;;14269:118;;;:::o;24736:103::-;23947:13;:11;:13::i;:::-;24801:30:::1;24828:1;24801:18;:30::i;:::-;24736:103::o:0;41690:30::-;;;;:::o;42398:33::-;;;:::o;24061:87::-;24107:7;24134:6;;;;;;;;;;;24127:13;;24061:87;:::o;41375:36::-;;;;:::o;41947:71::-;;;;;;;;;;;;;:::o;42105:77::-;;;;;;;;;;;;;:::o;41649:34::-;;;;:::o;42025:73::-;;;;;;;;;;;;;:::o;13215:95::-;13262:13;13295:7;13288:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13215:95;:::o;41578:30::-;;;;:::o;42621:29::-;;;;:::o;44999:450::-;23947:13;:11;:13::i;:::-;45199:3:::1;45187:8;:15;;45179:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;45265:3;45242:19;:26;;45234:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;45321:19;45303:15;:37;;;;45370:8;45351:16;:27;;;;45402:4;45389:10;:17;;;;45433:8;45417:13;;:24;;;;;;;;;;;;;;;;;;44999:450:::0;;;;:::o;14592:182::-;14661:4;14678:13;14694:12;:10;:12::i;:::-;14678:28;;14717:27;14727:5;14734:2;14738:5;14717:9;:27::i;:::-;14762:4;14755:11;;;14592:182;;;;:::o;41465:48::-;;;;:::o;44530:228::-;23947:13;:11;:13::i;:::-;44616:5:::1;44599:22;;:13;;;;;;;;;;;:22;;::::0;44591:43:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;44653:5;44645:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;44702:5;44686:13;;:21;;;;;;;;;;;;;;;;;;44735:15;44718:14;:32;;;;44530:228:::0;:::o;41520:49::-;;;;:::o;44370:115::-;44430:4;44454:14;:23;44469:7;44454:23;;;;;;;;;;;;;;;;;;;;;;;;;44447:30;;44370:115;;;:::o;14837:142::-;14917:7;14944:11;:18;14956:5;14944:18;;;;;;;;;;;;;;;:27;14963:7;14944:27;;;;;;;;;;;;;;;;14937:34;;14837:142;;;;:::o;42359:32::-;;;:::o;45459:979::-;23947:13;:11;:13::i;:::-;45530:16:::1;;;;;;;;;;;45529:17;45521:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;45584:19;45616:1;45606:9;:11;;;;:::i;:::-;45584:33;;45628:21;45652:20;45628:44;;45683:53;45700:4;45715:6;;;;;;;;;;;45733:1;45724:11;45683:8;:53::i;:::-;45747:6;;;;;;;;;;;:22;;;45777:11;45812:4;45832:13;45860:1;45876::::0;45892:12:::1;:10;:12::i;:::-;45919:15;45747:198;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;45958:20;45981:48;45996:4;46002:11;46023:4;45981:14;:48::i;:::-;45958:71;;46047:4;46040:20;;;46069:6;;;;;;;;;;;46078:12;46040:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46102:6;;;;;;;;;;;:19;;;46144:4;46164;46183:13;46211:12;46238:1;46254::::0;46270:12:::1;:10;:12::i;:::-;46297:15;46102:221;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;46344:20;;;;;;;;;;;46336:38;;:58;46375:18;46391:1;46375:11;:15;;:18;;;;:::i;:::-;46336:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;46426:4;46407:16;;:23;;;;;;;;;;;;;;;;;;45510:928;;;45459:979::o:0;24994:220::-;23947:13;:11;:13::i;:::-;25099:1:::1;25079:22;;:8;:22;;::::0;25075:93:::1;;25153:1;25125:31;;;;;;;;;;;:::i;:::-;;;;;;;;25075:93;25178:28;25197:8;25178:18;:28::i;:::-;24994:220:::0;:::o;4304:98::-;4357:7;4384:10;4377:17;;4304:98;:::o;20165:130::-;20250:37;20259:5;20266:7;20275:5;20282:4;20250:8;:37::i;:::-;20165:130;;;:::o;21897:487::-;21997:24;22024:25;22034:5;22041:7;22024:9;:25::i;:::-;21997:52;;22084:17;22064:16;:37;22060:317;;22141:5;22122:16;:24;22118:132;;;22201:7;22210:16;22228:5;22174:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;22118:132;22293:57;22302:5;22309:7;22337:5;22318:16;:24;22344:5;22293:8;:57::i;:::-;22060:317;21986:398;21897:487;;;:::o;46449:1865::-;46584:13;;;;;;;;;;;46581:323;;;46635:24;46654:4;46635:14;;:18;;:24;;;;:::i;:::-;46617:15;:42;46614:279;;;46695:2;46680:12;:17;;;;46727:2;46716:8;:13;;;;46796:8;;46784:9;;46769:12;;46759:7;;:22;;;;:::i;:::-;:34;;;;:::i;:::-;:45;;;;:::i;:::-;46748:8;:56;;;;46839:1;46823:13;:17;;;;46876:1;46859:14;:18;;;;46614:279;46581:323;46933:4;46917:21;;:4;:21;;;;:65;;;;;46972:10;;46942:27;46962:6;46942:15;46952:4;46942:9;:15::i;:::-;:19;;:27;;;;:::i;:::-;:40;46917:65;46914:137;;;47008:31;47028:10;;47008:15;47018:4;47008:9;:15::i;:::-;:19;;:31;;;;:::i;:::-;46999:40;;46914:137;47066:9;:15;47076:4;47066:15;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;47085:9;:13;47095:2;47085:13;;;;;;;;;;;;;;;;;;;;;;;;;47066:32;47063:656;;;47115:13;47165:9;:15;47175:4;47165:15;;;;;;;;;;;;;;;;;;;;;;;;;47162:546;;;47209:2;47201:10;;47250:1;47233:13;;:18;;:45;;;;;47273:4;47256:22;;:5;:22;;;;47233:45;:71;;;;;47283:14;:21;47298:5;47283:21;;;;;;;;;;;;;;;;;;;;;;;;;47282:22;47233:71;47230:173;;;47346:13;;47336:6;:23;;47328:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;47230:173;47162:546;;;47460:9;:13;47470:2;47460:13;;;;;;;;;;;;;;;;;;;;;;;;;47457:251;;;47502:4;47494:12;;47546:1;47528:14;;:19;;:46;;;;;47560:14;;47551:6;:23;47528:46;:72;;;;;47595:4;47578:22;;:5;:22;;;;47528:72;:98;;;;;47605:14;:21;47620:5;47605:21;;;;;;;;;;;;;;;;;;;;;;;;;47604:22;47528:98;47525:168;;;47659:14;;47650:23;;47525:168;47457:251;47162:546;47100:619;47063:656;47744:18;47757:4;47744:12;:18::i;:::-;47743:19;:40;;;;;47767:16;47780:2;47767:12;:16::i;:::-;47766:17;47743:40;47739:522;;;47808:13;;;;;;;;;;;47800:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;47864:11;47900:7;;47888:8;;47879:6;:17;;;;:::i;:::-;47878:29;;;;:::i;:::-;47864:43;;47922:41;47938:4;47952;47959:3;47922:15;:41::i;:::-;47988:3;47978:13;;;;;:::i;:::-;;;48012:9;:13;48022:2;48012:13;;;;;;;;;;;;;;;;;;;;;;;;;48008:242;;;48046:21;:19;:21::i;:::-;48091:7;;;;;;;;;;;48086:149;;48133:4;48123:7;;:14;;;;;;;;;;;;;;;;;;48160:17;:15;:17::i;:::-;48210:5;48200:7;;:15;;;;;;;;;;;;;;;;;;48086:149;48008:242;47785:476;47739:522;48273:33;48289:4;48295:2;48299:6;48273:15;:33::i;:::-;46449:1865;;;:::o;24226:166::-;24297:12;:10;:12::i;:::-;24286:23;;:7;:5;:7::i;:::-;:23;;;24282:103;;24360:12;:10;:12::i;:::-;24333:40;;;;;;;;;;;:::i;:::-;;;;;;;;24282:103;24226:166::o;25374:191::-;25448:16;25467:6;;;;;;;;;;;25448:25;;25493:8;25484:6;;:17;;;;;;;;;;;;;;;;;;25548:8;25517:40;;25538:8;25517:40;;;;;;;;;;;;25437:128;25374:191;:::o;50637:597::-;50755:17;50785:21;50823:1;50809:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50785:40;;50846:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;50836:4;50841:1;50836:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;50880:5;50870:4;50875:1;50870:7;;;;;;;;:::i;:::-;;;;;;;:15;;;;;;;;;;;50898:12;50920:5;50898:28;;50937:21;50961:5;:15;;;50977:2;50961:19;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;50937:43;;50991:6;;;;;;;;;;;:57;;;51070:6;51088:1;51091:4;51097:2;51101:15;50991:126;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51128:20;51151:5;:15;;;51167:2;51151:19;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;51128:42;;51195:31;51212:13;51195:12;:16;;:31;;;;:::i;:::-;51183:43;;50774:460;;;;50637:597;;;;;:::o;36310:98::-;36368:7;36399:1;36395;:5;;;;:::i;:::-;36388:12;;36310:98;;;;:::o;21162:443::-;21292:1;21275:19;;:5;:19;;;21271:91;;21347:1;21318:32;;;;;;;;;;;:::i;:::-;;;;;;;;21271:91;21395:1;21376:21;;:7;:21;;;21372:92;;21449:1;21421:31;;;;;;;;;;;:::i;:::-;;;;;;;;21372:92;21504:5;21474:11;:18;21486:5;21474:18;;;;;;;;;;;;;;;:27;21493:7;21474:27;;;;;;;;;;;;;;;:35;;;;21524:9;21520:78;;;21571:7;21555:31;;21564:5;21555:31;;;21580:5;21555:31;;;;;;:::i;:::-;;;;;;;;21520:78;21162:443;;;;:::o;35572:98::-;35630:7;35661:1;35657;:5;;;;:::i;:::-;35650:12;;35572:98;;;;:::o;35953:::-;36011:7;36042:1;36038;:5;;;;:::i;:::-;36031:12;;35953:98;;;;:::o;16732:316::-;16840:1;16824:18;;:4;:18;;;16820:88;;16893:1;16866:30;;;;;;;;;;;:::i;:::-;;;;;;;;16820:88;16936:1;16922:16;;:2;:16;;;16918:88;;16991:1;16962:32;;;;;;;;;;;:::i;:::-;;;;;;;;16918:88;17016:24;17024:4;17030:2;17034:5;17016:7;:24::i;:::-;16732:316;;;:::o;48322:266::-;48376:13;;;;;;;;;;;48373:203;;;48445:15;;48428:14;;48410:15;:32;;;;:::i;:::-;:50;48406:159;;;48481:17;48490:7;48481:8;:17::i;:::-;48534:15;48517:14;:32;;;;48406:159;48373:203;48322:266::o;49117:911::-;49163:15;49181:24;49199:4;49181:9;:24::i;:::-;49163:42;;49232:10;;49222:7;:20;49218:803;;;49271:17;49291:23;49306:7;49291:14;:23::i;:::-;49271:43;;49344:1;49332:9;:13;49329:681;;;49374:13;;;;;;;;;;;49366:31;;:110;49449:8;;49433:12;;49421:9;:24;;;;:::i;:::-;49420:37;;;;:::i;:::-;49366:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49505:17;;;;;;;;;;;49497:35;;:110;49580:8;;49568;;49556:9;:20;;;;:::i;:::-;49555:33;;;;:::i;:::-;49497:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49636:20;;;;;;;;;;;49628:38;;:114;49715:8;;49702:9;;49690;:21;;;;:::i;:::-;49689:34;;;;:::i;:::-;49628:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49763:162;49808:4;49860:8;;49849:7;;49837:9;:19;;;;:::i;:::-;49836:32;;;;:::i;:::-;49899:6;49763:14;:162::i;:::-;;49951:43;49967:9;49978:15;49951:43;;;;;;;:::i;:::-;;;;;;;;49329:681;49244:777;49218:803;49152:876;49117:911::o;17372:1135::-;17478:1;17462:18;;:4;:18;;;17458:552;;17616:5;17600:12;;:21;;;;;;;:::i;:::-;;;;;;;;17458:552;;;17654:19;17676:9;:15;17686:4;17676:15;;;;;;;;;;;;;;;;17654:37;;17724:5;17710:11;:19;17706:117;;;17782:4;17788:11;17801:5;17757:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;17706:117;17978:5;17964:11;:19;17946:9;:15;17956:4;17946:15;;;;;;;;;;;;;;;:37;;;;17639:371;17458:552;18040:1;18026:16;;:2;:16;;;18022:435;;18208:5;18192:12;;:21;;;;;;;;;;;18022:435;;;18425:5;18408:9;:13;18418:2;18408:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;18022:435;18489:2;18474:25;;18483:4;18474:25;;;18493:5;18474:25;;;;;;:::i;:::-;;;;;;;;17372:1135;;;:::o;48596:513::-;48649:28;48680:16;48690:5;48680:9;:16::i;:::-;48649:47;;48707:20;48787:10;;48754:16;;48731:20;:39;;;;:::i;:::-;48730:67;;;;:::i;:::-;48707:90;;48829:1;48814:12;:16;48810:292;;;48847:53;48863:5;48878:6;48887:12;48847:15;:53::i;:::-;48928:5;48915:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48961:129;48990:20;49029:12;49060:15;48961:129;;;;;;;;:::i;:::-;;;;;;;;48810:292;48638:471;;48596:513;:::o;50036:591::-;50098:17;50128:21;50166:1;50152:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50128:40;;50197:4;50179;50184:1;50179:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;50223:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;50213:4;50218:1;50213:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;50249:24;50276:21;50249:48;;50308:6;;;;;;;;;;;:57;;;50380:11;50406:1;50422:4;50449;50469:15;50308:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50508:23;50534:21;50508:47;;50582:37;50602:16;50582:15;:19;;:37;;;;:::i;:::-;50570:49;;50117:510;;;50036:591;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:126::-;1279:7;1319:42;1312:5;1308:54;1297:65;;1242:126;;;:::o;1374:96::-;1411:7;1440:24;1458:5;1440:24;:::i;:::-;1429:35;;1374:96;;;:::o;1476:118::-;1563:24;1581:5;1563:24;:::i;:::-;1558:3;1551:37;1476:118;;:::o;1600:222::-;1693:4;1731:2;1720:9;1716:18;1708:26;;1744:71;1812:1;1801:9;1797:17;1788:6;1744:71;:::i;:::-;1600:222;;;;:::o;1909:117::-;2018:1;2015;2008:12;2032:117;2141:1;2138;2131:12;2155:122;2228:24;2246:5;2228:24;:::i;:::-;2221:5;2218:35;2208:63;;2267:1;2264;2257:12;2208:63;2155:122;:::o;2283:139::-;2329:5;2367:6;2354:20;2345:29;;2383:33;2410:5;2383:33;:::i;:::-;2283:139;;;;:::o;2428:77::-;2465:7;2494:5;2483:16;;2428:77;;;:::o;2511:122::-;2584:24;2602:5;2584:24;:::i;:::-;2577:5;2574:35;2564:63;;2623:1;2620;2613:12;2564:63;2511:122;:::o;2639:139::-;2685:5;2723:6;2710:20;2701:29;;2739:33;2766:5;2739:33;:::i;:::-;2639:139;;;;:::o;2784:474::-;2852:6;2860;2909:2;2897:9;2888:7;2884:23;2880:32;2877:119;;;2915:79;;:::i;:::-;2877:119;3035:1;3060:53;3105:7;3096:6;3085:9;3081:22;3060:53;:::i;:::-;3050:63;;3006:117;3162:2;3188:53;3233:7;3224:6;3213:9;3209:22;3188:53;:::i;:::-;3178:63;;3133:118;2784:474;;;;;:::o;3264:90::-;3298:7;3341:5;3334:13;3327:21;3316:32;;3264:90;;;:::o;3360:109::-;3441:21;3456:5;3441:21;:::i;:::-;3436:3;3429:34;3360:109;;:::o;3475:210::-;3562:4;3600:2;3589:9;3585:18;3577:26;;3613:65;3675:1;3664:9;3660:17;3651:6;3613:65;:::i;:::-;3475:210;;;;:::o;3691:329::-;3750:6;3799:2;3787:9;3778:7;3774:23;3770:32;3767:119;;;3805:79;;:::i;:::-;3767:119;3925:1;3950:53;3995:7;3986:6;3975:9;3971:22;3950:53;:::i;:::-;3940:63;;3896:117;3691:329;;;;:::o;4026:118::-;4113:24;4131:5;4113:24;:::i;:::-;4108:3;4101:37;4026:118;;:::o;4150:222::-;4243:4;4281:2;4270:9;4266:18;4258:26;;4294:71;4362:1;4351:9;4347:17;4338:6;4294:71;:::i;:::-;4150:222;;;;:::o;4378:619::-;4455:6;4463;4471;4520:2;4508:9;4499:7;4495:23;4491:32;4488:119;;;4526:79;;:::i;:::-;4488:119;4646:1;4671:53;4716:7;4707:6;4696:9;4692:22;4671:53;:::i;:::-;4661:63;;4617:117;4773:2;4799:53;4844:7;4835:6;4824:9;4820:22;4799:53;:::i;:::-;4789:63;;4744:118;4901:2;4927:53;4972:7;4963:6;4952:9;4948:22;4927:53;:::i;:::-;4917:63;;4872:118;4378:619;;;;;:::o;5003:86::-;5038:7;5078:4;5071:5;5067:16;5056:27;;5003:86;;;:::o;5095:112::-;5178:22;5194:5;5178:22;:::i;:::-;5173:3;5166:35;5095:112;;:::o;5213:214::-;5302:4;5340:2;5329:9;5325:18;5317:26;;5353:67;5417:1;5406:9;5402:17;5393:6;5353:67;:::i;:::-;5213:214;;;;:::o;5433:117::-;5542:1;5539;5532:12;5556:117;5665:1;5662;5655:12;5679:117;5788:1;5785;5778:12;5819:568;5892:8;5902:6;5952:3;5945:4;5937:6;5933:17;5929:27;5919:122;;5960:79;;:::i;:::-;5919:122;6073:6;6060:20;6050:30;;6103:18;6095:6;6092:30;6089:117;;;6125:79;;:::i;:::-;6089:117;6239:4;6231:6;6227:17;6215:29;;6293:3;6285:4;6277:6;6273:17;6263:8;6259:32;6256:41;6253:128;;;6300:79;;:::i;:::-;6253:128;5819:568;;;;;:::o;6393:116::-;6463:21;6478:5;6463:21;:::i;:::-;6456:5;6453:32;6443:60;;6499:1;6496;6489:12;6443:60;6393:116;:::o;6515:133::-;6558:5;6596:6;6583:20;6574:29;;6612:30;6636:5;6612:30;:::i;:::-;6515:133;;;;:::o;6654:698::-;6746:6;6754;6762;6811:2;6799:9;6790:7;6786:23;6782:32;6779:119;;;6817:79;;:::i;:::-;6779:119;6965:1;6954:9;6950:17;6937:31;6995:18;6987:6;6984:30;6981:117;;;7017:79;;:::i;:::-;6981:117;7130:80;7202:7;7193:6;7182:9;7178:22;7130:80;:::i;:::-;7112:98;;;;6908:312;7259:2;7285:50;7327:7;7318:6;7307:9;7303:22;7285:50;:::i;:::-;7275:60;;7230:115;6654:698;;;;;:::o;7358:759::-;7441:6;7449;7457;7465;7514:3;7502:9;7493:7;7489:23;7485:33;7482:120;;;7521:79;;:::i;:::-;7482:120;7641:1;7666:53;7711:7;7702:6;7691:9;7687:22;7666:53;:::i;:::-;7656:63;;7612:117;7768:2;7794:53;7839:7;7830:6;7819:9;7815:22;7794:53;:::i;:::-;7784:63;;7739:118;7896:2;7922:53;7967:7;7958:6;7947:9;7943:22;7922:53;:::i;:::-;7912:63;;7867:118;8024:2;8050:50;8092:7;8083:6;8072:9;8068:22;8050:50;:::i;:::-;8040:60;;7995:115;7358:759;;;;;;;:::o;8123:323::-;8179:6;8228:2;8216:9;8207:7;8203:23;8199:32;8196:119;;;8234:79;;:::i;:::-;8196:119;8354:1;8379:50;8421:7;8412:6;8401:9;8397:22;8379:50;:::i;:::-;8369:60;;8325:114;8123:323;;;;:::o;8452:474::-;8520:6;8528;8577:2;8565:9;8556:7;8552:23;8548:32;8545:119;;;8583:79;;:::i;:::-;8545:119;8703:1;8728:53;8773:7;8764:6;8753:9;8749:22;8728:53;:::i;:::-;8718:63;;8674:117;8830:2;8856:53;8901:7;8892:6;8881:9;8877:22;8856:53;:::i;:::-;8846:63;;8801:118;8452:474;;;;;:::o;8932:180::-;8980:77;8977:1;8970:88;9077:4;9074:1;9067:15;9101:4;9098:1;9091:15;9118:320;9162:6;9199:1;9193:4;9189:12;9179:22;;9246:1;9240:4;9236:12;9267:18;9257:81;;9323:4;9315:6;9311:17;9301:27;;9257:81;9385:2;9377:6;9374:14;9354:18;9351:38;9348:84;;9404:18;;:::i;:::-;9348:84;9169:269;9118:320;;;:::o;9444:180::-;9492:77;9489:1;9482:88;9589:4;9586:1;9579:15;9613:4;9610:1;9603:15;9630:166;9770:18;9766:1;9758:6;9754:14;9747:42;9630:166;:::o;9802:366::-;9944:3;9965:67;10029:2;10024:3;9965:67;:::i;:::-;9958:74;;10041:93;10130:3;10041:93;:::i;:::-;10159:2;10154:3;10150:12;10143:19;;9802:366;;;:::o;10174:419::-;10340:4;10378:2;10367:9;10363:18;10355:26;;10427:9;10421:4;10417:20;10413:1;10402:9;10398:17;10391:47;10455:131;10581:4;10455:131;:::i;:::-;10447:139;;10174:419;;;:::o;10599:169::-;10739:21;10735:1;10727:6;10723:14;10716:45;10599:169;:::o;10774:366::-;10916:3;10937:67;11001:2;10996:3;10937:67;:::i;:::-;10930:74;;11013:93;11102:3;11013:93;:::i;:::-;11131:2;11126:3;11122:12;11115:19;;10774:366;;;:::o;11146:419::-;11312:4;11350:2;11339:9;11335:18;11327:26;;11399:9;11393:4;11389:20;11385:1;11374:9;11370:17;11363:47;11427:131;11553:4;11427:131;:::i;:::-;11419:139;;11146:419;;;:::o;11571:158::-;11711:10;11707:1;11699:6;11695:14;11688:34;11571:158;:::o;11735:365::-;11877:3;11898:66;11962:1;11957:3;11898:66;:::i;:::-;11891:73;;11973:93;12062:3;11973:93;:::i;:::-;12091:2;12086:3;12082:12;12075:19;;11735:365;;;:::o;12106:419::-;12272:4;12310:2;12299:9;12295:18;12287:26;;12359:9;12353:4;12349:20;12345:1;12334:9;12330:17;12323:47;12387:131;12513:4;12387:131;:::i;:::-;12379:139;;12106:419;;;:::o;12531:162::-;12671:14;12667:1;12659:6;12655:14;12648:38;12531:162;:::o;12699:366::-;12841:3;12862:67;12926:2;12921:3;12862:67;:::i;:::-;12855:74;;12938:93;13027:3;12938:93;:::i;:::-;13056:2;13051:3;13047:12;13040:19;;12699:366;;;:::o;13071:419::-;13237:4;13275:2;13264:9;13260:18;13252:26;;13324:9;13318:4;13314:20;13310:1;13299:9;13295:17;13288:47;13352:131;13478:4;13352:131;:::i;:::-;13344:139;;13071:419;;;:::o;13496:170::-;13636:22;13632:1;13624:6;13620:14;13613:46;13496:170;:::o;13672:366::-;13814:3;13835:67;13899:2;13894:3;13835:67;:::i;:::-;13828:74;;13911:93;14000:3;13911:93;:::i;:::-;14029:2;14024:3;14020:12;14013:19;;13672:366;;;:::o;14044:419::-;14210:4;14248:2;14237:9;14233:18;14225:26;;14297:9;14291:4;14287:20;14283:1;14272:9;14268:17;14261:47;14325:131;14451:4;14325:131;:::i;:::-;14317:139;;14044:419;;;:::o;14469:180::-;14517:77;14514:1;14507:88;14614:4;14611:1;14604:15;14638:4;14635:1;14628:15;14655:180;14703:77;14700:1;14693:88;14800:4;14797:1;14790:15;14824:4;14821:1;14814:15;14841:185;14881:1;14898:20;14916:1;14898:20;:::i;:::-;14893:25;;14932:20;14950:1;14932:20;:::i;:::-;14927:25;;14971:1;14961:35;;14976:18;;:::i;:::-;14961:35;15018:1;15015;15011:9;15006:14;;14841:185;;;;:::o;15032:85::-;15077:7;15106:5;15095:16;;15032:85;;;:::o;15123:60::-;15151:3;15172:5;15165:12;;15123:60;;;:::o;15189:158::-;15247:9;15280:61;15298:42;15307:32;15333:5;15307:32;:::i;:::-;15298:42;:::i;:::-;15280:61;:::i;:::-;15267:74;;15189:158;;;:::o;15353:147::-;15448:45;15487:5;15448:45;:::i;:::-;15443:3;15436:58;15353:147;;:::o;15506:807::-;15755:4;15793:3;15782:9;15778:19;15770:27;;15807:71;15875:1;15864:9;15860:17;15851:6;15807:71;:::i;:::-;15888:72;15956:2;15945:9;15941:18;15932:6;15888:72;:::i;:::-;15970:80;16046:2;16035:9;16031:18;16022:6;15970:80;:::i;:::-;16060;16136:2;16125:9;16121:18;16112:6;16060:80;:::i;:::-;16150:73;16218:3;16207:9;16203:19;16194:6;16150:73;:::i;:::-;16233;16301:3;16290:9;16286:19;16277:6;16233:73;:::i;:::-;15506:807;;;;;;;;;:::o;16319:143::-;16376:5;16407:6;16401:13;16392:22;;16423:33;16450:5;16423:33;:::i;:::-;16319:143;;;;:::o;16468:663::-;16556:6;16564;16572;16621:2;16609:9;16600:7;16596:23;16592:32;16589:119;;;16627:79;;:::i;:::-;16589:119;16747:1;16772:64;16828:7;16819:6;16808:9;16804:22;16772:64;:::i;:::-;16762:74;;16718:128;16885:2;16911:64;16967:7;16958:6;16947:9;16943:22;16911:64;:::i;:::-;16901:74;;16856:129;17024:2;17050:64;17106:7;17097:6;17086:9;17082:22;17050:64;:::i;:::-;17040:74;;16995:129;16468:663;;;;;:::o;17137:332::-;17258:4;17296:2;17285:9;17281:18;17273:26;;17309:71;17377:1;17366:9;17362:17;17353:6;17309:71;:::i;:::-;17390:72;17458:2;17447:9;17443:18;17434:6;17390:72;:::i;:::-;17137:332;;;;;:::o;17475:137::-;17529:5;17560:6;17554:13;17545:22;;17576:30;17600:5;17576:30;:::i;:::-;17475:137;;;;:::o;17618:345::-;17685:6;17734:2;17722:9;17713:7;17709:23;17705:32;17702:119;;;17740:79;;:::i;:::-;17702:119;17860:1;17885:61;17938:7;17929:6;17918:9;17914:22;17885:61;:::i;:::-;17875:71;;17831:125;17618:345;;;;:::o;17969:1029::-;18274:4;18312:3;18301:9;18297:19;18289:27;;18326:71;18394:1;18383:9;18379:17;18370:6;18326:71;:::i;:::-;18407:72;18475:2;18464:9;18460:18;18451:6;18407:72;:::i;:::-;18489;18557:2;18546:9;18542:18;18533:6;18489:72;:::i;:::-;18571;18639:2;18628:9;18624:18;18615:6;18571:72;:::i;:::-;18653:81;18729:3;18718:9;18714:19;18705:6;18653:81;:::i;:::-;18744;18820:3;18809:9;18805:19;18796:6;18744:81;:::i;:::-;18835:73;18903:3;18892:9;18888:19;18879:6;18835:73;:::i;:::-;18918;18986:3;18975:9;18971:19;18962:6;18918:73;:::i;:::-;17969:1029;;;;;;;;;;;:::o;19004:442::-;19153:4;19191:2;19180:9;19176:18;19168:26;;19204:71;19272:1;19261:9;19257:17;19248:6;19204:71;:::i;:::-;19285:72;19353:2;19342:9;19338:18;19329:6;19285:72;:::i;:::-;19367;19435:2;19424:9;19420:18;19411:6;19367:72;:::i;:::-;19004:442;;;;;;:::o;19452:191::-;19492:3;19511:20;19529:1;19511:20;:::i;:::-;19506:25;;19545:20;19563:1;19545:20;:::i;:::-;19540:25;;19588:1;19585;19581:9;19574:16;;19609:3;19606:1;19603:10;19600:36;;;19616:18;;:::i;:::-;19600:36;19452:191;;;;:::o;19649:169::-;19789:21;19785:1;19777:6;19773:14;19766:45;19649:169;:::o;19824:366::-;19966:3;19987:67;20051:2;20046:3;19987:67;:::i;:::-;19980:74;;20063:93;20152:3;20063:93;:::i;:::-;20181:2;20176:3;20172:12;20165:19;;19824:366;;;:::o;20196:419::-;20362:4;20400:2;20389:9;20385:18;20377:26;;20449:9;20443:4;20439:20;20435:1;20424:9;20420:17;20413:47;20477:131;20603:4;20477:131;:::i;:::-;20469:139;;20196:419;;;:::o;20621:160::-;20761:12;20757:1;20749:6;20745:14;20738:36;20621:160;:::o;20787:366::-;20929:3;20950:67;21014:2;21009:3;20950:67;:::i;:::-;20943:74;;21026:93;21115:3;21026:93;:::i;:::-;21144:2;21139:3;21135:12;21128:19;;20787:366;;;:::o;21159:419::-;21325:4;21363:2;21352:9;21348:18;21340:26;;21412:9;21406:4;21402:20;21398:1;21387:9;21383:17;21376:47;21440:131;21566:4;21440:131;:::i;:::-;21432:139;;21159:419;;;:::o;21584:410::-;21624:7;21647:20;21665:1;21647:20;:::i;:::-;21642:25;;21681:20;21699:1;21681:20;:::i;:::-;21676:25;;21736:1;21733;21729:9;21758:30;21776:11;21758:30;:::i;:::-;21747:41;;21937:1;21928:7;21924:15;21921:1;21918:22;21898:1;21891:9;21871:83;21848:139;;21967:18;;:::i;:::-;21848:139;21632:362;21584:410;;;;:::o;22000:194::-;22040:4;22060:20;22078:1;22060:20;:::i;:::-;22055:25;;22094:20;22112:1;22094:20;:::i;:::-;22089:25;;22138:1;22135;22131:9;22123:17;;22162:1;22156:4;22153:11;22150:37;;;22167:18;;:::i;:::-;22150:37;22000:194;;;;:::o;22200:180::-;22248:77;22245:1;22238:88;22345:4;22342:1;22335:15;22369:4;22366:1;22359:15;22386:143;22443:5;22474:6;22468:13;22459:22;;22490:33;22517:5;22490:33;:::i;:::-;22386:143;;;;:::o;22535:351::-;22605:6;22654:2;22642:9;22633:7;22629:23;22625:32;22622:119;;;22660:79;;:::i;:::-;22622:119;22780:1;22805:64;22861:7;22852:6;22841:9;22837:22;22805:64;:::i;:::-;22795:74;;22751:128;22535:351;;;;:::o;22892:::-;22962:6;23011:2;22999:9;22990:7;22986:23;22982:32;22979:119;;;23017:79;;:::i;:::-;22979:119;23137:1;23162:64;23218:7;23209:6;23198:9;23194:22;23162:64;:::i;:::-;23152:74;;23108:128;22892:351;;;;:::o;23249:114::-;23316:6;23350:5;23344:12;23334:22;;23249:114;;;:::o;23369:184::-;23468:11;23502:6;23497:3;23490:19;23542:4;23537:3;23533:14;23518:29;;23369:184;;;;:::o;23559:132::-;23626:4;23649:3;23641:11;;23679:4;23674:3;23670:14;23662:22;;23559:132;;;:::o;23697:108::-;23774:24;23792:5;23774:24;:::i;:::-;23769:3;23762:37;23697:108;;:::o;23811:179::-;23880:10;23901:46;23943:3;23935:6;23901:46;:::i;:::-;23979:4;23974:3;23970:14;23956:28;;23811:179;;;;:::o;23996:113::-;24066:4;24098;24093:3;24089:14;24081:22;;23996:113;;;:::o;24145:732::-;24264:3;24293:54;24341:5;24293:54;:::i;:::-;24363:86;24442:6;24437:3;24363:86;:::i;:::-;24356:93;;24473:56;24523:5;24473:56;:::i;:::-;24552:7;24583:1;24568:284;24593:6;24590:1;24587:13;24568:284;;;24669:6;24663:13;24696:63;24755:3;24740:13;24696:63;:::i;:::-;24689:70;;24782:60;24835:6;24782:60;:::i;:::-;24772:70;;24628:224;24615:1;24612;24608:9;24603:14;;24568:284;;;24572:14;24868:3;24861:10;;24269:608;;;24145:732;;;;:::o;24883:720::-;25118:4;25156:3;25145:9;25141:19;25133:27;;25170:79;25246:1;25235:9;25231:17;25222:6;25170:79;:::i;:::-;25296:9;25290:4;25286:20;25281:2;25270:9;25266:18;25259:48;25324:108;25427:4;25418:6;25324:108;:::i;:::-;25316:116;;25442:72;25510:2;25499:9;25495:18;25486:6;25442:72;:::i;:::-;25524;25592:2;25581:9;25577:18;25568:6;25524:72;:::i;:::-;24883:720;;;;;;;:::o;25609:332::-;25730:4;25768:2;25757:9;25753:18;25745:26;;25781:71;25849:1;25838:9;25834:17;25825:6;25781:71;:::i;:::-;25862:72;25930:2;25919:9;25915:18;25906:6;25862:72;:::i;:::-;25609:332;;;;;:::o;25947:442::-;26096:4;26134:2;26123:9;26119:18;26111:26;;26147:71;26215:1;26204:9;26200:17;26191:6;26147:71;:::i;:::-;26228:72;26296:2;26285:9;26281:18;26272:6;26228:72;:::i;:::-;26310;26378:2;26367:9;26363:18;26354:6;26310:72;:::i;:::-;25947:442;;;;;;:::o;26395:831::-;26658:4;26696:3;26685:9;26681:19;26673:27;;26710:71;26778:1;26767:9;26763:17;26754:6;26710:71;:::i;:::-;26791:80;26867:2;26856:9;26852:18;26843:6;26791:80;:::i;:::-;26918:9;26912:4;26908:20;26903:2;26892:9;26888:18;26881:48;26946:108;27049:4;27040:6;26946:108;:::i;:::-;26938:116;;27064:72;27132:2;27121:9;27117:18;27108:6;27064:72;:::i;:::-;27146:73;27214:3;27203:9;27199:19;27190:6;27146:73;:::i;:::-;26395:831;;;;;;;;:::o
Swarm Source
ipfs://f11fe287354ba898773c915b89b352ee8dcff5a51ed8ab1162ee65ca963a1b3a
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.