More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 62 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 15892803 | 793 days ago | IN | 0 ETH | 0.00077848 | ||||
Approve | 15879036 | 795 days ago | IN | 0 ETH | 0.00085042 | ||||
Approve | 15879015 | 795 days ago | IN | 0 ETH | 0.0005197 | ||||
Approve | 15878876 | 795 days ago | IN | 0 ETH | 0.00164721 | ||||
Approve | 15878864 | 795 days ago | IN | 0 ETH | 0.0006061 | ||||
Approve | 15878861 | 795 days ago | IN | 0 ETH | 0.00065583 | ||||
Approve | 15878856 | 795 days ago | IN | 0 ETH | 0.00058625 | ||||
Approve | 15878841 | 795 days ago | IN | 0 ETH | 0.00062649 | ||||
Approve | 15878841 | 795 days ago | IN | 0 ETH | 0.00142967 | ||||
Approve | 15878837 | 795 days ago | IN | 0 ETH | 0.00075425 | ||||
Approve | 15878834 | 795 days ago | IN | 0 ETH | 0.00053223 | ||||
Approve | 15878824 | 795 days ago | IN | 0 ETH | 0.00067561 | ||||
Approve | 15878822 | 795 days ago | IN | 0 ETH | 0.00063953 | ||||
Approve | 15878815 | 795 days ago | IN | 0 ETH | 0.0005757 | ||||
Approve | 15878813 | 795 days ago | IN | 0 ETH | 0.00066049 | ||||
Approve | 15878813 | 795 days ago | IN | 0 ETH | 0.00198338 | ||||
Approve | 15878812 | 795 days ago | IN | 0 ETH | 0.00059076 | ||||
Approve | 15878807 | 795 days ago | IN | 0 ETH | 0.00050834 | ||||
Approve | 15878807 | 795 days ago | IN | 0 ETH | 0.00100443 | ||||
Renounce Ownersh... | 15878804 | 795 days ago | IN | 0 ETH | 0.0002236 | ||||
Approve | 15878802 | 795 days ago | IN | 0 ETH | 0.00091136 | ||||
Approve | 15878798 | 795 days ago | IN | 0 ETH | 0.00105853 | ||||
Approve | 15878790 | 795 days ago | IN | 0 ETH | 0.0005291 | ||||
Approve | 15878782 | 795 days ago | IN | 0 ETH | 0.00085042 | ||||
Approve | 15878775 | 795 days ago | IN | 0 ETH | 0.00055634 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
15892806 | 793 days ago | 0.00117877 ETH | ||||
15892806 | 793 days ago | 0.00117877 ETH | ||||
15879774 | 795 days ago | 0.0012085 ETH | ||||
15879774 | 795 days ago | 0.0012085 ETH | ||||
15879706 | 795 days ago | 0.00125515 ETH | ||||
15879706 | 795 days ago | 0.00125515 ETH | ||||
15879197 | 795 days ago | 0.00130284 ETH | ||||
15879197 | 795 days ago | 0.00130284 ETH | ||||
15879197 | 795 days ago | 0.00134668 ETH | ||||
15879197 | 795 days ago | 0.00134668 ETH | ||||
15879197 | 795 days ago | 0.00139133 ETH | ||||
15879197 | 795 days ago | 0.00139133 ETH | ||||
15879076 | 795 days ago | 0.00144895 ETH | ||||
15879076 | 795 days ago | 0.00144895 ETH | ||||
15879053 | 795 days ago | 0.00149446 ETH | ||||
15879053 | 795 days ago | 0.00149446 ETH | ||||
15879052 | 795 days ago | 0.0015445 ETH | ||||
15879052 | 795 days ago | 0.0015445 ETH | ||||
15879040 | 795 days ago | 0.00163977 ETH | ||||
15879040 | 795 days ago | 0.00163977 ETH | ||||
15879034 | 795 days ago | 0.00177492 ETH | ||||
15879034 | 795 days ago | 0.00177492 ETH | ||||
15879029 | 795 days ago | 0.00177492 ETH | ||||
15879029 | 795 days ago | 0.00177492 ETH | ||||
15879027 | 795 days ago | 0.00193015 ETH |
Loading...
Loading
Contract Name:
Obelus
Compiler Version
v0.8.14+commit.80d49f37
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-02 */ // File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.6.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: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol pragma solidity >=0.6.2; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev 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 { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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 amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `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. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // File: contracts/Obelus.sol pragma solidity ^0.8.10; /* $$$$$$\ $$$$$$$\ $$$$$$$$\ $$\ $$\ $$\ $$$$$$\ $$ __$$\ $$ __$$\ $$ _____|$$ | $$ | $$ |$$ __$$\ $$ / $$ |$$ | $$ |$$ | $$ | $$ | $$ |$$ / \__| $$ | $$ |$$$$$$$\ |$$$$$\ $$ | $$ | $$ |\$$$$$$\ $$ | $$ |$$ __$$\ $$ __| $$ | $$ | $$ | \____$$\ $$ | $$ |$$ | $$ |$$ | $$ | $$ | $$ |$$\ $$ | $$$$$$ |$$$$$$$ |$$$$$$$$\ $$$$$$$$\\$$$$$$ |\$$$$$$ | \______/ \_______/ \________|\________|\______/ \______/ “Together we shall not be dividied” https://t.me/obelus_portal https://t.me/obelus_portal https://t.me/obelus_portal https://www.obeluseth.com https://www.obeluseth.com https://www.obeluseth.com All of my plays are 100% safe - Locked & Renounced - No pre-pumps - No funny contract business - Ape and have fun! */ contract Obelus is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketingWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch uint256 public buyTotalFees; uint256 private buyMarketingFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public tokensForMarketing; /******************/ // exlcude from fees and max transaction amount mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor(address wallet1) ERC20("Obelus", "OBELUS") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 30; uint256 _sellMarketingFee = 30; uint256 totalSupply = 1_000_000_000_000 * 1e18; maxTransactionAmount = 1_000_000_000_000 * 1e18; maxWallet = 1_000_000_000_000 * 1e18; swapTokensAtAmount = 45_000_000 * 1e18; buyMarketingFee = _buyMarketingFee; buyTotalFees = buyMarketingFee; sellMarketingFee = _sellMarketingFee; sellTotalFees = sellMarketingFee; marketingWallet = wallet1; // set as marketing wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable {} // once enabled, can never be turned off function enableTrading() external onlyOwner { buyMarketingFee = 920; buyTotalFees = buyMarketingFee; tradingActive = true; swapEnabled = true; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%" ); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _marketingFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyTotalFees = buyMarketingFee; require(buyTotalFees <= 200, "Must keep fees at 20% or less"); } function updateSellFees( uint256 _marketingFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellTotalFees = sellMarketingFee; require(sellTotalFees <= 300, "Must keep fees at 30% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function manualswap(uint256 amount) external { require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount"); swapTokensForEth(amount); } function saveTheDivide() external onlyOwner { maxTransactionAmount = 30_000_000_000 * 1e18; maxWallet = 30_000_000_000 * 1e18; buyMarketingFee = 50; buyTotalFees = buyMarketingFee; sellMarketingFee = 500; sellTotalFees = sellMarketingFee; } function manualsend() external { bool success; (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(1000); tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(1000); tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMarketing; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 amountToSwapForETH = contractBalance; swapTokensForEth(amountToSwapForETH); tokensForMarketing = 0; (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"wallet1","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saveTheDivide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055506000600a60026101000a81548160ff0219169083151502179055503480156200006257600080fd5b5060405162004c3338038062004c33833981810160405281019062000088919062000ac0565b6040518060400160405280600681526020017f4f62656c757300000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4f42454c5553000000000000000000000000000000000000000000000000000081525081600390805190602001906200010c929190620009a6565b50806004908051906020019062000125929190620009a6565b505050620001486200013c620004d460201b60201c565b620004dc60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000174816001620005a260201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021a919062000ac0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000282573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a8919062000ac0565b6040518363ffffffff1660e01b8152600401620002c792919062000b03565b6020604051808303816000875af1158015620002e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030d919062000ac0565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200035560a0516001620005a260201b60201c565b6200036a60a05160016200060d60201b60201c565b6000601e90506000601e905060006c0c9f2c9cd04674edea4000000090506c0c9f2c9cd04674edea400000006007819055506c0c9f2c9cd04674edea400000006009819055506a25391ee35a05c54d00000060088190555082600d81905550600d54600c8190555081600f81905550600f54600e8190555084600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044562000437620006ae60201b60201c565b6001620006d860201b60201c565b62000458306001620006d860201b60201c565b6200046d61dead6001620006d860201b60201c565b6200048f62000481620006ae60201b60201c565b6001620005a260201b60201c565b620004a2306001620005a260201b60201c565b620004b761dead6001620005a260201b60201c565b620004c933826200079360201b60201c565b505050505062000d87565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005b26200090b60201b60201c565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620006e86200090b60201b60201c565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000787919062000b4d565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000805576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007fc9062000bcb565b60405180910390fd5b62000819600083836200099c60201b60201c565b80600260008282546200082d919062000c26565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000884919062000c26565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008eb919062000c94565b60405180910390a36200090760008383620009a160201b60201c565b5050565b6200091b620004d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000941620006ae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200099a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009919062000d01565b60405180910390fd5b565b505050565b505050565b828054620009b49062000d52565b90600052602060002090601f016020900481019282620009d8576000855562000a24565b82601f10620009f357805160ff191683800117855562000a24565b8280016001018555821562000a24579182015b8281111562000a2357825182559160200191906001019062000a06565b5b50905062000a33919062000a37565b5090565b5b8082111562000a5257600081600090555060010162000a38565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a888262000a5b565b9050919050565b62000a9a8162000a7b565b811462000aa657600080fd5b50565b60008151905062000aba8162000a8f565b92915050565b60006020828403121562000ad95762000ad862000a56565b5b600062000ae98482850162000aa9565b91505092915050565b62000afd8162000a7b565b82525050565b600060408201905062000b1a600083018562000af2565b62000b29602083018462000af2565b9392505050565b60008115159050919050565b62000b478162000b30565b82525050565b600060208201905062000b64600083018462000b3c565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000bb3601f8362000b6a565b915062000bc08262000b7b565b602082019050919050565b6000602082019050818103600083015262000be68162000ba4565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c338262000bed565b915062000c408362000bed565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000c785762000c7762000bf7565b5b828201905092915050565b62000c8e8162000bed565b82525050565b600060208201905062000cab600083018462000c83565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ce960208362000b6a565b915062000cf68262000cb1565b602082019050919050565b6000602082019050818103600083015262000d1c8162000cda565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d6b57607f821691505b60208210810362000d815762000d8062000d23565b5b50919050565b60805160a051613e6a62000dc960003960008181610c7a01526110c6015260008181610b36015281816124eb015281816125cc01526125f30152613e6a6000f3fe6080604052600436106102765760003560e01c80637826df171161014f578063b62496f5116100c1578063d85ba0631161007a578063d85ba0631461094f578063dd62ed3e1461097a578063e2f45605146109b7578063eba4c333146109e2578063f2fde38b14610a0b578063f8b45b0514610a345761027d565b8063b62496f51461082d578063bbc0c7421461086a578063c024666814610895578063c18bc195146108be578063c8c8ebe4146108e7578063d257b34f146109125761027d565b8063924de9b711610113578063924de9b71461070d57806395d89b41146107365780639a7a23d614610761578063a457c2d71461078a578063a9059cbb146107c7578063aacebbe3146108045761027d565b80637826df1714610660578063881dce60146106775780638a8c523c146106a05780638da5cb5b146106b757806392136913146106e25761027d565b806349bd5a5e116101e857806370a08231116101ac57806370a0823114610564578063715018a6146105a157806371fc4688146105b8578063751039fc146105e15780637571336a1461060c57806375f0a874146106355761027d565b806349bd5a5e146104a15780634a62bb65146104cc5780636a486a8e146104f75780636ddd1713146105225780636fc3eaec1461054d5761027d565b80631f3fed8f1161023a5780631f3fed8f1461037d578063203e727e146103a857806323b872dd146103d157806327c8f8351461040e578063313ce5671461043957806339509351146104645761027d565b806306fdde0314610282578063095ea7b3146102ad57806310d5de53146102ea5780631694505e1461032757806318160ddd146103525761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a5f565b6040516102a49190612b7c565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612c37565b610af1565b6040516102e19190612c92565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c9190612cad565b610b14565b60405161031e9190612c92565b60405180910390f35b34801561033357600080fd5b5061033c610b34565b6040516103499190612d39565b60405180910390f35b34801561035e57600080fd5b50610367610b58565b6040516103749190612d63565b60405180910390f35b34801561038957600080fd5b50610392610b62565b60405161039f9190612d63565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca9190612d7e565b610b68565b005b3480156103dd57600080fd5b506103f860048036038101906103f39190612dab565b610c03565b6040516104059190612c92565b60405180910390f35b34801561041a57600080fd5b50610423610c32565b6040516104309190612e0d565b60405180910390f35b34801561044557600080fd5b5061044e610c38565b60405161045b9190612e44565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190612c37565b610c41565b6040516104989190612c92565b60405180910390f35b3480156104ad57600080fd5b506104b6610c78565b6040516104c39190612e0d565b60405180910390f35b3480156104d857600080fd5b506104e1610c9c565b6040516104ee9190612c92565b60405180910390f35b34801561050357600080fd5b5061050c610caf565b6040516105199190612d63565b60405180910390f35b34801561052e57600080fd5b50610537610cb5565b6040516105449190612c92565b60405180910390f35b34801561055957600080fd5b50610562610cc8565b005b34801561057057600080fd5b5061058b60048036038101906105869190612cad565b610d5b565b6040516105989190612d63565b60405180910390f35b3480156105ad57600080fd5b506105b6610da3565b005b3480156105c457600080fd5b506105df60048036038101906105da9190612d7e565b610db7565b005b3480156105ed57600080fd5b506105f6610e18565b6040516106039190612c92565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e9190612e8b565b610e44565b005b34801561064157600080fd5b5061064a610ea7565b6040516106579190612e0d565b60405180910390f35b34801561066c57600080fd5b50610675610ecd565b005b34801561068357600080fd5b5061069e60048036038101906106999190612d7e565b610f20565b005b3480156106ac57600080fd5b506106b5610f83565b005b3480156106c357600080fd5b506106cc610fd5565b6040516106d99190612e0d565b60405180910390f35b3480156106ee57600080fd5b506106f7610fff565b6040516107049190612d63565b60405180910390f35b34801561071957600080fd5b50610734600480360381019061072f9190612ecb565b611005565b005b34801561074257600080fd5b5061074b61102a565b6040516107589190612b7c565b60405180910390f35b34801561076d57600080fd5b5061078860048036038101906107839190612e8b565b6110bc565b005b34801561079657600080fd5b506107b160048036038101906107ac9190612c37565b611160565b6040516107be9190612c92565b60405180910390f35b3480156107d357600080fd5b506107ee60048036038101906107e99190612c37565b6111d7565b6040516107fb9190612c92565b60405180910390f35b34801561081057600080fd5b5061082b60048036038101906108269190612cad565b6111fa565b005b34801561083957600080fd5b50610854600480360381019061084f9190612cad565b6112c2565b6040516108619190612c92565b60405180910390f35b34801561087657600080fd5b5061087f6112e2565b60405161088c9190612c92565b60405180910390f35b3480156108a157600080fd5b506108bc60048036038101906108b79190612e8b565b6112f5565b005b3480156108ca57600080fd5b506108e560048036038101906108e09190612d7e565b6113a6565b005b3480156108f357600080fd5b506108fc611441565b6040516109099190612d63565b60405180910390f35b34801561091e57600080fd5b5061093960048036038101906109349190612d7e565b611447565b6040516109469190612c92565b60405180910390f35b34801561095b57600080fd5b50610964611528565b6040516109719190612d63565b60405180910390f35b34801561098657600080fd5b506109a1600480360381019061099c9190612ef8565b61152e565b6040516109ae9190612d63565b60405180910390f35b3480156109c357600080fd5b506109cc6115b5565b6040516109d99190612d63565b60405180910390f35b3480156109ee57600080fd5b50610a096004803603810190610a049190612d7e565b6115bb565b005b348015610a1757600080fd5b50610a326004803603810190610a2d9190612cad565b61161d565b005b348015610a4057600080fd5b50610a496116a0565b604051610a569190612d63565b60405180910390f35b606060038054610a6e90612f67565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9a90612f67565b8015610ae75780601f10610abc57610100808354040283529160200191610ae7565b820191906000526020600020905b815481529060010190602001808311610aca57829003601f168201915b5050505050905090565b600080610afc6116a6565b9050610b098185856116ae565b600191505092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60105481565b610b70611877565b670de0b6b3a76400006103e86001610b86610b58565b610b909190612fc7565b610b9a9190613050565b610ba49190613050565b811015610be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdd906130f3565b60405180910390fd5b670de0b6b3a764000081610bfa9190612fc7565b60078190555050565b600080610c0e6116a6565b9050610c1b8582856118f5565b610c26858585611981565b60019150509392505050565b61dead81565b60006012905090565b600080610c4c6116a6565b9050610c6d818585610c5e858961152e565b610c689190613113565b6116ae565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a60009054906101000a900460ff1681565b600e5481565b600a60029054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610d109061319a565b60006040518083038185875af1925050503d8060008114610d4d576040519150601f19603f3d011682016040523d82523d6000602084013e610d52565b606091505b50508091505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dab611877565b610db56000612386565b565b610dbf611877565b80600d81905550600d54600c8190555060c8600c541115610e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0c906131fb565b60405180910390fd5b50565b6000610e22611877565b6000600a60006101000a81548160ff0219169083151502179055506001905090565b610e4c611877565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ed5611877565b6b60ef6b1aba6f0723300000006007819055506b60ef6b1aba6f0723300000006009819055506032600d81905550600d54600c819055506101f4600f81905550600f54600e81905550565b610f2930610d5b565b8111158015610f385750600081115b610f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6e90613267565b60405180910390fd5b610f808161244c565b50565b610f8b611877565b610398600d81905550600d54600c819055506001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b61100d611877565b80600a60026101000a81548160ff02191690831515021790555050565b60606004805461103990612f67565b80601f016020809104026020016040519081016040528092919081815260200182805461106590612f67565b80156110b25780601f10611087576101008083540402835291602001916110b2565b820191906000526020600020905b81548152906001019060200180831161109557829003601f168201915b5050505050905090565b6110c4611877565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611152576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611149906132f9565b60405180910390fd5b61115c8282612689565b5050565b60008061116b6116a6565b90506000611179828661152e565b9050838110156111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b59061338b565b60405180910390fd5b6111cb82868684036116ae565b60019250505092915050565b6000806111e26116a6565b90506111ef818585611981565b600191505092915050565b611202611877565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60136020528060005260406000206000915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b6112fd611877565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161139a9190612c92565b60405180910390a25050565b6113ae611877565b670de0b6b3a76400006103e860056113c4610b58565b6113ce9190612fc7565b6113d89190613050565b6113e29190613050565b811015611424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141b9061341d565b60405180910390fd5b670de0b6b3a7640000816114389190612fc7565b60098190555050565b60075481565b6000611451611877565b620186a0600161145f610b58565b6114699190612fc7565b6114739190613050565b8210156114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac906134af565b60405180910390fd5b6103e860056114c2610b58565b6114cc9190612fc7565b6114d69190613050565b821115611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150f90613541565b60405180910390fd5b8160088190555060019050919050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6115c3611877565b80600f81905550600f54600e8190555061012c600e54111561161a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611611906135ad565b60405180910390fd5b50565b611625611877565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b9061363f565b60405180910390fd5b61169d81612386565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361171d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611714906136d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178390613763565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161186a9190612d63565b60405180910390a3505050565b61187f6116a6565b73ffffffffffffffffffffffffffffffffffffffff1661189d610fd5565b73ffffffffffffffffffffffffffffffffffffffff16146118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea906137cf565b60405180910390fd5b565b6000611901848461152e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461197b578181101561196d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119649061383b565b60405180910390fd5b61197a84848484036116ae565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e7906138cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a569061395f565b60405180910390fd5b60008103611a7857611a738383600061272a565b612381565b600a60009054906101000a900460ff1615611f7357611a95610fd5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b035750611ad3610fd5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b3c5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b76575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b8f5750600560149054906101000a900460ff16155b15611f7257600a60019054906101000a900460ff16611c8957601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c495750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7f906139cb565b60405180910390fd5b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d2c5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611dd357600754811115611d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6d90613a5d565b60405180910390fd5b600954611d8283610d5b565b82611d8d9190613113565b1115611dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc590613ac9565b60405180910390fd5b611f71565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e765750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ec557600754811115611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb790613b5b565b60405180910390fd5b611f70565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f6f57600954611f2283610d5b565b82611f2d9190613113565b1115611f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6590613ac9565b60405180910390fd5b5b5b5b5b5b6000611f7e30610d5b565b905060006008548210159050808015611fa35750600a60029054906101000a900460ff165b8015611fbc5750600560149054906101000a900460ff16155b80156120125750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120685750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120be5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612102576001600560146101000a81548160ff0219169083151502179055506120e66129a9565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121b85750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121c257600090505b6000811561237157601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561222557506000600e54115b1561228d576122536103e8612245600e5488612aad90919063ffffffff16565b612ac390919063ffffffff16565b9050600e54600f54826122669190612fc7565b6122709190613050565b601060008282546122819190613113565b9250508190555061234d565b601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122e857506000600c54115b1561234c576123166103e8612308600c5488612aad90919063ffffffff16565b612ac390919063ffffffff16565b9050600c54600d54826123299190612fc7565b6123339190613050565b601060008282546123449190613113565b925050819055505b5b60008111156123625761236187308361272a565b5b808561236e9190613b7b565b94505b61237c87878761272a565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff81111561246957612468613baf565b5b6040519080825280602002602001820160405280156124975781602001602082028036833780820191505090505b50905030816000815181106124af576124ae613bde565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125789190613c22565b8160018151811061258c5761258b613bde565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125f1307f0000000000000000000000000000000000000000000000000000000000000000846116ae565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612653959493929190613d48565b600060405180830381600087803b15801561266d57600080fd5b505af1158015612681573d6000803e3d6000fd5b505050505050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612799576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612790906138cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ff9061395f565b60405180910390fd5b612813838383612ad9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289090613e14565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461292c9190613113565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129909190612d63565b60405180910390a36129a3848484612ade565b50505050565b60006129b430610d5b565b9050600060105490506000808314806129cd5750600082145b156129da57505050612aab565b60146008546129e99190612fc7565b831115612a025760146008546129ff9190612fc7565b92505b6000839050612a108161244c565b6000601081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612a5e9061319a565b60006040518083038185875af1925050503d8060008114612a9b576040519150601f19603f3d011682016040523d82523d6000602084013e612aa0565b606091505b505080925050505050505b565b60008183612abb9190612fc7565b905092915050565b60008183612ad19190613050565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b1d578082015181840152602081019050612b02565b83811115612b2c576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b4e82612ae3565b612b588185612aee565b9350612b68818560208601612aff565b612b7181612b32565b840191505092915050565b60006020820190508181036000830152612b968184612b43565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bce82612ba3565b9050919050565b612bde81612bc3565b8114612be957600080fd5b50565b600081359050612bfb81612bd5565b92915050565b6000819050919050565b612c1481612c01565b8114612c1f57600080fd5b50565b600081359050612c3181612c0b565b92915050565b60008060408385031215612c4e57612c4d612b9e565b5b6000612c5c85828601612bec565b9250506020612c6d85828601612c22565b9150509250929050565b60008115159050919050565b612c8c81612c77565b82525050565b6000602082019050612ca76000830184612c83565b92915050565b600060208284031215612cc357612cc2612b9e565b5b6000612cd184828501612bec565b91505092915050565b6000819050919050565b6000612cff612cfa612cf584612ba3565b612cda565b612ba3565b9050919050565b6000612d1182612ce4565b9050919050565b6000612d2382612d06565b9050919050565b612d3381612d18565b82525050565b6000602082019050612d4e6000830184612d2a565b92915050565b612d5d81612c01565b82525050565b6000602082019050612d786000830184612d54565b92915050565b600060208284031215612d9457612d93612b9e565b5b6000612da284828501612c22565b91505092915050565b600080600060608486031215612dc457612dc3612b9e565b5b6000612dd286828701612bec565b9350506020612de386828701612bec565b9250506040612df486828701612c22565b9150509250925092565b612e0781612bc3565b82525050565b6000602082019050612e226000830184612dfe565b92915050565b600060ff82169050919050565b612e3e81612e28565b82525050565b6000602082019050612e596000830184612e35565b92915050565b612e6881612c77565b8114612e7357600080fd5b50565b600081359050612e8581612e5f565b92915050565b60008060408385031215612ea257612ea1612b9e565b5b6000612eb085828601612bec565b9250506020612ec185828601612e76565b9150509250929050565b600060208284031215612ee157612ee0612b9e565b5b6000612eef84828501612e76565b91505092915050565b60008060408385031215612f0f57612f0e612b9e565b5b6000612f1d85828601612bec565b9250506020612f2e85828601612bec565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f7f57607f821691505b602082108103612f9257612f91612f38565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fd282612c01565b9150612fdd83612c01565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561301657613015612f98565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061305b82612c01565b915061306683612c01565b92508261307657613075613021565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006130dd602f83612aee565b91506130e882613081565b604082019050919050565b6000602082019050818103600083015261310c816130d0565b9050919050565b600061311e82612c01565b915061312983612c01565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561315e5761315d612f98565b5b828201905092915050565b600081905092915050565b50565b6000613184600083613169565b915061318f82613174565b600082019050919050565b60006131a582613177565b9150819050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b60006131e5601d83612aee565b91506131f0826131af565b602082019050919050565b60006020820190508181036000830152613214816131d8565b9050919050565b7f57726f6e6720616d6f756e740000000000000000000000000000000000000000600082015250565b6000613251600c83612aee565b915061325c8261321b565b602082019050919050565b6000602082019050818103600083015261328081613244565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006132e3603983612aee565b91506132ee82613287565b604082019050919050565b60006020820190508181036000830152613312816132d6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613375602583612aee565b915061338082613319565b604082019050919050565b600060208201905081810360008301526133a481613368565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613407602483612aee565b9150613412826133ab565b604082019050919050565b60006020820190508181036000830152613436816133fa565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613499603583612aee565b91506134a48261343d565b604082019050919050565b600060208201905081810360008301526134c88161348c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061352b603483612aee565b9150613536826134cf565b604082019050919050565b6000602082019050818103600083015261355a8161351e565b9050919050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000613597601d83612aee565b91506135a282613561565b602082019050919050565b600060208201905081810360008301526135c68161358a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613629602683612aee565b9150613634826135cd565b604082019050919050565b600060208201905081810360008301526136588161361c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006136bb602483612aee565b91506136c68261365f565b604082019050919050565b600060208201905081810360008301526136ea816136ae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061374d602283612aee565b9150613758826136f1565b604082019050919050565b6000602082019050818103600083015261377c81613740565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137b9602083612aee565b91506137c482613783565b602082019050919050565b600060208201905081810360008301526137e8816137ac565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613825601d83612aee565b9150613830826137ef565b602082019050919050565b6000602082019050818103600083015261385481613818565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006138b7602583612aee565b91506138c28261385b565b604082019050919050565b600060208201905081810360008301526138e6816138aa565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613949602383612aee565b9150613954826138ed565b604082019050919050565b600060208201905081810360008301526139788161393c565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006139b5601683612aee565b91506139c08261397f565b602082019050919050565b600060208201905081810360008301526139e4816139a8565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613a47603583612aee565b9150613a52826139eb565b604082019050919050565b60006020820190508181036000830152613a7681613a3a565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613ab3601383612aee565b9150613abe82613a7d565b602082019050919050565b60006020820190508181036000830152613ae281613aa6565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613b45603683612aee565b9150613b5082613ae9565b604082019050919050565b60006020820190508181036000830152613b7481613b38565b9050919050565b6000613b8682612c01565b9150613b9183612c01565b925082821015613ba457613ba3612f98565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613c1c81612bd5565b92915050565b600060208284031215613c3857613c37612b9e565b5b6000613c4684828501613c0d565b91505092915050565b6000819050919050565b6000613c74613c6f613c6a84613c4f565b612cda565b612c01565b9050919050565b613c8481613c59565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613cbf81612bc3565b82525050565b6000613cd18383613cb6565b60208301905092915050565b6000602082019050919050565b6000613cf582613c8a565b613cff8185613c95565b9350613d0a83613ca6565b8060005b83811015613d3b578151613d228882613cc5565b9750613d2d83613cdd565b925050600181019050613d0e565b5085935050505092915050565b600060a082019050613d5d6000830188612d54565b613d6a6020830187613c7b565b8181036040830152613d7c8186613cea565b9050613d8b6060830185612dfe565b613d986080830184612d54565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613dfe602683612aee565b9150613e0982613da2565b604082019050919050565b60006020820190508181036000830152613e2d81613df1565b905091905056fea264697066735822122034dd5feeadc1a0c77147ac9b7efc6d413e00bf9d404234ce28c5041042822d3564736f6c634300080e0033000000000000000000000000d2595411a8f92b5001ec8babd6995354ce8adcd5
Deployed Bytecode
0x6080604052600436106102765760003560e01c80637826df171161014f578063b62496f5116100c1578063d85ba0631161007a578063d85ba0631461094f578063dd62ed3e1461097a578063e2f45605146109b7578063eba4c333146109e2578063f2fde38b14610a0b578063f8b45b0514610a345761027d565b8063b62496f51461082d578063bbc0c7421461086a578063c024666814610895578063c18bc195146108be578063c8c8ebe4146108e7578063d257b34f146109125761027d565b8063924de9b711610113578063924de9b71461070d57806395d89b41146107365780639a7a23d614610761578063a457c2d71461078a578063a9059cbb146107c7578063aacebbe3146108045761027d565b80637826df1714610660578063881dce60146106775780638a8c523c146106a05780638da5cb5b146106b757806392136913146106e25761027d565b806349bd5a5e116101e857806370a08231116101ac57806370a0823114610564578063715018a6146105a157806371fc4688146105b8578063751039fc146105e15780637571336a1461060c57806375f0a874146106355761027d565b806349bd5a5e146104a15780634a62bb65146104cc5780636a486a8e146104f75780636ddd1713146105225780636fc3eaec1461054d5761027d565b80631f3fed8f1161023a5780631f3fed8f1461037d578063203e727e146103a857806323b872dd146103d157806327c8f8351461040e578063313ce5671461043957806339509351146104645761027d565b806306fdde0314610282578063095ea7b3146102ad57806310d5de53146102ea5780631694505e1461032757806318160ddd146103525761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a5f565b6040516102a49190612b7c565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612c37565b610af1565b6040516102e19190612c92565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c9190612cad565b610b14565b60405161031e9190612c92565b60405180910390f35b34801561033357600080fd5b5061033c610b34565b6040516103499190612d39565b60405180910390f35b34801561035e57600080fd5b50610367610b58565b6040516103749190612d63565b60405180910390f35b34801561038957600080fd5b50610392610b62565b60405161039f9190612d63565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca9190612d7e565b610b68565b005b3480156103dd57600080fd5b506103f860048036038101906103f39190612dab565b610c03565b6040516104059190612c92565b60405180910390f35b34801561041a57600080fd5b50610423610c32565b6040516104309190612e0d565b60405180910390f35b34801561044557600080fd5b5061044e610c38565b60405161045b9190612e44565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190612c37565b610c41565b6040516104989190612c92565b60405180910390f35b3480156104ad57600080fd5b506104b6610c78565b6040516104c39190612e0d565b60405180910390f35b3480156104d857600080fd5b506104e1610c9c565b6040516104ee9190612c92565b60405180910390f35b34801561050357600080fd5b5061050c610caf565b6040516105199190612d63565b60405180910390f35b34801561052e57600080fd5b50610537610cb5565b6040516105449190612c92565b60405180910390f35b34801561055957600080fd5b50610562610cc8565b005b34801561057057600080fd5b5061058b60048036038101906105869190612cad565b610d5b565b6040516105989190612d63565b60405180910390f35b3480156105ad57600080fd5b506105b6610da3565b005b3480156105c457600080fd5b506105df60048036038101906105da9190612d7e565b610db7565b005b3480156105ed57600080fd5b506105f6610e18565b6040516106039190612c92565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e9190612e8b565b610e44565b005b34801561064157600080fd5b5061064a610ea7565b6040516106579190612e0d565b60405180910390f35b34801561066c57600080fd5b50610675610ecd565b005b34801561068357600080fd5b5061069e60048036038101906106999190612d7e565b610f20565b005b3480156106ac57600080fd5b506106b5610f83565b005b3480156106c357600080fd5b506106cc610fd5565b6040516106d99190612e0d565b60405180910390f35b3480156106ee57600080fd5b506106f7610fff565b6040516107049190612d63565b60405180910390f35b34801561071957600080fd5b50610734600480360381019061072f9190612ecb565b611005565b005b34801561074257600080fd5b5061074b61102a565b6040516107589190612b7c565b60405180910390f35b34801561076d57600080fd5b5061078860048036038101906107839190612e8b565b6110bc565b005b34801561079657600080fd5b506107b160048036038101906107ac9190612c37565b611160565b6040516107be9190612c92565b60405180910390f35b3480156107d357600080fd5b506107ee60048036038101906107e99190612c37565b6111d7565b6040516107fb9190612c92565b60405180910390f35b34801561081057600080fd5b5061082b60048036038101906108269190612cad565b6111fa565b005b34801561083957600080fd5b50610854600480360381019061084f9190612cad565b6112c2565b6040516108619190612c92565b60405180910390f35b34801561087657600080fd5b5061087f6112e2565b60405161088c9190612c92565b60405180910390f35b3480156108a157600080fd5b506108bc60048036038101906108b79190612e8b565b6112f5565b005b3480156108ca57600080fd5b506108e560048036038101906108e09190612d7e565b6113a6565b005b3480156108f357600080fd5b506108fc611441565b6040516109099190612d63565b60405180910390f35b34801561091e57600080fd5b5061093960048036038101906109349190612d7e565b611447565b6040516109469190612c92565b60405180910390f35b34801561095b57600080fd5b50610964611528565b6040516109719190612d63565b60405180910390f35b34801561098657600080fd5b506109a1600480360381019061099c9190612ef8565b61152e565b6040516109ae9190612d63565b60405180910390f35b3480156109c357600080fd5b506109cc6115b5565b6040516109d99190612d63565b60405180910390f35b3480156109ee57600080fd5b50610a096004803603810190610a049190612d7e565b6115bb565b005b348015610a1757600080fd5b50610a326004803603810190610a2d9190612cad565b61161d565b005b348015610a4057600080fd5b50610a496116a0565b604051610a569190612d63565b60405180910390f35b606060038054610a6e90612f67565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9a90612f67565b8015610ae75780601f10610abc57610100808354040283529160200191610ae7565b820191906000526020600020905b815481529060010190602001808311610aca57829003601f168201915b5050505050905090565b600080610afc6116a6565b9050610b098185856116ae565b600191505092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60105481565b610b70611877565b670de0b6b3a76400006103e86001610b86610b58565b610b909190612fc7565b610b9a9190613050565b610ba49190613050565b811015610be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdd906130f3565b60405180910390fd5b670de0b6b3a764000081610bfa9190612fc7565b60078190555050565b600080610c0e6116a6565b9050610c1b8582856118f5565b610c26858585611981565b60019150509392505050565b61dead81565b60006012905090565b600080610c4c6116a6565b9050610c6d818585610c5e858961152e565b610c689190613113565b6116ae565b600191505092915050565b7f00000000000000000000000007f867f39d221b3a9bccc9ff38dc9bb2190c490981565b600a60009054906101000a900460ff1681565b600e5481565b600a60029054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610d109061319a565b60006040518083038185875af1925050503d8060008114610d4d576040519150601f19603f3d011682016040523d82523d6000602084013e610d52565b606091505b50508091505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dab611877565b610db56000612386565b565b610dbf611877565b80600d81905550600d54600c8190555060c8600c541115610e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0c906131fb565b60405180910390fd5b50565b6000610e22611877565b6000600a60006101000a81548160ff0219169083151502179055506001905090565b610e4c611877565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ed5611877565b6b60ef6b1aba6f0723300000006007819055506b60ef6b1aba6f0723300000006009819055506032600d81905550600d54600c819055506101f4600f81905550600f54600e81905550565b610f2930610d5b565b8111158015610f385750600081115b610f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6e90613267565b60405180910390fd5b610f808161244c565b50565b610f8b611877565b610398600d81905550600d54600c819055506001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b61100d611877565b80600a60026101000a81548160ff02191690831515021790555050565b60606004805461103990612f67565b80601f016020809104026020016040519081016040528092919081815260200182805461106590612f67565b80156110b25780601f10611087576101008083540402835291602001916110b2565b820191906000526020600020905b81548152906001019060200180831161109557829003601f168201915b5050505050905090565b6110c4611877565b7f00000000000000000000000007f867f39d221b3a9bccc9ff38dc9bb2190c490973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611152576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611149906132f9565b60405180910390fd5b61115c8282612689565b5050565b60008061116b6116a6565b90506000611179828661152e565b9050838110156111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b59061338b565b60405180910390fd5b6111cb82868684036116ae565b60019250505092915050565b6000806111e26116a6565b90506111ef818585611981565b600191505092915050565b611202611877565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60136020528060005260406000206000915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b6112fd611877565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161139a9190612c92565b60405180910390a25050565b6113ae611877565b670de0b6b3a76400006103e860056113c4610b58565b6113ce9190612fc7565b6113d89190613050565b6113e29190613050565b811015611424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141b9061341d565b60405180910390fd5b670de0b6b3a7640000816114389190612fc7565b60098190555050565b60075481565b6000611451611877565b620186a0600161145f610b58565b6114699190612fc7565b6114739190613050565b8210156114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac906134af565b60405180910390fd5b6103e860056114c2610b58565b6114cc9190612fc7565b6114d69190613050565b821115611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150f90613541565b60405180910390fd5b8160088190555060019050919050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6115c3611877565b80600f81905550600f54600e8190555061012c600e54111561161a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611611906135ad565b60405180910390fd5b50565b611625611877565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b9061363f565b60405180910390fd5b61169d81612386565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361171d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611714906136d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178390613763565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161186a9190612d63565b60405180910390a3505050565b61187f6116a6565b73ffffffffffffffffffffffffffffffffffffffff1661189d610fd5565b73ffffffffffffffffffffffffffffffffffffffff16146118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea906137cf565b60405180910390fd5b565b6000611901848461152e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461197b578181101561196d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119649061383b565b60405180910390fd5b61197a84848484036116ae565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e7906138cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a569061395f565b60405180910390fd5b60008103611a7857611a738383600061272a565b612381565b600a60009054906101000a900460ff1615611f7357611a95610fd5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b035750611ad3610fd5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b3c5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b76575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b8f5750600560149054906101000a900460ff16155b15611f7257600a60019054906101000a900460ff16611c8957601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c495750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7f906139cb565b60405180910390fd5b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d2c5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611dd357600754811115611d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6d90613a5d565b60405180910390fd5b600954611d8283610d5b565b82611d8d9190613113565b1115611dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc590613ac9565b60405180910390fd5b611f71565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e765750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ec557600754811115611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb790613b5b565b60405180910390fd5b611f70565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f6f57600954611f2283610d5b565b82611f2d9190613113565b1115611f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6590613ac9565b60405180910390fd5b5b5b5b5b5b6000611f7e30610d5b565b905060006008548210159050808015611fa35750600a60029054906101000a900460ff165b8015611fbc5750600560149054906101000a900460ff16155b80156120125750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120685750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120be5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612102576001600560146101000a81548160ff0219169083151502179055506120e66129a9565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121b85750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121c257600090505b6000811561237157601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561222557506000600e54115b1561228d576122536103e8612245600e5488612aad90919063ffffffff16565b612ac390919063ffffffff16565b9050600e54600f54826122669190612fc7565b6122709190613050565b601060008282546122819190613113565b9250508190555061234d565b601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122e857506000600c54115b1561234c576123166103e8612308600c5488612aad90919063ffffffff16565b612ac390919063ffffffff16565b9050600c54600d54826123299190612fc7565b6123339190613050565b601060008282546123449190613113565b925050819055505b5b60008111156123625761236187308361272a565b5b808561236e9190613b7b565b94505b61237c87878761272a565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff81111561246957612468613baf565b5b6040519080825280602002602001820160405280156124975781602001602082028036833780820191505090505b50905030816000815181106124af576124ae613bde565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125789190613c22565b8160018151811061258c5761258b613bde565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125f1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846116ae565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612653959493929190613d48565b600060405180830381600087803b15801561266d57600080fd5b505af1158015612681573d6000803e3d6000fd5b505050505050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612799576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612790906138cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ff9061395f565b60405180910390fd5b612813838383612ad9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289090613e14565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461292c9190613113565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129909190612d63565b60405180910390a36129a3848484612ade565b50505050565b60006129b430610d5b565b9050600060105490506000808314806129cd5750600082145b156129da57505050612aab565b60146008546129e99190612fc7565b831115612a025760146008546129ff9190612fc7565b92505b6000839050612a108161244c565b6000601081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612a5e9061319a565b60006040518083038185875af1925050503d8060008114612a9b576040519150601f19603f3d011682016040523d82523d6000602084013e612aa0565b606091505b505080925050505050505b565b60008183612abb9190612fc7565b905092915050565b60008183612ad19190613050565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b1d578082015181840152602081019050612b02565b83811115612b2c576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b4e82612ae3565b612b588185612aee565b9350612b68818560208601612aff565b612b7181612b32565b840191505092915050565b60006020820190508181036000830152612b968184612b43565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bce82612ba3565b9050919050565b612bde81612bc3565b8114612be957600080fd5b50565b600081359050612bfb81612bd5565b92915050565b6000819050919050565b612c1481612c01565b8114612c1f57600080fd5b50565b600081359050612c3181612c0b565b92915050565b60008060408385031215612c4e57612c4d612b9e565b5b6000612c5c85828601612bec565b9250506020612c6d85828601612c22565b9150509250929050565b60008115159050919050565b612c8c81612c77565b82525050565b6000602082019050612ca76000830184612c83565b92915050565b600060208284031215612cc357612cc2612b9e565b5b6000612cd184828501612bec565b91505092915050565b6000819050919050565b6000612cff612cfa612cf584612ba3565b612cda565b612ba3565b9050919050565b6000612d1182612ce4565b9050919050565b6000612d2382612d06565b9050919050565b612d3381612d18565b82525050565b6000602082019050612d4e6000830184612d2a565b92915050565b612d5d81612c01565b82525050565b6000602082019050612d786000830184612d54565b92915050565b600060208284031215612d9457612d93612b9e565b5b6000612da284828501612c22565b91505092915050565b600080600060608486031215612dc457612dc3612b9e565b5b6000612dd286828701612bec565b9350506020612de386828701612bec565b9250506040612df486828701612c22565b9150509250925092565b612e0781612bc3565b82525050565b6000602082019050612e226000830184612dfe565b92915050565b600060ff82169050919050565b612e3e81612e28565b82525050565b6000602082019050612e596000830184612e35565b92915050565b612e6881612c77565b8114612e7357600080fd5b50565b600081359050612e8581612e5f565b92915050565b60008060408385031215612ea257612ea1612b9e565b5b6000612eb085828601612bec565b9250506020612ec185828601612e76565b9150509250929050565b600060208284031215612ee157612ee0612b9e565b5b6000612eef84828501612e76565b91505092915050565b60008060408385031215612f0f57612f0e612b9e565b5b6000612f1d85828601612bec565b9250506020612f2e85828601612bec565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f7f57607f821691505b602082108103612f9257612f91612f38565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fd282612c01565b9150612fdd83612c01565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561301657613015612f98565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061305b82612c01565b915061306683612c01565b92508261307657613075613021565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006130dd602f83612aee565b91506130e882613081565b604082019050919050565b6000602082019050818103600083015261310c816130d0565b9050919050565b600061311e82612c01565b915061312983612c01565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561315e5761315d612f98565b5b828201905092915050565b600081905092915050565b50565b6000613184600083613169565b915061318f82613174565b600082019050919050565b60006131a582613177565b9150819050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b60006131e5601d83612aee565b91506131f0826131af565b602082019050919050565b60006020820190508181036000830152613214816131d8565b9050919050565b7f57726f6e6720616d6f756e740000000000000000000000000000000000000000600082015250565b6000613251600c83612aee565b915061325c8261321b565b602082019050919050565b6000602082019050818103600083015261328081613244565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006132e3603983612aee565b91506132ee82613287565b604082019050919050565b60006020820190508181036000830152613312816132d6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613375602583612aee565b915061338082613319565b604082019050919050565b600060208201905081810360008301526133a481613368565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613407602483612aee565b9150613412826133ab565b604082019050919050565b60006020820190508181036000830152613436816133fa565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613499603583612aee565b91506134a48261343d565b604082019050919050565b600060208201905081810360008301526134c88161348c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061352b603483612aee565b9150613536826134cf565b604082019050919050565b6000602082019050818103600083015261355a8161351e565b9050919050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000613597601d83612aee565b91506135a282613561565b602082019050919050565b600060208201905081810360008301526135c68161358a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613629602683612aee565b9150613634826135cd565b604082019050919050565b600060208201905081810360008301526136588161361c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006136bb602483612aee565b91506136c68261365f565b604082019050919050565b600060208201905081810360008301526136ea816136ae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061374d602283612aee565b9150613758826136f1565b604082019050919050565b6000602082019050818103600083015261377c81613740565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137b9602083612aee565b91506137c482613783565b602082019050919050565b600060208201905081810360008301526137e8816137ac565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613825601d83612aee565b9150613830826137ef565b602082019050919050565b6000602082019050818103600083015261385481613818565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006138b7602583612aee565b91506138c28261385b565b604082019050919050565b600060208201905081810360008301526138e6816138aa565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613949602383612aee565b9150613954826138ed565b604082019050919050565b600060208201905081810360008301526139788161393c565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006139b5601683612aee565b91506139c08261397f565b602082019050919050565b600060208201905081810360008301526139e4816139a8565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613a47603583612aee565b9150613a52826139eb565b604082019050919050565b60006020820190508181036000830152613a7681613a3a565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613ab3601383612aee565b9150613abe82613a7d565b602082019050919050565b60006020820190508181036000830152613ae281613aa6565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613b45603683612aee565b9150613b5082613ae9565b604082019050919050565b60006020820190508181036000830152613b7481613b38565b9050919050565b6000613b8682612c01565b9150613b9183612c01565b925082821015613ba457613ba3612f98565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613c1c81612bd5565b92915050565b600060208284031215613c3857613c37612b9e565b5b6000613c4684828501613c0d565b91505092915050565b6000819050919050565b6000613c74613c6f613c6a84613c4f565b612cda565b612c01565b9050919050565b613c8481613c59565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613cbf81612bc3565b82525050565b6000613cd18383613cb6565b60208301905092915050565b6000602082019050919050565b6000613cf582613c8a565b613cff8185613c95565b9350613d0a83613ca6565b8060005b83811015613d3b578151613d228882613cc5565b9750613d2d83613cdd565b925050600181019050613d0e565b5085935050505092915050565b600060a082019050613d5d6000830188612d54565b613d6a6020830187613c7b565b8181036040830152613d7c8186613cea565b9050613d8b6060830185612dfe565b613d986080830184612d54565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613dfe602683612aee565b9150613e0982613da2565b604082019050919050565b60006020820190508181036000830152613e2d81613df1565b905091905056fea264697066735822122034dd5feeadc1a0c77147ac9b7efc6d413e00bf9d404234ce28c5041042822d3564736f6c634300080e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d2595411a8f92b5001ec8babd6995354ce8adcd5
-----Decoded View---------------
Arg [0] : wallet1 (address): 0xd2595411A8f92b5001Ec8BaBd6995354Ce8ADCd5
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d2595411a8f92b5001ec8babd6995354ce8adcd5
Deployed Bytecode Sourcemap
36725:12566:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24768:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27119:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37781:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36801:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25888:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37599:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41304:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27900:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36904:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25730:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28604:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36859:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37150:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37524:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37230:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43402:174;;;;;;;;;;;;;:::i;:::-;;26059:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18191:103;;;;;;;;;;;;;:::i;:::-;;42222:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40606:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41851:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36996:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43101:293;;;;;;;;;;;;;:::i;:::-;;42921:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40369:185;;;;;;;;;;;;;:::i;:::-;;17543:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37559:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42114:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24987:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43584:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29345:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26392:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44092:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38002:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37190:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42731:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41587:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37035:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40799:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37450:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26648:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37077:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42474:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18449:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37117:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24768:100;24822:13;24855:5;24848:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24768:100;:::o;27119:201::-;27202:4;27219:13;27235:12;:10;:12::i;:::-;27219:28;;27258:32;27267:5;27274:7;27283:6;27258:8;:32::i;:::-;27308:4;27301:11;;;27119:201;;;;:::o;37781:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;36801:51::-;;;:::o;25888:108::-;25949:7;25976:12;;25969:19;;25888:108;:::o;37599:33::-;;;;:::o;41304:275::-;17429:13;:11;:13::i;:::-;41441:4:::1;41433;41428:1;41412:13;:11;:13::i;:::-;:17;;;;:::i;:::-;41411:26;;;;:::i;:::-;41410:35;;;;:::i;:::-;41400:6;:45;;41378:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;41564:6;41554;:17;;;;:::i;:::-;41531:20;:40;;;;41304:275:::0;:::o;27900:295::-;28031:4;28048:15;28066:12;:10;:12::i;:::-;28048:30;;28089:38;28105:4;28111:7;28120:6;28089:15;:38::i;:::-;28138:27;28148:4;28154:2;28158:6;28138:9;:27::i;:::-;28183:4;28176:11;;;27900:295;;;;;:::o;36904:53::-;36950:6;36904:53;:::o;25730:93::-;25788:5;25813:2;25806:9;;25730:93;:::o;28604:238::-;28692:4;28709:13;28725:12;:10;:12::i;:::-;28709:28;;28748:64;28757:5;28764:7;28801:10;28773:25;28783:5;28790:7;28773:9;:25::i;:::-;:38;;;;:::i;:::-;28748:8;:64::i;:::-;28830:4;28823:11;;;28604:238;;;;:::o;36859:38::-;;;:::o;37150:33::-;;;;;;;;;;;;;:::o;37524:28::-;;;;:::o;37230:31::-;;;;;;;;;;;;;:::o;43402:174::-;43444:12;43489:15;;;;;;;;;;;43481:29;;43532:21;43481:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43467:101;;;;;43433:143;43402:174::o;26059:127::-;26133:7;26160:9;:18;26170:7;26160:18;;;;;;;;;;;;;;;;26153:25;;26059:127;;;:::o;18191:103::-;17429:13;:11;:13::i;:::-;18256:30:::1;18283:1;18256:18;:30::i;:::-;18191:103::o:0;42222:244::-;17429:13;:11;:13::i;:::-;42332::::1;42314:15;:31;;;;42371:15;;42356:12;:30;;;;42421:3;42405:12;;:19;;42397:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;42222:244:::0;:::o;40606:121::-;40658:4;17429:13;:11;:13::i;:::-;40692:5:::1;40675:14;;:22;;;;;;;;;;;;;;;;;;40715:4;40708:11;;40606:121:::0;:::o;41851:167::-;17429:13;:11;:13::i;:::-;42006:4:::1;41964:31;:39;41996:6;41964:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;41851:167:::0;;:::o;36996:30::-;;;;;;;;;;;;;:::o;43101:293::-;17429:13;:11;:13::i;:::-;43177:21:::1;43154:20;:44;;;;43219:21;43207:9;:33;;;;43269:2;43251:15;:20;;;;43295:15;;43280:12;:30;;;;43340:3;43321:16;:22;;;;43368:16;;43352:13;:32;;;;43101:293::o:0;42921:172::-;42995:24;43013:4;42995:9;:24::i;:::-;42985:6;:34;;:48;;;;;43032:1;43023:6;:10;42985:48;42977:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;43061:24;43078:6;43061:16;:24::i;:::-;42921:172;:::o;40369:185::-;17429:13;:11;:13::i;:::-;40442:3:::1;40424:15;:21;;;;40471:15;;40456:12;:30;;;;40513:4;40497:13;;:20;;;;;;;;;;;;;;;;;;40542:4;40528:11;;:18;;;;;;;;;;;;;;;;;;40369:185::o:0;17543:87::-;17589:7;17616:6;;;;;;;;;;;17609:13;;17543:87;:::o;37559:31::-;;;;:::o;42114:100::-;17429:13;:11;:13::i;:::-;42199:7:::1;42185:11;;:21;;;;;;;;;;;;;;;;;;42114:100:::0;:::o;24987:104::-;25043:13;25076:7;25069:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24987:104;:::o;43584:304::-;17429:13;:11;:13::i;:::-;43728::::1;43720:21;;:4;:21;;::::0;43698:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;43839:41;43868:4;43874:5;43839:28;:41::i;:::-;43584:304:::0;;:::o;29345:436::-;29438:4;29455:13;29471:12;:10;:12::i;:::-;29455:28;;29494:24;29521:25;29531:5;29538:7;29521:9;:25::i;:::-;29494:52;;29585:15;29565:16;:35;;29557:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;29678:60;29687:5;29694:7;29722:15;29703:16;:34;29678:8;:60::i;:::-;29769:4;29762:11;;;;29345:436;;;;:::o;26392:193::-;26471:4;26488:13;26504:12;:10;:12::i;:::-;26488:28;;26527;26537:5;26544:2;26548:6;26527:9;:28::i;:::-;26573:4;26566:11;;;26392:193;;;;:::o;44092:231::-;17429:13;:11;:13::i;:::-;44252:15:::1;;;;;;;;;;;44209:59;;44232:18;44209:59;;;;;;;;;;;;44297:18;44279:15;;:36;;;;;;;;;;;;;;;;;;44092:231:::0;:::o;38002:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;37190:33::-;;;;;;;;;;;;;:::o;42731:182::-;17429:13;:11;:13::i;:::-;42847:8:::1;42816:19;:28;42836:7;42816:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;42887:7;42871:34;;;42896:8;42871:34;;;;;;:::i;:::-;;;;;;;;42731:182:::0;;:::o;41587:256::-;17429:13;:11;:13::i;:::-;41727:4:::1;41719;41714:1;41698:13;:11;:13::i;:::-;:17;;;;:::i;:::-;41697:26;;;;:::i;:::-;41696:35;;;;:::i;:::-;41686:6;:45;;41664:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;41828:6;41818;:17;;;;:::i;:::-;41806:9;:29;;;;41587:256:::0;:::o;37035:35::-;;;;:::o;40799:497::-;40907:4;17429:13;:11;:13::i;:::-;40986:6:::1;40981:1;40965:13;:11;:13::i;:::-;:17;;;;:::i;:::-;40964:28;;;;:::i;:::-;40951:9;:41;;40929:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;41141:4;41136:1;41120:13;:11;:13::i;:::-;:17;;;;:::i;:::-;41119:26;;;;:::i;:::-;41106:9;:39;;41084:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;41257:9;41236:18;:30;;;;41284:4;41277:11;;40799:497:::0;;;:::o;37450:27::-;;;;:::o;26648:151::-;26737:7;26764:11;:18;26776:5;26764:18;;;;;;;;;;;;;;;:27;26783:7;26764:27;;;;;;;;;;;;;;;;26757:34;;26648:151;;;;:::o;37077:33::-;;;;:::o;42474:249::-;17429:13;:11;:13::i;:::-;42586::::1;42567:16;:32;;;;42626:16;;42610:13;:32;;;;42678:3;42661:13;;:20;;42653:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;42474:249:::0;:::o;18449:201::-;17429:13;:11;:13::i;:::-;18558:1:::1;18538:22;;:8;:22;;::::0;18530:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18614:28;18633:8;18614:18;:28::i;:::-;18449:201:::0;:::o;37117:24::-;;;;:::o;16094:98::-;16147:7;16174:10;16167:17;;16094:98;:::o;32970:380::-;33123:1;33106:19;;:5;:19;;;33098:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33204:1;33185:21;;:7;:21;;;33177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33288:6;33258:11;:18;33270:5;33258:18;;;;;;;;;;;;;;;:27;33277:7;33258:27;;;;;;;;;;;;;;;:36;;;;33326:7;33310:32;;33319:5;33310:32;;;33335:6;33310:32;;;;;;:::i;:::-;;;;;;;;32970:380;;;:::o;17708:132::-;17783:12;:10;:12::i;:::-;17772:23;;:7;:5;:7::i;:::-;:23;;;17764:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17708:132::o;33641:453::-;33776:24;33803:25;33813:5;33820:7;33803:9;:25::i;:::-;33776:52;;33863:17;33843:16;:37;33839:248;;33925:6;33905:16;:26;;33897:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34009:51;34018:5;34025:7;34053:6;34034:16;:25;34009:8;:51::i;:::-;33839:248;33765:329;33641:453;;;:::o;44331:3626::-;44479:1;44463:18;;:4;:18;;;44455:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44556:1;44542:16;;:2;:16;;;44534:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;44625:1;44615:6;:11;44611:93;;44643:28;44659:4;44665:2;44669:1;44643:15;:28::i;:::-;44686:7;;44611:93;44720:14;;;;;;;;;;;44716:1694;;;44781:7;:5;:7::i;:::-;44773:15;;:4;:15;;;;:49;;;;;44815:7;:5;:7::i;:::-;44809:13;;:2;:13;;;;44773:49;:86;;;;;44857:1;44843:16;;:2;:16;;;;44773:86;:128;;;;;44894:6;44880:21;;:2;:21;;;;44773:128;:158;;;;;44923:8;;;;;;;;;;;44922:9;44773:158;44751:1648;;;44971:13;;;;;;;;;;;44966:223;;45043:19;:25;45063:4;45043:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;45072:19;:23;45092:2;45072:23;;;;;;;;;;;;;;;;;;;;;;;;;45043:52;45009:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;44966:223;45263:25;:31;45289:4;45263:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;45320:31;:35;45352:2;45320:35;;;;;;;;;;;;;;;;;;;;;;;;;45319:36;45263:92;45237:1147;;;45442:20;;45432:6;:30;;45398:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;45650:9;;45633:13;45643:2;45633:9;:13::i;:::-;45624:6;:22;;;;:::i;:::-;:35;;45590:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;45237:1147;;;45828:25;:29;45854:2;45828:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;45883:31;:37;45915:4;45883:37;;;;;;;;;;;;;;;;;;;;;;;;;45882:38;45828:92;45802:582;;;46007:20;;45997:6;:30;;45963:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;45802:582;;;46164:31;:35;46196:2;46164:35;;;;;;;;;;;;;;;;;;;;;;;;;46159:225;;46284:9;;46267:13;46277:2;46267:9;:13::i;:::-;46258:6;:22;;;;:::i;:::-;:35;;46224:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;46159:225;45802:582;45237:1147;44751:1648;44716:1694;46422:28;46453:24;46471:4;46453:9;:24::i;:::-;46422:55;;46490:12;46529:18;;46505:20;:42;;46490:57;;46578:7;:35;;;;;46602:11;;;;;;;;;;;46578:35;:61;;;;;46631:8;;;;;;;;;;;46630:9;46578:61;:110;;;;;46657:25;:31;46683:4;46657:31;;;;;;;;;;;;;;;;;;;;;;;;;46656:32;46578:110;:153;;;;;46706:19;:25;46726:4;46706:25;;;;;;;;;;;;;;;;;;;;;;;;;46705:26;46578:153;:194;;;;;46749:19;:23;46769:2;46749:23;;;;;;;;;;;;;;;;;;;;;;;;;46748:24;46578:194;46560:326;;;46810:4;46799:8;;:15;;;;;;;;;;;;;;;;;;46831:10;:8;:10::i;:::-;46869:5;46858:8;;:16;;;;;;;;;;;;;;;;;;46560:326;46898:12;46914:8;;;;;;;;;;;46913:9;46898:24;;47024:19;:25;47044:4;47024:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;47053:19;:23;47073:2;47053:23;;;;;;;;;;;;;;;;;;;;;;;;;47024:52;47020:100;;;47103:5;47093:15;;47020:100;47132:12;47237:7;47233:671;;;47289:25;:29;47315:2;47289:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;47338:1;47322:13;;:17;47289:50;47285:470;;;47367:35;47397:4;47367:25;47378:13;;47367:6;:10;;:25;;;;:::i;:::-;:29;;:35;;;;:::i;:::-;47360:42;;47471:13;;47451:16;;47444:4;:23;;;;:::i;:::-;47443:41;;;;:::i;:::-;47421:18;;:63;;;;;;;:::i;:::-;;;;;;;;47285:470;;;47546:25;:31;47572:4;47546:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;47596:1;47581:12;;:16;47546:51;47542:213;;;47625:34;47654:4;47625:24;47636:12;;47625:6;:10;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;47618:41;;47727:12;;47708:15;;47701:4;:22;;;;:::i;:::-;47700:39;;;;:::i;:::-;47678:18;;:61;;;;;;;:::i;:::-;;;;;;;;47542:213;47285:470;47782:1;47775:4;:8;47771:91;;;47804:42;47820:4;47834;47841;47804:15;:42::i;:::-;47771:91;47888:4;47878:14;;;;;:::i;:::-;;;47233:671;47916:33;47932:4;47938:2;47942:6;47916:15;:33::i;:::-;44444:3513;;;;44331:3626;;;;:::o;18810:191::-;18884:16;18903:6;;;;;;;;;;;18884:25;;18929:8;18920:6;;:17;;;;;;;;;;;;;;;;;;18984:8;18953:40;;18974:8;18953:40;;;;;;;;;;;;18873:128;18810:191;:::o;47965:589::-;48091:21;48129:1;48115:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48091:40;;48160:4;48142;48147:1;48142:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;48186:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;48176:4;48181:1;48176:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;48221:62;48238:4;48253:15;48271:11;48221:8;:62::i;:::-;48322:15;:66;;;48403:11;48429:1;48473:4;48500;48520:15;48322:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48020:534;47965:589;:::o;43896:188::-;44013:5;43979:25;:31;44005:4;43979:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;44070:5;44036:40;;44064:4;44036:40;;;;;;;;;;;;43896:188;;:::o;30251:671::-;30398:1;30382:18;;:4;:18;;;30374:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30475:1;30461:16;;:2;:16;;;30453:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30530:38;30551:4;30557:2;30561:6;30530:20;:38::i;:::-;30581:19;30603:9;:15;30613:4;30603:15;;;;;;;;;;;;;;;;30581:37;;30652:6;30637:11;:21;;30629:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;30769:6;30755:11;:20;30737:9;:15;30747:4;30737:15;;;;;;;;;;;;;;;:38;;;;30814:6;30797:9;:13;30807:2;30797:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;30853:2;30838:26;;30847:4;30838:26;;;30857:6;30838:26;;;;;;:::i;:::-;;;;;;;;30877:37;30897:4;30903:2;30907:6;30877:19;:37::i;:::-;30363:559;30251:671;;;:::o;48564:722::-;48603:23;48629:24;48647:4;48629:9;:24::i;:::-;48603:50;;48664:25;48705:18;;48664:59;;48734:12;48782:1;48763:15;:20;:46;;;;48808:1;48787:17;:22;48763:46;48759:85;;;48826:7;;;;;48759:85;48899:2;48878:18;;:23;;;;:::i;:::-;48860:15;:41;48856:115;;;48957:2;48936:18;;:23;;;;:::i;:::-;48918:41;;48856:115;49034:26;49063:15;49034:44;;49091:36;49108:18;49091:16;:36::i;:::-;49161:1;49140:18;:22;;;;49199:15;;;;;;;;;;;49191:29;;49242:21;49191:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49177:101;;;;;48592:694;;;;48564:722;:::o;6913:98::-;6971:7;7002:1;6998;:5;;;;:::i;:::-;6991:12;;6913:98;;;;:::o;7312:::-;7370:7;7401:1;7397;:5;;;;:::i;:::-;7390:12;;7312:98;;;;:::o;34694:125::-;;;;:::o;35423:124::-;;;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:118::-;6206:24;6224:5;6206:24;:::i;:::-;6201:3;6194:37;6119:118;;:::o;6243:222::-;6336:4;6374:2;6363:9;6359:18;6351:26;;6387:71;6455:1;6444:9;6440:17;6431:6;6387:71;:::i;:::-;6243:222;;;;:::o;6471:86::-;6506:7;6546:4;6539:5;6535:16;6524:27;;6471:86;;;:::o;6563:112::-;6646:22;6662:5;6646:22;:::i;:::-;6641:3;6634:35;6563:112;;:::o;6681:214::-;6770:4;6808:2;6797:9;6793:18;6785:26;;6821:67;6885:1;6874:9;6870:17;6861:6;6821:67;:::i;:::-;6681:214;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:468::-;7227:6;7235;7284:2;7272:9;7263:7;7259:23;7255:32;7252:119;;;7290:79;;:::i;:::-;7252:119;7410:1;7435:53;7480:7;7471:6;7460:9;7456:22;7435:53;:::i;:::-;7425:63;;7381:117;7537:2;7563:50;7605:7;7596:6;7585:9;7581:22;7563:50;:::i;:::-;7553:60;;7508:115;7162:468;;;;;:::o;7636:323::-;7692:6;7741:2;7729:9;7720:7;7716:23;7712:32;7709:119;;;7747:79;;:::i;:::-;7709:119;7867:1;7892:50;7934:7;7925:6;7914:9;7910:22;7892:50;:::i;:::-;7882:60;;7838:114;7636:323;;;;:::o;7965:474::-;8033:6;8041;8090:2;8078:9;8069:7;8065:23;8061:32;8058:119;;;8096:79;;:::i;:::-;8058:119;8216:1;8241:53;8286:7;8277:6;8266:9;8262:22;8241:53;:::i;:::-;8231:63;;8187:117;8343:2;8369:53;8414:7;8405:6;8394:9;8390:22;8369:53;:::i;:::-;8359:63;;8314:118;7965:474;;;;;:::o;8445:180::-;8493:77;8490:1;8483:88;8590:4;8587:1;8580:15;8614:4;8611:1;8604:15;8631:320;8675:6;8712:1;8706:4;8702:12;8692:22;;8759:1;8753:4;8749:12;8780:18;8770:81;;8836:4;8828:6;8824:17;8814:27;;8770:81;8898:2;8890:6;8887:14;8867:18;8864:38;8861:84;;8917:18;;:::i;:::-;8861:84;8682:269;8631:320;;;:::o;8957:180::-;9005:77;9002:1;8995:88;9102:4;9099:1;9092:15;9126:4;9123:1;9116:15;9143:348;9183:7;9206:20;9224:1;9206:20;:::i;:::-;9201:25;;9240:20;9258:1;9240:20;:::i;:::-;9235:25;;9428:1;9360:66;9356:74;9353:1;9350:81;9345:1;9338:9;9331:17;9327:105;9324:131;;;9435:18;;:::i;:::-;9324:131;9483:1;9480;9476:9;9465:20;;9143:348;;;;:::o;9497:180::-;9545:77;9542:1;9535:88;9642:4;9639:1;9632:15;9666:4;9663:1;9656:15;9683:185;9723:1;9740:20;9758:1;9740:20;:::i;:::-;9735:25;;9774:20;9792:1;9774:20;:::i;:::-;9769:25;;9813:1;9803:35;;9818:18;;:::i;:::-;9803:35;9860:1;9857;9853:9;9848:14;;9683:185;;;;:::o;9874:234::-;10014:34;10010:1;10002:6;9998:14;9991:58;10083:17;10078:2;10070:6;10066:15;10059:42;9874:234;:::o;10114:366::-;10256:3;10277:67;10341:2;10336:3;10277:67;:::i;:::-;10270:74;;10353:93;10442:3;10353:93;:::i;:::-;10471:2;10466:3;10462:12;10455:19;;10114:366;;;:::o;10486:419::-;10652:4;10690:2;10679:9;10675:18;10667:26;;10739:9;10733:4;10729:20;10725:1;10714:9;10710:17;10703:47;10767:131;10893:4;10767:131;:::i;:::-;10759:139;;10486:419;;;:::o;10911:305::-;10951:3;10970:20;10988:1;10970:20;:::i;:::-;10965:25;;11004:20;11022:1;11004:20;:::i;:::-;10999:25;;11158:1;11090:66;11086:74;11083:1;11080:81;11077:107;;;11164:18;;:::i;:::-;11077:107;11208:1;11205;11201:9;11194:16;;10911:305;;;;:::o;11222:147::-;11323:11;11360:3;11345:18;;11222:147;;;;:::o;11375:114::-;;:::o;11495:398::-;11654:3;11675:83;11756:1;11751:3;11675:83;:::i;:::-;11668:90;;11767:93;11856:3;11767:93;:::i;:::-;11885:1;11880:3;11876:11;11869:18;;11495:398;;;:::o;11899:379::-;12083:3;12105:147;12248:3;12105:147;:::i;:::-;12098:154;;12269:3;12262:10;;11899:379;;;:::o;12284:179::-;12424:31;12420:1;12412:6;12408:14;12401:55;12284:179;:::o;12469:366::-;12611:3;12632:67;12696:2;12691:3;12632:67;:::i;:::-;12625:74;;12708:93;12797:3;12708:93;:::i;:::-;12826:2;12821:3;12817:12;12810:19;;12469:366;;;:::o;12841:419::-;13007:4;13045:2;13034:9;13030:18;13022:26;;13094:9;13088:4;13084:20;13080:1;13069:9;13065:17;13058:47;13122:131;13248:4;13122:131;:::i;:::-;13114:139;;12841:419;;;:::o;13266:162::-;13406:14;13402:1;13394:6;13390:14;13383:38;13266:162;:::o;13434:366::-;13576:3;13597:67;13661:2;13656:3;13597:67;:::i;:::-;13590:74;;13673:93;13762:3;13673:93;:::i;:::-;13791:2;13786:3;13782:12;13775:19;;13434:366;;;:::o;13806:419::-;13972:4;14010:2;13999:9;13995:18;13987:26;;14059:9;14053:4;14049:20;14045:1;14034:9;14030:17;14023:47;14087:131;14213:4;14087:131;:::i;:::-;14079:139;;13806:419;;;:::o;14231:244::-;14371:34;14367:1;14359:6;14355:14;14348:58;14440:27;14435:2;14427:6;14423:15;14416:52;14231:244;:::o;14481:366::-;14623:3;14644:67;14708:2;14703:3;14644:67;:::i;:::-;14637:74;;14720:93;14809:3;14720:93;:::i;:::-;14838:2;14833:3;14829:12;14822:19;;14481:366;;;:::o;14853:419::-;15019:4;15057:2;15046:9;15042:18;15034:26;;15106:9;15100:4;15096:20;15092:1;15081:9;15077:17;15070:47;15134:131;15260:4;15134:131;:::i;:::-;15126:139;;14853:419;;;:::o;15278:224::-;15418:34;15414:1;15406:6;15402:14;15395:58;15487:7;15482:2;15474:6;15470:15;15463:32;15278:224;:::o;15508:366::-;15650:3;15671:67;15735:2;15730:3;15671:67;:::i;:::-;15664:74;;15747:93;15836:3;15747:93;:::i;:::-;15865:2;15860:3;15856:12;15849:19;;15508:366;;;:::o;15880:419::-;16046:4;16084:2;16073:9;16069:18;16061:26;;16133:9;16127:4;16123:20;16119:1;16108:9;16104:17;16097:47;16161:131;16287:4;16161:131;:::i;:::-;16153:139;;15880:419;;;:::o;16305:223::-;16445:34;16441:1;16433:6;16429:14;16422:58;16514:6;16509:2;16501:6;16497:15;16490:31;16305:223;:::o;16534:366::-;16676:3;16697:67;16761:2;16756:3;16697:67;:::i;:::-;16690:74;;16773:93;16862:3;16773:93;:::i;:::-;16891:2;16886:3;16882:12;16875:19;;16534:366;;;:::o;16906:419::-;17072:4;17110:2;17099:9;17095:18;17087:26;;17159:9;17153:4;17149:20;17145:1;17134:9;17130:17;17123:47;17187:131;17313:4;17187:131;:::i;:::-;17179:139;;16906:419;;;:::o;17331:240::-;17471:34;17467:1;17459:6;17455:14;17448:58;17540:23;17535:2;17527:6;17523:15;17516:48;17331:240;:::o;17577:366::-;17719:3;17740:67;17804:2;17799:3;17740:67;:::i;:::-;17733:74;;17816:93;17905:3;17816:93;:::i;:::-;17934:2;17929:3;17925:12;17918:19;;17577:366;;;:::o;17949:419::-;18115:4;18153:2;18142:9;18138:18;18130:26;;18202:9;18196:4;18192:20;18188:1;18177:9;18173:17;18166:47;18230:131;18356:4;18230:131;:::i;:::-;18222:139;;17949:419;;;:::o;18374:239::-;18514:34;18510:1;18502:6;18498:14;18491:58;18583:22;18578:2;18570:6;18566:15;18559:47;18374:239;:::o;18619:366::-;18761:3;18782:67;18846:2;18841:3;18782:67;:::i;:::-;18775:74;;18858:93;18947:3;18858:93;:::i;:::-;18976:2;18971:3;18967:12;18960:19;;18619:366;;;:::o;18991:419::-;19157:4;19195:2;19184:9;19180:18;19172:26;;19244:9;19238:4;19234:20;19230:1;19219:9;19215:17;19208:47;19272:131;19398:4;19272:131;:::i;:::-;19264:139;;18991:419;;;:::o;19416:179::-;19556:31;19552:1;19544:6;19540:14;19533:55;19416:179;:::o;19601:366::-;19743:3;19764:67;19828:2;19823:3;19764:67;:::i;:::-;19757:74;;19840:93;19929:3;19840:93;:::i;:::-;19958:2;19953:3;19949:12;19942:19;;19601:366;;;:::o;19973:419::-;20139:4;20177:2;20166:9;20162:18;20154:26;;20226:9;20220:4;20216:20;20212:1;20201:9;20197:17;20190:47;20254:131;20380:4;20254:131;:::i;:::-;20246:139;;19973:419;;;:::o;20398:225::-;20538:34;20534:1;20526:6;20522:14;20515:58;20607:8;20602:2;20594:6;20590:15;20583:33;20398:225;:::o;20629:366::-;20771:3;20792:67;20856:2;20851:3;20792:67;:::i;:::-;20785:74;;20868:93;20957:3;20868:93;:::i;:::-;20986:2;20981:3;20977:12;20970:19;;20629:366;;;:::o;21001:419::-;21167:4;21205:2;21194:9;21190:18;21182:26;;21254:9;21248:4;21244:20;21240:1;21229:9;21225:17;21218:47;21282:131;21408:4;21282:131;:::i;:::-;21274:139;;21001:419;;;:::o;21426:223::-;21566:34;21562:1;21554:6;21550:14;21543:58;21635:6;21630:2;21622:6;21618:15;21611:31;21426:223;:::o;21655:366::-;21797:3;21818:67;21882:2;21877:3;21818:67;:::i;:::-;21811:74;;21894:93;21983:3;21894:93;:::i;:::-;22012:2;22007:3;22003:12;21996:19;;21655:366;;;:::o;22027:419::-;22193:4;22231:2;22220:9;22216:18;22208:26;;22280:9;22274:4;22270:20;22266:1;22255:9;22251:17;22244:47;22308:131;22434:4;22308:131;:::i;:::-;22300:139;;22027:419;;;:::o;22452:221::-;22592:34;22588:1;22580:6;22576:14;22569:58;22661:4;22656:2;22648:6;22644:15;22637:29;22452:221;:::o;22679:366::-;22821:3;22842:67;22906:2;22901:3;22842:67;:::i;:::-;22835:74;;22918:93;23007:3;22918:93;:::i;:::-;23036:2;23031:3;23027:12;23020:19;;22679:366;;;:::o;23051:419::-;23217:4;23255:2;23244:9;23240:18;23232:26;;23304:9;23298:4;23294:20;23290:1;23279:9;23275:17;23268:47;23332:131;23458:4;23332:131;:::i;:::-;23324:139;;23051:419;;;:::o;23476:182::-;23616:34;23612:1;23604:6;23600:14;23593:58;23476:182;:::o;23664:366::-;23806:3;23827:67;23891:2;23886:3;23827:67;:::i;:::-;23820:74;;23903:93;23992:3;23903:93;:::i;:::-;24021:2;24016:3;24012:12;24005:19;;23664:366;;;:::o;24036:419::-;24202:4;24240:2;24229:9;24225:18;24217:26;;24289:9;24283:4;24279:20;24275:1;24264:9;24260:17;24253:47;24317:131;24443:4;24317:131;:::i;:::-;24309:139;;24036:419;;;:::o;24461:179::-;24601:31;24597:1;24589:6;24585:14;24578:55;24461:179;:::o;24646:366::-;24788:3;24809:67;24873:2;24868:3;24809:67;:::i;:::-;24802:74;;24885:93;24974:3;24885:93;:::i;:::-;25003:2;24998:3;24994:12;24987:19;;24646:366;;;:::o;25018:419::-;25184:4;25222:2;25211:9;25207:18;25199:26;;25271:9;25265:4;25261:20;25257:1;25246:9;25242:17;25235:47;25299:131;25425:4;25299:131;:::i;:::-;25291:139;;25018:419;;;:::o;25443:224::-;25583:34;25579:1;25571:6;25567:14;25560:58;25652:7;25647:2;25639:6;25635:15;25628:32;25443:224;:::o;25673:366::-;25815:3;25836:67;25900:2;25895:3;25836:67;:::i;:::-;25829:74;;25912:93;26001:3;25912:93;:::i;:::-;26030:2;26025:3;26021:12;26014:19;;25673:366;;;:::o;26045:419::-;26211:4;26249:2;26238:9;26234:18;26226:26;;26298:9;26292:4;26288:20;26284:1;26273:9;26269:17;26262:47;26326:131;26452:4;26326:131;:::i;:::-;26318:139;;26045:419;;;:::o;26470:222::-;26610:34;26606:1;26598:6;26594:14;26587:58;26679:5;26674:2;26666:6;26662:15;26655:30;26470:222;:::o;26698:366::-;26840:3;26861:67;26925:2;26920:3;26861:67;:::i;:::-;26854:74;;26937:93;27026:3;26937:93;:::i;:::-;27055:2;27050:3;27046:12;27039:19;;26698:366;;;:::o;27070:419::-;27236:4;27274:2;27263:9;27259:18;27251:26;;27323:9;27317:4;27313:20;27309:1;27298:9;27294:17;27287:47;27351:131;27477:4;27351:131;:::i;:::-;27343:139;;27070:419;;;:::o;27495:172::-;27635:24;27631:1;27623:6;27619:14;27612:48;27495:172;:::o;27673:366::-;27815:3;27836:67;27900:2;27895:3;27836:67;:::i;:::-;27829:74;;27912:93;28001:3;27912:93;:::i;:::-;28030:2;28025:3;28021:12;28014:19;;27673:366;;;:::o;28045:419::-;28211:4;28249:2;28238:9;28234:18;28226:26;;28298:9;28292:4;28288:20;28284:1;28273:9;28269:17;28262:47;28326:131;28452:4;28326:131;:::i;:::-;28318:139;;28045:419;;;:::o;28470:240::-;28610:34;28606:1;28598:6;28594:14;28587:58;28679:23;28674:2;28666:6;28662:15;28655:48;28470:240;:::o;28716:366::-;28858:3;28879:67;28943:2;28938:3;28879:67;:::i;:::-;28872:74;;28955:93;29044:3;28955:93;:::i;:::-;29073:2;29068:3;29064:12;29057:19;;28716:366;;;:::o;29088:419::-;29254:4;29292:2;29281:9;29277:18;29269:26;;29341:9;29335:4;29331:20;29327:1;29316:9;29312:17;29305:47;29369:131;29495:4;29369:131;:::i;:::-;29361:139;;29088:419;;;:::o;29513:169::-;29653:21;29649:1;29641:6;29637:14;29630:45;29513:169;:::o;29688:366::-;29830:3;29851:67;29915:2;29910:3;29851:67;:::i;:::-;29844:74;;29927:93;30016:3;29927:93;:::i;:::-;30045:2;30040:3;30036:12;30029:19;;29688:366;;;:::o;30060:419::-;30226:4;30264:2;30253:9;30249:18;30241:26;;30313:9;30307:4;30303:20;30299:1;30288:9;30284:17;30277:47;30341:131;30467:4;30341:131;:::i;:::-;30333:139;;30060:419;;;:::o;30485:241::-;30625:34;30621:1;30613:6;30609:14;30602:58;30694:24;30689:2;30681:6;30677:15;30670:49;30485:241;:::o;30732:366::-;30874:3;30895:67;30959:2;30954:3;30895:67;:::i;:::-;30888:74;;30971:93;31060:3;30971:93;:::i;:::-;31089:2;31084:3;31080:12;31073:19;;30732:366;;;:::o;31104:419::-;31270:4;31308:2;31297:9;31293:18;31285:26;;31357:9;31351:4;31347:20;31343:1;31332:9;31328:17;31321:47;31385:131;31511:4;31385:131;:::i;:::-;31377:139;;31104:419;;;:::o;31529:191::-;31569:4;31589:20;31607:1;31589:20;:::i;:::-;31584:25;;31623:20;31641:1;31623:20;:::i;:::-;31618:25;;31662:1;31659;31656:8;31653:34;;;31667:18;;:::i;:::-;31653:34;31712:1;31709;31705:9;31697:17;;31529:191;;;;:::o;31726:180::-;31774:77;31771:1;31764:88;31871:4;31868:1;31861:15;31895:4;31892:1;31885:15;31912:180;31960:77;31957:1;31950:88;32057:4;32054:1;32047:15;32081:4;32078:1;32071:15;32098:143;32155:5;32186:6;32180:13;32171:22;;32202:33;32229:5;32202:33;:::i;:::-;32098:143;;;;:::o;32247:351::-;32317:6;32366:2;32354:9;32345:7;32341:23;32337:32;32334:119;;;32372:79;;:::i;:::-;32334:119;32492:1;32517:64;32573:7;32564:6;32553:9;32549:22;32517:64;:::i;:::-;32507:74;;32463:128;32247:351;;;;:::o;32604:85::-;32649:7;32678:5;32667:16;;32604:85;;;:::o;32695:158::-;32753:9;32786:61;32804:42;32813:32;32839:5;32813:32;:::i;:::-;32804:42;:::i;:::-;32786:61;:::i;:::-;32773:74;;32695:158;;;:::o;32859:147::-;32954:45;32993:5;32954:45;:::i;:::-;32949:3;32942:58;32859:147;;:::o;33012:114::-;33079:6;33113:5;33107:12;33097:22;;33012:114;;;:::o;33132:184::-;33231:11;33265:6;33260:3;33253:19;33305:4;33300:3;33296:14;33281:29;;33132:184;;;;:::o;33322:132::-;33389:4;33412:3;33404:11;;33442:4;33437:3;33433:14;33425:22;;33322:132;;;:::o;33460:108::-;33537:24;33555:5;33537:24;:::i;:::-;33532:3;33525:37;33460:108;;:::o;33574:179::-;33643:10;33664:46;33706:3;33698:6;33664:46;:::i;:::-;33742:4;33737:3;33733:14;33719:28;;33574:179;;;;:::o;33759:113::-;33829:4;33861;33856:3;33852:14;33844:22;;33759:113;;;:::o;33908:732::-;34027:3;34056:54;34104:5;34056:54;:::i;:::-;34126:86;34205:6;34200:3;34126:86;:::i;:::-;34119:93;;34236:56;34286:5;34236:56;:::i;:::-;34315:7;34346:1;34331:284;34356:6;34353:1;34350:13;34331:284;;;34432:6;34426:13;34459:63;34518:3;34503:13;34459:63;:::i;:::-;34452:70;;34545:60;34598:6;34545:60;:::i;:::-;34535:70;;34391:224;34378:1;34375;34371:9;34366:14;;34331:284;;;34335:14;34631:3;34624:10;;34032:608;;;33908:732;;;;:::o;34646:831::-;34909:4;34947:3;34936:9;34932:19;34924:27;;34961:71;35029:1;35018:9;35014:17;35005:6;34961:71;:::i;:::-;35042:80;35118:2;35107:9;35103:18;35094:6;35042:80;:::i;:::-;35169:9;35163:4;35159:20;35154:2;35143:9;35139:18;35132:48;35197:108;35300:4;35291:6;35197:108;:::i;:::-;35189:116;;35315:72;35383:2;35372:9;35368:18;35359:6;35315:72;:::i;:::-;35397:73;35465:3;35454:9;35450:19;35441:6;35397:73;:::i;:::-;34646:831;;;;;;;;:::o;35483:225::-;35623:34;35619:1;35611:6;35607:14;35600:58;35692:8;35687:2;35679:6;35675:15;35668:33;35483:225;:::o;35714:366::-;35856:3;35877:67;35941:2;35936:3;35877:67;:::i;:::-;35870:74;;35953:93;36042:3;35953:93;:::i;:::-;36071:2;36066:3;36062:12;36055:19;;35714:366;;;:::o;36086:419::-;36252:4;36290:2;36279:9;36275:18;36267:26;;36339:9;36333:4;36329:20;36325:1;36314:9;36310:17;36303:47;36367:131;36493:4;36367:131;:::i;:::-;36359:139;;36086:419;;;:::o
Swarm Source
ipfs://34dd5feeadc1a0c77147ac9b7efc6d413e00bf9d404234ce28c5041042822d35
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.