ERC-20
Overview
Max Total Supply
1,000,000,000,000 FILET🥩
Holders
18
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
9,167.696964549 FILET🥩Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FILET
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-23 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.6.12; 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; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } 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; } } 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); } } } } 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 implementarion contract FILET 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; mapping (address => bool) private _isWhitelist; mapping (address => uint256) private _lockedTime; mapping (address => uint256) private _lockedAmount; mapping (address => uint256) private _antiBot; mapping (address => uint256) private _lockPreSale; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000 * 10**6 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = 'FILET🥩'; string private _symbol = 'FILET🥩'; uint8 private _decimals = 9; uint256 public _taxFee = 2; uint256 public _charityFee = 5; uint256 public _burnFee = 3; uint256 private _previousTaxFee = _taxFee; uint256 private _previousCharityFee = _charityFee; uint256 private _previousBurnFee = _burnFee; bool public _isAntiDumpEnabled = false; uint256 public antiDumpTime; address payable public _charityWalletAddress; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwap = false; bool public swapEnabled = true; uint256 private _maxTxAmount = 1000000000000 * 10**9; uint256 private _numOfTokensToExchangeForCharity = 5 * 10**6 * 10**9; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapEnabledUpdated(bool enabled); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor (address payable charityWalletAddress) public { _charityWalletAddress = charityWalletAddress; _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UniswapV2 for Ethereum network // 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; // Exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[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 isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function setExcludeFromFee(address account, bool excluded) external onlyOwner() { _isExcludedFromFee[account] = excluded; } 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 excludeAccount(address account) external 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 includeAccount(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 removeAllFee() private { if(_taxFee == 0 && _charityFee == 0 && _burnFee == 0) return; _previousTaxFee = _taxFee; _previousCharityFee = _charityFee; _previousBurnFee = _burnFee; _taxFee = 0; _charityFee = 0; _burnFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _charityFee = _previousCharityFee; _burnFee = _previousBurnFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } 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 sender, address recipient, uint256 amount) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(_isAntiDumpEnabled == true && sender != owner() && recipient != owner()){ if(sender == uniswapV2Pair){ uint256 timePassed = block.timestamp - _antiBot[recipient]; require(timePassed > antiDumpTime,'You must wait between trades'); _antiBot[recipient] = block.timestamp; } else if(recipient == uniswapV2Pair){ uint256 timePassed = block.timestamp - _antiBot[sender]; require(timePassed > antiDumpTime,'You must wait between trades'); _antiBot[sender] = block.timestamp; } else if(sender != uniswapV2Pair && recipient != uniswapV2Pair){ uint256 timePassed1 = block.timestamp - _antiBot[sender]; uint256 timePassed2 = block.timestamp - _antiBot[recipient]; require(timePassed1 > antiDumpTime && timePassed2 > antiDumpTime, 'You Must Wait Some Time Between Transactions'); _antiBot[sender] = block.timestamp; _antiBot[recipient] = block.timestamp; } } //If sender has purchased during presale, must wait lockPreSale to transfer. if(_isWhitelist[sender] == true) { uint256 time_since_purchase = block.timestamp - _lockedTime[sender]; if(time_since_purchase < _lockPreSale[sender]){ require((balanceOf(sender) - amount) >= _lockedAmount[sender], 'You Must Wait Some Time From Original Transaction'); } else { _isWhitelist[sender] == false; } } if(sender != owner() && recipient != owner()) 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? // also, don't get caught in a circular charity event. // also, don't swap if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForCharity; if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) { // We need to swap the current tokens to ETH and send to the charity wallet swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToCharity(address(this).balance); } } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ takeFee = false; } //transfer amount, it will take tax and charity fee _tokenTransfer(sender,recipient,amount,takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{ // 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 sendETHToCharity(uint256 amount) private { _charityWalletAddress.transfer(amount); } // We are exposing these functions to be able to manual swap and send // in case the token is highly valued and 5M becomes too much function manualSwap() external onlyOwner() { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSend() external onlyOwner() { uint256 contractETHBalance = address(this).balance; sendETHToCharity(contractETHBalance); } function setSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if(!takeFee) removeAllFee(); uint256 burnAmt = amount.mul(_burnFee).div(100); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount.sub(burnAmt)); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount.sub(burnAmt)); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount.sub(burnAmt)); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount.sub(burnAmt)); } else { _transferStandard(sender, recipient, amount.sub(burnAmt)); } //remove fees to burn tokens _taxFee = 0; _charityFee = 0; _transferStandard(sender, address(0), burnAmt); _taxFee = _previousTaxFee; _charityFee = _previousBurnFee; if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tCharity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeCharity(tCharity); _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 tCharity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeCharity(tCharity); _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 tCharity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeCharity(tCharity); _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 tCharity) = _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); _takeCharity(tCharity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeCharity(uint256 tCharity) private { uint256 currentRate = _getRate(); uint256 rCharity = tCharity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rCharity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tCharity); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tCharity) = _getTValues(tAmount, _taxFee, _charityFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tCharity); } function _getTValues(uint256 tAmount, uint256 taxFee, uint256 charityFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tCharity = tAmount.mul(charityFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tCharity); return (tTransferAmount, tFee, tCharity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee); 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 _getTaxFee() private view returns(uint256) { return _taxFee; } function _getMaxTxAmount() private view returns(uint256) { return _maxTxAmount; } function _getETHBalance() public view returns(uint256 balance) { return address(this).balance; } function _setTaxFee(uint256 taxFee) external onlyOwner() { _taxFee = taxFee; } function _setCharityFee(uint256 charityFee) external onlyOwner() { _charityFee = charityFee; } function _setCharityWallet(address payable charityWalletAddress) external onlyOwner() { _charityWalletAddress = charityWalletAddress; } function distTokens(address[] memory recipients, uint256[] memory amounts, uint256 time) external onlyOwner{ require(recipients.length == amounts.length, 'Arrays must have same size'); for(uint i = 0; i< recipients.length; i++){ _isWhitelist[recipients[i]] = true; _lockedTime[recipients[i]] = block.timestamp; _lockPreSale[recipients[i]] = time * 1 hours; uint256 amt = amounts[i].mul(10**9); _lockedAmount[recipients[i]] = amt; _tokenTransfer(msg.sender, recipients[i], amt, false); } } function setLockPreSaleTime(address _address, uint256 hour) external onlyOwner{ _lockPreSale[_address] = hour * 1 hours; } function setAntiDumpEnabled(bool value, uint256 time) external onlyOwner{ _isAntiDumpEnabled = value; antiDumpTime = time * 1 minutes; } function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"charityWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isAntiDumpEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"charityFee","type":"uint256"}],"name":"_setCharityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"charityWalletAddress","type":"address"}],"name":"_setCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiDumpTime","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":[],"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":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"distTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","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":"includeAccount","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":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","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":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setAntiDumpEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"hour","type":"uint256"}],"name":"setLockPreSaleTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","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
60c0604052683635c9adc5dea00000600e55600e54600019816200001f57fe5b0660001903600f556040518060400160405280600981526020017f46494c4554f09fa5a900000000000000000000000000000000000000000000008152506011908051906020019062000074929190620006b3565b506040518060400160405280600981526020017f46494c4554f09fa5a9000000000000000000000000000000000000000000000081525060129080519060200190620000c2929190620006b3565b506009601360006101000a81548160ff021916908360ff1602179055506002601455600560155560036016556014546017556015546018556016546019556000601a60006101000a81548160ff0219169083151502179055506000601c60146101000a81548160ff0219169083151502179055506001601c60156101000a81548160ff021916908315150217905550683635c9adc5dea00000601d556611c37937e08000601e553480156200017657600080fd5b50604051620066d4380380620066d4833981810160405260208110156200019c57600080fd5b81019080805190602001909291905050506000620001bf6200068260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f5460036000620002b56200068260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035357600080fd5b505afa15801562000368573d6000803e3d6000fd5b505050506040513d60208110156200037f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003f357600080fd5b505afa15801562000408573d6000803e3d6000fd5b505050506040513d60208110156200041f57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200049a57600080fd5b505af1158015620004af573d6000803e3d6000fd5b505050506040513d6020811015620004c657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506001600660006200055a6200068a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006136200068260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e546040518082815260200191505060405180910390a3505062000759565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006f657805160ff191683800117855562000727565b8280016001018555821562000727579182015b828111156200072657825182559160200191906001019062000709565b5b5090506200073691906200073a565b5090565b5b80821115620007555760008160009055506001016200073b565b5090565b60805160601c60a05160601c615f29620007ab60003980611b0652806139425280613a9d5280613bf85280613c4f528061413c52508061117a52806149e35280614acf5280614af65250615f296000f3fe6080604052600436106102815760003560e01c8063715018a61161014f578063c0b0fda2116100c1578063e01af92c1161007a578063e01af92c14610f3c578063f2cc0c1814610f79578063f2fde38b14610fca578063f42938901461101b578063f815a84214611032578063f84354f11461105d57610288565b8063c0b0fda214610d6c578063cba0e99614610d97578063cf996edd14610dfe578063d047e4b714610e2b578063dd46706414610e7c578063dd62ed3e14610eb757610288565b8063a24a8d0f11610113578063a24a8d0f14610bb0578063a457c2d714610beb578063a69df4b514610c5c578063a9059cbb14610c73578063af9549e014610ce4578063b6c5232414610d4157610288565b8063715018a614610a5c57806376d4ab9914610a735780638da5cb5b14610ab457806395d89b4114610af55780639c7a91fe14610b8557610288565b806339509351116101f35780635066d6ff116101ac5780635066d6ff146108b657806351bc3c85146109115780635342acb4146109285780635880b8731461098f5780636ddd1713146109ca57806370a08231146109f757610288565b806339509351146107185780633b124fe7146107895780633bd5d173146107b457806340f8007a146107ef5780634549b0391461081a57806349bd5a5e1461087557610288565b80631bbae6e0116102455780631bbae6e01461042557806323b872dd146104605780632d838119146104f15780632e6c2774146105405780632ee9cfdb146106a3578063313ce567146106ea57610288565b806306fdde031461028d578063095ea7b31461031d57806313114a9d1461038e5780631694505e146103b957806318160ddd146103fa57610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a26110ae565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e25780820151818401526020810190506102c7565b50505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032957600080fd5b506103766004803603604081101561034057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611150565b60405180821515815260200191505060405180910390f35b34801561039a57600080fd5b506103a361116e565b6040518082815260200191505060405180910390f35b3480156103c557600080fd5b506103ce611178565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040657600080fd5b5061040f61119c565b6040518082815260200191505060405180910390f35b34801561043157600080fd5b5061045e6004803603602081101561044857600080fd5b81019080803590602001909291905050506111a6565b005b34801561046c57600080fd5b506104d96004803603606081101561048357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611278565b60405180821515815260200191505060405180910390f35b3480156104fd57600080fd5b5061052a6004803603602081101561051457600080fd5b8101908080359060200190929190505050611351565b6040518082815260200191505060405180910390f35b34801561054c57600080fd5b506106a16004803603606081101561056357600080fd5b810190808035906020019064010000000081111561058057600080fd5b82018360208201111561059257600080fd5b803590602001918460208302840111640100000000831117156105b457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561061457600080fd5b82018360208201111561062657600080fd5b8035906020019184602083028401116401000000008311171561064857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506113d5565b005b3480156106af57600080fd5b506106e8600480360360408110156106c657600080fd5b81019080803515159060200190929190803590602001909291905050506116f6565b005b3480156106f657600080fd5b506106ff6117e6565b604051808260ff16815260200191505060405180910390f35b34801561072457600080fd5b506107716004803603604081101561073b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117fd565b60405180821515815260200191505060405180910390f35b34801561079557600080fd5b5061079e6118b0565b6040518082815260200191505060405180910390f35b3480156107c057600080fd5b506107ed600480360360208110156107d757600080fd5b81019080803590602001909291905050506118b6565b005b3480156107fb57600080fd5b50610804611a47565b6040518082815260200191505060405180910390f35b34801561082657600080fd5b5061085f6004803603604081101561083d57600080fd5b8101908080359060200190929190803515159060200190929190505050611a4d565b6040518082815260200191505060405180910390f35b34801561088157600080fd5b5061088a611b04565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108c257600080fd5b5061090f600480360360408110156108d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b28565b005b34801561091d57600080fd5b50610926611c3c565b005b34801561093457600080fd5b506109776004803603602081101561094b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d1d565b60405180821515815260200191505060405180910390f35b34801561099b57600080fd5b506109c8600480360360208110156109b257600080fd5b8101908080359060200190929190505050611d73565b005b3480156109d657600080fd5b506109df611e45565b60405180821515815260200191505060405180910390f35b348015610a0357600080fd5b50610a4660048036036020811015610a1a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e58565b6040518082815260200191505060405180910390f35b348015610a6857600080fd5b50610a71611f43565b005b348015610a7f57600080fd5b50610a886120c9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ac057600080fd5b50610ac96120ef565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b0157600080fd5b50610b0a612118565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b4a578082015181840152602081019050610b2f565b50505050905090810190601f168015610b775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b9157600080fd5b50610b9a6121ba565b6040518082815260200191505060405180910390f35b348015610bbc57600080fd5b50610be960048036036020811015610bd357600080fd5b81019080803590602001909291905050506121c0565b005b348015610bf757600080fd5b50610c4460048036036040811015610c0e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612292565b60405180821515815260200191505060405180910390f35b348015610c6857600080fd5b50610c7161235f565b005b348015610c7f57600080fd5b50610ccc60048036036040811015610c9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061257c565b60405180821515815260200191505060405180910390f35b348015610cf057600080fd5b50610d3f60048036036040811015610d0757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061259a565b005b348015610d4d57600080fd5b50610d566126bd565b6040518082815260200191505060405180910390f35b348015610d7857600080fd5b50610d816126c7565b6040518082815260200191505060405180910390f35b348015610da357600080fd5b50610de660048036036020811015610dba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126cd565b60405180821515815260200191505060405180910390f35b348015610e0a57600080fd5b50610e13612723565b60405180821515815260200191505060405180910390f35b348015610e3757600080fd5b50610e7a60048036036020811015610e4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612736565b005b348015610e8857600080fd5b50610eb560048036036020811015610e9f57600080fd5b8101908080359060200190929190505050612842565b005b348015610ec357600080fd5b50610f2660048036036040811015610eda57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a33565b6040518082815260200191505060405180910390f35b348015610f4857600080fd5b50610f7760048036036020811015610f5f57600080fd5b81019080803515159060200190929190505050612aba565b005b348015610f8557600080fd5b50610fc860048036036020811015610f9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b9f565b005b348015610fd657600080fd5b5061101960048036036020811015610fed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f52565b005b34801561102757600080fd5b5061103061315d565b005b34801561103e57600080fd5b50611047613236565b6040518082815260200191505060405180910390f35b34801561106957600080fd5b506110ac6004803603602081101561108057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061323e565b005b606060118054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111465780601f1061111b57610100808354040283529160200191611146565b820191906000526020600020905b81548152906001019060200180831161112957829003601f168201915b5050505050905090565b600061116461115d6135c8565b84846135d0565b6001905092915050565b6000601054905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600e54905090565b6111ae6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601d8190555050565b60006112858484846137c7565b611346846112916135c8565b61134185604051806060016040528060288152602001615dc460289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112f76135c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142789092919063ffffffff16565b6135d0565b600190509392505050565b6000600f548211156113ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615cdd602a913960400191505060405180910390fd5b60006113b8614338565b90506113cd818461436390919063ffffffff16565b915050919050565b6113dd6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461149d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8151835114611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f417272617973206d75737420686176652073616d652073697a6500000000000081525060200191505060405180910390fd5b60005b83518110156116f05760016009600086848151811061153257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555042600a600086848151811061159c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e108202600d60008684815181106115f757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611669633b9aca0085848151811061165357fe5b60200260200101516143ad90919063ffffffff16565b905080600b600087858151811061167c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116e2338684815181106116d257fe5b6020026020010151836000614433565b508080600101915050611517565b50505050565b6116fe6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81601a60006101000a81548160ff021916908315150217905550603c8102601b819055505050565b6000601360009054906101000a900460ff16905090565b60006118a661180a6135c8565b846118a1856005600061181b6135c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b6135d0565b6001905092915050565b60145481565b60006118c06135c8565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615e80602c913960400191505060405180910390fd5b600061197083614881565b505050505090506119c981600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a2181600f546148e890919063ffffffff16565b600f81905550611a3c836010546147f990919063ffffffff16565b601081905550505050565b60155481565b6000600e54831115611ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611ae7576000611ad784614881565b5050505050905080915050611afe565b6000611af284614881565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611b306135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610e108102600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b611c446135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000611d0f30611e58565b9050611d1a81614932565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611d7b6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060148190555050565b601c60159054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ef357600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611f3e565b611f3b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611351565b90505b919050565b611f4b6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461200b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060128054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121b05780601f10612185576101008083540402835291602001916121b0565b820191906000526020600020905b81548152906001019060200180831161219357829003601f168201915b5050505050905090565b601b5481565b6121c86135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612288576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b600061235561229f6135c8565b8461235085604051806060016040528060258152602001615ecf60259139600560006122c96135c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142789092919063ffffffff16565b6135d0565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612405576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615eac6023913960400191505060405180910390fd5b600254421161247c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006125906125896135c8565b84846137c7565b6001905092915050565b6125a26135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612662576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b60165481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601a60009054906101000a900460ff1681565b61273e6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61284a6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461290a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612ac26135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b82576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601c60156101000a81548160ff02191690831515021790555050565b612ba76135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615e5e6022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612e9457612e50600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611351565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f5a6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461301a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156130a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615d076026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6131656135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613225576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600047905061323381614c16565b50565b600047905090565b6132466135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166133c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6008805490508110156135c4578173ffffffffffffffffffffffffffffffffffffffff16600882815481106133f957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156135b75760086001600880549050038154811061345557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061348d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061357d57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556135c4565b80806001019150506133c8565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613656576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615e3a6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615d2d6022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561384d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615e156025913960400191505060405180910390fd5b600081116138a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615dec6029913960400191505060405180910390fd5b60011515601a60009054906101000a900460ff1615151480156138fc57506138cc6120ef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561393b575061390b6120ef565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613e24577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613a9b576000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050601b548111613a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f596f75206d7573742077616974206265747765656e207472616465730000000081525060200191505060405180910390fd5b42600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050613e23565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613bf6576000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050601b548111613bac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f596f75206d7573742077616974206265747765656e207472616465730000000081525060200191505060405180910390fd5b42600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050613e22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613c9e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613e21576000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054420390506000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050601b5482118015613d415750601b5481115b613d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615d4f602c913960400191505060405180910390fd5b42600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b5b5b5b60011515600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415614004576000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811015613fb157600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613f5486611e58565b031015613fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180615cac6031913960400191505060405180910390fd5b614002565b60001515600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a905050505b505b61400c6120ef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561407a575061404a6120ef565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156140db57601d548111156140da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615d7b6028913960400191505060405180910390fd5b5b60006140e630611e58565b9050601d5481106140f757601d5490505b6000601e548210159050601c60149054906101000a900460ff1615801561412a5750601c60159054906101000a900460ff165b80156141335750805b801561418b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156141b35761419982614932565b600047905060008111156141b1576141b047614c16565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061425a5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561426457600090505b61427086868684614433565b505050505050565b6000838311158290614325576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156142ea5780820151818401526020810190506142cf565b50505050905090810190601f1680156143175780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000614345614c82565b9150915061435c818361436390919063ffffffff16565b9250505090565b60006143a583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614f13565b905092915050565b6000808314156143c0576000905061442d565b60008284029050828482816143d157fe5b0414614428576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615da36021913960400191505060405180910390fd5b809150505b92915050565b8061444157614440614fd9565b5b600061446b606461445d601654866143ad90919063ffffffff16565b61436390919063ffffffff16565b9050600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156145105750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561453757614532858561452d84876148e890919063ffffffff16565b61503b565b6147b6565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156145da5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614601576145fc85856145f784876148e890919063ffffffff16565b61529b565b6147b5565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156146a55750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156146cc576146c785856146c284876148e890919063ffffffff16565b6154fb565b6147b4565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561476e5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561479557614790858561478b84876148e890919063ffffffff16565b6156c6565b6147b3565b6147b285856147ad84876148e890919063ffffffff16565b6154fb565b5b5b5b5b600060148190555060006015819055506147d2856000836154fb565b601754601481905550601954601581905550816147f2576147f16159bb565b5b5050505050565b600080828401905083811015614877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080600080600080600080600061489e8a6014546015546159d8565b92509250925060006148ae614338565b905060008060006148c08e8786615a6e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061492a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614278565b905092915050565b6001601c60146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff8111801561496757600080fd5b506040519080825280602002602001820160405280156149965781602001602082028036833780820191505090505b50905030816000815181106149a757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015614a4757600080fd5b505afa158015614a5b573d6000803e3d6000fd5b505050506040513d6020811015614a7157600080fd5b810190808051906020019092919050505081600181518110614a8f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614af4307f0000000000000000000000000000000000000000000000000000000000000000846135d0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614bb6578082015181840152602081019050614b9b565b505050509050019650505050505050600060405180830381600087803b158015614bdf57600080fd5b505af1158015614bf3573d6000803e3d6000fd5b50505050506000601c60146101000a81548160ff02191690831515021790555050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614c7e573d6000803e3d6000fd5b5050565b6000806000600f5490506000600e54905060005b600880549050811015614ed657826003600060088481548110614cb557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180614d9c5750816004600060088481548110614d3457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15614db357600f54600e5494509450505050614f0f565b614e3c6003600060088481548110614dc757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846148e890919063ffffffff16565b9250614ec76004600060088481548110614e5257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836148e890919063ffffffff16565b91508080600101915050614c96565b50614eee600e54600f5461436390919063ffffffff16565b821015614f0657600f54600e54935093505050614f0f565b81819350935050505b9091565b60008083118290614fbf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614f84578082015181840152602081019050614f69565b50505050905090810190601f168015614fb15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614fcb57fe5b049050809150509392505050565b6000601454148015614fed57506000601554145b8015614ffb57506000601654145b1561500557615039565b6014546017819055506015546018819055506016546019819055506000601481905550600060158190555060006016819055505b565b60008060008060008061504d87614881565b9550955095509550955095506150ab87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061514086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506151d585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061522181615acc565b61522b8483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806152ad87614881565b95509550955095509550955061530b86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506153a083600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061543585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061548181615acc565b61548b8483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061550d87614881565b95509550955095509550955061556b86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061560085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061564c81615acc565b6156568483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806156d887614881565b95509550955095509550955061573687600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506157cb86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061586083600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506158f585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061594181615acc565b61594b8483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601754601481905550601854601581905550601954601681905550565b600080600080615a0460646159f6888a6143ad90919063ffffffff16565b61436390919063ffffffff16565b90506000615a2e6064615a20888b6143ad90919063ffffffff16565b61436390919063ffffffff16565b90506000615a5782615a49858c6148e890919063ffffffff16565b6148e890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080615a8785886143ad90919063ffffffff16565b90506000615a9e86886143ad90919063ffffffff16565b90506000615ab582846148e890919063ffffffff16565b905082818395509550955050505093509350939050565b6000615ad6614338565b90506000615aed82846143ad90919063ffffffff16565b9050615b4181600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615c6c57615c2883600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b615c8682600f546148e890919063ffffffff16565b600f81905550615ca1816010546147f990919063ffffffff16565b601081905550505056fe596f75204d757374205761697420536f6d652054696d652046726f6d204f726967696e616c205472616e73616374696f6e416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373596f75204d757374205761697420536f6d652054696d65204265747765656e205472616e73616374696f6e735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122045fb1709a31e85a73883934f23bf2f32b057ed29d92260fab2c4d1467a59c4f364736f6c634300060c0033000000000000000000000000e2dec0750f92ea0971e4bd221471e272e9033c64
Deployed Bytecode
0x6080604052600436106102815760003560e01c8063715018a61161014f578063c0b0fda2116100c1578063e01af92c1161007a578063e01af92c14610f3c578063f2cc0c1814610f79578063f2fde38b14610fca578063f42938901461101b578063f815a84214611032578063f84354f11461105d57610288565b8063c0b0fda214610d6c578063cba0e99614610d97578063cf996edd14610dfe578063d047e4b714610e2b578063dd46706414610e7c578063dd62ed3e14610eb757610288565b8063a24a8d0f11610113578063a24a8d0f14610bb0578063a457c2d714610beb578063a69df4b514610c5c578063a9059cbb14610c73578063af9549e014610ce4578063b6c5232414610d4157610288565b8063715018a614610a5c57806376d4ab9914610a735780638da5cb5b14610ab457806395d89b4114610af55780639c7a91fe14610b8557610288565b806339509351116101f35780635066d6ff116101ac5780635066d6ff146108b657806351bc3c85146109115780635342acb4146109285780635880b8731461098f5780636ddd1713146109ca57806370a08231146109f757610288565b806339509351146107185780633b124fe7146107895780633bd5d173146107b457806340f8007a146107ef5780634549b0391461081a57806349bd5a5e1461087557610288565b80631bbae6e0116102455780631bbae6e01461042557806323b872dd146104605780632d838119146104f15780632e6c2774146105405780632ee9cfdb146106a3578063313ce567146106ea57610288565b806306fdde031461028d578063095ea7b31461031d57806313114a9d1461038e5780631694505e146103b957806318160ddd146103fa57610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a26110ae565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e25780820151818401526020810190506102c7565b50505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032957600080fd5b506103766004803603604081101561034057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611150565b60405180821515815260200191505060405180910390f35b34801561039a57600080fd5b506103a361116e565b6040518082815260200191505060405180910390f35b3480156103c557600080fd5b506103ce611178565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040657600080fd5b5061040f61119c565b6040518082815260200191505060405180910390f35b34801561043157600080fd5b5061045e6004803603602081101561044857600080fd5b81019080803590602001909291905050506111a6565b005b34801561046c57600080fd5b506104d96004803603606081101561048357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611278565b60405180821515815260200191505060405180910390f35b3480156104fd57600080fd5b5061052a6004803603602081101561051457600080fd5b8101908080359060200190929190505050611351565b6040518082815260200191505060405180910390f35b34801561054c57600080fd5b506106a16004803603606081101561056357600080fd5b810190808035906020019064010000000081111561058057600080fd5b82018360208201111561059257600080fd5b803590602001918460208302840111640100000000831117156105b457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561061457600080fd5b82018360208201111561062657600080fd5b8035906020019184602083028401116401000000008311171561064857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506113d5565b005b3480156106af57600080fd5b506106e8600480360360408110156106c657600080fd5b81019080803515159060200190929190803590602001909291905050506116f6565b005b3480156106f657600080fd5b506106ff6117e6565b604051808260ff16815260200191505060405180910390f35b34801561072457600080fd5b506107716004803603604081101561073b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117fd565b60405180821515815260200191505060405180910390f35b34801561079557600080fd5b5061079e6118b0565b6040518082815260200191505060405180910390f35b3480156107c057600080fd5b506107ed600480360360208110156107d757600080fd5b81019080803590602001909291905050506118b6565b005b3480156107fb57600080fd5b50610804611a47565b6040518082815260200191505060405180910390f35b34801561082657600080fd5b5061085f6004803603604081101561083d57600080fd5b8101908080359060200190929190803515159060200190929190505050611a4d565b6040518082815260200191505060405180910390f35b34801561088157600080fd5b5061088a611b04565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108c257600080fd5b5061090f600480360360408110156108d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b28565b005b34801561091d57600080fd5b50610926611c3c565b005b34801561093457600080fd5b506109776004803603602081101561094b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d1d565b60405180821515815260200191505060405180910390f35b34801561099b57600080fd5b506109c8600480360360208110156109b257600080fd5b8101908080359060200190929190505050611d73565b005b3480156109d657600080fd5b506109df611e45565b60405180821515815260200191505060405180910390f35b348015610a0357600080fd5b50610a4660048036036020811015610a1a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e58565b6040518082815260200191505060405180910390f35b348015610a6857600080fd5b50610a71611f43565b005b348015610a7f57600080fd5b50610a886120c9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ac057600080fd5b50610ac96120ef565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b0157600080fd5b50610b0a612118565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b4a578082015181840152602081019050610b2f565b50505050905090810190601f168015610b775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b9157600080fd5b50610b9a6121ba565b6040518082815260200191505060405180910390f35b348015610bbc57600080fd5b50610be960048036036020811015610bd357600080fd5b81019080803590602001909291905050506121c0565b005b348015610bf757600080fd5b50610c4460048036036040811015610c0e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612292565b60405180821515815260200191505060405180910390f35b348015610c6857600080fd5b50610c7161235f565b005b348015610c7f57600080fd5b50610ccc60048036036040811015610c9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061257c565b60405180821515815260200191505060405180910390f35b348015610cf057600080fd5b50610d3f60048036036040811015610d0757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061259a565b005b348015610d4d57600080fd5b50610d566126bd565b6040518082815260200191505060405180910390f35b348015610d7857600080fd5b50610d816126c7565b6040518082815260200191505060405180910390f35b348015610da357600080fd5b50610de660048036036020811015610dba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126cd565b60405180821515815260200191505060405180910390f35b348015610e0a57600080fd5b50610e13612723565b60405180821515815260200191505060405180910390f35b348015610e3757600080fd5b50610e7a60048036036020811015610e4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612736565b005b348015610e8857600080fd5b50610eb560048036036020811015610e9f57600080fd5b8101908080359060200190929190505050612842565b005b348015610ec357600080fd5b50610f2660048036036040811015610eda57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a33565b6040518082815260200191505060405180910390f35b348015610f4857600080fd5b50610f7760048036036020811015610f5f57600080fd5b81019080803515159060200190929190505050612aba565b005b348015610f8557600080fd5b50610fc860048036036020811015610f9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b9f565b005b348015610fd657600080fd5b5061101960048036036020811015610fed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f52565b005b34801561102757600080fd5b5061103061315d565b005b34801561103e57600080fd5b50611047613236565b6040518082815260200191505060405180910390f35b34801561106957600080fd5b506110ac6004803603602081101561108057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061323e565b005b606060118054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111465780601f1061111b57610100808354040283529160200191611146565b820191906000526020600020905b81548152906001019060200180831161112957829003601f168201915b5050505050905090565b600061116461115d6135c8565b84846135d0565b6001905092915050565b6000601054905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600e54905090565b6111ae6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601d8190555050565b60006112858484846137c7565b611346846112916135c8565b61134185604051806060016040528060288152602001615dc460289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112f76135c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142789092919063ffffffff16565b6135d0565b600190509392505050565b6000600f548211156113ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615cdd602a913960400191505060405180910390fd5b60006113b8614338565b90506113cd818461436390919063ffffffff16565b915050919050565b6113dd6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461149d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8151835114611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f417272617973206d75737420686176652073616d652073697a6500000000000081525060200191505060405180910390fd5b60005b83518110156116f05760016009600086848151811061153257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555042600a600086848151811061159c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e108202600d60008684815181106115f757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611669633b9aca0085848151811061165357fe5b60200260200101516143ad90919063ffffffff16565b905080600b600087858151811061167c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116e2338684815181106116d257fe5b6020026020010151836000614433565b508080600101915050611517565b50505050565b6116fe6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81601a60006101000a81548160ff021916908315150217905550603c8102601b819055505050565b6000601360009054906101000a900460ff16905090565b60006118a661180a6135c8565b846118a1856005600061181b6135c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b6135d0565b6001905092915050565b60145481565b60006118c06135c8565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615e80602c913960400191505060405180910390fd5b600061197083614881565b505050505090506119c981600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a2181600f546148e890919063ffffffff16565b600f81905550611a3c836010546147f990919063ffffffff16565b601081905550505050565b60155481565b6000600e54831115611ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611ae7576000611ad784614881565b5050505050905080915050611afe565b6000611af284614881565b50505050915050809150505b92915050565b7f000000000000000000000000d8fc410699bd0a2c2ddefd3842d8358dd3bdb45a81565b611b306135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610e108102600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b611c446135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000611d0f30611e58565b9050611d1a81614932565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611d7b6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060148190555050565b601c60159054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ef357600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611f3e565b611f3b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611351565b90505b919050565b611f4b6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461200b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060128054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121b05780601f10612185576101008083540402835291602001916121b0565b820191906000526020600020905b81548152906001019060200180831161219357829003601f168201915b5050505050905090565b601b5481565b6121c86135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612288576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b600061235561229f6135c8565b8461235085604051806060016040528060258152602001615ecf60259139600560006122c96135c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142789092919063ffffffff16565b6135d0565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612405576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615eac6023913960400191505060405180910390fd5b600254421161247c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006125906125896135c8565b84846137c7565b6001905092915050565b6125a26135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612662576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b60165481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601a60009054906101000a900460ff1681565b61273e6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61284a6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461290a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612ac26135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b82576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601c60156101000a81548160ff02191690831515021790555050565b612ba76135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615e5e6022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612e9457612e50600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611351565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f5a6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461301a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156130a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615d076026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6131656135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613225576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600047905061323381614c16565b50565b600047905090565b6132466135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166133c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6008805490508110156135c4578173ffffffffffffffffffffffffffffffffffffffff16600882815481106133f957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156135b75760086001600880549050038154811061345557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061348d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061357d57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556135c4565b80806001019150506133c8565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613656576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615e3a6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615d2d6022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561384d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615e156025913960400191505060405180910390fd5b600081116138a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615dec6029913960400191505060405180910390fd5b60011515601a60009054906101000a900460ff1615151480156138fc57506138cc6120ef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561393b575061390b6120ef565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613e24577f000000000000000000000000d8fc410699bd0a2c2ddefd3842d8358dd3bdb45a73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613a9b576000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050601b548111613a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f596f75206d7573742077616974206265747765656e207472616465730000000081525060200191505060405180910390fd5b42600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050613e23565b7f000000000000000000000000d8fc410699bd0a2c2ddefd3842d8358dd3bdb45a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613bf6576000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050601b548111613bac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f596f75206d7573742077616974206265747765656e207472616465730000000081525060200191505060405180910390fd5b42600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050613e22565b7f000000000000000000000000d8fc410699bd0a2c2ddefd3842d8358dd3bdb45a73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613c9e57507f000000000000000000000000d8fc410699bd0a2c2ddefd3842d8358dd3bdb45a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613e21576000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054420390506000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050601b5482118015613d415750601b5481115b613d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615d4f602c913960400191505060405180910390fd5b42600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b5b5b5b60011515600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415614004576000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811015613fb157600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613f5486611e58565b031015613fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180615cac6031913960400191505060405180910390fd5b614002565b60001515600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a905050505b505b61400c6120ef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561407a575061404a6120ef565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156140db57601d548111156140da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615d7b6028913960400191505060405180910390fd5b5b60006140e630611e58565b9050601d5481106140f757601d5490505b6000601e548210159050601c60149054906101000a900460ff1615801561412a5750601c60159054906101000a900460ff165b80156141335750805b801561418b57507f000000000000000000000000d8fc410699bd0a2c2ddefd3842d8358dd3bdb45a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156141b35761419982614932565b600047905060008111156141b1576141b047614c16565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061425a5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561426457600090505b61427086868684614433565b505050505050565b6000838311158290614325576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156142ea5780820151818401526020810190506142cf565b50505050905090810190601f1680156143175780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000614345614c82565b9150915061435c818361436390919063ffffffff16565b9250505090565b60006143a583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614f13565b905092915050565b6000808314156143c0576000905061442d565b60008284029050828482816143d157fe5b0414614428576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615da36021913960400191505060405180910390fd5b809150505b92915050565b8061444157614440614fd9565b5b600061446b606461445d601654866143ad90919063ffffffff16565b61436390919063ffffffff16565b9050600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156145105750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561453757614532858561452d84876148e890919063ffffffff16565b61503b565b6147b6565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156145da5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614601576145fc85856145f784876148e890919063ffffffff16565b61529b565b6147b5565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156146a55750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156146cc576146c785856146c284876148e890919063ffffffff16565b6154fb565b6147b4565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561476e5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561479557614790858561478b84876148e890919063ffffffff16565b6156c6565b6147b3565b6147b285856147ad84876148e890919063ffffffff16565b6154fb565b5b5b5b5b600060148190555060006015819055506147d2856000836154fb565b601754601481905550601954601581905550816147f2576147f16159bb565b5b5050505050565b600080828401905083811015614877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080600080600080600080600061489e8a6014546015546159d8565b92509250925060006148ae614338565b905060008060006148c08e8786615a6e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061492a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614278565b905092915050565b6001601c60146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff8111801561496757600080fd5b506040519080825280602002602001820160405280156149965781602001602082028036833780820191505090505b50905030816000815181106149a757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015614a4757600080fd5b505afa158015614a5b573d6000803e3d6000fd5b505050506040513d6020811015614a7157600080fd5b810190808051906020019092919050505081600181518110614a8f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614af4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846135d0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614bb6578082015181840152602081019050614b9b565b505050509050019650505050505050600060405180830381600087803b158015614bdf57600080fd5b505af1158015614bf3573d6000803e3d6000fd5b50505050506000601c60146101000a81548160ff02191690831515021790555050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614c7e573d6000803e3d6000fd5b5050565b6000806000600f5490506000600e54905060005b600880549050811015614ed657826003600060088481548110614cb557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180614d9c5750816004600060088481548110614d3457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15614db357600f54600e5494509450505050614f0f565b614e3c6003600060088481548110614dc757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846148e890919063ffffffff16565b9250614ec76004600060088481548110614e5257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836148e890919063ffffffff16565b91508080600101915050614c96565b50614eee600e54600f5461436390919063ffffffff16565b821015614f0657600f54600e54935093505050614f0f565b81819350935050505b9091565b60008083118290614fbf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614f84578082015181840152602081019050614f69565b50505050905090810190601f168015614fb15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614fcb57fe5b049050809150509392505050565b6000601454148015614fed57506000601554145b8015614ffb57506000601654145b1561500557615039565b6014546017819055506015546018819055506016546019819055506000601481905550600060158190555060006016819055505b565b60008060008060008061504d87614881565b9550955095509550955095506150ab87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061514086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506151d585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061522181615acc565b61522b8483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806152ad87614881565b95509550955095509550955061530b86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506153a083600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061543585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061548181615acc565b61548b8483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061550d87614881565b95509550955095509550955061556b86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061560085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061564c81615acc565b6156568483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806156d887614881565b95509550955095509550955061573687600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506157cb86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061586083600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506158f585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061594181615acc565b61594b8483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601754601481905550601854601581905550601954601681905550565b600080600080615a0460646159f6888a6143ad90919063ffffffff16565b61436390919063ffffffff16565b90506000615a2e6064615a20888b6143ad90919063ffffffff16565b61436390919063ffffffff16565b90506000615a5782615a49858c6148e890919063ffffffff16565b6148e890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080615a8785886143ad90919063ffffffff16565b90506000615a9e86886143ad90919063ffffffff16565b90506000615ab582846148e890919063ffffffff16565b905082818395509550955050505093509350939050565b6000615ad6614338565b90506000615aed82846143ad90919063ffffffff16565b9050615b4181600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615c6c57615c2883600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b615c8682600f546148e890919063ffffffff16565b600f81905550615ca1816010546147f990919063ffffffff16565b601081905550505056fe596f75204d757374205761697420536f6d652054696d652046726f6d204f726967696e616c205472616e73616374696f6e416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373596f75204d757374205761697420536f6d652054696d65204265747765656e205472616e73616374696f6e735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122045fb1709a31e85a73883934f23bf2f32b057ed29d92260fab2c4d1467a59c4f364736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000e2dec0750f92ea0971e4bd221471e272e9033c64
-----Decoded View---------------
Arg [0] : charityWalletAddress (address): 0xe2dEC0750F92eA0971e4bD221471e272E9033C64
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000e2dec0750f92ea0971e4bd221471e272e9033c64
Deployed Bytecode Sourcemap
26519:22427:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29547:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30551:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31899:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28102:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29860:103;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48819:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30736:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32907:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;47806:638;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;48628:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29757:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31077:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27663:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32006:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27701:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32423:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28164:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;48464:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40007:168;;;;;;;;;;;;;:::i;:::-;;34776:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;47381:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28245:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29975:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16354:160;;;;;;;;;;;;;:::i;:::-;;28045:44;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15652:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29650:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28005:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;47493:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31319:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17461:313;;;;;;;;;;;;;:::i;:::-;;30197:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31742:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16958:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27742:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31612:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27956:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;47629:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17139:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30388:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;40378:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33188:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16686:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40195:171;;;;;;;;;;;;;:::i;:::-;;47243:118;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33675:522;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29547:91;29584:13;29621:5;29614:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29547:91;:::o;30551:173::-;30626:4;30647:39;30656:12;:10;:12::i;:::-;30670:7;30679:6;30647:8;:39::i;:::-;30708:4;30701:11;;30551:173;;;;:::o;31899:95::-;31941:7;31972:10;;31965:17;;31899:95;:::o;28102:51::-;;;:::o;29860:103::-;29913:7;29944;;29937:14;;29860:103;:::o;48819:120::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48916:11:::1;48901:12;:26;;;;48819:120:::0;:::o;30736:329::-;30834:4;30855:36;30865:6;30873:9;30884:6;30855:9;:36::i;:::-;30906:121;30915:6;30923:12;:10;:12::i;:::-;30937:89;30975:6;30937:89;;;;;;;;;;;;;;;;;:11;:19;30949:6;30937:19;;;;;;;;;;;;;;;:33;30957:12;:10;:12::i;:::-;30937:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;30906:8;:121::i;:::-;31049:4;31042:11;;30736:329;;;;;:::o;32907:269::-;32973:7;33016;;33005;:18;;32997:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33085:19;33108:10;:8;:10::i;:::-;33085:33;;33140:24;33152:11;33140:7;:11;;:24;;;;:::i;:::-;33133:31;;;32907:269;;;:::o;47806:638::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47957:7:::1;:14;47936:10;:17;:35;47928:74;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;48021:6;48017:416;48036:10;:17;48033:1;:20;48017:416;;;48108:4;48078:12;:27;48091:10;48102:1;48091:13;;;;;;;;;;;;;;48078:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;48160:15;48131:11;:26;48143:10;48154:1;48143:13;;;;;;;;;;;;;;48131:26;;;;;;;;;;;;;;;:44;;;;48231:7;48224:4;:14;48194:12;:27;48207:10;48218:1;48207:13;;;;;;;;;;;;;;48194:27;;;;;;;;;;;;;;;:44;;;;48257:11;48271:21;48286:5;48271:7;48279:1;48271:10;;;;;;;;;;;;;;:14;;:21;;;;:::i;:::-;48257:35;;48342:3;48311:13;:28;48325:10;48336:1;48325:13;;;;;;;;;;;;;;48311:28;;;;;;;;;;;;;;;:34;;;;48364:53;48379:10;48391;48402:1;48391:13;;;;;;;;;;;;;;48406:3;48411:5;48364:14;:53::i;:::-;48017:416;48055:3;;;;;;;48017:416;;;;47806:638:::0;;;:::o;48628:171::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48736:5:::1;48715:18;;:26;;;;;;;;;;;;;;;;;;48778:9;48771:4;:16;48756:12;:31;;;;48628:171:::0;;:::o;29757:91::-;29798:5;29827:9;;;;;;;;;;;29820:16;;29757:91;:::o;31077:230::-;31165:4;31186:83;31195:12;:10;:12::i;:::-;31209:7;31218:50;31257:10;31218:11;:25;31230:12;:10;:12::i;:::-;31218:25;;;;;;;;;;;;;;;:34;31244:7;31218:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;31186:8;:83::i;:::-;31291:4;31284:11;;31077:230;;;;:::o;27663:26::-;;;;:::o;32006:405::-;32062:14;32079:12;:10;:12::i;:::-;32062:29;;32115:11;:19;32127:6;32115:19;;;;;;;;;;;;;;;;;;;;;;;;;32114:20;32106:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32199:15;32223:19;32234:7;32223:10;:19::i;:::-;32198:44;;;;;;;32275:28;32295:7;32275;:15;32283:6;32275:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32257:7;:15;32265:6;32257:15;;;;;;;;;;;;;;;:46;;;;32328:20;32340:7;32328;;:11;;:20;;;;:::i;:::-;32318:7;:30;;;;32376:23;32391:7;32376:10;;:14;;:23;;;;:::i;:::-;32363:10;:36;;;;32006:405;;;:::o;27701:30::-;;;;:::o;32423:472::-;32513:7;32556;;32545;:18;;32537:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32619:17;32614:270;;32658:15;32682:19;32693:7;32682:10;:19::i;:::-;32657:44;;;;;;;32727:7;32720:14;;;;;32614:270;32777:23;32808:19;32819:7;32808:10;:19::i;:::-;32775:52;;;;;;;32853:15;32846:22;;;32423:472;;;;;:::o;28164:38::-;;;:::o;48464:144::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48589:7:::1;48582:4;:14;48557:12;:22;48570:8;48557:22;;;;;;;;;;;;;;;:39;;;;48464:144:::0;;:::o;40007:168::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40065:23:::1;40091:24;40109:4;40091:9;:24::i;:::-;40065:50;;40130:33;40147:15;40130:16;:33::i;:::-;15964:1;40007:168::o:0;34776:131::-;34840:4;34868:18;:27;34887:7;34868:27;;;;;;;;;;;;;;;;;;;;;;;;;34861:34;;34776:131;;;:::o;47381:100::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47463:6:::1;47453:7;:16;;;;47381:100:::0;:::o;28245:30::-;;;;;;;;;;;;;:::o;29975:210::-;30041:7;30069:11;:20;30081:7;30069:20;;;;;;;;;;;;;;;;;;;;;;;;;30065:49;;;30098:7;:16;30106:7;30098:16;;;;;;;;;;;;;;;;30091:23;;;;30065:49;30136:37;30156:7;:16;30164:7;30156:16;;;;;;;;;;;;;;;;30136:19;:37::i;:::-;30129:44;;29975:210;;;;:::o;16354:160::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16465:1:::1;16428:40;;16449:6;::::0;::::1;;;;;;;;16428:40;;;;;;;;;;;;16500:1;16483:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16354:160::o:0;28045:44::-;;;;;;;;;;;;;:::o;15652:87::-;15690:7;15721:6;;;;;;;;;;;15714:13;;15652:87;:::o;29650:95::-;29689:13;29726:7;29719:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29650:95;:::o;28005:27::-;;;;:::o;47493:116::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47587:10:::1;47573:11;:24;;;;47493:116:::0;:::o;31319:281::-;31412:4;31433:129;31442:12;:10;:12::i;:::-;31456:7;31465:96;31504:15;31465:96;;;;;;;;;;;;;;;;;:11;:25;31477:12;:10;:12::i;:::-;31465:25;;;;;;;;;;;;;;;:34;31491:7;31465:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;31433:8;:129::i;:::-;31584:4;31577:11;;31319:281;;;;:::o;17461:313::-;17535:10;17517:28;;:14;;;;;;;;;;;:28;;;17509:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17614:9;;17608:3;:15;17600:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17709:14;;;;;;;;;;;17680:44;;17701:6;;;;;;;;;;17680:44;;;;;;;;;;;;17748:14;;;;;;;;;;;17739:6;;:23;;;;;;;;;;;;;;;;;;17461:313::o;30197:179::-;30275:4;30296:42;30306:12;:10;:12::i;:::-;30320:9;30331:6;30296:9;:42::i;:::-;30360:4;30353:11;;30197:179;;;;:::o;31742:145::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31867:8:::1;31837:18;:27;31856:7;31837:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;31742:145:::0;;:::o;16958:97::-;17003:7;17034:9;;17027:16;;16958:97;:::o;27742:27::-;;;;:::o;31612:118::-;31670:4;31698:11;:20;31710:7;31698:20;;;;;;;;;;;;;;;;;;;;;;;;;31691:27;;31612:118;;;:::o;27956:38::-;;;;;;;;;;;;;:::o;47629:157::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47754:20:::1;47730:21;;:44;;;;;;;;;;;;;;;;;;47629:157:::0;:::o;17139:234::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17224:6:::1;::::0;::::1;;;;;;;;17207:14;;:23;;;;;;;;;;;;;;;;;;17262:1;17245:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;17297:4;17291:3;:10;17279:9;:22;;;;17358:1;17321:40;;17342:6;::::0;::::1;;;;;;;;17321:40;;;;;;;;;;;;17139:234:::0;:::o;30388:151::-;30469:7;30500:11;:18;30512:5;30500:18;;;;;;;;;;;;;;;:27;30519:7;30500:27;;;;;;;;;;;;;;;;30493:34;;30388:151;;;;:::o;40378:106::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40465:7:::1;40451:11;;:21;;;;;;;;;;;;;;;;;;40378:106:::0;:::o;33188:475::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33284:42:::1;33273:53;;:7;:53;;;;33265:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33389:11;:20;33401:7;33389:20;;;;;;;;;;;;;;;;;;;;;;;;;33388:21;33380:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33478:1;33459:7;:16;33467:7;33459:16;;;;;;;;;;;;;;;;:20;33456:116;;;33519:37;33539:7;:16;33547:7;33539:16;;;;;;;;;;;;;;;;33519:19;:37::i;:::-;33500:7;:16;33508:7;33500:16;;;;;;;;;;;;;;;:56;;;;33456:116;33609:4;33586:11;:20;33598:7;33586:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;33628:9;33643:7;33628:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33188:475:::0;:::o;16686:260::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16799:1:::1;16779:22;;:8;:22;;;;16771:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16893:8;16864:38;;16885:6;::::0;::::1;;;;;;;;16864:38;;;;;;;;;;;;16926:8;16917:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16686:260:::0;:::o;40195:171::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40253:26:::1;40282:21;40253:50;;40318:36;40335:18;40318:16;:36::i;:::-;15964:1;40195:171::o:0;47243:118::-;47289:15;47328:21;47321:28;;47243:118;:::o;33675:522::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33760:11:::1;:20;33772:7;33760:20;;;;;;;;;;;;;;;;;;;;;;;;;33752:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33832:9;33827:359;33851:9;:16;;;;33847:1;:20;33827:359;;;33913:7;33897:23;;:9;33907:1;33897:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;33893:278;;;33960:9;33989:1;33970:9;:16;;;;:20;33960:31;;;;;;;;;;;;;;;;;;;;;;;;;33945:9;33955:1;33945:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;34033:1;34014:7;:16;34022:7;34014:16;;;;;;;;;;;;;;;:20;;;;34080:5;34057:11;:20;34069:7;34057:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;34108:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34146:5;;33893:278;33869:3;;;;;;;33827:359;;;;33675:522:::0;:::o;109:114::-;162:15;201:10;194:17;;109:114;:::o;34919:357::-;35033:1;35016:19;;:5;:19;;;;35008:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35118:1;35099:21;;:7;:21;;;;35091:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35206:6;35176:11;:18;35188:5;35176:18;;;;;;;;;;;;;;;:27;35195:7;35176:27;;;;;;;;;;;;;;;:36;;;;35248:7;35232:32;;35241:5;35232:32;;;35257:6;35232:32;;;;;;;;;;;;;;;;;;34919:357;;;:::o;35288:3746::-;35407:1;35389:20;;:6;:20;;;;35381:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35483:1;35474:6;:10;35466:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35570:4;35548:26;;:18;;;;;;;;;;;:26;;;:47;;;;;35588:7;:5;:7::i;:::-;35578:17;;:6;:17;;;;35548:47;:71;;;;;35612:7;:5;:7::i;:::-;35599:20;;:9;:20;;;;35548:71;35545:1195;;;35652:13;35642:23;;:6;:23;;;35639:1086;;;35689:18;35728:8;:19;35737:9;35728:19;;;;;;;;;;;;;;;;35710:15;:37;35689:58;;35791:12;;35778:10;:25;35770:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35880:15;35858:8;:19;35867:9;35858:19;;;;;;;;;;;;;;;:37;;;;35639:1086;;;;35954:13;35941:26;;:9;:26;;;35938:787;;;35991:18;36030:8;:16;36039:6;36030:16;;;;;;;;;;;;;;;;36012:15;:34;35991:55;;36090:12;;36077:10;:25;36069:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36176:15;36157:8;:16;36166:6;36157:16;;;;;;;;;;;;;;;:34;;;;35938:787;;;;36247:13;36237:23;;:6;:23;;;;:53;;;;;36277:13;36264:26;;:9;:26;;;;36237:53;36234:491;;;36314:19;36354:8;:16;36363:6;36354:16;;;;;;;;;;;;;;;;36336:15;:34;36314:56;;36393:19;36433:8;:19;36442:9;36433:19;;;;;;;;;;;;;;;;36415:15;:37;36393:59;;36497:12;;36483:11;:26;:56;;;;;36527:12;;36513:11;:26;36483:56;36475:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36630:15;36611:8;:16;36620:6;36611:16;;;;;;;;;;;;;;;:34;;;;36690:15;36668:8;:19;36677:9;36668:19;;;;;;;;;;;;;;;:37;;;;36234:491;;;35938:787;35639:1086;35545:1195;36885:4;36861:28;;:12;:20;36874:6;36861:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;36858:452;;;36910:27;36958:11;:19;36970:6;36958:19;;;;;;;;;;;;;;;;36940:15;:37;36910:67;;37021:12;:20;37034:6;37021:20;;;;;;;;;;;;;;;;36999:19;:42;36996:299;;;37105:13;:21;37119:6;37105:21;;;;;;;;;;;;;;;;37094:6;37074:17;37084:6;37074:9;:17::i;:::-;:26;37073:53;;37065:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36996:299;;;37270:5;37246:29;;:12;:20;37259:6;37246:20;;;;;;;;;;;;;;;;;;;;;;;;:29;36996:299;36858:452;;37337:7;:5;:7::i;:::-;37327:17;;:6;:17;;;;:41;;;;;37361:7;:5;:7::i;:::-;37348:20;;:9;:20;;;;37327:41;37324:138;;;37405:12;;37395:6;:22;;37387:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37324:138;37748:28;37779:24;37797:4;37779:9;:24::i;:::-;37748:55;;37859:12;;37835:20;:36;37832:124;;37928:12;;37905:35;;37832:124;37984:24;38035:32;;38011:20;:56;;37984:83;;38087:6;;;;;;;;;;;38086:7;:22;;;;;38097:11;;;;;;;;;;;38086:22;:45;;;;;38112:19;38086:45;:72;;;;;38145:13;38135:23;;:6;:23;;;;38086:72;38082:458;;;38272:38;38289:20;38272:16;:38::i;:::-;38347:26;38376:21;38347:50;;38440:1;38419:18;:22;38416:109;;;38466:39;38483:21;38466:16;:39::i;:::-;38416:109;38082:458;;38633:12;38648:4;38633:19;;38772:18;:26;38791:6;38772:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;38802:18;:29;38821:9;38802:29;;;;;;;;;;;;;;;;;;;;;;;;;38772:59;38769:113;;;38861:5;38851:15;;38769:113;38975:47;38990:6;38997:9;39007:6;39014:7;38975:14;:47::i;:::-;35288:3746;;;;;;:::o;4636:208::-;4722:7;4759:1;4754;:6;;4762:12;4746:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4790:9;4806:1;4802;:5;4790:17;;4831:1;4824:8;;;4636:208;;;;;:::o;46215:175::-;46256:7;46281:15;46298;46317:19;:17;:19::i;:::-;46280:56;;;;46358:20;46370:7;46358;:11;;:20;;;;:::i;:::-;46351:27;;;;46215:175;:::o;6166:140::-;6224:7;6255:39;6259:1;6262;6255:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6248:46;;6166:140;;;;:::o;5138:511::-;5196:7;5462:1;5457;:6;5453:55;;;5491:1;5484:8;;;;5453:55;5524:9;5540:1;5536;:5;5524:17;;5573:1;5568;5564;:5;;;;;;:10;5556:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5636:1;5629:8;;;5138:511;;;;;:::o;40504:1322::-;40620:7;40616:44;;40646:14;:12;:14::i;:::-;40616:44;40689:15;40707:29;40732:3;40707:20;40718:8;;40707:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;40689:47;;40757:11;:19;40769:6;40757:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;40781:11;:22;40793:9;40781:22;;;;;;;;;;;;;;;;;;;;;;;;;40780:23;40757:46;40753:702;;;40824:61;40846:6;40854:9;40865:19;40876:7;40865:6;:10;;:19;;;;:::i;:::-;40824:21;:61::i;:::-;40753:702;;;40912:11;:19;40924:6;40912:19;;;;;;;;;;;;;;;;;;;;;;;;;40911:20;:46;;;;;40935:11;:22;40947:9;40935:22;;;;;;;;;;;;;;;;;;;;;;;;;40911:46;40907:548;;;40978:59;40998:6;41006:9;41017:19;41028:7;41017:6;:10;;:19;;;;:::i;:::-;40978;:59::i;:::-;40907:548;;;41064:11;:19;41076:6;41064:19;;;;;;;;;;;;;;;;;;;;;;;;;41063:20;:47;;;;;41088:11;:22;41100:9;41088:22;;;;;;;;;;;;;;;;;;;;;;;;;41087:23;41063:47;41059:396;;;41131:57;41149:6;41157:9;41168:19;41179:7;41168:6;:10;;:19;;;;:::i;:::-;41131:17;:57::i;:::-;41059:396;;;41214:11;:19;41226:6;41214:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;41237:11;:22;41249:9;41237:22;;;;;;;;;;;;;;;;;;;;;;;;;41214:45;41210:245;;;41280:61;41302:6;41310:9;41321:19;41332:7;41321:6;:10;;:19;;;;:::i;:::-;41280:21;:61::i;:::-;41210:245;;;41382:57;41400:6;41408:9;41419:19;41430:7;41419:6;:10;;:19;;;;:::i;:::-;41382:17;:57::i;:::-;41210:245;41059:396;40907:548;40753:702;41535:1;41525:7;:11;;;;41565:1;41551:11;:15;;;;41595:46;41613:6;41629:1;41633:7;41595:17;:46::i;:::-;41680:15;;41670:7;:25;;;;41724:16;;41710:11;:30;;;;41773:7;41769:45;;41799:15;:13;:15::i;:::-;41769:45;40504:1322;;;;;:::o;3639:197::-;3697:7;3721:9;3737:1;3733;:5;3721:17;;3766:1;3761;:6;;3753:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3823:1;3816:8;;;3639:197;;;;:::o;44949:490::-;45008:7;45017;45026;45035;45044;45053;45078:23;45103:12;45117:16;45137:42;45149:7;45158;;45167:11;;45137;:42::i;:::-;45077:102;;;;;;45194:19;45217:10;:8;:10::i;:::-;45194:33;;45243:15;45260:23;45285:12;45301:39;45313:7;45322:4;45328:11;45301;:39::i;:::-;45242:98;;;;;;45363:7;45372:15;45389:4;45395:15;45412:4;45418:8;45355:72;;;;;;;;;;;;;;;;;;;44949:490;;;;;;;:::o;4154:144::-;4212:7;4243:43;4247:1;4250;4243:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4236:50;;4154:144;;;;:::o;39046:656::-;28600:4;28591:6;;:13;;;;;;;;;;;;;;;;;;39191:21:::1;39229:1;39215:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39191:40;;39264:4;39246;39251:1;39246:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;39294:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;39284:4;39289:1;39284:7;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;39333:62;39350:4;39365:15;39383:11;39333:8;:62::i;:::-;39442:15;:66;;;39527:11;39557:1;39605:4;39636;39660:15;39442:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28619:1;28644:5:::0;28635:6;;:14;;;;;;;;;;;;;;;;;;39046:656;:::o;39722:115::-;39787:21;;;;;;;;;;;:30;;:38;39818:6;39787:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39722:115;:::o;46402:601::-;46452:7;46461;46485:15;46503:7;;46485:25;;46525:15;46543:7;;46525:25;;46576:9;46571:305;46595:9;:16;;;;46591:1;:20;46571:305;;;46665:7;46641;:21;46649:9;46659:1;46649:12;;;;;;;;;;;;;;;;;;;;;;;;;46641:21;;;;;;;;;;;;;;;;:31;:66;;;;46700:7;46676;:21;46684:9;46694:1;46684:12;;;;;;;;;;;;;;;;;;;;;;;;;46676:21;;;;;;;;;;;;;;;;:31;46641:66;46637:97;;;46717:7;;46726;;46709:25;;;;;;;;;46637:97;46763:34;46775:7;:21;46783:9;46793:1;46783:12;;;;;;;;;;;;;;;;;;;;;;;;;46775:21;;;;;;;;;;;;;;;;46763:7;:11;;:34;;;;:::i;:::-;46753:44;;46826:34;46838:7;:21;46846:9;46856:1;46846:12;;;;;;;;;;;;;;;;;;;;;;;;;46838:21;;;;;;;;;;;;;;;;46826:7;:11;;:34;;;;:::i;:::-;46816:44;;46613:3;;;;;;;46571:305;;;;46904:20;46916:7;;46904;;:11;;:20;;;;:::i;:::-;46894:7;:30;46890:61;;;46934:7;;46943;;46926:25;;;;;;;;46890:61;46974:7;46983;46966:25;;;;;;46402:601;;;:::o;6843:298::-;6929:7;6965:1;6961;:5;6968:12;6953:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6996:9;7012:1;7008;:5;;;;;;6996:17;;7128:1;7121:8;;;6843:298;;;;;:::o;34209:360::-;34270:1;34259:7;;:12;:32;;;;;34290:1;34275:11;;:16;34259:32;:49;;;;;34307:1;34295:8;;:13;34259:49;34256:61;;;34310:7;;34256:61;34363:7;;34345:15;:25;;;;34407:11;;34385:19;:33;;;;34452:8;;34433:16;:27;;;;34499:1;34489:7;:11;;;;34529:1;34515:11;:15;;;;34556:1;34545:8;:12;;;;34209:360;:::o;43004:593::-;43111:15;43128:23;43153:12;43167:23;43192:12;43206:16;43226:19;43237:7;43226:10;:19::i;:::-;43110:135;;;;;;;;;;;;43278:28;43298:7;43278;:15;43286:6;43278:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43260:7;:15;43268:6;43260:15;;;;;;;;;;;;;;;:46;;;;43339:28;43359:7;43339;:15;43347:6;43339:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43321:7;:15;43329:6;43321:15;;;;;;;;;;;;;;;:46;;;;43403:39;43426:15;43403:7;:18;43411:9;43403:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43382:7;:18;43390:9;43382:18;;;;;;;;;;;;;;;:60;;;;43458:22;43471:8;43458:12;:22::i;:::-;43498:23;43510:4;43516;43498:11;:23::i;:::-;43558:9;43541:44;;43550:6;43541:44;;;43569:15;43541:44;;;;;;;;;;;;;;;;;;43004:593;;;;;;;;;:::o;42376:616::-;42481:15;42498:23;42523:12;42537:23;42562:12;42576:16;42596:19;42607:7;42596:10;:19::i;:::-;42480:135;;;;;;;;;;;;42648:28;42668:7;42648;:15;42656:6;42648:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;42630:7;:15;42638:6;42630:15;;;;;;;;;;;;;;;:46;;;;42712:39;42735:15;42712:7;:18;42720:9;42712:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;42691:7;:18;42699:9;42691:18;;;;;;;;;;;;;;;:60;;;;42787:39;42810:15;42787:7;:18;42795:9;42787:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;42766:7;:18;42774:9;42766:18;;;;;;;;;;;;;;;:60;;;;42845:22;42858:8;42845:12;:22::i;:::-;42893:23;42905:4;42911;42893:11;:23::i;:::-;42953:9;42936:44;;42945:6;42936:44;;;42964:15;42936:44;;;;;;;;;;;;;;;;;;42376:616;;;;;;;;;:::o;41838:526::-;41941:15;41958:23;41983:12;41997:23;42022:12;42036:16;42056:19;42067:7;42056:10;:19::i;:::-;41940:135;;;;;;;;;;;;42108:28;42128:7;42108;:15;42116:6;42108:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;42090:7;:15;42098:6;42090:15;;;;;;;;;;;;;;;:46;;;;42172:39;42195:15;42172:7;:18;42180:9;42172:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;42151:7;:18;42159:9;42151:18;;;;;;;;;;;;;;;:60;;;;42227:22;42240:8;42227:12;:22::i;:::-;42265:23;42277:4;42283;42265:11;:23::i;:::-;42325:9;42308:44;;42317:6;42308:44;;;42336:15;42308:44;;;;;;;;;;;;;;;;;;41838:526;;;;;;;;;:::o;43609:676::-;43716:15;43733:23;43758:12;43772:23;43797:12;43811:16;43831:19;43842:7;43831:10;:19::i;:::-;43715:135;;;;;;;;;;;;43883:28;43903:7;43883;:15;43891:6;43883:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43865:7;:15;43873:6;43865:15;;;;;;;;;;;;;;;:46;;;;43944:28;43964:7;43944;:15;43952:6;43944:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43926:7;:15;43934:6;43926:15;;;;;;;;;;;;;;;:46;;;;44008:39;44031:15;44008:7;:18;44016:9;44008:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43987:7;:18;43995:9;43987:18;;;;;;;;;;;;;;;:60;;;;44083:39;44106:15;44083:7;:18;44091:9;44083:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44062:7;:18;44070:9;44062:18;;;;;;;;;;;;;;;:60;;;;44140:22;44153:8;44140:12;:22::i;:::-;44186:23;44198:4;44204;44186:11;:23::i;:::-;44246:9;44229:44;;44238:6;44229:44;;;44257:15;44229:44;;;;;;;;;;;;;;;;;;43609:676;;;;;;;;;:::o;34585:175::-;34643:15;;34633:7;:25;;;;34687:19;;34673:11;:33;;;;34732:16;;34721:8;:27;;;;34585:175::o;45451:386::-;45547:7;45556;45565;45589:12;45604:28;45628:3;45604:19;45616:6;45604:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;45589:43;;45647:16;45666:32;45694:3;45666:23;45678:10;45666:7;:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;45647:51;;45713:23;45739:31;45761:8;45739:17;45751:4;45739:7;:11;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;45713:57;;45793:15;45810:4;45816:8;45785:40;;;;;;;;;45451:386;;;;;;;:::o;45849:354::-;45944:7;45953;45962;45986:15;46004:24;46016:11;46004:7;:11;;:24;;;;:::i;:::-;45986:42;;46043:12;46058:21;46067:11;46058:4;:8;;:21;;;;:::i;:::-;46043:36;;46094:23;46120:17;46132:4;46120:7;:11;;:17;;;;:::i;:::-;46094:43;;46160:7;46169:15;46186:4;46152:39;;;;;;;;;45849:354;;;;;;;:::o;44297:367::-;44360:19;44383:10;:8;:10::i;:::-;44360:33;;44408:16;44427:25;44440:11;44427:8;:12;;:25;;;;:::i;:::-;44408:44;;44492:36;44519:8;44492:7;:22;44508:4;44492:22;;;;;;;;;;;;;;;;:26;;:36;;;;:::i;:::-;44467:7;:22;44483:4;44467:22;;;;;;;;;;;;;;;:61;;;;44546:11;:26;44566:4;44546:26;;;;;;;;;;;;;;;;;;;;;;;;;44543:109;;;44616:36;44643:8;44616:7;:22;44632:4;44616:22;;;;;;;;;;;;;;;;:26;;:36;;;;:::i;:::-;44591:7;:22;44607:4;44591:22;;;;;;;;;;;;;;;:61;;;;44543:109;44297:367;;;:::o;44676:159::-;44758:17;44770:4;44758:7;;:11;;:17;;;;:::i;:::-;44748:7;:27;;;;44803:20;44818:4;44803:10;;:14;;:20;;;;:::i;:::-;44790:10;:33;;;;44676:159;;:::o
Swarm Source
ipfs://45fb1709a31e85a73883934f23bf2f32b057ed29d92260fab2c4d1467a59c4f3
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.