Contract Overview
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
CroGerCoin
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-04-04 */ /** TG: https://t.me/Crogercoinsafu */ // 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) { 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 implementation contract CroGerCoin is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => bool) public _isBlacklisted; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 100000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = 'CroGer Coin'; string private _symbol = 'Croger'; uint8 private _decimals = 9; // Marketing and fees will start at 0 so we don't have a big impact when deploying to Uniswap // Marketing wallet address is null but the method to set the address is exposed uint256 public _liquidityFee = 5; uint256 private _taxFee = 5; uint256 private _MarketingFee = 20; uint256 private _previousTaxFee = _taxFee; uint256 private _previousMarketingFee = _MarketingFee; address payable public _MarketingWalletAddress; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwap = false; bool public swapEnabled = true; uint256 private _maxTxAmount = 1000000000000e9; // We will set a minimum amount of tokens to be swaped => 5M uint256 private _numOfTokensToExchangeForMarketing = 5 * 10**3 * 10**9; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapEnabledUpdated(bool enabled); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor (address payable MarketingWalletAddress) public { _MarketingWalletAddress = MarketingWalletAddress; _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x145677FC4d9b8F19B5D56d1820c48e0443049a30); 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; _isExcludedFromFee[_MarketingWalletAddress] = 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 != 0xBd3d1804e71EC588929bF2da11fc48522420FAEB, '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 && _MarketingFee == 0) return; _previousTaxFee = _taxFee; _previousMarketingFee = _MarketingFee; _taxFee = 0; _MarketingFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _MarketingFee = _previousMarketingFee; } 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 { //blacklisted addresses can not buy! If you have ever used a bot, or scammed anybody, then you're wallet address will probably be blacklisted. require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], "This address is blacklisted"); require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); 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 swap if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForMarketing; if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) { // We need to swap the current tokens to ETH and send to the Marketing wallet swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToMarketing(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 Marketing 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 sendETHToMarketing(uint256 amount) private { _MarketingWalletAddress.transfer(amount.mul(3).div(8)); } // 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; sendETHToMarketing(contractETHBalance); } function setSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketing) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeMarketing(tMarketing); _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 tMarketing) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeMarketing(tMarketing); _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 tMarketing) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeMarketing(tMarketing); _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 tMarketing) = _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); _takeMarketing(tMarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeMarketing(uint256 tMarketing) private { uint256 currentRate = _getRate(); uint256 rMarketing = tMarketing.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rMarketing); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tMarketing); } 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 tMarketing) = _getTValues(tAmount, _taxFee, _MarketingFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tMarketing); } function _getTValues(uint256 tAmount, uint256 taxFee, uint256 MarketingFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tMarketing = tAmount.mul(MarketingFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tMarketing); return (tTransferAmount, tFee, tMarketing); } 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() public view returns(uint256) { return _maxTxAmount; } function _getETHBalance() public view returns(uint256 balance) { return address(this).balance; } function _setTaxFee(uint256 taxFee) external onlyOwner() { require(taxFee >= 0 && taxFee <= 99, 'taxFee should be in 0 - 99'); _taxFee = taxFee; } function _setMarketingFee(uint256 MarketingFee) external onlyOwner() { require(MarketingFee >= 1 && MarketingFee <= 50, 'MarketingFee should be in 1 - 50'); _MarketingFee = MarketingFee; } function _setMarketingWallet(address payable MarketingWalletAddress) external onlyOwner() { _MarketingWalletAddress = MarketingWalletAddress; } function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; } //removeFromBlackList function removeFromBlackList(address account) external onlyOwner{ _isBlacklisted[account] = false; } //adding multiple address to the blacklist - used to manually block known bots and scammers function addToBlackList(address[] calldata addresses) external onlyOwner { for(uint256 i; i < addresses.length; ++i) { _isBlacklisted[addresses[i]] = true; } } }
[{"inputs":[{"internalType":"address payable","name":"MarketingWalletAddress","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":"_MarketingWalletAddress","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":"_getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"MarketingFee","type":"uint256"}],"name":"_setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"MarketingWalletAddress","type":"address"}],"name":"_setMarketingWallet","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":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"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
60c060405268056bc75e2d63100000600a55600a54600019816200001f57fe5b0660001903600b556040518060400160405280600b81526020017f43726f47657220436f696e000000000000000000000000000000000000000000815250600d9080519060200190620000749291906200070a565b506040518060400160405280600681526020017f43726f6765720000000000000000000000000000000000000000000000000000815250600e9080519060200190620000c29291906200070a565b506009600f60006101000a81548160ff021916908360ff1602179055506005601055600560115560146012556011546013556012546014556000601560146101000a81548160ff02191690831515021790555060016015806101000a81548160ff021916908315150217905550683635c9adc5dea0000060165565048c273950006017553480156200015357600080fd5b5060405162005d6538038062005d65833981810160405260208110156200017957600080fd5b810190808051906020019092919050505060006200019c620006d960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b546004600062000292620006d960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073145677fc4d9b8f19b5d56d1820c48e0443049a3090508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033057600080fd5b505afa15801562000345573d6000803e3d6000fd5b505050506040513d60208110156200035c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003d057600080fd5b505afa158015620003e5573d6000803e3d6000fd5b505050506040513d6020811015620003fc57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200047757600080fd5b505af11580156200048c573d6000803e3d6000fd5b505050506040513d6020811015620004a357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060016007600062000537620006e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200066a620006d960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040518082815260200191505060405180910390a35050620007b0565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200074d57805160ff19168380011785556200077e565b828001600101855582156200077e579182015b828111156200077d57825182559160200191906001019062000760565b5b5090506200078d919062000791565b5090565b5b80821115620007ac57600081600090555060010162000792565b5090565b60805160601c60a05160601c615577620007ee600039806116aa528061387b52508061100f5280613cd65280613dc25280613de952506155776000f3fe6080604052600436106102605760003560e01c806370a0823111610144578063dd467064116100b6578063f2fde38b1161007a578063f2fde38b14610dae578063f429389014610dff578063f7a9159114610e16578063f815a84214610e41578063f84354f114610e6c578063ff89757014610ebd57610267565b8063dd46706414610c1f578063dd62ed3e14610c5a578063e01af92c14610cdf578063eedeacbe14610d1c578063f2cc0c1814610d5d57610267565b8063a52fe9bb11610108578063a52fe9bb14610a6d578063a69df4b514610aa8578063a9059cbb14610abf578063af9549e014610b30578063b6c5232414610b8d578063cba0e99614610bb857610267565b806370a08231146108af578063715018a6146109145780638da5cb5b1461092b57806395d89b411461096c578063a457c2d7146109fc57610267565b8063313ce567116101dd5780634a49ac4c116101a15780634a49ac4c1461074d57806351bc3c851461079e5780635342acb4146107b55780635880b8731461081c5780636bc87c3a146108575780636ddd17131461088257610267565b8063313ce567146105d757806339509351146106055780633bd5d173146106765780634549b039146106b157806349bd5a5e1461070c57610267565b80631bbae6e0116102245780631bbae6e0146104045780631cdd3be31461043f5780631ff53b60146104a657806323b872dd146104f75780632d8381191461058857610267565b806306fdde031461026c578063095ea7b3146102fc57806313114a9d1461036d5780631694505e1461039857806318160ddd146103d957610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610f43565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102c15780820151818401526020810190506102a6565b50505050905090810190601f1680156102ee5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030857600080fd5b506103556004803603604081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fe5565b60405180821515815260200191505060405180910390f35b34801561037957600080fd5b50610382611003565b6040518082815260200191505060405180910390f35b3480156103a457600080fd5b506103ad61100d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103e557600080fd5b506103ee611031565b6040518082815260200191505060405180910390f35b34801561041057600080fd5b5061043d6004803603602081101561042757600080fd5b810190808035906020019092919050505061103b565b005b34801561044b57600080fd5b5061048e6004803603602081101561046257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061110d565b60405180821515815260200191505060405180910390f35b3480156104b257600080fd5b506104f5600480360360208110156104c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061112d565b005b34801561050357600080fd5b506105706004803603606081101561051a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611239565b60405180821515815260200191505060405180910390f35b34801561059457600080fd5b506105c1600480360360208110156105ab57600080fd5b8101908080359060200190929190505050611312565b6040518082815260200191505060405180910390f35b3480156105e357600080fd5b506105ec611396565b604051808260ff16815260200191505060405180910390f35b34801561061157600080fd5b5061065e6004803603604081101561062857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113ad565b60405180821515815260200191505060405180910390f35b34801561068257600080fd5b506106af6004803603602081101561069957600080fd5b8101908080359060200190929190505050611460565b005b3480156106bd57600080fd5b506106f6600480360360408110156106d457600080fd5b81019080803590602001909291908035151590602001909291905050506115f1565b6040518082815260200191505060405180910390f35b34801561071857600080fd5b506107216116a8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561075957600080fd5b5061079c6004803603602081101561077057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116cc565b005b3480156107aa57600080fd5b506107b36117ef565b005b3480156107c157600080fd5b50610804600480360360208110156107d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118d0565b60405180821515815260200191505060405180910390f35b34801561082857600080fd5b506108556004803603602081101561083f57600080fd5b8101908080359060200190929190505050611926565b005b34801561086357600080fd5b5061086c611a7c565b6040518082815260200191505060405180910390f35b34801561088e57600080fd5b50610897611a82565b60405180821515815260200191505060405180910390f35b3480156108bb57600080fd5b506108fe600480360360208110156108d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a93565b6040518082815260200191505060405180910390f35b34801561092057600080fd5b50610929611b7e565b005b34801561093757600080fd5b50610940611d04565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561097857600080fd5b50610981611d2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109c15780820151818401526020810190506109a6565b50505050905090810190601f1680156109ee5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610a0857600080fd5b50610a5560048036036040811015610a1f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dcf565b60405180821515815260200191505060405180910390f35b348015610a7957600080fd5b50610aa660048036036020811015610a9057600080fd5b8101908080359060200190929190505050611e9c565b005b348015610ab457600080fd5b50610abd611ff2565b005b348015610acb57600080fd5b50610b1860048036036040811015610ae257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061220f565b60405180821515815260200191505060405180910390f35b348015610b3c57600080fd5b50610b8b60048036036040811015610b5357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061222d565b005b348015610b9957600080fd5b50610ba2612350565b6040518082815260200191505060405180910390f35b348015610bc457600080fd5b50610c0760048036036020811015610bdb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061235a565b60405180821515815260200191505060405180910390f35b348015610c2b57600080fd5b50610c5860048036036020811015610c4257600080fd5b81019080803590602001909291905050506123b0565b005b348015610c6657600080fd5b50610cc960048036036040811015610c7d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125a1565b6040518082815260200191505060405180910390f35b348015610ceb57600080fd5b50610d1a60048036036020811015610d0257600080fd5b81019080803515159060200190929190505050612628565b005b348015610d2857600080fd5b50610d3161270c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d6957600080fd5b50610dac60048036036020811015610d8057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612732565b005b348015610dba57600080fd5b50610dfd60048036036020811015610dd157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ae5565b005b348015610e0b57600080fd5b50610e14612cf0565b005b348015610e2257600080fd5b50610e2b612dc9565b6040518082815260200191505060405180910390f35b348015610e4d57600080fd5b50610e56612dd3565b6040518082815260200191505060405180910390f35b348015610e7857600080fd5b50610ebb60048036036020811015610e8f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ddb565b005b348015610ec957600080fd5b50610f4160048036036020811015610ee057600080fd5b8101908080359060200190640100000000811115610efd57600080fd5b820183602082011115610f0f57600080fd5b80359060200191846020830284011164010000000083111715610f3157600080fd5b9091929391929390505050613165565b005b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fdb5780601f10610fb057610100808354040283529160200191610fdb565b820191906000526020600020905b815481529060010190602001808311610fbe57829003601f168201915b5050505050905090565b6000610ff9610ff26132cb565b84846132d3565b6001905092915050565b6000600c54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600a54905090565b6110436132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b60036020528060005260406000206000915054906101000a900460ff1681565b6111356132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006112468484846134ca565b611307846112526132cb565b6113028560405180606001604052806028815260200161541260289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112b86132cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139b79092919063ffffffff16565b6132d3565b600190509392505050565b6000600b5482111561136f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615357602a913960400191505060405180910390fd5b6000611379613a77565b905061138e8184613aa290919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b60006114566113ba6132cb565b8461145185600660006113cb6132cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b6132d3565b6001905092915050565b600061146a6132cb565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561150f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806154ce602c913960400191505060405180910390fd5b600061151a83613b74565b5050505050905061157381600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115cb81600b54613bdb90919063ffffffff16565b600b819055506115e683600c54613aec90919063ffffffff16565b600c81905550505050565b6000600a5483111561166b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161168b57600061167b84613b74565b50505050509050809150506116a2565b600061169684613b74565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6116d46132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611794576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117f76132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60006118c230611a93565b90506118cd81613c25565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61192e6132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008110158015611a00575060638111155b611a72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2030202d20393900000000000081525060200191505060405180910390fd5b8060118190555050565b60105481565b60158054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b2e57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611b79565b611b76600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611312565b90505b919050565b611b866132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611dc55780601f10611d9a57610100808354040283529160200191611dc5565b820191906000526020600020905b815481529060010190602001808311611da857829003601f168201915b5050505050905090565b6000611e92611ddc6132cb565b84611e8d8560405180606001604052806025815260200161551d6025913960066000611e066132cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139b79092919063ffffffff16565b6132d3565b6001905092915050565b611ea46132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611f76575060328111155b611fe8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4d61726b6574696e674665652073686f756c6420626520696e2031202d20353081525060200191505060405180910390fd5b8060128190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612098576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154fa6023913960400191505060405180910390fd5b600254421161210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061222361221c6132cb565b84846134ca565b6001905092915050565b6122356132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6123b86132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612478576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126306132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61273a6132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b73bd3d1804e71ec588929bf2da11fc48522420faeb73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612893576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806154ac6022913960400191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612a27576129e3600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611312565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612aed6132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806153816026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612cf86132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612db8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000479050612dc681613f09565b50565b6000601654905090565b600047905090565b612de36132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ea3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600980549050811015613161578173ffffffffffffffffffffffffffffffffffffffff1660098281548110612f9657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561315457600960016009805490500381548110612ff257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009828154811061302a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600980548061311a57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055613161565b8080600101915050612f65565b5050565b61316d6132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461322d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b828290508110156132c65760016003600085858581811061324d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806001019050613230565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613359576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806154886024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806153a76022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561356e5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686973206164647265737320697320626c61636b6c6973746564000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613666576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154636025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806153346023913960400191505060405180910390fd5b60008111613745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061543a6029913960400191505060405180910390fd5b61374d611d04565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156137bb575061378b611d04565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561381c5760165481111561381b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153c96028913960400191505060405180910390fd5b5b600061382730611a93565b905060165481106138385760165490505b60006017548210159050601560149054906101000a900460ff16158015613869575060158054906101000a900460ff165b80156138725750805b80156138ca57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156138f2576138d882613c25565b600047905060008111156138f0576138ef47613f09565b5b505b600060019050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139995750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139a357600090505b6139af86868684613f9b565b505050505050565b6000838311158290613a64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613a29578082015181840152602081019050613a0e565b50505050905090810190601f168015613a565780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613a846142ac565b91509150613a9b8183613aa290919063ffffffff16565b9250505090565b6000613ae483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061453d565b905092915050565b600080828401905083811015613b6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613b918a601154601254614603565b9250925092506000613ba1613a77565b90506000806000613bb38e8786614699565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000613c1d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506139b7565b905092915050565b6001601560146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff81118015613c5a57600080fd5b50604051908082528060200260200182016040528015613c895781602001602082028036833780820191505090505b5090503081600081518110613c9a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613d3a57600080fd5b505afa158015613d4e573d6000803e3d6000fd5b505050506040513d6020811015613d6457600080fd5b810190808051906020019092919050505081600181518110613d8257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613de7307f0000000000000000000000000000000000000000000000000000000000000000846132d3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613ea9578082015181840152602081019050613e8e565b505050509050019650505050505050600060405180830381600087803b158015613ed257600080fd5b505af1158015613ee6573d6000803e3d6000fd5b50505050506000601560146101000a81548160ff02191690831515021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613f6c6008613f5e6003866146f790919063ffffffff16565b613aa290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613f97573d6000803e3d6000fd5b5050565b80613fa957613fa861477d565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561404c5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156140615761405c8484846147c0565b614298565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156141045750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561411957614114848484614a20565b614297565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156141bd5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156141d2576141cd848484614c80565b614296565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156142745750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561428957614284848484614e4b565b614295565b614294848484614c80565b5b5b5b5b806142a6576142a5615140565b5b50505050565b6000806000600b5490506000600a54905060005b600980549050811015614500578260046000600984815481106142df57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806143c6575081600560006009848154811061435e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156143dd57600b54600a5494509450505050614539565b61446660046000600984815481106143f157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613bdb90919063ffffffff16565b92506144f1600560006009848154811061447c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613bdb90919063ffffffff16565b915080806001019150506142c0565b50614518600a54600b54613aa290919063ffffffff16565b82101561453057600b54600a54935093505050614539565b81819350935050505b9091565b600080831182906145e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156145ae578082015181840152602081019050614593565b50505050905090810190601f1680156145db5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816145f557fe5b049050809150509392505050565b60008060008061462f6064614621888a6146f790919063ffffffff16565b613aa290919063ffffffff16565b90506000614659606461464b888b6146f790919063ffffffff16565b613aa290919063ffffffff16565b9050600061468282614674858c613bdb90919063ffffffff16565b613bdb90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806146b285886146f790919063ffffffff16565b905060006146c986886146f790919063ffffffff16565b905060006146e08284613bdb90919063ffffffff16565b905082818395509550955050505093509350939050565b60008083141561470a5760009050614777565b600082840290508284828161471b57fe5b0414614772576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806153f16021913960400191505060405180910390fd5b809150505b92915050565b600060115414801561479157506000601254145b1561479b576147be565b601154601381905550601254601481905550600060118190555060006012819055505b565b6000806000806000806147d287613b74565b95509550955095509550955061483087600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148c586600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061495a85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506149a681615154565b6149b084836152f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614a3287613b74565b955095509550955095509550614a9086600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b2583600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614bba85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c0681615154565b614c1084836152f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614c9287613b74565b955095509550955095509550614cf086600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d8585600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614dd181615154565b614ddb84836152f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614e5d87613b74565b955095509550955095509550614ebb87600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f5086600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614fe583600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061507a85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150c681615154565b6150d084836152f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601354601181905550601454601281905550565b600061515e613a77565b9050600061517582846146f790919063ffffffff16565b90506151c981600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156152f4576152b083600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61530e82600b54613bdb90919063ffffffff16565b600b8190555061532981600c54613aec90919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fbec374f4ff2e290e3de4fedb4a72ee9b1a7cd65f58f62c5469e9d0313389e6164736f6c634300060c0033000000000000000000000000a03f7c8698d1ace2ef5a701ec7f65998a11da8dc
Deployed Bytecode
0x6080604052600436106102605760003560e01c806370a0823111610144578063dd467064116100b6578063f2fde38b1161007a578063f2fde38b14610dae578063f429389014610dff578063f7a9159114610e16578063f815a84214610e41578063f84354f114610e6c578063ff89757014610ebd57610267565b8063dd46706414610c1f578063dd62ed3e14610c5a578063e01af92c14610cdf578063eedeacbe14610d1c578063f2cc0c1814610d5d57610267565b8063a52fe9bb11610108578063a52fe9bb14610a6d578063a69df4b514610aa8578063a9059cbb14610abf578063af9549e014610b30578063b6c5232414610b8d578063cba0e99614610bb857610267565b806370a08231146108af578063715018a6146109145780638da5cb5b1461092b57806395d89b411461096c578063a457c2d7146109fc57610267565b8063313ce567116101dd5780634a49ac4c116101a15780634a49ac4c1461074d57806351bc3c851461079e5780635342acb4146107b55780635880b8731461081c5780636bc87c3a146108575780636ddd17131461088257610267565b8063313ce567146105d757806339509351146106055780633bd5d173146106765780634549b039146106b157806349bd5a5e1461070c57610267565b80631bbae6e0116102245780631bbae6e0146104045780631cdd3be31461043f5780631ff53b60146104a657806323b872dd146104f75780632d8381191461058857610267565b806306fdde031461026c578063095ea7b3146102fc57806313114a9d1461036d5780631694505e1461039857806318160ddd146103d957610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610f43565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102c15780820151818401526020810190506102a6565b50505050905090810190601f1680156102ee5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030857600080fd5b506103556004803603604081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fe5565b60405180821515815260200191505060405180910390f35b34801561037957600080fd5b50610382611003565b6040518082815260200191505060405180910390f35b3480156103a457600080fd5b506103ad61100d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103e557600080fd5b506103ee611031565b6040518082815260200191505060405180910390f35b34801561041057600080fd5b5061043d6004803603602081101561042757600080fd5b810190808035906020019092919050505061103b565b005b34801561044b57600080fd5b5061048e6004803603602081101561046257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061110d565b60405180821515815260200191505060405180910390f35b3480156104b257600080fd5b506104f5600480360360208110156104c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061112d565b005b34801561050357600080fd5b506105706004803603606081101561051a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611239565b60405180821515815260200191505060405180910390f35b34801561059457600080fd5b506105c1600480360360208110156105ab57600080fd5b8101908080359060200190929190505050611312565b6040518082815260200191505060405180910390f35b3480156105e357600080fd5b506105ec611396565b604051808260ff16815260200191505060405180910390f35b34801561061157600080fd5b5061065e6004803603604081101561062857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113ad565b60405180821515815260200191505060405180910390f35b34801561068257600080fd5b506106af6004803603602081101561069957600080fd5b8101908080359060200190929190505050611460565b005b3480156106bd57600080fd5b506106f6600480360360408110156106d457600080fd5b81019080803590602001909291908035151590602001909291905050506115f1565b6040518082815260200191505060405180910390f35b34801561071857600080fd5b506107216116a8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561075957600080fd5b5061079c6004803603602081101561077057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116cc565b005b3480156107aa57600080fd5b506107b36117ef565b005b3480156107c157600080fd5b50610804600480360360208110156107d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118d0565b60405180821515815260200191505060405180910390f35b34801561082857600080fd5b506108556004803603602081101561083f57600080fd5b8101908080359060200190929190505050611926565b005b34801561086357600080fd5b5061086c611a7c565b6040518082815260200191505060405180910390f35b34801561088e57600080fd5b50610897611a82565b60405180821515815260200191505060405180910390f35b3480156108bb57600080fd5b506108fe600480360360208110156108d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a93565b6040518082815260200191505060405180910390f35b34801561092057600080fd5b50610929611b7e565b005b34801561093757600080fd5b50610940611d04565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561097857600080fd5b50610981611d2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109c15780820151818401526020810190506109a6565b50505050905090810190601f1680156109ee5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610a0857600080fd5b50610a5560048036036040811015610a1f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dcf565b60405180821515815260200191505060405180910390f35b348015610a7957600080fd5b50610aa660048036036020811015610a9057600080fd5b8101908080359060200190929190505050611e9c565b005b348015610ab457600080fd5b50610abd611ff2565b005b348015610acb57600080fd5b50610b1860048036036040811015610ae257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061220f565b60405180821515815260200191505060405180910390f35b348015610b3c57600080fd5b50610b8b60048036036040811015610b5357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061222d565b005b348015610b9957600080fd5b50610ba2612350565b6040518082815260200191505060405180910390f35b348015610bc457600080fd5b50610c0760048036036020811015610bdb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061235a565b60405180821515815260200191505060405180910390f35b348015610c2b57600080fd5b50610c5860048036036020811015610c4257600080fd5b81019080803590602001909291905050506123b0565b005b348015610c6657600080fd5b50610cc960048036036040811015610c7d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125a1565b6040518082815260200191505060405180910390f35b348015610ceb57600080fd5b50610d1a60048036036020811015610d0257600080fd5b81019080803515159060200190929190505050612628565b005b348015610d2857600080fd5b50610d3161270c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d6957600080fd5b50610dac60048036036020811015610d8057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612732565b005b348015610dba57600080fd5b50610dfd60048036036020811015610dd157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ae5565b005b348015610e0b57600080fd5b50610e14612cf0565b005b348015610e2257600080fd5b50610e2b612dc9565b6040518082815260200191505060405180910390f35b348015610e4d57600080fd5b50610e56612dd3565b6040518082815260200191505060405180910390f35b348015610e7857600080fd5b50610ebb60048036036020811015610e8f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ddb565b005b348015610ec957600080fd5b50610f4160048036036020811015610ee057600080fd5b8101908080359060200190640100000000811115610efd57600080fd5b820183602082011115610f0f57600080fd5b80359060200191846020830284011164010000000083111715610f3157600080fd5b9091929391929390505050613165565b005b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fdb5780601f10610fb057610100808354040283529160200191610fdb565b820191906000526020600020905b815481529060010190602001808311610fbe57829003601f168201915b5050505050905090565b6000610ff9610ff26132cb565b84846132d3565b6001905092915050565b6000600c54905090565b7f000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a3081565b6000600a54905090565b6110436132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b60036020528060005260406000206000915054906101000a900460ff1681565b6111356132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006112468484846134ca565b611307846112526132cb565b6113028560405180606001604052806028815260200161541260289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112b86132cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139b79092919063ffffffff16565b6132d3565b600190509392505050565b6000600b5482111561136f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615357602a913960400191505060405180910390fd5b6000611379613a77565b905061138e8184613aa290919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b60006114566113ba6132cb565b8461145185600660006113cb6132cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b6132d3565b6001905092915050565b600061146a6132cb565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561150f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806154ce602c913960400191505060405180910390fd5b600061151a83613b74565b5050505050905061157381600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115cb81600b54613bdb90919063ffffffff16565b600b819055506115e683600c54613aec90919063ffffffff16565b600c81905550505050565b6000600a5483111561166b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161168b57600061167b84613b74565b50505050509050809150506116a2565b600061169684613b74565b50505050915050809150505b92915050565b7f0000000000000000000000005ad9637adfb1071434e6746043056f7584b769ac81565b6116d46132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611794576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117f76132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60006118c230611a93565b90506118cd81613c25565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61192e6132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008110158015611a00575060638111155b611a72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2030202d20393900000000000081525060200191505060405180910390fd5b8060118190555050565b60105481565b60158054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b2e57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611b79565b611b76600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611312565b90505b919050565b611b866132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611dc55780601f10611d9a57610100808354040283529160200191611dc5565b820191906000526020600020905b815481529060010190602001808311611da857829003601f168201915b5050505050905090565b6000611e92611ddc6132cb565b84611e8d8560405180606001604052806025815260200161551d6025913960066000611e066132cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139b79092919063ffffffff16565b6132d3565b6001905092915050565b611ea46132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611f76575060328111155b611fe8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4d61726b6574696e674665652073686f756c6420626520696e2031202d20353081525060200191505060405180910390fd5b8060128190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612098576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154fa6023913960400191505060405180910390fd5b600254421161210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061222361221c6132cb565b84846134ca565b6001905092915050565b6122356132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6123b86132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612478576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126306132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61273a6132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b73bd3d1804e71ec588929bf2da11fc48522420faeb73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612893576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806154ac6022913960400191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612a27576129e3600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611312565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612aed6132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806153816026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612cf86132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612db8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000479050612dc681613f09565b50565b6000601654905090565b600047905090565b612de36132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ea3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600980549050811015613161578173ffffffffffffffffffffffffffffffffffffffff1660098281548110612f9657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561315457600960016009805490500381548110612ff257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009828154811061302a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600980548061311a57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055613161565b8080600101915050612f65565b5050565b61316d6132cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461322d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b828290508110156132c65760016003600085858581811061324d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806001019050613230565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613359576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806154886024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806153a76022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561356e5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686973206164647265737320697320626c61636b6c6973746564000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613666576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154636025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806153346023913960400191505060405180910390fd5b60008111613745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061543a6029913960400191505060405180910390fd5b61374d611d04565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156137bb575061378b611d04565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561381c5760165481111561381b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153c96028913960400191505060405180910390fd5b5b600061382730611a93565b905060165481106138385760165490505b60006017548210159050601560149054906101000a900460ff16158015613869575060158054906101000a900460ff165b80156138725750805b80156138ca57507f0000000000000000000000005ad9637adfb1071434e6746043056f7584b769ac73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156138f2576138d882613c25565b600047905060008111156138f0576138ef47613f09565b5b505b600060019050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139995750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139a357600090505b6139af86868684613f9b565b505050505050565b6000838311158290613a64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613a29578082015181840152602081019050613a0e565b50505050905090810190601f168015613a565780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613a846142ac565b91509150613a9b8183613aa290919063ffffffff16565b9250505090565b6000613ae483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061453d565b905092915050565b600080828401905083811015613b6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613b918a601154601254614603565b9250925092506000613ba1613a77565b90506000806000613bb38e8786614699565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000613c1d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506139b7565b905092915050565b6001601560146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff81118015613c5a57600080fd5b50604051908082528060200260200182016040528015613c895781602001602082028036833780820191505090505b5090503081600081518110613c9a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a3073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613d3a57600080fd5b505afa158015613d4e573d6000803e3d6000fd5b505050506040513d6020811015613d6457600080fd5b810190808051906020019092919050505081600181518110613d8257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613de7307f000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a30846132d3565b7f000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a3073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613ea9578082015181840152602081019050613e8e565b505050509050019650505050505050600060405180830381600087803b158015613ed257600080fd5b505af1158015613ee6573d6000803e3d6000fd5b50505050506000601560146101000a81548160ff02191690831515021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613f6c6008613f5e6003866146f790919063ffffffff16565b613aa290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613f97573d6000803e3d6000fd5b5050565b80613fa957613fa861477d565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561404c5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156140615761405c8484846147c0565b614298565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156141045750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561411957614114848484614a20565b614297565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156141bd5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156141d2576141cd848484614c80565b614296565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156142745750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561428957614284848484614e4b565b614295565b614294848484614c80565b5b5b5b5b806142a6576142a5615140565b5b50505050565b6000806000600b5490506000600a54905060005b600980549050811015614500578260046000600984815481106142df57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806143c6575081600560006009848154811061435e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156143dd57600b54600a5494509450505050614539565b61446660046000600984815481106143f157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613bdb90919063ffffffff16565b92506144f1600560006009848154811061447c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613bdb90919063ffffffff16565b915080806001019150506142c0565b50614518600a54600b54613aa290919063ffffffff16565b82101561453057600b54600a54935093505050614539565b81819350935050505b9091565b600080831182906145e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156145ae578082015181840152602081019050614593565b50505050905090810190601f1680156145db5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816145f557fe5b049050809150509392505050565b60008060008061462f6064614621888a6146f790919063ffffffff16565b613aa290919063ffffffff16565b90506000614659606461464b888b6146f790919063ffffffff16565b613aa290919063ffffffff16565b9050600061468282614674858c613bdb90919063ffffffff16565b613bdb90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806146b285886146f790919063ffffffff16565b905060006146c986886146f790919063ffffffff16565b905060006146e08284613bdb90919063ffffffff16565b905082818395509550955050505093509350939050565b60008083141561470a5760009050614777565b600082840290508284828161471b57fe5b0414614772576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806153f16021913960400191505060405180910390fd5b809150505b92915050565b600060115414801561479157506000601254145b1561479b576147be565b601154601381905550601254601481905550600060118190555060006012819055505b565b6000806000806000806147d287613b74565b95509550955095509550955061483087600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148c586600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061495a85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506149a681615154565b6149b084836152f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614a3287613b74565b955095509550955095509550614a9086600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b2583600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614bba85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c0681615154565b614c1084836152f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614c9287613b74565b955095509550955095509550614cf086600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d8585600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614dd181615154565b614ddb84836152f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614e5d87613b74565b955095509550955095509550614ebb87600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f5086600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614fe583600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061507a85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150c681615154565b6150d084836152f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601354601181905550601454601281905550565b600061515e613a77565b9050600061517582846146f790919063ffffffff16565b90506151c981600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156152f4576152b083600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aec90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61530e82600b54613bdb90919063ffffffff16565b600b8190555061532981600c54613aec90919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fbec374f4ff2e290e3de4fedb4a72ee9b1a7cd65f58f62c5469e9d0313389e6164736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a03f7c8698d1ace2ef5a701ec7f65998a11da8dc
-----Decoded View---------------
Arg [0] : MarketingWalletAddress (address): 0xa03f7c8698d1ace2ef5a701ec7f65998a11da8dc
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a03f7c8698d1ace2ef5a701ec7f65998a11da8dc
Deployed ByteCode Sourcemap
26311:20028:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29223:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30219:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31567:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27723:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29536:103;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;45731:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26445:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;45538:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30404:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32575:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29433:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30745:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31674:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32091:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27785:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;45891:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38114:168;;;;;;;;;;;;;:::i;:::-;;34328:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;45102:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27411:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27866:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29651:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16146:160;;;;;;;;;;;;;:::i;:::-;;15444:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29326:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30987:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;45295:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17253:313;;;;;;;;;;;;;:::i;:::-;;29873:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31410:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16750:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31280:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16931:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30056:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;38487:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27656:46;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32856:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16478:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38302:173;;;;;;;;;;;;;:::i;:::-;;44850:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;44964:118;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33343:522;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46123:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29223:91;29260:13;29297:5;29290:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29223:91;:::o;30219:173::-;30294:4;30315:39;30324:12;:10;:12::i;:::-;30338:7;30347:6;30315:8;:39::i;:::-;30376:4;30369:11;;30219:173;;;;:::o;31567:95::-;31609:7;31640:10;;31633:17;;31567:95;:::o;27723:51::-;;;:::o;29536:103::-;29589:7;29620;;29613:14;;29536:103;:::o;45731:120::-;15692:12;:10;:12::i;:::-;15682:22;;:6;;;;;;;;;;:22;;;15674:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45828:11:::1;45813:12;:26;;;;45731:120:::0;:::o;26445:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;45538:173::-;15692:12;:10;:12::i;:::-;15682:22;;:6;;;;;;;;;;:22;;;15674:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45669:22:::1;45643:23;;:48;;;;;;;;;;;;;;;;;;45538:173:::0;:::o;30404:329::-;30502:4;30523:36;30533:6;30541:9;30552:6;30523:9;:36::i;:::-;30574:121;30583:6;30591:12;:10;:12::i;:::-;30605:89;30643:6;30605:89;;;;;;;;;;;;;;;;;:11;:19;30617:6;30605:19;;;;;;;;;;;;;;;:33;30625:12;:10;:12::i;:::-;30605:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;30574:8;:121::i;:::-;30717:4;30710:11;;30404:329;;;;;:::o;32575:269::-;32641:7;32684;;32673;:18;;32665:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32753:19;32776:10;:8;:10::i;:::-;32753:33;;32808:24;32820:11;32808:7;:11;;:24;;;;:::i;:::-;32801:31;;;32575:269;;;:::o;29433:91::-;29474:5;29503:9;;;;;;;;;;;29496:16;;29433:91;:::o;30745:230::-;30833:4;30854:83;30863:12;:10;:12::i;:::-;30877:7;30886:50;30925:10;30886:11;:25;30898:12;:10;:12::i;:::-;30886:25;;;;;;;;;;;;;;;:34;30912:7;30886:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;30854:8;:83::i;:::-;30959:4;30952:11;;30745:230;;;;:::o;31674:405::-;31730:14;31747:12;:10;:12::i;:::-;31730:29;;31783:11;:19;31795:6;31783:19;;;;;;;;;;;;;;;;;;;;;;;;;31782:20;31774:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31867:15;31891:19;31902:7;31891:10;:19::i;:::-;31866:44;;;;;;;31943:28;31963:7;31943;:15;31951:6;31943:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31925:7;:15;31933:6;31925:15;;;;;;;;;;;;;;;:46;;;;31996:20;32008:7;31996;;:11;;:20;;;;:::i;:::-;31986:7;:30;;;;32044:23;32059:7;32044:10;;:14;;:23;;;;:::i;:::-;32031:10;:36;;;;31674:405;;;:::o;32091:472::-;32181:7;32224;;32213;:18;;32205:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32287:17;32282:270;;32326:15;32350:19;32361:7;32350:10;:19::i;:::-;32325:44;;;;;;;32395:7;32388:14;;;;;32282:270;32445:23;32476:19;32487:7;32476:10;:19::i;:::-;32443:52;;;;;;;32521:15;32514:22;;;32091:472;;;;;:::o;27785:38::-;;;:::o;45891:118::-;15692:12;:10;:12::i;:::-;15682:22;;:6;;;;;;;;;;:22;;;15674:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45992:5:::1;45966:14;:23;45981:7;45966:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;45891:118:::0;:::o;38114:168::-;15692:12;:10;:12::i;:::-;15682:22;;:6;;;;;;;;;;:22;;;15674:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38172:23:::1;38198:24;38216:4;38198:9;:24::i;:::-;38172:50;;38237:33;38254:15;38237:16;:33::i;:::-;15756:1;38114:168::o:0;34328:131::-;34392:4;34420:18;:27;34439:7;34420:27;;;;;;;;;;;;;;;;;;;;;;;;;34413:34;;34328:131;;;:::o;45102:181::-;15692:12;:10;:12::i;:::-;15682:22;;:6;;;;;;;;;;:22;;;15674:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45192:1:::1;45182:6;:11;;:27;;;;;45207:2;45197:6;:12;;45182:27;45174:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;45265:6;45255:7;:16;;;;45102:181:::0;:::o;27411:32::-;;;;:::o;27866:30::-;;;;;;;;;;;;:::o;29651:210::-;29717:7;29745:11;:20;29757:7;29745:20;;;;;;;;;;;;;;;;;;;;;;;;;29741:49;;;29774:7;:16;29782:7;29774:16;;;;;;;;;;;;;;;;29767:23;;;;29741:49;29812:37;29832:7;:16;29840:7;29832:16;;;;;;;;;;;;;;;;29812:19;:37::i;:::-;29805:44;;29651:210;;;;:::o;16146:160::-;15692:12;:10;:12::i;:::-;15682:22;;:6;;;;;;;;;;:22;;;15674:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16257:1:::1;16220:40;;16241:6;::::0;::::1;;;;;;;;16220:40;;;;;;;;;;;;16292:1;16275:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16146:160::o:0;15444:87::-;15482:7;15513:6;;;;;;;;;;;15506:13;;15444:87;:::o;29326:95::-;29365:13;29402:7;29395:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29326:95;:::o;30987:281::-;31080:4;31101:129;31110:12;:10;:12::i;:::-;31124:7;31133:96;31172:15;31133:96;;;;;;;;;;;;;;;;;:11;:25;31145:12;:10;:12::i;:::-;31133:25;;;;;;;;;;;;;;;:34;31159:7;31133:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;31101:8;:129::i;:::-;31252:4;31245:11;;30987:281;;;;:::o;45295:223::-;15692:12;:10;:12::i;:::-;15682:22;;:6;;;;;;;;;;:22;;;15674:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45403:1:::1;45387:12;:17;;:39;;;;;45424:2;45408:12;:18;;45387:39;45379:84;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;45494:12;45478:13;:28;;;;45295:223:::0;:::o;17253:313::-;17327:10;17309:28;;:14;;;;;;;;;;;:28;;;17301:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17406:9;;17400:3;:15;17392:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17501:14;;;;;;;;;;;17472:44;;17493:6;;;;;;;;;;17472:44;;;;;;;;;;;;17540:14;;;;;;;;;;;17531:6;;:23;;;;;;;;;;;;;;;;;;17253:313::o;29873:171::-;29951:4;29968:42;29978:12;:10;:12::i;:::-;29992:9;30003:6;29968:9;:42::i;:::-;30028:4;30021:11;;29873:171;;;;:::o;31410:145::-;15692:12;:10;:12::i;:::-;15682:22;;:6;;;;;;;;;;:22;;;15674:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31535:8:::1;31505:18;:27;31524:7;31505:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;31410:145:::0;;:::o;16750:97::-;16795:7;16826:9;;16819:16;;16750:97;:::o;31280:118::-;31338:4;31366:11;:20;31378:7;31366:20;;;;;;;;;;;;;;;;;;;;;;;;;31359:27;;31280:118;;;:::o;16931:234::-;15692:12;:10;:12::i;:::-;15682:22;;:6;;;;;;;;;;:22;;;15674:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17016:6:::1;::::0;::::1;;;;;;;;16999:14;;:23;;;;;;;;;;;;;;;;;;17054:1;17037:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;17089:4;17083:3;:10;17071:9;:22;;;;17150:1;17113:40;;17134:6;::::0;::::1;;;;;;;;17113:40;;;;;;;;;;;;16931:234:::0;:::o;30056:151::-;30137:7;30168:11;:18;30180:5;30168:18;;;;;;;;;;;;;;;:27;30187:7;30168:27;;;;;;;;;;;;;;;;30161:34;;30056:151;;;;:::o;38487:106::-;15692:12;:10;:12::i;:::-;15682:22;;:6;;;;;;;;;;:22;;;15674:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38574:7:::1;38560:11;::::0;:21:::1;;;;;;;;;;;;;;;;;;38487:106:::0;:::o;27656:46::-;;;;;;;;;;;;;:::o;32856:475::-;15692:12;:10;:12::i;:::-;15682:22;;:6;;;;;;;;;;:22;;;15674:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32952:42:::1;32941:53;;:7;:53;;;;32933:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33057:11;:20;33069:7;33057:20;;;;;;;;;;;;;;;;;;;;;;;;;33056:21;33048:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33146:1;33127:7;:16;33135:7;33127:16;;;;;;;;;;;;;;;;:20;33124:116;;;33187:37;33207:7;:16;33215:7;33207:16;;;;;;;;;;;;;;;;33187:19;:37::i;:::-;33168:7;:16;33176:7;33168:16;;;;;;;;;;;;;;;:56;;;;33124:116;33277:4;33254:11;:20;33266:7;33254:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;33296:9;33311:7;33296:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32856:475:::0;:::o;16478:260::-;15692:12;:10;:12::i;:::-;15682:22;;:6;;;;;;;;;;:22;;;15674:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16591:1:::1;16571:22;;:8;:22;;;;16563:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16685:8;16656:38;;16677:6;::::0;::::1;;;;;;;;16656:38;;;;;;;;;;;;16718:8;16709:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16478:260:::0;:::o;38302:173::-;15692:12;:10;:12::i;:::-;15682:22;;:6;;;;;;;;;;:22;;;15674:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38360:26:::1;38389:21;38360:50;;38425:38;38444:18;38425;:38::i;:::-;15756:1;38302:173::o:0;44850:102::-;44897:7;44928:12;;44921:19;;44850:102;:::o;44964:118::-;45010:15;45049:21;45042:28;;44964:118;:::o;33343:522::-;15692:12;:10;:12::i;:::-;15682:22;;:6;;;;;;;;;;:22;;;15674:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33428:11:::1;:20;33440:7;33428:20;;;;;;;;;;;;;;;;;;;;;;;;;33420:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33500:9;33495:359;33519:9;:16;;;;33515:1;:20;33495:359;;;33581:7;33565:23;;:9;33575:1;33565:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;33561:278;;;33628:9;33657:1;33638:9;:16;;;;:20;33628:31;;;;;;;;;;;;;;;;;;;;;;;;;33613:9;33623:1;33613:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;33701:1;33682:7;:16;33690:7;33682:16;;;;;;;;;;;;;;;:20;;;;33748:5;33725:11;:20;33737:7;33725:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;33776:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33814:5;;33561:278;33537:3;;;;;;;33495:359;;;;33343:522:::0;:::o;46123:204::-;15692:12;:10;:12::i;:::-;15682:22;;:6;;;;;;;;;;:22;;;15674:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46212:9:::1;46208:108;46227:9;;:16;;46223:1;:20;46208:108;;;46296:4;46265:14;:28;46280:9;;46290:1;46280:12;;;;;;;;;;;;;;;46265:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;46245:3;;;;;46208:108;;;;46123:204:::0;;:::o;158:114::-;211:15;250:10;243:17;;158:114;:::o;34471:357::-;34585:1;34568:19;;:5;:19;;;;34560:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34670:1;34651:21;;:7;:21;;;;34643:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34758:6;34728:11;:18;34740:5;34728:18;;;;;;;;;;;;;;;:27;34747:7;34728:27;;;;;;;;;;;;;;;:36;;;;34800:7;34784:32;;34793:5;34784:32;;;34809:6;34784:32;;;;;;;;;;;;;;;;;;34471:357;;;:::o;34840:2271::-;35098:14;:22;35113:6;35098:22;;;;;;;;;;;;;;;;;;;;;;;;;35097:23;:53;;;;;35125:14;:25;35140:9;35125:25;;;;;;;;;;;;;;;;;;;;;;;;;35124:26;35097:53;35089:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35223:1;35205:20;;:6;:20;;;;35197:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35311:1;35290:23;;:9;:23;;;;35282:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35385:1;35376:6;:10;35368:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35474:7;:5;:7::i;:::-;35464:17;;:6;:17;;;;:41;;;;;35498:7;:5;:7::i;:::-;35485:20;;:9;:20;;;;35464:41;35461:138;;;35542:12;;35532:6;:22;;35524:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35461:138;35817:28;35848:24;35866:4;35848:9;:24::i;:::-;35817:55;;35928:12;;35904:20;:36;35901:124;;35997:12;;35974:35;;35901:124;36053:24;36104:34;;36080:20;:58;;36053:85;;36158:6;;;;;;;;;;;36157:7;:22;;;;;36168:11;;;;;;;;;;36157:22;:45;;;;;36183:19;36157:45;:72;;;;;36216:13;36206:23;;:6;:23;;;;36157:72;36153:462;;;36345:38;36362:20;36345:16;:38::i;:::-;36420:26;36449:21;36420:50;;36513:1;36492:18;:22;36489:111;;;36539:41;36558:21;36539:18;:41::i;:::-;36489:111;36153:462;;36708:12;36723:4;36708:19;;36847:18;:26;36866:6;36847:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;36877:18;:29;36896:9;36877:29;;;;;;;;;;;;;;;;;;;;;;;;;36847:59;36844:113;;;36936:5;36926:15;;36844:113;37052:47;37067:6;37074:9;37084:6;37091:7;37052:14;:47::i;:::-;34840:2271;;;;;;:::o;4685:208::-;4771:7;4808:1;4803;:6;;4811:12;4795:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4839:9;4855:1;4851;:5;4839:17;;4880:1;4873:8;;;4685:208;;;;;:::o;43937:175::-;43978:7;44003:15;44020;44039:19;:17;:19::i;:::-;44002:56;;;;44080:20;44092:7;44080;:11;;:20;;;;:::i;:::-;44073:27;;;;43937:175;:::o;6215:140::-;6273:7;6304:39;6308:1;6311;6304:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6297:46;;6215:140;;;;:::o;3688:197::-;3746:7;3770:9;3786:1;3782;:5;3770:17;;3815:1;3810;:6;;3802:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3872:1;3865:8;;;3688:197;;;;:::o;42655:496::-;42714:7;42723;42732;42741;42750;42759;42784:23;42809:12;42823:18;42845:44;42857:7;42866;;42875:13;;42845:11;:44::i;:::-;42783:106;;;;;;42904:19;42927:10;:8;:10::i;:::-;42904:33;;42953:15;42970:23;42995:12;43011:39;43023:7;43032:4;43038:11;43011;:39::i;:::-;42952:98;;;;;;43073:7;43082:15;43099:4;43105:15;43122:4;43128:10;43065:74;;;;;;;;;;;;;;;;;;;42655:496;;;;;;;:::o;4203:144::-;4261:7;4292:43;4296:1;4299;4292:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4285:50;;4203:144;;;;:::o;37123:656::-;28287:4;28278:6;;:13;;;;;;;;;;;;;;;;;;37268:21:::1;37306:1;37292:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37268:40;;37341:4;37323;37328:1;37323:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;37371:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;37361:4;37366:1;37361:7;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;37410:62;37427:4;37442:15;37460:11;37410:8;:62::i;:::-;37519:15;:66;;;37604:11;37634:1;37682:4;37713;37737:15;37519:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28306:1;28331:5:::0;28322:6;;:14;;;;;;;;;;;;;;;;;;37123:656;:::o;37799:145::-;37866:23;;;;;;;;;;;:32;;:54;37899:20;37917:1;37899:13;37910:1;37899:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;37866:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37799:145;:::o;38613:883::-;38729:7;38725:44;;38755:14;:12;:14::i;:::-;38725:44;38790:11;:19;38802:6;38790:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;38814:11;:22;38826:9;38814:22;;;;;;;;;;;;;;;;;;;;;;;;;38813:23;38790:46;38786:637;;;38857:48;38879:6;38887:9;38898:6;38857:21;:48::i;:::-;38786:637;;;38932:11;:19;38944:6;38932:19;;;;;;;;;;;;;;;;;;;;;;;;;38931:20;:46;;;;;38955:11;:22;38967:9;38955:22;;;;;;;;;;;;;;;;;;;;;;;;;38931:46;38927:496;;;38998:46;39018:6;39026:9;39037:6;38998:19;:46::i;:::-;38927:496;;;39071:11;:19;39083:6;39071:19;;;;;;;;;;;;;;;;;;;;;;;;;39070:20;:47;;;;;39095:11;:22;39107:9;39095:22;;;;;;;;;;;;;;;;;;;;;;;;;39094:23;39070:47;39066:357;;;39138:44;39156:6;39164:9;39175:6;39138:17;:44::i;:::-;39066:357;;;39208:11;:19;39220:6;39208:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;39231:11;:22;39243:9;39231:22;;;;;;;;;;;;;;;;;;;;;;;;;39208:45;39204:219;;;39274:48;39296:6;39304:9;39315:6;39274:21;:48::i;:::-;39204:219;;;39363:44;39381:6;39389:9;39400:6;39363:17;:44::i;:::-;39204:219;39066:357;38927:496;38786:637;39443:7;39439:45;;39469:15;:13;:15::i;:::-;39439:45;38613:883;;;;:::o;44124:601::-;44174:7;44183;44207:15;44225:7;;44207:25;;44247:15;44265:7;;44247:25;;44298:9;44293:305;44317:9;:16;;;;44313:1;:20;44293:305;;;44387:7;44363;:21;44371:9;44381:1;44371:12;;;;;;;;;;;;;;;;;;;;;;;;;44363:21;;;;;;;;;;;;;;;;:31;:66;;;;44422:7;44398;:21;44406:9;44416:1;44406:12;;;;;;;;;;;;;;;;;;;;;;;;;44398:21;;;;;;;;;;;;;;;;:31;44363:66;44359:97;;;44439:7;;44448;;44431:25;;;;;;;;;44359:97;44485:34;44497:7;:21;44505:9;44515:1;44505:12;;;;;;;;;;;;;;;;;;;;;;;;;44497:21;;;;;;;;;;;;;;;;44485:7;:11;;:34;;;;:::i;:::-;44475:44;;44548:34;44560:7;:21;44568:9;44578:1;44568:12;;;;;;;;;;;;;;;;;;;;;;;;;44560:21;;;;;;;;;;;;;;;;44548:7;:11;;:34;;;;:::i;:::-;44538:44;;44335:3;;;;;;;44293:305;;;;44626:20;44638:7;;44626;;:11;;:20;;;;:::i;:::-;44616:7;:30;44612:61;;;44656:7;;44665;;44648:25;;;;;;;;44612:61;44696:7;44705;44688:25;;;;;;44124:601;;;:::o;6892:298::-;6978:7;7014:1;7010;:5;7017:12;7002:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7045:9;7061:1;7057;:5;;;;;;7045:17;;7177:1;7170:8;;;6892:298;;;;;:::o;43163:396::-;43261:7;43270;43279;43303:12;43318:28;43342:3;43318:19;43330:6;43318:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;43303:43;;43361:18;43382:34;43412:3;43382:25;43394:12;43382:7;:11;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;43361:55;;43431:23;43457:33;43479:10;43457:17;43469:4;43457:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;43431:59;;43513:15;43530:4;43536:10;43505:42;;;;;;;;;43163:396;;;;;;;:::o;43571:354::-;43666:7;43675;43684;43708:15;43726:24;43738:11;43726:7;:11;;:24;;;;:::i;:::-;43708:42;;43765:12;43780:21;43789:11;43780:4;:8;;:21;;;;:::i;:::-;43765:36;;43816:23;43842:17;43854:4;43842:7;:11;;:17;;;;:::i;:::-;43816:43;;43882:7;43891:15;43908:4;43874:39;;;;;;;;;43571:354;;;;;;;:::o;5187:511::-;5245:7;5511:1;5506;:6;5502:55;;;5540:1;5533:8;;;;5502:55;5573:9;5589:1;5585;:5;5573:17;;5622:1;5617;5613;:5;;;;;;:10;5605:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5685:1;5678:8;;;5187:511;;;;;:::o;33877:282::-;33938:1;33927:7;;:12;:34;;;;;33960:1;33943:13;;:18;33927:34;33924:46;;;33963:7;;33924:46;34016:7;;33998:15;:25;;;;34062:13;;34038:21;:37;;;;34114:1;34104:7;:11;;;;34146:1;34130:13;:17;;;;33877:282;:::o;40686:599::-;40793:15;40810:23;40835:12;40849:23;40874:12;40888:18;40910:19;40921:7;40910:10;:19::i;:::-;40792:137;;;;;;;;;;;;40962:28;40982:7;40962;:15;40970:6;40962:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40944:7;:15;40952:6;40944:15;;;;;;;;;;;;;;;:46;;;;41023:28;41043:7;41023;:15;41031:6;41023:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41005:7;:15;41013:6;41005:15;;;;;;;;;;;;;;;:46;;;;41087:39;41110:15;41087:7;:18;41095:9;41087:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41066:7;:18;41074:9;41066:18;;;;;;;;;;;;;;;:60;;;;41142:26;41157:10;41142:14;:26::i;:::-;41186:23;41198:4;41204;41186:11;:23::i;:::-;41246:9;41229:44;;41238:6;41229:44;;;41257:15;41229:44;;;;;;;;;;;;;;;;;;40686:599;;;;;;;;;:::o;40052:622::-;40157:15;40174:23;40199:12;40213:23;40238:12;40252:18;40274:19;40285:7;40274:10;:19::i;:::-;40156:137;;;;;;;;;;;;40326:28;40346:7;40326;:15;40334:6;40326:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40308:7;:15;40316:6;40308:15;;;;;;;;;;;;;;;:46;;;;40390:39;40413:15;40390:7;:18;40398:9;40390:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;40369:7;:18;40377:9;40369:18;;;;;;;;;;;;;;;:60;;;;40465:39;40488:15;40465:7;:18;40473:9;40465:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;40444:7;:18;40452:9;40444:18;;;;;;;;;;;;;;;:60;;;;40523:26;40538:10;40523:14;:26::i;:::-;40575:23;40587:4;40593;40575:11;:23::i;:::-;40635:9;40618:44;;40627:6;40618:44;;;40646:15;40618:44;;;;;;;;;;;;;;;;;;40052:622;;;;;;;;;:::o;39508:532::-;39611:15;39628:23;39653:12;39667:23;39692:12;39706:18;39728:19;39739:7;39728:10;:19::i;:::-;39610:137;;;;;;;;;;;;39780:28;39800:7;39780;:15;39788:6;39780:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;39762:7;:15;39770:6;39762:15;;;;;;;;;;;;;;;:46;;;;39844:39;39867:15;39844:7;:18;39852:9;39844:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;39823:7;:18;39831:9;39823:18;;;;;;;;;;;;;;;:60;;;;39899:26;39914:10;39899:14;:26::i;:::-;39941:23;39953:4;39959;39941:11;:23::i;:::-;40001:9;39984:44;;39993:6;39984:44;;;40012:15;39984:44;;;;;;;;;;;;;;;;;;39508:532;;;;;;;;;:::o;41297:682::-;41404:15;41421:23;41446:12;41460:23;41485:12;41499:18;41521:19;41532:7;41521:10;:19::i;:::-;41403:137;;;;;;;;;;;;41573:28;41593:7;41573;:15;41581:6;41573:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41555:7;:15;41563:6;41555:15;;;;;;;;;;;;;;;:46;;;;41634:28;41654:7;41634;:15;41642:6;41634:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41616:7;:15;41624:6;41616:15;;;;;;;;;;;;;;;:46;;;;41698:39;41721:15;41698:7;:18;41706:9;41698:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41677:7;:18;41685:9;41677:18;;;;;;;;;;;;;;;:60;;;;41773:39;41796:15;41773:7;:18;41781:9;41773:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41752:7;:18;41760:9;41752:18;;;;;;;;;;;;;;;:60;;;;41830:26;41845:10;41830:14;:26::i;:::-;41880:23;41892:4;41898;41880:11;:23::i;:::-;41940:9;41923:44;;41932:6;41923:44;;;41951:15;41923:44;;;;;;;;;;;;;;;;;;41297:682;;;;;;;;;:::o;34175:137::-;34233:15;;34223:7;:25;;;;34279:21;;34263:13;:37;;;;34175:137::o;41991:379::-;42058:19;42081:10;:8;:10::i;:::-;42058:33;;42106:18;42127:27;42142:11;42127:10;:14;;:27;;;;:::i;:::-;42106:48;;42194:38;42221:10;42194:7;:22;42210:4;42194:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;42169:7;:22;42185:4;42169:22;;;;;;;;;;;;;;;:63;;;;42250:11;:26;42270:4;42250:26;;;;;;;;;;;;;;;;;;;;;;;;;42247:111;;;42320:38;42347:10;42320:7;:22;42336:4;42320:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;42295:7;:22;42311:4;42295:22;;;;;;;;;;;;;;;:63;;;;42247:111;41991:379;;;:::o;42382:159::-;42464:17;42476:4;42464:7;;:11;;:17;;;;:::i;:::-;42454:7;:27;;;;42509:20;42524:4;42509:10;;:14;;:20;;;;:::i;:::-;42496:10;:33;;;;42382:159;;:::o
Swarm Source
ipfs://fbec374f4ff2e290e3de4fedb4a72ee9b1a7cd65f58f62c5469e9d0313389e61
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.