ERC-20
Overview
Max Total Supply
1,000,000,000 VDOGE
Holders
77
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
119,407.396281822 VDOGEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
VitaDoge
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-05-15 */ pragma solidity ^0.6.12; /** VitaDoge - Dogs vs Humans! 12% fee to liquidity pool and LP tokens burned 6% fee distributed to holders 2% fee to dev wallet MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNXK0KKKKKKXNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN0kdocc:;::::;;:ldOKXNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWX0xl,','',;;;;;;;::;;:::ldOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXOxo:,'..............,:;;,'.',;oOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMWN0xl,'........... .......''''',;:coONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMNkc;,... ..''''..............',,,;;;;:kNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMXkc,.....,;,,,,,,,;,,,''.....',;::,'..:OWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKx:....',,;::;:cccc;,'''''.',;:ll:,'..cKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNk:'.''';odddoodddkxoc:;'.,looodol::'.,kWMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk:,''',okOOOOkkkOOOOOxdl:cdkkxdlllc;.'xWMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKc''..,cdxkkkkkxxkkkkOOOxddxkkxolol;.'xWMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWd'...',coddxxkxxxdddkO0OxodkOOxxdd:.:0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO,....':lodxkkxc...'coxkkkkkOd;,:l:,ckXMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKl,;'..':ldxkOOd;..';';dkOOOOo..;ll;,;kWMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNxccc:,,;codxkOOOkxddddxkO0000Oxodkxc';OMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXxdxo:coodxxO000000000OOO0000kkOO000o,oXMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKOkxxkkxdxxO0KKKKKKK0OO0KXO:...';dOdlOWMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWX0OOOkxddxkOOO000000OOO00d. ;xkONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWX0OkdddxxkOkOOkkxxkkkkkd;. .cdONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNX0xdddxkkkOkxl;;cool,.....;clxNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNkddxxxkkOOOkdc:;,'.. .,cccxXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0oooddxxxkkkkkkxxxdlccooldONWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXxoc::lodxxkkkkkOOkkxdox0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXkxo:,'',:cclodoollc::xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKkxxoc,'........'''''lXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNOxxxxdolc;,'.....''''l0NWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWNNNWWNKOkxxxxkkxdolc;'.''''',:odk0XNKKNWMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMWWWNNNNNNNNNNNNNNNXXXNNX0Okkxxxkkkxddoc;''''''';cc::clc:lkO0XNWWMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMWWNXXXXXXXXXXXXXXXXXXXK0KK0OOkkxdxxxxxxddl:,'''''',:ll;,,'',;;:cloxkOO00KNWMMMMMMMMMMMMMM MMMMMMMMMWNXXKXXKKKKKKKKK00kkkkkkkkkkOOOkkkxxxxxxddoc:;;,,,,'',;::;;,,;;;;;::cloooodxO0XNMMMMMMMMMMM MMMMMMMMMWWWWWWWWWNNNWNNNNNXXXXXXXXXXXXNNNNXXXXXXXKKK000000OOOOOO000000000KK0KXXXKKXXXXXNMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM */ // SPDX-License-Identifier: Unlicensed interface IERC20 { function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @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) { // 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 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts 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 mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @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. */ contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function geUnlockTime() public view returns (uint256) { return _lockTime; } //Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = now + time; emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(now > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } 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; } 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; } 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); } 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; } contract VitaDoge is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000 * 10**6 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "VitaDoge"; string private _symbol = "VDOGE"; uint8 private _decimals = 9; //Base is 1000 uint256 public _taxFee = 60; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee = 130; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _devFee = 10; uint256 public _liquidityPlusDevFee = _liquidityFee + _devFee; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public _maxTxAmount = 0; //Set to 5 (0.5%) after liquidity is added uint256 private numTokensSellToAddToLiquidity = 5 * 10**5 * 10**9; //0.05% of supply mapping(address => bool) public bypassesMaxTxAmount; //Owner and presale contract address payable public _devWallet; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () public { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; _devWallet = _msgSender(); //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; excludeFromReward(address(0)); bypassesMaxTxAmount[owner()] = true; bypassesMaxTxAmount[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner() { // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _approve(address owner, address spender, uint256 amount) private { 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); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(from != 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B, "Thanks VB for hodling."); require(amount > 0, "Transfer amount must be greater than zero"); if(!bypassesMaxTxAmount[from] && !bypassesMaxTxAmount[to]) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 devTokens = contractTokenBalance.mul(_devFee).div(_liquidityPlusDevFee); uint256 liquidityTokens = contractTokenBalance.sub(devTokens); uint256 halfLiquidityTokens = liquidityTokens.div(2); uint256 otherHalfLiquidityTokens = liquidityTokens.sub(halfLiquidityTokens); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH uint256 tokensToSwap = halfLiquidityTokens.add(devTokens); swapTokensForEth(tokensToSwap); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); uint256 devBalance = newBalance.mul(_devFee).div(_liquidityPlusDevFee); _devWallet.transfer(devBalance); uint256 liquidityBalance = newBalance.sub(devBalance); // add liquidity to uniswap addLiquidity(otherHalfLiquidityTokens, liquidityBalance); emit SwapAndLiquify(tokensToSwap, newBalance, otherHalfLiquidityTokens); } 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 addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**3 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**3 ); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { _taxFee = taxFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { _liquidityFee = liquidityFee; } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**3 ); } function setSellToAddLiquidtyBasisPoint(uint256 bp) external onlyOwner() { numTokensSellToAddToLiquidity = _tTotal.mul(bp).div( 10**3 ); } function addBypassMaxTx(address account) external onlyOwner() { bypassesMaxTxAmount[account] = true; } function removeBypassMaxTx(address account) external onlyOwner() { bypassesMaxTxAmount[account] = false; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityPlusDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBypassMaxTx","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bypassesMaxTxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBypassMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bp","type":"uint256"}],"name":"setSellToAddLiquidtyBasisPoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052670de0b6b3a7640000600955600954600019816200001e57fe5b0660001903600a556040518060400160405280600881526020017f56697461446f6765000000000000000000000000000000000000000000000000815250600c90805190602001906200007392919062001001565b506040518060400160405280600581526020017f56444f4745000000000000000000000000000000000000000000000000000000815250600d9080519060200190620000c192919062001001565b506009600e60006101000a81548160ff021916908360ff160217905550603c600f55600f546010556082601155601154601255600a601355601354601154016014556001601560016101000a81548160ff02191690831515021790555060006016556601c6bf526340006017553480156200013b57600080fd5b5060006200014e620006f060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600a546003600062000203620006f060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a157600080fd5b505afa158015620002b6573d6000803e3d6000fd5b505050506040513d6020811015620002cd57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034157600080fd5b505afa15801562000356573d6000803e3d6000fd5b505050506040513d60208110156200036d57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620003e857600080fd5b505af1158015620003fd573d6000803e3d6000fd5b505050506040513d60208110156200041457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050620004a2620006f060201b60201c565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000620004f8620006f860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005b360006200072160201b60201c565b600160186000620005c9620006f860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000682620006f060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a350620010a7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000731620006f060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615620008b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111562000990576200094c600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000a4e60201b60201c565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600a5482111562000aad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180620066ca602a913960400191505060405180910390fd5b600062000abf62000ae360201b60201c565b905062000adb818462000b1d60201b620030d51790919060201c565b915050919050565b600080600062000af862000b6f60201b60201c565b9150915062000b16818362000b1d60201b620030d51790919060201c565b9250505090565b600062000b6783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000e2060201b60201c565b905092915050565b6000806000600a5490506000600954905060005b60088054905081101562000dda5782600360006008848154811062000ba457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118062000c8d575081600460006008848154811062000c2557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1562000ca657600a546009549450945050505062000e1c565b62000d37600360006008848154811062000cbc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548462000eeb60201b6200311f1790919060201c565b925062000dca600460006008848154811062000d4f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548362000eeb60201b6200311f1790919060201c565b9150808060010191505062000b83565b5062000df9600954600a5462000b1d60201b620030d51790919060201c565b82101562000e1357600a5460095493509350505062000e1c565b81819350935050505b9091565b6000808311829062000ed0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000e9457808201518184015260208101905062000e77565b50505050905090810190601f16801562000ec25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000edd57fe5b049050809150509392505050565b600062000f3583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000f3d60201b60201c565b905092915050565b600083831115829062000fee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000fb257808201518184015260208101905062000f95565b50505050905090810190601f16801562000fe05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200104457805160ff191683800117855562001075565b8280016001018555821562001075579182015b828111156200107457825182559160200191906001019062001057565b5b50905062001084919062001088565b5090565b5b80821115620010a357600081600090555060010162001089565b5090565b60805160601c60a05160601c6155db620010ef60003980611aa452806136d15250806111345280614436528061452252806145495280614654528061467b52506155db6000f3fe60806040526004361061026b5760003560e01c80636bc87c3a11610144578063a69df4b5116100b6578063d0c4afa91161007a578063d0c4afa914610d82578063d543dbeb14610dd3578063dd46706414610e0e578063dd62ed3e14610e49578063ea2f0b3714610ece578063f2fde38b14610f1f57610272565b8063a69df4b514610c67578063a9059cbb14610c7e578063aa45026b14610cef578063b6c5232414610d1a578063c49b9a8014610d4557610272565b80637d1db4a5116101085780637d1db4a514610a5857806388f8202014610a835780638da5cb5b14610aea5780638ee88c5314610b2b57806395d89b4114610b66578063a457c2d714610bf657610272565b80636bc87c3a1461092557806370a082311461095057806371433e9d146109b5578063715018a614610a065780637aec6eab14610a1d57610272565b80633685d419116101dd5780634549b039116101a15780634549b0391461077957806349bd5a5e146107d45780634a74bb021461081557806352390c02146108425780635342acb4146108935780635b8f5dd9146108fa57610272565b80633685d4191461060057806339509351146106515780633b124fe7146106c25780633bd5d173146106ed578063437823ec1461072857610272565b80631694505e1161022f5780631694505e1461041f57806318160ddd1461046057806323b872dd1461048b57806327442d4a1461051c5780632d83811914610583578063313ce567146105d257610272565b8063061c82d01461027757806306fdde03146102b2578063095ea7b31461034257806311a63e17146103b357806313114a9d146103f457610272565b3661027257005b600080fd5b34801561028357600080fd5b506102b06004803603602081101561029a57600080fd5b8101908080359060200190929190505050610f70565b005b3480156102be57600080fd5b506102c7611042565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103075780820151818401526020810190506102ec565b50505050905090810190601f1680156103345780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034e57600080fd5b5061039b6004803603604081101561036557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110e4565b60405180821515815260200191505060405180910390f35b3480156103bf57600080fd5b506103c8611102565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040057600080fd5b50610409611128565b6040518082815260200191505060405180910390f35b34801561042b57600080fd5b50610434611132565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561046c57600080fd5b50610475611156565b6040518082815260200191505060405180910390f35b34801561049757600080fd5b50610504600480360360608110156104ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611160565b60405180821515815260200191505060405180910390f35b34801561052857600080fd5b5061056b6004803603602081101561053f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611239565b60405180821515815260200191505060405180910390f35b34801561058f57600080fd5b506105bc600480360360208110156105a657600080fd5b8101908080359060200190929190505050611259565b6040518082815260200191505060405180910390f35b3480156105de57600080fd5b506105e76112dd565b604051808260ff16815260200191505060405180910390f35b34801561060c57600080fd5b5061064f6004803603602081101561062357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112f4565b005b34801561065d57600080fd5b506106aa6004803603604081101561067457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061167e565b60405180821515815260200191505060405180910390f35b3480156106ce57600080fd5b506106d7611731565b6040518082815260200191505060405180910390f35b3480156106f957600080fd5b506107266004803603602081101561071057600080fd5b8101908080359060200190929190505050611737565b005b34801561073457600080fd5b506107776004803603602081101561074b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c8565b005b34801561078557600080fd5b506107be6004803603604081101561079c57600080fd5b81019080803590602001909291908035151590602001909291905050506119eb565b6040518082815260200191505060405180910390f35b3480156107e057600080fd5b506107e9611aa2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082157600080fd5b5061082a611ac6565b60405180821515815260200191505060405180910390f35b34801561084e57600080fd5b506108916004803603602081101561086557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ad9565b005b34801561089f57600080fd5b506108e2600480360360208110156108b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611df3565b60405180821515815260200191505060405180910390f35b34801561090657600080fd5b5061090f611e49565b6040518082815260200191505060405180910390f35b34801561093157600080fd5b5061093a611e4f565b6040518082815260200191505060405180910390f35b34801561095c57600080fd5b5061099f6004803603602081101561097357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e55565b6040518082815260200191505060405180910390f35b3480156109c157600080fd5b50610a04600480360360208110156109d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f40565b005b348015610a1257600080fd5b50610a1b612063565b005b348015610a2957600080fd5b50610a5660048036036020811015610a4057600080fd5b81019080803590602001909291905050506121e9565b005b348015610a6457600080fd5b50610a6d6122e3565b6040518082815260200191505060405180910390f35b348015610a8f57600080fd5b50610ad260048036036020811015610aa657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122e9565b60405180821515815260200191505060405180910390f35b348015610af657600080fd5b50610aff61233f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b3757600080fd5b50610b6460048036036020811015610b4e57600080fd5b8101908080359060200190929190505050612368565b005b348015610b7257600080fd5b50610b7b61243a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bbb578082015181840152602081019050610ba0565b50505050905090810190601f168015610be85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c0257600080fd5b50610c4f60048036036040811015610c1957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506124dc565b60405180821515815260200191505060405180910390f35b348015610c7357600080fd5b50610c7c6125a9565b005b348015610c8a57600080fd5b50610cd760048036036040811015610ca157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506127c6565b60405180821515815260200191505060405180910390f35b348015610cfb57600080fd5b50610d046127e4565b6040518082815260200191505060405180910390f35b348015610d2657600080fd5b50610d2f6127ea565b6040518082815260200191505060405180910390f35b348015610d5157600080fd5b50610d8060048036036020811015610d6857600080fd5b810190808035151590602001909291905050506127f4565b005b348015610d8e57600080fd5b50610dd160048036036020811015610da557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612912565b005b348015610ddf57600080fd5b50610e0c60048036036020811015610df657600080fd5b8101908080359060200190929190505050612a35565b005b348015610e1a57600080fd5b50610e4760048036036020811015610e3157600080fd5b8101908080359060200190929190505050612b2f565b005b348015610e5557600080fd5b50610eb860048036036040811015610e6c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d20565b6040518082815260200191505060405180910390f35b348015610eda57600080fd5b50610f1d60048036036020811015610ef157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612da7565b005b348015610f2b57600080fd5b50610f6e60048036036020811015610f4257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612eca565b005b610f78613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611038576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600f8190555050565b6060600c8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110da5780601f106110af576101008083540402835291602001916110da565b820191906000526020600020905b8154815290600101906020018083116110bd57829003601f168201915b5050505050905090565b60006110f86110f1613169565b8484613171565b6001905092915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600954905090565b600061116d848484613368565b61122e84611179613169565b6112298560405180606001604052806028815260200161549860289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111df613169565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138119092919063ffffffff16565b613171565b600190509392505050565b60186020528060005260406000206000915054906101000a900460ff1681565b6000600a548211156112b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806153dd602a913960400191505060405180910390fd5b60006112c06138d1565b90506112d581846130d590919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b6112fc613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661147b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b60088054905081101561167a578173ffffffffffffffffffffffffffffffffffffffff16600882815481106114af57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561166d5760086001600880549050038154811061150b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061154357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061163357fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561167a565b808060010191505061147e565b5050565b600061172761168b613169565b84611722856005600061169c613169565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b613171565b6001905092915050565b600f5481565b6000611741613169565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156117e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615532602c913960400191505060405180910390fd5b60006117f183613984565b5050505050905061184a81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311f90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118a281600a5461311f90919063ffffffff16565b600a819055506118bd83600b546138fc90919063ffffffff16565b600b81905550505050565b6118d0613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611990576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954831115611a65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611a85576000611a7584613984565b5050505050905080915050611a9c565b6000611a9084613984565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601560019054906101000a900460ff1681565b611ae1613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611d3557611cf1600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611259565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b60115481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ef057600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611f3b565b611f38600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611259565b90505b919050565b611f48613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612008576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61206b613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461212b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6121f1613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6122da6103e86122cc836009546139e090919063ffffffff16565b6130d590919063ffffffff16565b60178190555050565b60165481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612370613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612430576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060118190555050565b6060600d8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124d25780601f106124a7576101008083540402835291602001916124d2565b820191906000526020600020905b8154815290600101906020018083116124b557829003601f168201915b5050505050905090565b600061259f6124e9613169565b8461259a856040518060600160405280602581526020016155816025913960056000612513613169565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138119092919063ffffffff16565b613171565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061555e6023913960400191505060405180910390fd5b60025442116126c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006127da6127d3613169565b8484613368565b6001905092915050565b60135481565b6000600254905090565b6127fc613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601560016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b61291a613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612a3d613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612afd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612b266103e8612b18836009546139e090919063ffffffff16565b6130d590919063ffffffff16565b60168190555050565b612b37613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bf7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612daf613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612ed2613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613018576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154076026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061311783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613a66565b905092915050565b600061316183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613811565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061550e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561327d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061542d6022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154e96025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613474576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806153ba6023913960400191505060405180910390fd5b73ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561352a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f5468616e6b7320564220666f7220686f646c696e672e0000000000000000000081525060200191505060405180910390fd5b60008111613583576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806154c06029913960400191505060405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136275750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561368857601654811115613687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544f6028913960400191505060405180910390fd5b5b600061369330611e55565b905060165481106136a45760165490505b600060175482101590508080156136c85750601560009054906101000a900460ff16155b801561372057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156137385750601560019054906101000a900460ff165b1561374c57601754915061374b82613b2c565b5b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806137f35750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137fd57600090505b61380986868684613d1b565b505050505050565b60008383111582906138be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613883578082015181840152602081019050613868565b50505050905090810190601f1680156138b05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006138de61402c565b915091506138f581836130d590919063ffffffff16565b9250505090565b60008082840190508381101561397a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080600080600080600080600061399b8a6142bd565b92509250925060008060006139b98d86866139b46138d1565b614317565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000808314156139f35760009050613a60565b6000828402905082848281613a0457fe5b0414613a5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806154776021913960400191505060405180910390fd5b809150505b92915050565b60008083118290613b12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613ad7578082015181840152602081019050613abc565b50505050905090810190601f168015613b045780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613b1e57fe5b049050809150509392505050565b6001601560006101000a81548160ff0219169083151502179055506000613b72601454613b64601354856139e090919063ffffffff16565b6130d590919063ffffffff16565b90506000613b89828461311f90919063ffffffff16565b90506000613ba16002836130d590919063ffffffff16565b90506000613bb8828461311f90919063ffffffff16565b905060004790506000613bd486856138fc90919063ffffffff16565b9050613bdf816143a0565b6000613bf4834761311f90919063ffffffff16565b90506000613c21601454613c13601354856139e090919063ffffffff16565b6130d590919063ffffffff16565b9050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613c8b573d6000803e3d6000fd5b506000613ca1828461311f90919063ffffffff16565b9050613cad868261464e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184848860405180848152602001838152602001828152602001935050505060405180910390a15050505050505050506000601560006101000a81548160ff02191690831515021790555050565b80613d2957613d2861479f565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613dcc5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613de157613ddc8484846147e2565b614018565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613e845750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e9957613e94848484614a42565b614017565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613f3d5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613f5257613f4d848484614ca2565b614016565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613ff45750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561400957614004848484614e6d565b614015565b614014848484614ca2565b5b5b5b5b8061402657614025615162565b5b50505050565b6000806000600a5490506000600954905060005b6008805490508110156142805782600360006008848154811061405f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061414657508160046000600884815481106140de57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561415d57600a54600954945094505050506142b9565b6141e6600360006008848154811061417157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461311f90919063ffffffff16565b925061427160046000600884815481106141fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361311f90919063ffffffff16565b91508080600101915050614040565b50614298600954600a546130d590919063ffffffff16565b8210156142b057600a546009549350935050506142b9565b81819350935050505b9091565b6000806000806142cc85615176565b905060006142d9866151a8565b90506000614302826142f4858a61311f90919063ffffffff16565b61311f90919063ffffffff16565b90508083839550955095505050509193909250565b60008060008061433085896139e090919063ffffffff16565b9050600061434786896139e090919063ffffffff16565b9050600061435e87896139e090919063ffffffff16565b9050600061438782614379858761311f90919063ffffffff16565b61311f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6060600267ffffffffffffffff811180156143ba57600080fd5b506040519080825280602002602001820160405280156143e95781602001602082028036833780820191505090505b50905030816000815181106143fa57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561449a57600080fd5b505afa1580156144ae573d6000803e3d6000fd5b505050506040513d60208110156144c457600080fd5b8101908080519060200190929190505050816001815181106144e257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614547307f000000000000000000000000000000000000000000000000000000000000000084613171565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156146095780820151818401526020810190506145ee565b505050509050019650505050505050600060405180830381600087803b15801561463257600080fd5b505af1158015614646573d6000803e3d6000fd5b505050505050565b614679307f000000000000000000000000000000000000000000000000000000000000000084613171565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806146c361233f565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561474857600080fd5b505af115801561475c573d6000803e3d6000fd5b50505050506040513d606081101561477357600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b6000600f541480156147b357506000601154145b156147bd576147e0565b600f546010819055506011546012819055506000600f8190555060006011819055505b565b6000806000806000806147f487613984565b95509550955095509550955061485287600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311f90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148e786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311f90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061497c85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506149c8816151da565b6149d2848361537f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614a5487613984565b955095509550955095509550614ab286600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311f90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b4783600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614bdc85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c28816151da565b614c32848361537f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614cb487613984565b955095509550955095509550614d1286600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311f90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614da785600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614df3816151da565b614dfd848361537f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614e7f87613984565b955095509550955095509550614edd87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311f90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f7286600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311f90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061500783600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061509c85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150e8816151da565b6150f2848361537f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601054600f81905550601254601181905550565b60006151a16103e8615193600f54856139e090919063ffffffff16565b6130d590919063ffffffff16565b9050919050565b60006151d36103e86151c5601154856139e090919063ffffffff16565b6130d590919063ffffffff16565b9050919050565b60006151e46138d1565b905060006151fb82846139e090919063ffffffff16565b905061524f81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561537a5761533683600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61539482600a5461311f90919063ffffffff16565b600a819055506153af81600b546138fc90919063ffffffff16565b600b81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bb2a585711bce4e20f96adc212d3d501bb296da8cda9ae408b68f03882a15fd364736f6c634300060c0033416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e73
Deployed Bytecode
0x60806040526004361061026b5760003560e01c80636bc87c3a11610144578063a69df4b5116100b6578063d0c4afa91161007a578063d0c4afa914610d82578063d543dbeb14610dd3578063dd46706414610e0e578063dd62ed3e14610e49578063ea2f0b3714610ece578063f2fde38b14610f1f57610272565b8063a69df4b514610c67578063a9059cbb14610c7e578063aa45026b14610cef578063b6c5232414610d1a578063c49b9a8014610d4557610272565b80637d1db4a5116101085780637d1db4a514610a5857806388f8202014610a835780638da5cb5b14610aea5780638ee88c5314610b2b57806395d89b4114610b66578063a457c2d714610bf657610272565b80636bc87c3a1461092557806370a082311461095057806371433e9d146109b5578063715018a614610a065780637aec6eab14610a1d57610272565b80633685d419116101dd5780634549b039116101a15780634549b0391461077957806349bd5a5e146107d45780634a74bb021461081557806352390c02146108425780635342acb4146108935780635b8f5dd9146108fa57610272565b80633685d4191461060057806339509351146106515780633b124fe7146106c25780633bd5d173146106ed578063437823ec1461072857610272565b80631694505e1161022f5780631694505e1461041f57806318160ddd1461046057806323b872dd1461048b57806327442d4a1461051c5780632d83811914610583578063313ce567146105d257610272565b8063061c82d01461027757806306fdde03146102b2578063095ea7b31461034257806311a63e17146103b357806313114a9d146103f457610272565b3661027257005b600080fd5b34801561028357600080fd5b506102b06004803603602081101561029a57600080fd5b8101908080359060200190929190505050610f70565b005b3480156102be57600080fd5b506102c7611042565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103075780820151818401526020810190506102ec565b50505050905090810190601f1680156103345780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034e57600080fd5b5061039b6004803603604081101561036557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110e4565b60405180821515815260200191505060405180910390f35b3480156103bf57600080fd5b506103c8611102565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040057600080fd5b50610409611128565b6040518082815260200191505060405180910390f35b34801561042b57600080fd5b50610434611132565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561046c57600080fd5b50610475611156565b6040518082815260200191505060405180910390f35b34801561049757600080fd5b50610504600480360360608110156104ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611160565b60405180821515815260200191505060405180910390f35b34801561052857600080fd5b5061056b6004803603602081101561053f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611239565b60405180821515815260200191505060405180910390f35b34801561058f57600080fd5b506105bc600480360360208110156105a657600080fd5b8101908080359060200190929190505050611259565b6040518082815260200191505060405180910390f35b3480156105de57600080fd5b506105e76112dd565b604051808260ff16815260200191505060405180910390f35b34801561060c57600080fd5b5061064f6004803603602081101561062357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112f4565b005b34801561065d57600080fd5b506106aa6004803603604081101561067457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061167e565b60405180821515815260200191505060405180910390f35b3480156106ce57600080fd5b506106d7611731565b6040518082815260200191505060405180910390f35b3480156106f957600080fd5b506107266004803603602081101561071057600080fd5b8101908080359060200190929190505050611737565b005b34801561073457600080fd5b506107776004803603602081101561074b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c8565b005b34801561078557600080fd5b506107be6004803603604081101561079c57600080fd5b81019080803590602001909291908035151590602001909291905050506119eb565b6040518082815260200191505060405180910390f35b3480156107e057600080fd5b506107e9611aa2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082157600080fd5b5061082a611ac6565b60405180821515815260200191505060405180910390f35b34801561084e57600080fd5b506108916004803603602081101561086557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ad9565b005b34801561089f57600080fd5b506108e2600480360360208110156108b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611df3565b60405180821515815260200191505060405180910390f35b34801561090657600080fd5b5061090f611e49565b6040518082815260200191505060405180910390f35b34801561093157600080fd5b5061093a611e4f565b6040518082815260200191505060405180910390f35b34801561095c57600080fd5b5061099f6004803603602081101561097357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e55565b6040518082815260200191505060405180910390f35b3480156109c157600080fd5b50610a04600480360360208110156109d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f40565b005b348015610a1257600080fd5b50610a1b612063565b005b348015610a2957600080fd5b50610a5660048036036020811015610a4057600080fd5b81019080803590602001909291905050506121e9565b005b348015610a6457600080fd5b50610a6d6122e3565b6040518082815260200191505060405180910390f35b348015610a8f57600080fd5b50610ad260048036036020811015610aa657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122e9565b60405180821515815260200191505060405180910390f35b348015610af657600080fd5b50610aff61233f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b3757600080fd5b50610b6460048036036020811015610b4e57600080fd5b8101908080359060200190929190505050612368565b005b348015610b7257600080fd5b50610b7b61243a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bbb578082015181840152602081019050610ba0565b50505050905090810190601f168015610be85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c0257600080fd5b50610c4f60048036036040811015610c1957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506124dc565b60405180821515815260200191505060405180910390f35b348015610c7357600080fd5b50610c7c6125a9565b005b348015610c8a57600080fd5b50610cd760048036036040811015610ca157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506127c6565b60405180821515815260200191505060405180910390f35b348015610cfb57600080fd5b50610d046127e4565b6040518082815260200191505060405180910390f35b348015610d2657600080fd5b50610d2f6127ea565b6040518082815260200191505060405180910390f35b348015610d5157600080fd5b50610d8060048036036020811015610d6857600080fd5b810190808035151590602001909291905050506127f4565b005b348015610d8e57600080fd5b50610dd160048036036020811015610da557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612912565b005b348015610ddf57600080fd5b50610e0c60048036036020811015610df657600080fd5b8101908080359060200190929190505050612a35565b005b348015610e1a57600080fd5b50610e4760048036036020811015610e3157600080fd5b8101908080359060200190929190505050612b2f565b005b348015610e5557600080fd5b50610eb860048036036040811015610e6c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d20565b6040518082815260200191505060405180910390f35b348015610eda57600080fd5b50610f1d60048036036020811015610ef157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612da7565b005b348015610f2b57600080fd5b50610f6e60048036036020811015610f4257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612eca565b005b610f78613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611038576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600f8190555050565b6060600c8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110da5780601f106110af576101008083540402835291602001916110da565b820191906000526020600020905b8154815290600101906020018083116110bd57829003601f168201915b5050505050905090565b60006110f86110f1613169565b8484613171565b6001905092915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600954905090565b600061116d848484613368565b61122e84611179613169565b6112298560405180606001604052806028815260200161549860289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111df613169565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138119092919063ffffffff16565b613171565b600190509392505050565b60186020528060005260406000206000915054906101000a900460ff1681565b6000600a548211156112b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806153dd602a913960400191505060405180910390fd5b60006112c06138d1565b90506112d581846130d590919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b6112fc613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661147b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b60088054905081101561167a578173ffffffffffffffffffffffffffffffffffffffff16600882815481106114af57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561166d5760086001600880549050038154811061150b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061154357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061163357fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561167a565b808060010191505061147e565b5050565b600061172761168b613169565b84611722856005600061169c613169565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b613171565b6001905092915050565b600f5481565b6000611741613169565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156117e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615532602c913960400191505060405180910390fd5b60006117f183613984565b5050505050905061184a81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311f90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118a281600a5461311f90919063ffffffff16565b600a819055506118bd83600b546138fc90919063ffffffff16565b600b81905550505050565b6118d0613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611990576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954831115611a65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611a85576000611a7584613984565b5050505050905080915050611a9c565b6000611a9084613984565b50505050915050809150505b92915050565b7f00000000000000000000000045dc775cbaf9b148ede53e2702bf525d97254faa81565b601560019054906101000a900460ff1681565b611ae1613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611d3557611cf1600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611259565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b60115481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ef057600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611f3b565b611f38600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611259565b90505b919050565b611f48613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612008576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61206b613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461212b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6121f1613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6122da6103e86122cc836009546139e090919063ffffffff16565b6130d590919063ffffffff16565b60178190555050565b60165481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612370613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612430576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060118190555050565b6060600d8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124d25780601f106124a7576101008083540402835291602001916124d2565b820191906000526020600020905b8154815290600101906020018083116124b557829003601f168201915b5050505050905090565b600061259f6124e9613169565b8461259a856040518060600160405280602581526020016155816025913960056000612513613169565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138119092919063ffffffff16565b613171565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061555e6023913960400191505060405180910390fd5b60025442116126c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006127da6127d3613169565b8484613368565b6001905092915050565b60135481565b6000600254905090565b6127fc613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601560016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b61291a613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612a3d613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612afd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612b266103e8612b18836009546139e090919063ffffffff16565b6130d590919063ffffffff16565b60168190555050565b612b37613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bf7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612daf613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612ed2613169565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613018576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154076026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061311783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613a66565b905092915050565b600061316183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613811565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061550e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561327d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061542d6022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154e96025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613474576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806153ba6023913960400191505060405180910390fd5b73ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561352a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f5468616e6b7320564220666f7220686f646c696e672e0000000000000000000081525060200191505060405180910390fd5b60008111613583576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806154c06029913960400191505060405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136275750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561368857601654811115613687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544f6028913960400191505060405180910390fd5b5b600061369330611e55565b905060165481106136a45760165490505b600060175482101590508080156136c85750601560009054906101000a900460ff16155b801561372057507f00000000000000000000000045dc775cbaf9b148ede53e2702bf525d97254faa73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156137385750601560019054906101000a900460ff165b1561374c57601754915061374b82613b2c565b5b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806137f35750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137fd57600090505b61380986868684613d1b565b505050505050565b60008383111582906138be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613883578082015181840152602081019050613868565b50505050905090810190601f1680156138b05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006138de61402c565b915091506138f581836130d590919063ffffffff16565b9250505090565b60008082840190508381101561397a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080600080600080600080600061399b8a6142bd565b92509250925060008060006139b98d86866139b46138d1565b614317565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000808314156139f35760009050613a60565b6000828402905082848281613a0457fe5b0414613a5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806154776021913960400191505060405180910390fd5b809150505b92915050565b60008083118290613b12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613ad7578082015181840152602081019050613abc565b50505050905090810190601f168015613b045780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613b1e57fe5b049050809150509392505050565b6001601560006101000a81548160ff0219169083151502179055506000613b72601454613b64601354856139e090919063ffffffff16565b6130d590919063ffffffff16565b90506000613b89828461311f90919063ffffffff16565b90506000613ba16002836130d590919063ffffffff16565b90506000613bb8828461311f90919063ffffffff16565b905060004790506000613bd486856138fc90919063ffffffff16565b9050613bdf816143a0565b6000613bf4834761311f90919063ffffffff16565b90506000613c21601454613c13601354856139e090919063ffffffff16565b6130d590919063ffffffff16565b9050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613c8b573d6000803e3d6000fd5b506000613ca1828461311f90919063ffffffff16565b9050613cad868261464e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184848860405180848152602001838152602001828152602001935050505060405180910390a15050505050505050506000601560006101000a81548160ff02191690831515021790555050565b80613d2957613d2861479f565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613dcc5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613de157613ddc8484846147e2565b614018565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613e845750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e9957613e94848484614a42565b614017565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613f3d5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613f5257613f4d848484614ca2565b614016565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613ff45750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561400957614004848484614e6d565b614015565b614014848484614ca2565b5b5b5b5b8061402657614025615162565b5b50505050565b6000806000600a5490506000600954905060005b6008805490508110156142805782600360006008848154811061405f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061414657508160046000600884815481106140de57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561415d57600a54600954945094505050506142b9565b6141e6600360006008848154811061417157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461311f90919063ffffffff16565b925061427160046000600884815481106141fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361311f90919063ffffffff16565b91508080600101915050614040565b50614298600954600a546130d590919063ffffffff16565b8210156142b057600a546009549350935050506142b9565b81819350935050505b9091565b6000806000806142cc85615176565b905060006142d9866151a8565b90506000614302826142f4858a61311f90919063ffffffff16565b61311f90919063ffffffff16565b90508083839550955095505050509193909250565b60008060008061433085896139e090919063ffffffff16565b9050600061434786896139e090919063ffffffff16565b9050600061435e87896139e090919063ffffffff16565b9050600061438782614379858761311f90919063ffffffff16565b61311f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6060600267ffffffffffffffff811180156143ba57600080fd5b506040519080825280602002602001820160405280156143e95781602001602082028036833780820191505090505b50905030816000815181106143fa57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561449a57600080fd5b505afa1580156144ae573d6000803e3d6000fd5b505050506040513d60208110156144c457600080fd5b8101908080519060200190929190505050816001815181106144e257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614547307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84613171565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156146095780820151818401526020810190506145ee565b505050509050019650505050505050600060405180830381600087803b15801561463257600080fd5b505af1158015614646573d6000803e3d6000fd5b505050505050565b614679307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84613171565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806146c361233f565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561474857600080fd5b505af115801561475c573d6000803e3d6000fd5b50505050506040513d606081101561477357600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b6000600f541480156147b357506000601154145b156147bd576147e0565b600f546010819055506011546012819055506000600f8190555060006011819055505b565b6000806000806000806147f487613984565b95509550955095509550955061485287600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311f90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148e786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311f90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061497c85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506149c8816151da565b6149d2848361537f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614a5487613984565b955095509550955095509550614ab286600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311f90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b4783600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614bdc85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c28816151da565b614c32848361537f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614cb487613984565b955095509550955095509550614d1286600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311f90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614da785600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614df3816151da565b614dfd848361537f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614e7f87613984565b955095509550955095509550614edd87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311f90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f7286600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311f90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061500783600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061509c85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150e8816151da565b6150f2848361537f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601054600f81905550601254601181905550565b60006151a16103e8615193600f54856139e090919063ffffffff16565b6130d590919063ffffffff16565b9050919050565b60006151d36103e86151c5601154856139e090919063ffffffff16565b6130d590919063ffffffff16565b9050919050565b60006151e46138d1565b905060006151fb82846139e090919063ffffffff16565b905061524f81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561537a5761533683600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fc90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61539482600a5461311f90919063ffffffff16565b600a819055506153af81600b546138fc90919063ffffffff16565b600b81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bb2a585711bce4e20f96adc212d3d501bb296da8cda9ae408b68f03882a15fd364736f6c634300060c0033
Deployed Bytecode Sourcemap
29809:19942:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48601:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32715:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33627:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31362:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34748:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30908:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32992:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33796:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31275:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35672:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32901:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36388:479;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34117:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30599:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34843:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;48356:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35228:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30966:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31045:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35933:447;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;48221:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30834:61;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30687:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33095:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;49212:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20534:148;;;;;;;;;;;;;:::i;:::-;;49018:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31098:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34620:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19891:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;48711:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32806:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34343:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21544:293;;;;;;;;;;;;;:::i;:::-;;33301:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30794:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21089:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;49480:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;49348:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;48844:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21254:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33476:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48479:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20837:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;48601:98;20113:12;:10;:12::i;:::-;20103:22;;:6;;;;;;;;;;:22;;;20095:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48685:6:::1;48675:7;:16;;;;48601:98:::0;:::o;32715:83::-;32752:13;32785:5;32778:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32715:83;:::o;33627:161::-;33702:4;33719:39;33728:12;:10;:12::i;:::-;33742:7;33751:6;33719:8;:39::i;:::-;33776:4;33769:11;;33627:161;;;;:::o;31362:33::-;;;;;;;;;;;;;:::o;34748:87::-;34790:7;34817:10;;34810:17;;34748:87;:::o;30908:51::-;;;:::o;32992:95::-;33045:7;33072;;33065:14;;32992:95;:::o;33796:313::-;33894:4;33911:36;33921:6;33929:9;33940:6;33911:9;:36::i;:::-;33958:121;33967:6;33975:12;:10;:12::i;:::-;33989:89;34027:6;33989:89;;;;;;;;;;;;;;;;;:11;:19;34001:6;33989:19;;;;;;;;;;;;;;;:33;34009:12;:10;:12::i;:::-;33989:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;33958:8;:121::i;:::-;34097:4;34090:11;;33796:313;;;;;:::o;31275:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;35672:253::-;35738:7;35777;;35766;:18;;35758:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35842:19;35865:10;:8;:10::i;:::-;35842:33;;35893:24;35905:11;35893:7;:11;;:24;;;;:::i;:::-;35886:31;;;35672:253;;;:::o;32901:83::-;32942:5;32967:9;;;;;;;;;;;32960:16;;32901:83;:::o;36388:479::-;20113:12;:10;:12::i;:::-;20103:22;;:6;;;;;;;;;;:22;;;20095:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36470:11:::1;:20;36482:7;36470:20;;;;;;;;;;;;;;;;;;;;;;;;;36462:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;36538:9;36533:327;36557:9;:16;;;;36553:1;:20;36533:327;;;36615:7;36599:23;;:9;36609:1;36599:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;36595:254;;;36658:9;36687:1;36668:9;:16;;;;:20;36658:31;;;;;;;;;;;;;;;;;;;;;;;;;36643:9;36653:1;36643:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;36727:1;36708:7;:16;36716:7;36708:16;;;;;;;;;;;;;;;:20;;;;36770:5;36747:11;:20;36759:7;36747:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;36794:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36828:5;;36595:254;36575:3;;;;;;;36533:327;;;;36388:479:::0;:::o;34117:218::-;34205:4;34222:83;34231:12;:10;:12::i;:::-;34245:7;34254:50;34293:10;34254:11;:25;34266:12;:10;:12::i;:::-;34254:25;;;;;;;;;;;;;;;:34;34280:7;34254:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;34222:8;:83::i;:::-;34323:4;34316:11;;34117:218;;;;:::o;30599:27::-;;;;:::o;34843:377::-;34895:14;34912:12;:10;:12::i;:::-;34895:29;;34944:11;:19;34956:6;34944:19;;;;;;;;;;;;;;;;;;;;;;;;;34943:20;34935:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35024:15;35048:19;35059:7;35048:10;:19::i;:::-;35023:44;;;;;;;35096:28;35116:7;35096;:15;35104:6;35096:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;35078:7;:15;35086:6;35078:15;;;;;;;;;;;;;;;:46;;;;35145:20;35157:7;35145;;:11;;:20;;;;:::i;:::-;35135:7;:30;;;;35189:23;35204:7;35189:10;;:14;;:23;;;;:::i;:::-;35176:10;:36;;;;34843:377;;;:::o;48356:111::-;20113:12;:10;:12::i;:::-;20103:22;;:6;;;;;;;;;;:22;;;20095:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48455:4:::1;48425:18;:27;48444:7;48425:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;48356:111:::0;:::o;35228:436::-;35318:7;35357;;35346;:18;;35338:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35416:17;35411:246;;35451:15;35475:19;35486:7;35475:10;:19::i;:::-;35450:44;;;;;;;35516:7;35509:14;;;;;35411:246;35558:23;35589:19;35600:7;35589:10;:19::i;:::-;35556:52;;;;;;;35630:15;35623:22;;;35228:436;;;;;:::o;30966:38::-;;;:::o;31045:40::-;;;;;;;;;;;;;:::o;35933:447::-;20113:12;:10;:12::i;:::-;20103:22;;:6;;;;;;;;;;:22;;;20095:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36130:11:::1;:20;36142:7;36130:20;;;;;;;;;;;;;;;;;;;;;;;;;36129:21;36121:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;36215:1;36196:7;:16;36204:7;36196:16;;;;;;;;;;;;;;;;:20;36193:108;;;36252:37;36272:7;:16;36280:7;36272:16;;;;;;;;;;;;;;;;36252:19;:37::i;:::-;36233:7;:16;36241:7;36233:16;;;;;;;;;;;;;;;:56;;;;36193:108;36334:4;36311:11;:20;36323:7;36311:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;36349:9;36364:7;36349:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35933:447:::0;:::o;48221:123::-;48285:4;48309:18;:27;48328:7;48309:27;;;;;;;;;;;;;;;;;;;;;;;;;48302:34;;48221:123;;;:::o;30834:61::-;;;;:::o;30687:34::-;;;;:::o;33095:198::-;33161:7;33185:11;:20;33197:7;33185:20;;;;;;;;;;;;;;;;;;;;;;;;;33181:49;;;33214:7;:16;33222:7;33214:16;;;;;;;;;;;;;;;;33207:23;;;;33181:49;33248:37;33268:7;:16;33276:7;33268:16;;;;;;;;;;;;;;;;33248:19;:37::i;:::-;33241:44;;33095:198;;;;:::o;49212:120::-;20113:12;:10;:12::i;:::-;20103:22;;:6;;;;;;;;;;:22;;;20095:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49318:4:::1;49287:19;:28;49307:7;49287:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;49212:120:::0;:::o;20534:148::-;20113:12;:10;:12::i;:::-;20103:22;;:6;;;;;;;;;;:22;;;20095:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20641:1:::1;20604:40;;20625:6;::::0;::::1;;;;;;;;20604:40;;;;;;;;;;;;20672:1;20655:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;20534:148::o:0;49018:181::-;20113:12;:10;:12::i;:::-;20103:22;;:6;;;;;;;;;;:22;;;20095:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49136:52:::1;49172:5;49136:15;49148:2;49136:7;;:11;;:15;;;;:::i;:::-;:19;;:52;;;;:::i;:::-;49104:29;:84;;;;49018:181:::0;:::o;31098:31::-;;;;:::o;34620:120::-;34688:4;34712:11;:20;34724:7;34712:20;;;;;;;;;;;;;;;;;;;;;;;;;34705:27;;34620:120;;;:::o;19891:79::-;19929:7;19956:6;;;;;;;;;;;19949:13;;19891:79;:::o;48711:122::-;20113:12;:10;:12::i;:::-;20103:22;;:6;;;;;;;;;;:22;;;20095:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48813:12:::1;48797:13;:28;;;;48711:122:::0;:::o;32806:87::-;32845:13;32878:7;32871:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32806:87;:::o;34343:269::-;34436:4;34453:129;34462:12;:10;:12::i;:::-;34476:7;34485:96;34524:15;34485:96;;;;;;;;;;;;;;;;;:11;:25;34497:12;:10;:12::i;:::-;34485:25;;;;;;;;;;;;;;;:34;34511:7;34485:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;34453:8;:129::i;:::-;34600:4;34593:11;;34343:269;;;;:::o;21544:293::-;21614:10;21596:28;;:14;;;;;;;;;;;:28;;;21588:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21689:9;;21683:3;:15;21675:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21780:14;;;;;;;;;;;21751:44;;21772:6;;;;;;;;;;21751:44;;;;;;;;;;;;21815:14;;;;;;;;;;;21806:6;;:23;;;;;;;;;;;;;;;;;;21544:293::o;33301:167::-;33379:4;33396:42;33406:12;:10;:12::i;:::-;33420:9;33431:6;33396:9;:42::i;:::-;33456:4;33449:11;;33301:167;;;;:::o;30794:27::-;;;;:::o;21089:89::-;21134:7;21161:9;;21154:16;;21089:89;:::o;49480:171::-;20113:12;:10;:12::i;:::-;20103:22;;:6;;;;;;;;;;:22;;;20095:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49581:8:::1;49557:21;;:32;;;;;;;;;;;;;;;;;;49605:38;49634:8;49605:38;;;;;;;;;;;;;;;;;;;;49480:171:::0;:::o;49348:124::-;20113:12;:10;:12::i;:::-;20103:22;;:6;;;;;;;;;;:22;;;20095:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49457:5:::1;49426:19;:28;49446:7;49426:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;49348:124:::0;:::o;48844:162::-;20113:12;:10;:12::i;:::-;20103:22;;:6;;;;;;;;;;:22;;;20095:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48938:60:::1;48982:5;48938:25;48950:12;48938:7;;:11;;:25;;;;:::i;:::-;:29;;:60;;;;:::i;:::-;48923:12;:75;;;;48844:162:::0;:::o;21254:214::-;20113:12;:10;:12::i;:::-;20103:22;;:6;;;;;;;;;;:22;;;20095:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21335:6:::1;::::0;::::1;;;;;;;;21318:14;;:23;;;;;;;;;;;;;;;;;;21369:1;21352:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;21400:4;21394:3;:10;21382:9;:22;;;;21457:1;21420:40;;21441:6;::::0;::::1;;;;;;;;21420:40;;;;;;;;;;;;21254:214:::0;:::o;33476:143::-;33557:7;33584:11;:18;33596:5;33584:18;;;;;;;;;;;;;;;:27;33603:7;33584:27;;;;;;;;;;;;;;;;33577:34;;33476:143;;;;:::o;48479:110::-;20113:12;:10;:12::i;:::-;20103:22;;:6;;;;;;;;;;:22;;;20095:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48576:5:::1;48546:18;:27;48565:7;48546:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;48479:110:::0;:::o;20837:244::-;20113:12;:10;:12::i;:::-;20103:22;;:6;;;;;;;;;;:22;;;20095:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20946:1:::1;20926:22;;:8;:22;;;;20918:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21036:8;21007:38;;21028:6;::::0;::::1;;;;;;;;21007:38;;;;;;;;;;;;21065:8;21056:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;20837:244:::0;:::o;10107:132::-;10165:7;10192:39;10196:1;10199;10192:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;10185:46;;10107:132;;;;:::o;8270:136::-;8328:7;8355:43;8359:1;8362;8355:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8348:50;;8270:136;;;;:::o;12299:106::-;12352:15;12387:10;12380:17;;12299:106;:::o;36875:337::-;36985:1;36968:19;;:5;:19;;;;36960:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37066:1;37047:21;;:7;:21;;;;37039:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37150:6;37120:11;:18;37132:5;37120:18;;;;;;;;;;;;;;;:27;37139:7;37120:27;;;;;;;;;;;;;;;:36;;;;37188:7;37172:32;;37181:5;37172:32;;;37197:6;37172:32;;;;;;;;;;;;;;;;;;36875:337;;;:::o;37220:1931::-;37358:1;37342:18;;:4;:18;;;;37334:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37435:1;37421:16;;:2;:16;;;;37413:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37504:42;37496:50;;:4;:50;;;;37488:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37601:1;37592:6;:10;37584:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37663:19;:25;37683:4;37663:25;;;;;;;;;;;;;;;;;;;;;;;;;37662:26;:54;;;;;37693:19;:23;37713:2;37693:23;;;;;;;;;;;;;;;;;;;;;;;;;37692:24;37662:54;37659:147;;;37749:12;;37739:6;:22;;37731:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37659:147;38101:28;38132:24;38150:4;38132:9;:24::i;:::-;38101:55;;38204:12;;38180:20;:36;38177:112;;38265:12;;38242:35;;38177:112;38309:24;38360:29;;38336:20;:53;;38309:80;;38418:19;:53;;;;;38455:16;;;;;;;;;;;38454:17;38418:53;:91;;;;;38496:13;38488:21;;:4;:21;;;;38418:91;:129;;;;;38526:21;;;;;;;;;;;38418:129;38400:318;;;38597:29;;38574:52;;38670:36;38685:20;38670:14;:36::i;:::-;38400:318;38799:12;38814:4;38799:19;;38926:18;:24;38945:4;38926:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;38954:18;:22;38973:2;38954:22;;;;;;;;;;;;;;;;;;;;;;;;;38926:50;38923:96;;;39002:5;38992:15;;38923:96;39105:38;39120:4;39125:2;39128:6;39135:7;39105:14;:38::i;:::-;37220:1931;;;;;;:::o;8709:192::-;8795:7;8828:1;8823;:6;;8831:12;8815:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8855:9;8871:1;8867;:5;8855:17;;8892:1;8885:8;;;8709:192;;;;;:::o;46371:163::-;46412:7;46433:15;46450;46469:19;:17;:19::i;:::-;46432:56;;;;46506:20;46518:7;46506;:11;;:20;;;;:::i;:::-;46499:27;;;;46371:163;:::o;7806:181::-;7864:7;7884:9;7900:1;7896;:5;7884:17;;7925:1;7920;:6;;7912:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7978:1;7971:8;;;7806:181;;;;:::o;45169:419::-;45228:7;45237;45246;45255;45264;45273;45294:23;45319:12;45333:18;45355:20;45367:7;45355:11;:20::i;:::-;45293:82;;;;;;45387:15;45404:23;45429:12;45445:50;45457:7;45466:4;45472:10;45484;:8;:10::i;:::-;45445:11;:50::i;:::-;45386:109;;;;;;45514:7;45523:15;45540:4;45546:15;45563:4;45569:10;45506:74;;;;;;;;;;;;;;;;;;45169:419;;;;;;;:::o;9160:471::-;9218:7;9468:1;9463;:6;9459:47;;;9493:1;9486:8;;;;9459:47;9518:9;9534:1;9530;:5;9518:17;;9563:1;9558;9554;:5;;;;;;:10;9546:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9622:1;9615:8;;;9160:471;;;;;:::o;10735:278::-;10821:7;10853:1;10849;:5;10856:12;10841:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10880:9;10896:1;10892;:5;;;;;;10880:17;;11004:1;10997:8;;;10735:278;;;;;:::o;39159:1476::-;31721:4;31702:16;;:23;;;;;;;;;;;;;;;;;;39244:17:::1;39264:59;39302:20;;39264:33;39289:7;;39264:20;:24;;:33;;;;:::i;:::-;:37;;:59;;;;:::i;:::-;39244:79;;39334:23;39360:35;39385:9;39360:20;:24;;:35;;;;:::i;:::-;39334:61;;39416:27;39446:22;39466:1;39446:15;:19;;:22;;;;:::i;:::-;39416:52;;39479:32;39514:40;39534:19;39514:15;:19;;:40;;;;:::i;:::-;39479:75;;39840:22;39865:21;39840:46;;39931:20;39954:34;39978:9;39954:19;:23;;:34;;;;:::i;:::-;39931:57;;39999:30;40016:12;39999:16;:30::i;:::-;40160:18;40181:41;40207:14;40181:21;:25;;:41;;;;:::i;:::-;40160:62;;40243:18;40264:49;40292:20;;40264:23;40279:7;;40264:10;:14;;:23;;;;:::i;:::-;:27;;:49;;;;:::i;:::-;40243:70;;40324:10;;;;;;;;;;;:19;;:31;40344:10;40324:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;40376:24;40403:26;40418:10;40403;:14;;:26;;;;:::i;:::-;40376:53;;40479:56;40492:24;40518:16;40479:12;:56::i;:::-;40561:66;40576:12;40590:10;40602:24;40561:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31736:1;;;;;;;;;31767:5:::0;31748:16;;:24;;;;;;;;;;;;;;;;;;39159:1476;:::o;41840:834::-;41951:7;41947:40;;41973:14;:12;:14::i;:::-;41947:40;42012:11;:19;42024:6;42012:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;42036:11;:22;42048:9;42036:22;;;;;;;;;;;;;;;;;;;;;;;;;42035:23;42012:46;42008:597;;;42075:48;42097:6;42105:9;42116:6;42075:21;:48::i;:::-;42008:597;;;42146:11;:19;42158:6;42146:19;;;;;;;;;;;;;;;;;;;;;;;;;42145:20;:46;;;;;42169:11;:22;42181:9;42169:22;;;;;;;;;;;;;;;;;;;;;;;;;42145:46;42141:464;;;42208:46;42228:6;42236:9;42247:6;42208:19;:46::i;:::-;42141:464;;;42277:11;:19;42289:6;42277:19;;;;;;;;;;;;;;;;;;;;;;;;;42276:20;:47;;;;;42301:11;:22;42313:9;42301:22;;;;;;;;;;;;;;;;;;;;;;;;;42300:23;42276:47;42272:333;;;42340:44;42358:6;42366:9;42377:6;42340:17;:44::i;:::-;42272:333;;;42406:11;:19;42418:6;42406:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;42429:11;:22;42441:9;42429:22;;;;;;;;;;;;;;;;;;;;;;;;;42406:45;42402:203;;;42468:48;42490:6;42498:9;42509:6;42468:21;:48::i;:::-;42402:203;;;42549:44;42567:6;42575:9;42586:6;42549:17;:44::i;:::-;42402:203;42272:333;42141:464;42008:597;42629:7;42625:41;;42651:15;:13;:15::i;:::-;42625:41;41840:834;;;;:::o;46542:561::-;46592:7;46601;46621:15;46639:7;;46621:25;;46657:15;46675:7;;46657:25;;46704:9;46699:289;46723:9;:16;;;;46719:1;:20;46699:289;;;46789:7;46765;:21;46773:9;46783:1;46773:12;;;;;;;;;;;;;;;;;;;;;;;;;46765:21;;;;;;;;;;;;;;;;:31;:66;;;;46824:7;46800;:21;46808:9;46818:1;46808:12;;;;;;;;;;;;;;;;;;;;;;;;;46800:21;;;;;;;;;;;;;;;;:31;46765:66;46761:97;;;46841:7;;46850;;46833:25;;;;;;;;;46761:97;46883:34;46895:7;:21;46903:9;46913:1;46903:12;;;;;;;;;;;;;;;;;;;;;;;;;46895:21;;;;;;;;;;;;;;;;46883:7;:11;;:34;;;;:::i;:::-;46873:44;;46942:34;46954:7;:21;46962:9;46972:1;46962:12;;;;;;;;;;;;;;;;;;;;;;;;;46954:21;;;;;;;;;;;;;;;;46942:7;:11;;:34;;;;:::i;:::-;46932:44;;46741:3;;;;;;;46699:289;;;;47012:20;47024:7;;47012;;:11;;:20;;;;:::i;:::-;47002:7;:30;46998:61;;;47042:7;;47051;;47034:25;;;;;;;;46998:61;47078:7;47087;47070:25;;;;;;46542:561;;;:::o;45596:330::-;45656:7;45665;45674;45694:12;45709:24;45725:7;45709:15;:24::i;:::-;45694:39;;45744:18;45765:30;45787:7;45765:21;:30::i;:::-;45744:51;;45806:23;45832:33;45854:10;45832:17;45844:4;45832:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;45806:59;;45884:15;45901:4;45907:10;45876:42;;;;;;;;;45596:330;;;;;:::o;45934:429::-;46049:7;46058;46067;46087:15;46105:24;46117:11;46105:7;:11;;:24;;;;:::i;:::-;46087:42;;46140:12;46155:21;46164:11;46155:4;:8;;:21;;;;:::i;:::-;46140:36;;46187:18;46208:27;46223:11;46208:10;:14;;:27;;;;:::i;:::-;46187:48;;46246:23;46272:33;46294:10;46272:17;46284:4;46272:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;46246:59;;46324:7;46333:15;46350:4;46316:39;;;;;;;;;;45934:429;;;;;;;;:::o;40649:589::-;40775:21;40813:1;40799:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40775:40;;40844:4;40826;40831:1;40826:7;;;;;;;;;;;;;:23;;;;;;;;;;;40870:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40860:4;40865:1;40860:7;;;;;;;;;;;;;:32;;;;;;;;;;;40905:62;40922:4;40937:15;40955:11;40905:8;:62::i;:::-;41006:15;:66;;;41087:11;41113:1;41157:4;41184;41204:15;41006:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40649:589;;:::o;41246:513::-;41394:62;41411:4;41426:15;41444:11;41394:8;:62::i;:::-;41499:15;:31;;;41538:9;41571:4;41591:11;41617:1;41660;41703:7;:5;:7::i;:::-;41725:15;41499:252;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41246:513;;:::o;47822:250::-;47879:1;47868:7;;:12;:34;;;;;47901:1;47884:13;;:18;47868:34;47865:46;;;47904:7;;47865:46;47949:7;;47931:15;:25;;;;47991:13;;47967:21;:37;;;;48035:1;48025:7;:11;;;;48063:1;48047:13;:17;;;;47822:250;:::o;43786:566::-;43889:15;43906:23;43931:12;43945:23;43970:12;43984:18;44006:19;44017:7;44006:10;:19::i;:::-;43888:137;;;;;;;;;;;;44054:28;44074:7;44054;:15;44062:6;44054:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44036:7;:15;44044:6;44036:15;;;;;;;;;;;;;;;:46;;;;44111:28;44131:7;44111;:15;44119:6;44111:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44093:7;:15;44101:6;44093:15;;;;;;;;;;;;;;;:46;;;;44171:39;44194:15;44171:7;:18;44179:9;44171:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44150:7;:18;44158:9;44150:18;;;;;;;;;;;;;;;:60;;;;44224:26;44239:10;44224:14;:26::i;:::-;44261:23;44273:4;44279;44261:11;:23::i;:::-;44317:9;44300:44;;44309:6;44300:44;;;44328:15;44300:44;;;;;;;;;;;;;;;;;;43786:566;;;;;;;;;:::o;43192:586::-;43293:15;43310:23;43335:12;43349:23;43374:12;43388:18;43410:19;43421:7;43410:10;:19::i;:::-;43292:137;;;;;;;;;;;;43458:28;43478:7;43458;:15;43466:6;43458:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43440:7;:15;43448:6;43440:15;;;;;;;;;;;;;;;:46;;;;43518:39;43541:15;43518:7;:18;43526:9;43518:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43497:7;:18;43505:9;43497:18;;;;;;;;;;;;;;;:60;;;;43589:39;43612:15;43589:7;:18;43597:9;43589:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43568:7;:18;43576:9;43568:18;;;;;;;;;;;;;;;:60;;;;43650:26;43665:10;43650:14;:26::i;:::-;43687:23;43699:4;43705;43687:11;:23::i;:::-;43743:9;43726:44;;43735:6;43726:44;;;43754:15;43726:44;;;;;;;;;;;;;;;;;;43192:586;;;;;;;;;:::o;42682:502::-;42781:15;42798:23;42823:12;42837:23;42862:12;42876:18;42898:19;42909:7;42898:10;:19::i;:::-;42780:137;;;;;;;;;;;;42946:28;42966:7;42946;:15;42954:6;42946:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;42928:7;:15;42936:6;42928:15;;;;;;;;;;;;;;;:46;;;;43006:39;43029:15;43006:7;:18;43014:9;43006:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;42985:7;:18;42993:9;42985:18;;;;;;;;;;;;;;;:60;;;;43056:26;43071:10;43056:14;:26::i;:::-;43093:23;43105:4;43111;43093:11;:23::i;:::-;43149:9;43132:44;;43141:6;43132:44;;;43160:15;43132:44;;;;;;;;;;;;;;;;;;42682:502;;;;;;;;;:::o;44364:642::-;44467:15;44484:23;44509:12;44523:23;44548:12;44562:18;44584:19;44595:7;44584:10;:19::i;:::-;44466:137;;;;;;;;;;;;44632:28;44652:7;44632;:15;44640:6;44632:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44614:7;:15;44622:6;44614:15;;;;;;;;;;;;;;;:46;;;;44689:28;44709:7;44689;:15;44697:6;44689:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44671:7;:15;44679:6;44671:15;;;;;;;;;;;;;;;:46;;;;44749:39;44772:15;44749:7;:18;44757:9;44749:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44728:7;:18;44736:9;44728:18;;;;;;;;;;;;;;;:60;;;;44820:39;44843:15;44820:7;:18;44828:9;44820:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44799:7;:18;44807:9;44799:18;;;;;;;;;;;;;;;:60;;;;44878:26;44893:10;44878:14;:26::i;:::-;44915:23;44927:4;44933;44915:11;:23::i;:::-;44971:9;44954:44;;44963:6;44954:44;;;44982:15;44954:44;;;;;;;;;;;;;;;;;;44364:642;;;;;;;;;:::o;48084:125::-;48138:15;;48128:7;:25;;;;48180:21;;48164:13;:37;;;;48084:125::o;47482:154::-;47546:7;47573:55;47612:5;47573:20;47585:7;;47573;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;47566:62;;47482:154;;;:::o;47644:166::-;47714:7;47741:61;47786:5;47741:26;47753:13;;47741:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;47734:68;;47644:166;;;:::o;47115:355::-;47178:19;47201:10;:8;:10::i;:::-;47178:33;;47222:18;47243:27;47258:11;47243:10;:14;;:27;;;;:::i;:::-;47222:48;;47306:38;47333:10;47306:7;:22;47322:4;47306:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;47281:7;:22;47297:4;47281:22;;;;;;;;;;;;;;;:63;;;;47358:11;:26;47378:4;47358:26;;;;;;;;;;;;;;;;;;;;;;;;;47355:107;;;47424:38;47451:10;47424:7;:22;47440:4;47424:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;47399:7;:22;47415:4;47399:22;;;;;;;;;;;;;;;:63;;;;47355:107;47115:355;;;:::o;45014:147::-;45092:17;45104:4;45092:7;;:11;;:17;;;;:::i;:::-;45082:7;:27;;;;45133:20;45148:4;45133:10;;:14;;:20;;;;:::i;:::-;45120:10;:33;;;;45014:147;;:::o
Swarm Source
ipfs://bb2a585711bce4e20f96adc212d3d501bb296da8cda9ae408b68f03882a15fd3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.