ETH Price: $3,105.25 (+2.64%)
Gas: 3 Gwei

Token

Protectors of The Protocol (WeRTHE)
 

Overview

Max Total Supply

1,000,000,000 WeRTHE

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
20,389,206.259327549 WeRTHE

Value
$0.00
0x757f3485394b95e938b73e320f3f90c88017a784
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
WeRTHE

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-20
*/

/*
	We are the Protector of the Protocol.
	Each buy/sell will buy and add to $THE Protocol LP.

*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

interface IERC20 {
	function totalSupply() external view returns (uint256);
	function decimals() external view returns (uint8);
	function symbol() external view returns (string memory);
	function name() external view returns (string memory);
	function balanceOf(address account) external view returns (uint256);
	function transfer(address recipient, uint256 amount) external returns (bool);
	function allowance(address _owner, address spender) external view returns (uint256);
	function approve(address spender, uint256 amount) external returns (bool);
	function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
	event Transfer(address indexed from, address indexed to, uint256 value);
	event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); }
interface IUniswapV2Router02 {
	function getAmountsIn(uint amountOut, address[] memory path) external view returns (uint[] memory amounts);
	function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
	function factory() 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);
}

abstract contract OWNED {
	address internal _owner;
	event OwnershipTransferred(address owner);
	constructor(address contractOwner) { _owner = contractOwner; }
	modifier onlyOwner() { require(msg.sender == _owner, "Not the owner"); _; }
	// function owner() external view returns (address) { return _owner; }  // moved into addressList() function
	function renounceOwnership() external onlyOwner { _transferOwnership(address(0)); }
	function transferOwnership(address newOwner) external onlyOwner { _transferOwnership(newOwner); }
	function _transferOwnership(address _newOwner) internal {
		_owner = _newOwner; 
		emit OwnershipTransferred(_newOwner); 
	}
}

contract WeR1_Sidecar {
	address private immutable _owner;
	constructor() { _owner = msg.sender; }
	function owner() external view returns (address) { return _owner; }
	function recoverErc20Tokens(address tokenCA) external returns (uint256) {
		require(msg.sender == _owner, "Not authorized");
		uint256 balance = IERC20(tokenCA).balanceOf(address(this));
		if (balance > 0) { IERC20(tokenCA).transfer(msg.sender, balance); }
		return balance;
	}
}

contract WeRTHE is IERC20, OWNED {
	mapping(address => uint256) private _balances;
	mapping(address => mapping(address => uint256)) private _allowances;
	uint8 private constant _decimals = 9;
	uint256 private constant _totalSupply = 1_000_000_000 * 10**_decimals;
	string private constant _name = "Protectors of The Protocol";
	string private constant _symbol = "WeRTHE";

	uint256 private _thresholdUSDC = 1000;  // tax tokens USD value threshold to trigger tax token swap, transfer and adding liquidity
	uint256 private _maxTx; 
	uint256 private _maxWallet;
	uint8 private immutable _usdcDecimals;

	uint256 private constant taxMcBracket1 = 8_000_000; // below this MC tax is 6% (2 LP, 2 $THE, 2 Marketing)
	uint256 private constant taxMcBracket2 = 16_000_000; // below this MC tax is 4% (2 $THE, 2 Marketing)
	uint256 private constant taxMcBracket3 = 100_000_000; // below this MC tax is 2% (only $THE), above it tax is 0%

	mapping(address => bool) private _excluded;
	address private _marketingWallet = address(0x0567482d552113f3a216B1e95DCf033A37C9c2f4);
	
	address private constant _theprotocol = address(0xc5fB36dd2fb59d3B98dEfF88425a3F425Ee469eD); 
	address private constant _usdc = address(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48); 
	
	address private immutable _sidecarAddress;
	WeR1_Sidecar private immutable _sidecarContract;

	address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Uniswap V2 Router
	IUniswapV2Router02 private constant _swapRouter = IUniswapV2Router02(_swapRouterAddress);
	address private _primaryLP;
	mapping(address => bool) private _isLP;
	
	uint256 private _openAt;
	uint256 private _addTime = 300; //trading opens 5m after adding liquidity
	uint256 private _protected;

	bool private swapLocked;
	modifier lockSwap { swapLocked = true; _; swapLocked = false; }

	constructor() OWNED(msg.sender)  {
		_balances[address(this)] = _totalSupply;
		emit Transfer(address(0), address(this), _balances[address(this)]);
		
		_sidecarContract = new WeR1_Sidecar();
		_sidecarAddress = address(_sidecarContract);
		_usdcDecimals = IERC20(_usdc).decimals();

		_changeLimits(5,10); //set max TX to 0.5%, max wallet 1%

		_excluded[_owner] = true;
		_excluded[address(this)] = true;
		_excluded[_swapRouterAddress] = true;
		_excluded[_marketingWallet] = true;
		_excluded[_sidecarAddress] = true;
	}

	function addressList() external view returns (address owner, address sidecar, address marketing, address tsuka, address usdc, address swapRouter, address primaryLP) {
		return (_owner, _sidecarAddress, _marketingWallet, _theprotocol, _usdc, _swapRouterAddress, _primaryLP);
	}

	function totalSupply() external pure override returns (uint256) { return _totalSupply; }
	function decimals() external pure override returns (uint8) { return _decimals; }
	function symbol() external pure override returns (string memory) { return _symbol; }
	function name() external pure override returns (string memory) { return _name; }
	function balanceOf(address account) external view override returns (uint256) { return _balances[account]; }
	function allowance(address owner, address spender) external view override returns (uint256) { return _allowances[owner][spender]; }
	function approve(address spender, uint256 amount) public override returns (bool) {
		require(_balances[msg.sender] > 0,"ERC20: Zero balance");
		_approve(msg.sender, spender, amount);
		return true;
	}
	function _approve(address owner, address spender, uint256 amount ) private {
		require(owner != address(0) && spender != address(0), "ERC20: Zero address");
		_allowances[owner][spender] = amount;
		emit Approval(owner, spender, amount);
	}
	function _checkAndApproveRouter(uint256 tokenAmount) private {
		if (_allowances[address(this)][_swapRouterAddress] < tokenAmount) { 
			_approve(address(this), _swapRouterAddress, type(uint256).max);
		}
	}

	function _checkAndApproveRouterForToken(address _token, uint256 amount) internal {
		uint256 tokenAllowance;
		if (_token == address(this)) {
			tokenAllowance = _allowances[address(this)][_swapRouterAddress];
			if (amount > tokenAllowance) {
				_allowances[address(this)][_swapRouterAddress] = type(uint256).max;
			}
		} else {
			tokenAllowance = IERC20(_token).allowance(address(this), _swapRouterAddress);
			if (amount > tokenAllowance) {
				IERC20(_token).approve(_swapRouterAddress, type(uint256).max);
			}
		}
    }

	function transfer(address to, uint256 amount) public returns (bool) {
		_transfer(msg.sender, to, amount);
		return true;
	}
	function transferFrom(address from, address to, uint256 amount) public returns (bool) {
		require(_allowances[from][msg.sender] >= amount,"ERC20: amount exceeds allowance");
		_allowances[from][msg.sender] -= amount;
		_transfer(from, to, amount);
		return true;
	}
	function _transfer(address from, address to, uint256 amount) private {
		require(from != address(0) && to != address(0), "ERC20: Zero address"); 
		require(_balances[from] >= amount, "ERC20: amount exceeds balance"); 
		require(_limitCheck(from, to, amount), "Limits exceeded");
		require(block.timestamp>_openAt, "Not enabled");

		if (block.timestamp>_openAt && block.timestamp<_protected && tx.gasprice>block.basefee) {
			uint256 _gpb = tx.gasprice - block.basefee;
			uint256 _gpm = 10 * (10**9);
			require(_gpb<_gpm,"Not enabled");
		}

		if ( !swapLocked && !_excluded[from] && _isLP[to] ) { _processTaxTokens(); }
		
		(uint256 tsukaLP, uint256 werLP, uint256 marketing) = _getTaxTokens(from, to, amount);
		uint256 taxTokens = tsukaLP + werLP + marketing;
		_balances[from] -= amount;
		_balances[address(this)] += taxTokens;
		_balances[to] += (amount - taxTokens);
		emit Transfer(from, to, amount);
	}
	function _limitCheck(address from, address to, uint256 amount) private view returns (bool) {
		bool txSize = true;
		if ( amount > _maxTx && !_excluded[from] && !_excluded[to] ) { txSize = false; }
		bool walletSize = true;
		uint256 newBalanceTo = _balances[to] + amount;
		if ( newBalanceTo > _maxWallet && !_excluded[from] && !_excluded[to] && !_isLP[to] ) { walletSize = false; } 
		return (txSize && walletSize);
	}

	function _getCurrentDilutedMcUSD() private view returns (uint256) {
		uint256 marketCap;
		if (_primaryLP != address(0)) {
			uint256 tokensInLP = _balances[_primaryLP];
			uint256 usdcInLP = IERC20(_usdc).balanceOf(_primaryLP) / (10**_usdcDecimals);
			marketCap = (usdcInLP * _totalSupply / tokensInLP);
		}
		return marketCap;
	}
	function _getTaxRates() private view returns (uint8 tsukaRate, uint8 werRate, uint8 marketingRate) {
		uint8 _theprotocolRate; uint8 _werRate; uint8 _marketingRate;
		uint256 currentDilutedUsdMC = _getCurrentDilutedMcUSD();
		if (currentDilutedUsdMC < taxMcBracket1 ) {
			_theprotocolRate = 2; _werRate = 2; _marketingRate = 2;
		} else if (currentDilutedUsdMC >= taxMcBracket1 && currentDilutedUsdMC < taxMcBracket2) {
			_theprotocolRate = 2; _werRate = 0; _marketingRate = 2;
		} else if (currentDilutedUsdMC >= taxMcBracket2 && currentDilutedUsdMC < taxMcBracket3) {
			_theprotocolRate = 2; _werRate = 0; _marketingRate = 0;
		} else { 
			_theprotocolRate = 0; _werRate = 0; _marketingRate = 0;
		}
		return (_theprotocolRate, _werRate, _marketingRate);
	}
	function _getTaxTokens(address from, address to, uint256 amount) private view returns (uint256 tsukaLP, uint256 werLP, uint256 marketing) {
		uint256 _theprotocolLP; uint256 _werLP; uint256 _marketing;
		if ( (_isLP[from] && !_excluded[to]) || (_isLP[to] && !_excluded[from]) ) { 
			(uint8 tsukaRate, uint8 werRate, uint8 marketingRate) = _getTaxRates();
			_theprotocolLP = amount * tsukaRate / 100;
			_werLP = amount * werRate / 100;
			_marketing = amount * marketingRate / 100;
		}
		else { 
			_theprotocolLP = 0;
			_werLP = 0;
			_marketing = 0;
		}
		return (_theprotocolLP, _werLP, _marketing);
	}  

	function addInitialLiquidity() external onlyOwner {
		require(IERC20(_usdc).balanceOf(address(this))>0, "USDC value zero");
		require(_primaryLP == address(0), "LP exists");
		_primaryLP = IUniswapV2Factory(_swapRouter.factory()).createPair(address(this), _usdc);
		_isLP[_primaryLP] = true;
		_addLiquidity(address(this), _balances[address(this)], IERC20(_usdc).balanceOf(address(this)), false);
		_openAt = block.timestamp + _addTime;
		_protected = _openAt + 300;
	}

	function _addLiquidity(address _token, uint256 tokenAmount, uint256 usdcAmount, bool burnLpTokens) internal {
		require(IERC20(_token).balanceOf(address(this)) >= tokenAmount, "Not enough tokens");
		require(IERC20(_usdc).balanceOf(address(this)) >= usdcAmount, "Not enough USDC");
		_checkAndApproveRouterForToken(_token, tokenAmount);
		_checkAndApproveRouterForToken(_usdc, usdcAmount);
		address lpRecipient = _owner;
		if (burnLpTokens) { lpRecipient = address(0); }

		_swapRouter.addLiquidity(
			_usdc,  		// tokenA
			_token, 		// tokenB
			usdcAmount,     // amountADesired
			tokenAmount,    // amountBDesired
			0,      		// amountAMin -- allowing slippage
			0,      		// amountBMin -- allowing slippage
			lpRecipient, 	// to -- who gets the LP tokens
			block.timestamp // deadline
		);
	}

	function stats() external view returns (uint256 currentUsdMC, uint256 currentTaxUSD, uint256 swapThresholdUSD) { 
		uint256 currentMc = _getCurrentDilutedMcUSD();
		uint256 currentTaxValue = currentMc * _balances[address(this)] / _totalSupply;
		return (currentMc, currentTaxValue, _thresholdUSDC);
	}

	function tax() external view returns (uint8 LiquidityTSUKA, uint8 LiquidityWeR1, uint8 Marketing) { 
		(uint8 tsukaRate, uint8 werRate, uint8 marketingRate) = _getTaxRates();
		return (tsukaRate, werRate, marketingRate);
	}
	function limits() external view returns (uint256 maxTransaction, uint256 maxWallet) { return (_maxTx, _maxWallet); }
	function isExcluded(address wallet) external view returns (bool) { return _excluded[wallet]; }

	function changeLimits(uint16 maxTxPermille, uint16 maxWalletPermille) public onlyOwner { _changeLimits(maxTxPermille, maxWalletPermille); }
	function _changeLimits(uint16 _maxTxPermille, uint16 _maxWalletPermille) private {
		uint256 newMaxTx = (_totalSupply * _maxTxPermille / 1000) + (10 * 10**_decimals); //add 10 tokens to avoid rounding issues
		uint256 newMaxWallet = (_totalSupply * _maxWalletPermille / 1000) + (10 * 10**_decimals); //add 10 tokens to avoid rounding issues
		require(newMaxTx >= _maxTx && newMaxWallet >= _maxWallet, "Cannot decrease limits");
		if (newMaxTx > _totalSupply) { newMaxTx = _totalSupply; }
		if (newMaxWallet > _totalSupply) { newMaxWallet = _totalSupply; }
		_maxTx = newMaxTx;
		_maxWallet = newMaxWallet;
	}

	function changeTaxWallet(address walletMarketing) external onlyOwner {
		require(!_isLP[walletMarketing] && walletMarketing != _swapRouterAddress && walletMarketing != address(this) && walletMarketing != address(0));
		_excluded[walletMarketing] = true;
		_marketingWallet = walletMarketing;
	}	
	
	function _getThresholdTokenAmount() private view returns (uint256) {
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _usdc;
		uint256[] memory amounts = _swapRouter.getAmountsIn(_thresholdUSDC * 10**_usdcDecimals, path); 
		return amounts[0];
	}
	function _processTaxTokens() private lockSwap {
		uint256 thresholdTokens = _getThresholdTokenAmount();
		(uint8 tsukaRate, uint8 werRate, uint8 marketingRate) = _getTaxRates();
		uint8 totalRate = tsukaRate + werRate + marketingRate;
		uint256 swapAmount = _balances[address(this)];
		if (totalRate>0 && swapAmount >= thresholdTokens) {
			swapAmount = thresholdTokens;

			uint256 tokensForTsuka = (swapAmount * tsukaRate / totalRate);
			uint256 tokensForWerLP = (swapAmount * werRate / totalRate)/2;
			uint256 tokensForMarketing = swapAmount * marketingRate / totalRate;

			uint256 tokensToSwap = tokensForTsuka + tokensForMarketing + tokensForWerLP;
			if (tokensToSwap >= 10**_decimals) {
				uint256 swappedOutputUSDC = _swapTokens(address(this), _usdc, tokensToSwap, true); //swap WeR1 for USDC, use sidecar contract
				uint256 usdcForWerLP = swappedOutputUSDC * tokensForWerLP / tokensToSwap; //calc USDC for WeR1 liquidity
				uint256 usdcToSpendOnTsuka = (swappedOutputUSDC * tokensForTsuka / tokensToSwap) / 2; //calc USDC for TSUKA liquidity
				uint256 usdcForMarketing = swappedOutputUSDC * tokensForMarketing / tokensToSwap; //calc USDC for marketing

				if (werRate>0) { _addLiquidity(address(this), tokensForWerLP, usdcForWerLP, true); } //add WeR1 liquidity and burn LP tokens

				if (tsukaRate>0) {
					uint256 tsukaPurchased = _swapTokens(_usdc, _theprotocol, usdcToSpendOnTsuka, false); //purchase TSUKA for liquidity, sidecar not used
					_addLiquidity(_theprotocol, tsukaPurchased, usdcToSpendOnTsuka, true); //add TSUKA liquidity and burn LP tokens
				}

				if (marketingRate>0) {
					uint256 remainingUsdcBalance = IERC20(_usdc).balanceOf(address(this));
					if (usdcForMarketing > remainingUsdcBalance) { usdcForMarketing = remainingUsdcBalance; } //added check to avoid risk of having insufficient balance
					if (usdcForMarketing > 0) { IERC20(_usdc).transfer(_marketingWallet, usdcForMarketing); } //transfer USDC to marketing wallet
				}
			}

		}
	}

	function _swapTokens(address inputToken, address outputToken, uint256 inputAmount, bool useSidecar) private returns(uint256 outputAmount) {		
		address swapFunctionRecipient = address(this);
		uint256 balanceBefore;
		uint256 swappedOutputTokens;
		
		if (useSidecar == true) { swapFunctionRecipient = _sidecarAddress; }
		else { balanceBefore = IERC20(outputToken).balanceOf(address(this)); }

		_checkAndApproveRouterForToken(inputToken, inputAmount);
		address[] memory path = new address[](2);
		path[0] = inputToken;
		path[1] = outputToken;
		_swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
			inputAmount,
			0,
			path,
			swapFunctionRecipient,
			block.timestamp
		);
		
		if (useSidecar == true) { swappedOutputTokens = _sidecarContract.recoverErc20Tokens(outputToken); }
		else { 
			uint256 balanceAfter = IERC20(outputToken).balanceOf(address(this));
			swappedOutputTokens = (balanceAfter - balanceBefore); 
		}

		return swappedOutputTokens; 
	}

	function recoverTokens(address tokenCa) external onlyOwner {
		require(tokenCa != address(this),"Not allowed");
		uint256 tokenBalance = IERC20(tokenCa).balanceOf(address(this));
		IERC20(tokenCa).transfer(msg.sender, tokenBalance);
	}

	function manualSwap() external onlyOwner { _processTaxTokens(); }
	function setExcluded(address wallet, bool exclude) external onlyOwner { 
		string memory notAllowedError = "Not allowed";
		require(!_isLP[wallet], notAllowedError);
		require(wallet != address(this), notAllowedError);
		require(wallet != _sidecarAddress, notAllowedError);
		require(wallet != _swapRouterAddress, notAllowedError);
	 	_excluded[wallet] = exclude; 
	}
	function setThreshold(uint256 amountUSD) external onlyOwner {
		require(amountUSD > 0, "Threshold cannot be 0");
		_thresholdUSDC = amountUSD;
	}

	function burn(uint256 amount) external {
		require(_balances[msg.sender] >= amount, "Low balance");
		_balances[msg.sender] -= amount;
		_balances[address(0)] += amount;
		emit Transfer(msg.sender, address(0), amount);
	}
	function setAdditionalLP(address lpAddress, bool isLiqPool) external onlyOwner {
		string memory notAllowedError = "Not allowed";
		require(!_excluded[lpAddress], notAllowedError);
		require(lpAddress != _primaryLP, notAllowedError);
		require(lpAddress != address(this), notAllowedError);
		require(lpAddress != _sidecarAddress, notAllowedError);
		require(lpAddress != _swapRouterAddress, notAllowedError);
		_isLP[lpAddress] = isLiqPool;
	}
	function isLP(address ca) external view returns (bool) { return _isLP[ca]; }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","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":"addInitialLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addressList","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"sidecar","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"tsuka","type":"address"},{"internalType":"address","name":"usdc","type":"address"},{"internalType":"address","name":"swapRouter","type":"address"},{"internalType":"address","name":"primaryLP","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"changeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletMarketing","type":"address"}],"name":"changeTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ca","type":"address"}],"name":"isLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limits","outputs":[{"internalType":"uint256","name":"maxTransaction","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenCa","type":"address"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpAddress","type":"address"},{"internalType":"bool","name":"isLiqPool","type":"bool"}],"name":"setAdditionalLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountUSD","type":"uint256"}],"name":"setThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stats","outputs":[{"internalType":"uint256","name":"currentUsdMC","type":"uint256"},{"internalType":"uint256","name":"currentTaxUSD","type":"uint256"},{"internalType":"uint256","name":"swapThresholdUSD","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tax","outputs":[{"internalType":"uint8","name":"LiquidityTSUKA","type":"uint8"},{"internalType":"uint8","name":"LiquidityWeR1","type":"uint8"},{"internalType":"uint8","name":"Marketing","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e06040526103e8600355730567482d552113f3a216b1e95dcf033a37c9c2f4600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061012c600b553480156200007257600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506009600a620000c591906200089e565b633b9aca00620000d69190620008ef565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620001b891906200094b565b60405180910390a3604051620001ce90620006f6565b604051809103906000f080158015620001eb573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505060c05173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002db91906200099e565b60ff1660808160ff1681525050620002fc6005600a6200051360201b60201c565b6001600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000af5565b60006009600a6200052591906200089e565b600a620005339190620008ef565b6103e88461ffff166009600a6200054b91906200089e565b633b9aca006200055c9190620008ef565b620005689190620008ef565b620005749190620009ff565b62000580919062000a37565b905060006009600a6200059491906200089e565b600a620005a29190620008ef565b6103e88461ffff166009600a620005ba91906200089e565b633b9aca00620005cb9190620008ef565b620005d79190620008ef565b620005e39190620009ff565b620005ef919062000a37565b905060045482101580156200060657506005548110155b62000648576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200063f9062000ad3565b60405180910390fd5b6009600a6200065891906200089e565b633b9aca00620006699190620008ef565b82111562000695576009600a6200068191906200089e565b633b9aca00620006929190620008ef565b91505b6009600a620006a591906200089e565b633b9aca00620006b69190620008ef565b811115620006e2576009600a620006ce91906200089e565b633b9aca00620006df9190620008ef565b90505b816004819055508060058190555050505050565b61053f8062005cfb83390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000792578086048111156200076a576200076962000704565b5b60018516156200077a5780820291505b80810290506200078a8562000733565b94506200074a565b94509492505050565b600082620007ad576001905062000880565b81620007bd576000905062000880565b8160018114620007d65760028114620007e15762000817565b600191505062000880565b60ff841115620007f657620007f562000704565b5b8360020a91508482111562000810576200080f62000704565b5b5062000880565b5060208310610133831016604e8410600b8410161715620008515782820a9050838111156200084b576200084a62000704565b5b62000880565b62000860848484600162000740565b925090508184048111156200087a576200087962000704565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008ab8262000887565b9150620008b88362000891565b9250620008e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200079b565b905092915050565b6000620008fc8262000887565b9150620009098362000887565b9250828202620009198162000887565b9150828204841483151762000933576200093262000704565b5b5092915050565b620009458162000887565b82525050565b60006020820190506200096260008301846200093a565b92915050565b600080fd5b620009788162000891565b81146200098457600080fd5b50565b60008151905062000998816200096d565b92915050565b600060208284031215620009b757620009b662000968565b5b6000620009c78482850162000987565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a0c8262000887565b915062000a198362000887565b92508262000a2c5762000a2b620009d0565b5b828204905092915050565b600062000a448262000887565b915062000a518362000887565b925082820190508082111562000a6c5762000a6b62000704565b5b92915050565b600082825260208201905092915050565b7f43616e6e6f74206465637265617365206c696d69747300000000000000000000600082015250565b600062000abb60168362000a72565b915062000ac88262000a83565b602082019050919050565b6000602082019050818103600083015262000aee8162000aac565b9050919050565b60805160a05160c0516151ba62000b416000396000613c9c015260008181610cd6015281816113a301528181611abb0152613a6d01526000818161302e015261399501526151ba6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de578063a9059cbb11610097578063cba0e99611610071578063cba0e99614610440578063d80528ae14610470578063dd62ed3e14610490578063f2fde38b146104c05761018e565b8063a9059cbb146103d0578063c1eb6dfd14610400578063cb711595146104245761018e565b8063715018a61461031d5780637df0f76714610327578063860aefcf1461035757806395d89b4114610376578063960bfe041461039457806399c8d556146103b05761018e565b806323b872dd1161014b57806342966c681161012557806342966c68146102ab57806351bc3c85146102c75780635c07c993146102d157806370a08231146102ed5761018e565b806323b872dd146102415780632836be2414610271578063313ce5671461028d5761018e565b80630210a83d1461019357806306fdde031461019d578063095ea7b3146101bb5780630a6a52b9146101eb57806316114acd1461020757806318160ddd14610223575b600080fd5b61019b6104dc565b005b6101a561099e565b6040516101b29190613e6a565b60405180910390f35b6101d560048036038101906101d09190613f34565b6109db565b6040516101e29190613f8f565b60405180910390f35b61020560048036038101906102009190613fd6565b610a73565b005b610221600480360381019061021c9190614016565b610e4a565b005b61022b611047565b6040516102389190614052565b60405180910390f35b61025b6004803603810190610256919061406d565b61106b565b6040516102689190613f8f565b60405180910390f35b61028b60048036038101906102869190613fd6565b6111d5565b005b610295611517565b6040516102a291906140dc565b60405180910390f35b6102c560048036038101906102c091906140f7565b611520565b005b6102cf6116b7565b005b6102eb60048036038101906102e6919061415e565b61174f565b005b61030760048036038101906103029190614016565b6117eb565b6040516103149190614052565b60405180910390f35b610325611834565b005b610341600480360381019061033c9190614016565b6118ce565b60405161034e9190613f8f565b60405180910390f35b61035f611924565b60405161036d92919061419e565b60405180910390f35b61037e611935565b60405161038b9190613e6a565b60405180910390f35b6103ae60048036038101906103a991906140f7565b611972565b005b6103b8611a4d565b6040516103c7939291906141c7565b60405180910390f35b6103ea60048036038101906103e59190613f34565b611a75565b6040516103f79190613f8f565b60405180910390f35b610408611a8c565b60405161041b979695949392919061420d565b60405180910390f35b61043e60048036038101906104399190614016565b611b76565b005b61045a60048036038101906104559190614016565b611db4565b6040516104679190613f8f565b60405180910390f35b610478611e0a565b6040516104879392919061427c565b60405180910390f35b6104aa60048036038101906104a591906142b3565b611ea2565b6040516104b79190614052565b60405180910390f35b6104da60048036038101906104d59190614016565b611f29565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461056a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105619061433f565b60405180910390fd5b600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105b9919061435f565b602060405180830381865afa1580156105d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fa919061438f565b1161063a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190614408565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c290614474565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561072a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074e91906144a9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486040518363ffffffff1660e01b815260040161079c9291906144d6565b6020604051808303816000875af11580156107bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107df91906144a9565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061097230600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205473a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161092a919061435f565b602060405180830381865afa158015610947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096b919061438f565b6000611fc3565b600b5442610980919061452e565b600a8190555061012c600a54610996919061452e565b600c81905550565b60606040518060400160405280601a81526020017f50726f746563746f7273206f66205468652050726f746f636f6c000000000000815250905090565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a55906145ae565b60405180910390fd5b610a69338484612265565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af89061433f565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158190610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc29190613e6a565b60405180910390fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c579190613e6a565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cca9190613e6a565b60405180910390fd5b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d9190613e6a565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de49190613e6a565b60405180910390fd5b5081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecf9061433f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d9061461a565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f81919061435f565b602060405180830381865afa158015610f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc2919061438f565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610fff92919061463a565b6020604051808303816000875af115801561101e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110429190614678565b505050565b60006009600a61105791906147d8565b633b9aca006110669190614823565b905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561112c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611123906148b1565b60405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111b891906148d1565b925050819055506111ca8484846123f9565b600190509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a9061433f565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615819061132d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113249190613e6a565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906113a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113979190613e6a565b60405180910390fd5b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a9190613e6a565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b19190613e6a565b60405180910390fd5b5081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006009905090565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156115a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159990614951565b60405180910390fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115f191906148d1565b9250508190555080600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611647919061452e565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116ac9190614052565b60405180910390a350565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c9061433f565b60405180910390fd5b61174d6128a9565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d49061433f565b60405180910390fd5b6117e78282612c97565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b99061433f565b60405180910390fd5b6118cc6000612e48565b565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600454600554915091509091565b60606040518060400160405280600681526020017f5765525448450000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f79061433f565b60405180910390fd5b60008111611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a906149bd565b60405180910390fd5b8060038190555050565b600080600080600080611a5e612ec2565b925092509250828282955095509550505050909192565b6000611a823384846123f9565b6001905092915050565b60008060008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673c5fb36dd2fb59d3b98deff88425a3f425ee469ed73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48737a250d5630b4cf539739df2c5dacb4c659f2488d600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16965096509650965096509650965090919293949596565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb9061433f565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c9e5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd657503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611d0f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611d1857600080fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600080611e18612f6b565b905060006009600a611e2a91906147d8565b633b9aca00611e399190614823565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e849190614823565b611e8e9190614a0c565b905081816003549450945094505050909192565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae9061433f565b60405180910390fd5b611fc081612e48565b50565b828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ffd919061435f565b602060405180830381865afa15801561201a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203e919061438f565b101561207f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207690614a89565b60405180910390fd5b8173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120cd919061435f565b602060405180830381865afa1580156120ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210e919061438f565b101561214f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214690614af5565b60405180910390fd5b6121598484613154565b61217773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4883613154565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156121a857600090505b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663e8e3370073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4887868860008088426040518963ffffffff1660e01b8152600401612218989796959493929190614b5a565b6060604051808303816000875af1158015612237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225b9190614bd8565b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122cf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61230e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230590614c77565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123ec9190614052565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124635750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6124a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249990614c77565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251b90614ce3565b60405180910390fd5b61252f838383613433565b61256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590614d4f565b60405180910390fd5b600a5442116125b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a990614dbb565b60405180910390fd5b600a54421180156125c45750600c5442105b80156125cf5750483a115b15612633576000483a6125e291906148d1565b905060006402540be4009050808210612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262790614dbb565b60405180910390fd5b50505b600d60009054906101000a900460ff1615801561269a5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126ef5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126fd576126fc6128a9565b5b600080600061270d868686613671565b9250925092506000818385612722919061452e565b61272c919061452e565b905084600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461277d91906148d1565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127d3919061452e565b9250508190555080856127e691906148d1565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612834919061452e565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516128989190614052565b60405180910390a350505050505050565b6001600d60006101000a81548160ff02191690831515021790555060006128ce613860565b905060008060006128dd612ec2565b92509250925060008183856128f29190614ddb565b6128fc9190614ddb565b90506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008260ff161180156129555750858110155b15612c745785905060008260ff168660ff16836129729190614823565b61297c9190614a0c565b9050600060028460ff168760ff16856129959190614823565b61299f9190614a0c565b6129a99190614a0c565b905060008460ff168660ff16856129c09190614823565b6129ca9190614a0c565b905060008282856129db919061452e565b6129e5919061452e565b90506009600a6129f591906147d8565b8110612c6f576000612a1e3073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48846001613a56565b90506000828583612a2f9190614823565b612a399190614a0c565b905060006002848885612a4c9190614823565b612a569190614a0c565b612a609190614a0c565b90506000848685612a719190614823565b612a7b9190614a0c565b905060008c60ff161115612a9757612a963088856001611fc3565b5b60008d60ff161115612aff576000612ada73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873c5fb36dd2fb59d3b98deff88425a3f425ee469ed856000613a56565b9050612afd73c5fb36dd2fb59d3b98deff88425a3f425ee469ed82856001611fc3565b505b60008b60ff161115612c6a57600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b5a919061435f565b602060405180830381865afa158015612b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9b919061438f565b905080821115612ba9578091505b6000821115612c685773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612c2392919061463a565b6020604051808303816000875af1158015612c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c669190614678565b505b505b505050505b505050505b5050505050506000600d60006101000a81548160ff021916908315150217905550565b60006009600a612ca791906147d8565b600a612cb39190614823565b6103e88461ffff166009600a612cc991906147d8565b633b9aca00612cd89190614823565b612ce29190614823565b612cec9190614a0c565b612cf6919061452e565b905060006009600a612d0891906147d8565b600a612d149190614823565b6103e88461ffff166009600a612d2a91906147d8565b633b9aca00612d399190614823565b612d439190614823565b612d4d9190614a0c565b612d57919061452e565b90506004548210158015612d6d57506005548110155b612dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da390614e5c565b60405180910390fd5b6009600a612dba91906147d8565b633b9aca00612dc99190614823565b821115612df0576009600a612dde91906147d8565b633b9aca00612ded9190614823565b91505b6009600a612dfe91906147d8565b633b9aca00612e0d9190614823565b811115612e34576009600a612e2291906147d8565b633b9aca00612e319190614823565b90505b816004819055508060058190555050505050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612eb7919061435f565b60405180910390a150565b6000806000806000806000612ed5612f6b565b9050627a1200811015612ef357600293506002925060029150612f59565b627a12008110158015612f08575062f4240081105b15612f1e57600293506000925060029150612f58565b62f424008110158015612f3457506305f5e10081105b15612f4a57600293506000925060009150612f57565b6000935060009250600091505b5b5b83838396509650965050505050909192565b600080600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461314d57600060016000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060007f0000000000000000000000000000000000000000000000000000000000000000600a61305991906147d8565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016130c8919061435f565b602060405180830381865afa1580156130e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613109919061438f565b6131139190614a0c565b9050816009600a61312491906147d8565b633b9aca006131339190614823565b8261313e9190614823565b6131489190614a0c565b925050505b8091505090565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132df57600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808211156132da577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61342e565b8273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30737a250d5630b4cf539739df2c5dacb4c659f2488d6040518363ffffffff1660e01b815260040161332e9291906144d6565b602060405180830381865afa15801561334b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336f919061438f565b90508082111561342d578273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016133e892919061463a565b6020604051808303816000875af1158015613407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342b9190614678565b505b5b505050565b60008060019050600454831180156134955750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134eb5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134f557600090505b600060019050600084600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613548919061452e565b9050600554811180156135a55750600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135fb5750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136515750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561365b57600091505b8280156136655750815b93505050509392505050565b600080600080600080600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561371d5750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b806137c75750600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137c65750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561383e5760008060006137d9612ec2565b92509250925060648360ff168b6137f09190614823565b6137fa9190614a0c565b955060648260ff168b61380d9190614823565b6138179190614a0c565b945060648160ff168b61382a9190614823565b6138349190614a0c565b935050505061384b565b6000925060009150600090505b82828295509550955050505093509350939050565b600080600267ffffffffffffffff81111561387e5761387d614e7c565b5b6040519080825280602002602001820160405280156138ac5781602001602082028036833780820191505090505b50905030816000815181106138c4576138c3614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488160018151811061392757613926614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16631f00ca747f0000000000000000000000000000000000000000000000000000000000000000600a6139c091906147d8565b6003546139cd9190614823565b846040518363ffffffff1660e01b81526004016139eb929190614f98565b600060405180830381865afa158015613a08573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613a3191906150e1565b905080600081518110613a4757613a46614eab565b5b60200260200101519250505090565b6000803090506000806001151585151503613a93577f00000000000000000000000000000000000000000000000000000000000000009250613b10565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613acc919061435f565b602060405180830381865afa158015613ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0d919061438f565b91505b613b1a8887613154565b6000600267ffffffffffffffff811115613b3757613b36614e7c565b5b604051908082528060200260200182016040528015613b655781602001602082028036833780820191505090505b5090508881600081518110613b7d57613b7c614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508781600181518110613bcc57613bcb614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d7958860008488426040518663ffffffff1660e01b8152600401613c5c95949392919061512a565b600060405180830381600087803b158015613c7657600080fd5b505af1158015613c8a573d6000803e3d6000fd5b505050506001151586151503613d3d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636433bbd7896040518263ffffffff1660e01b8152600401613cf3919061435f565b6020604051808303816000875af1158015613d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d36919061438f565b9150613dcb565b60008873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613d78919061435f565b602060405180830381865afa158015613d95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613db9919061438f565b90508381613dc791906148d1565b9250505b81945050505050949350505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e14578082015181840152602081019050613df9565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e3c82613dda565b613e468185613de5565b9350613e56818560208601613df6565b613e5f81613e20565b840191505092915050565b60006020820190508181036000830152613e848184613e31565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ecb82613ea0565b9050919050565b613edb81613ec0565b8114613ee657600080fd5b50565b600081359050613ef881613ed2565b92915050565b6000819050919050565b613f1181613efe565b8114613f1c57600080fd5b50565b600081359050613f2e81613f08565b92915050565b60008060408385031215613f4b57613f4a613e96565b5b6000613f5985828601613ee9565b9250506020613f6a85828601613f1f565b9150509250929050565b60008115159050919050565b613f8981613f74565b82525050565b6000602082019050613fa46000830184613f80565b92915050565b613fb381613f74565b8114613fbe57600080fd5b50565b600081359050613fd081613faa565b92915050565b60008060408385031215613fed57613fec613e96565b5b6000613ffb85828601613ee9565b925050602061400c85828601613fc1565b9150509250929050565b60006020828403121561402c5761402b613e96565b5b600061403a84828501613ee9565b91505092915050565b61404c81613efe565b82525050565b60006020820190506140676000830184614043565b92915050565b60008060006060848603121561408657614085613e96565b5b600061409486828701613ee9565b93505060206140a586828701613ee9565b92505060406140b686828701613f1f565b9150509250925092565b600060ff82169050919050565b6140d6816140c0565b82525050565b60006020820190506140f160008301846140cd565b92915050565b60006020828403121561410d5761410c613e96565b5b600061411b84828501613f1f565b91505092915050565b600061ffff82169050919050565b61413b81614124565b811461414657600080fd5b50565b60008135905061415881614132565b92915050565b6000806040838503121561417557614174613e96565b5b600061418385828601614149565b925050602061419485828601614149565b9150509250929050565b60006040820190506141b36000830185614043565b6141c06020830184614043565b9392505050565b60006060820190506141dc60008301866140cd565b6141e960208301856140cd565b6141f660408301846140cd565b949350505050565b61420781613ec0565b82525050565b600060e082019050614222600083018a6141fe565b61422f60208301896141fe565b61423c60408301886141fe565b61424960608301876141fe565b61425660808301866141fe565b61426360a08301856141fe565b61427060c08301846141fe565b98975050505050505050565b60006060820190506142916000830186614043565b61429e6020830185614043565b6142ab6040830184614043565b949350505050565b600080604083850312156142ca576142c9613e96565b5b60006142d885828601613ee9565b92505060206142e985828601613ee9565b9150509250929050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b6000614329600d83613de5565b9150614334826142f3565b602082019050919050565b600060208201905081810360008301526143588161431c565b9050919050565b600060208201905061437460008301846141fe565b92915050565b60008151905061438981613f08565b92915050565b6000602082840312156143a5576143a4613e96565b5b60006143b38482850161437a565b91505092915050565b7f555344432076616c7565207a65726f0000000000000000000000000000000000600082015250565b60006143f2600f83613de5565b91506143fd826143bc565b602082019050919050565b60006020820190508181036000830152614421816143e5565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b600061445e600983613de5565b915061446982614428565b602082019050919050565b6000602082019050818103600083015261448d81614451565b9050919050565b6000815190506144a381613ed2565b92915050565b6000602082840312156144bf576144be613e96565b5b60006144cd84828501614494565b91505092915050565b60006040820190506144eb60008301856141fe565b6144f860208301846141fe565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061453982613efe565b915061454483613efe565b925082820190508082111561455c5761455b6144ff565b5b92915050565b7f45524332303a205a65726f2062616c616e636500000000000000000000000000600082015250565b6000614598601383613de5565b91506145a382614562565b602082019050919050565b600060208201905081810360008301526145c78161458b565b9050919050565b7f4e6f7420616c6c6f776564000000000000000000000000000000000000000000600082015250565b6000614604600b83613de5565b915061460f826145ce565b602082019050919050565b60006020820190508181036000830152614633816145f7565b9050919050565b600060408201905061464f60008301856141fe565b61465c6020830184614043565b9392505050565b60008151905061467281613faa565b92915050565b60006020828403121561468e5761468d613e96565b5b600061469c84828501614663565b91505092915050565b60008160011c9050919050565b6000808291508390505b60018511156146fc578086048111156146d8576146d76144ff565b5b60018516156146e75780820291505b80810290506146f5856146a5565b94506146bc565b94509492505050565b60008261471557600190506147d1565b8161472357600090506147d1565b8160018114614739576002811461474357614772565b60019150506147d1565b60ff841115614755576147546144ff565b5b8360020a91508482111561476c5761476b6144ff565b5b506147d1565b5060208310610133831016604e8410600b84101617156147a75782820a9050838111156147a2576147a16144ff565b5b6147d1565b6147b484848460016146b2565b925090508184048111156147cb576147ca6144ff565b5b81810290505b9392505050565b60006147e382613efe565b91506147ee836140c0565b925061481b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614705565b905092915050565b600061482e82613efe565b915061483983613efe565b925082820261484781613efe565b9150828204841483151761485e5761485d6144ff565b5b5092915050565b7f45524332303a20616d6f756e74206578636565647320616c6c6f77616e636500600082015250565b600061489b601f83613de5565b91506148a682614865565b602082019050919050565b600060208201905081810360008301526148ca8161488e565b9050919050565b60006148dc82613efe565b91506148e783613efe565b92508282039050818111156148ff576148fe6144ff565b5b92915050565b7f4c6f772062616c616e6365000000000000000000000000000000000000000000600082015250565b600061493b600b83613de5565b915061494682614905565b602082019050919050565b6000602082019050818103600083015261496a8161492e565b9050919050565b7f5468726573686f6c642063616e6e6f7420626520300000000000000000000000600082015250565b60006149a7601583613de5565b91506149b282614971565b602082019050919050565b600060208201905081810360008301526149d68161499a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a1782613efe565b9150614a2283613efe565b925082614a3257614a316149dd565b5b828204905092915050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b6000614a73601183613de5565b9150614a7e82614a3d565b602082019050919050565b60006020820190508181036000830152614aa281614a66565b9050919050565b7f4e6f7420656e6f75676820555344430000000000000000000000000000000000600082015250565b6000614adf600f83613de5565b9150614aea82614aa9565b602082019050919050565b60006020820190508181036000830152614b0e81614ad2565b9050919050565b6000819050919050565b6000819050919050565b6000614b44614b3f614b3a84614b15565b614b1f565b613efe565b9050919050565b614b5481614b29565b82525050565b600061010082019050614b70600083018b6141fe565b614b7d602083018a6141fe565b614b8a6040830189614043565b614b976060830188614043565b614ba46080830187614b4b565b614bb160a0830186614b4b565b614bbe60c08301856141fe565b614bcb60e0830184614043565b9998505050505050505050565b600080600060608486031215614bf157614bf0613e96565b5b6000614bff8682870161437a565b9350506020614c108682870161437a565b9250506040614c218682870161437a565b9150509250925092565b7f45524332303a205a65726f206164647265737300000000000000000000000000600082015250565b6000614c61601383613de5565b9150614c6c82614c2b565b602082019050919050565b60006020820190508181036000830152614c9081614c54565b9050919050565b7f45524332303a20616d6f756e7420657863656564732062616c616e6365000000600082015250565b6000614ccd601d83613de5565b9150614cd882614c97565b602082019050919050565b60006020820190508181036000830152614cfc81614cc0565b9050919050565b7f4c696d6974732065786365656465640000000000000000000000000000000000600082015250565b6000614d39600f83613de5565b9150614d4482614d03565b602082019050919050565b60006020820190508181036000830152614d6881614d2c565b9050919050565b7f4e6f7420656e61626c6564000000000000000000000000000000000000000000600082015250565b6000614da5600b83613de5565b9150614db082614d6f565b602082019050919050565b60006020820190508181036000830152614dd481614d98565b9050919050565b6000614de6826140c0565b9150614df1836140c0565b9250828201905060ff811115614e0a57614e096144ff565b5b92915050565b7f43616e6e6f74206465637265617365206c696d69747300000000000000000000600082015250565b6000614e46601683613de5565b9150614e5182614e10565b602082019050919050565b60006020820190508181036000830152614e7581614e39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f0f81613ec0565b82525050565b6000614f218383614f06565b60208301905092915050565b6000602082019050919050565b6000614f4582614eda565b614f4f8185614ee5565b9350614f5a83614ef6565b8060005b83811015614f8b578151614f728882614f15565b9750614f7d83614f2d565b925050600181019050614f5e565b5085935050505092915050565b6000604082019050614fad6000830185614043565b8181036020830152614fbf8184614f3a565b90509392505050565b600080fd5b614fd682613e20565b810181811067ffffffffffffffff82111715614ff557614ff4614e7c565b5b80604052505050565b6000615008613e8c565b90506150148282614fcd565b919050565b600067ffffffffffffffff82111561503457615033614e7c565b5b602082029050602081019050919050565b600080fd5b600061505d61505884615019565b614ffe565b905080838252602082019050602084028301858111156150805761507f615045565b5b835b818110156150a95780615095888261437a565b845260208401935050602081019050615082565b5050509392505050565b600082601f8301126150c8576150c7614fc8565b5b81516150d884826020860161504a565b91505092915050565b6000602082840312156150f7576150f6613e96565b5b600082015167ffffffffffffffff81111561511557615114613e9b565b5b615121848285016150b3565b91505092915050565b600060a08201905061513f6000830188614043565b61514c6020830187614b4b565b818103604083015261515e8186614f3a565b905061516d60608301856141fe565b61517a6080830184614043565b969550505050505056fea2646970667358221220394aa345d9c2c4d5538c779004cbc67acaf2509b7d059d7ba1a30a4635f4bdca64736f6c6343000811003360a060405234801561001057600080fd5b503373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506080516104d961006660003960008181608d015261022d01526104d96000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636433bbd71461003b5780638da5cb5b1461006b575b600080fd5b610055600480360381019061005091906102b4565b610089565b60405161006291906102fa565b60405180910390f35b610073610229565b6040516100809190610324565b60405180910390f35b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610119576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101109061039c565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016101549190610324565b602060405180830381865afa158015610171573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019591906103e8565b90506000811115610220578273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016101db929190610415565b6020604051808303816000875af11580156101fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021e9190610476565b505b80915050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061028182610256565b9050919050565b61029181610276565b811461029c57600080fd5b50565b6000813590506102ae81610288565b92915050565b6000602082840312156102ca576102c9610251565b5b60006102d88482850161029f565b91505092915050565b6000819050919050565b6102f4816102e1565b82525050565b600060208201905061030f60008301846102eb565b92915050565b61031e81610276565b82525050565b60006020820190506103396000830184610315565b92915050565b600082825260208201905092915050565b7f4e6f7420617574686f72697a6564000000000000000000000000000000000000600082015250565b6000610386600e8361033f565b915061039182610350565b602082019050919050565b600060208201905081810360008301526103b581610379565b9050919050565b6103c5816102e1565b81146103d057600080fd5b50565b6000815190506103e2816103bc565b92915050565b6000602082840312156103fe576103fd610251565b5b600061040c848285016103d3565b91505092915050565b600060408201905061042a6000830185610315565b61043760208301846102eb565b9392505050565b60008115159050919050565b6104538161043e565b811461045e57600080fd5b50565b6000815190506104708161044a565b92915050565b60006020828403121561048c5761048b610251565b5b600061049a84828501610461565b9150509291505056fea26469706673582212200943c379b5668c8e26b7abe316e2df2a0e0d482d9ca0e280ec78fec5b1cc714464736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de578063a9059cbb11610097578063cba0e99611610071578063cba0e99614610440578063d80528ae14610470578063dd62ed3e14610490578063f2fde38b146104c05761018e565b8063a9059cbb146103d0578063c1eb6dfd14610400578063cb711595146104245761018e565b8063715018a61461031d5780637df0f76714610327578063860aefcf1461035757806395d89b4114610376578063960bfe041461039457806399c8d556146103b05761018e565b806323b872dd1161014b57806342966c681161012557806342966c68146102ab57806351bc3c85146102c75780635c07c993146102d157806370a08231146102ed5761018e565b806323b872dd146102415780632836be2414610271578063313ce5671461028d5761018e565b80630210a83d1461019357806306fdde031461019d578063095ea7b3146101bb5780630a6a52b9146101eb57806316114acd1461020757806318160ddd14610223575b600080fd5b61019b6104dc565b005b6101a561099e565b6040516101b29190613e6a565b60405180910390f35b6101d560048036038101906101d09190613f34565b6109db565b6040516101e29190613f8f565b60405180910390f35b61020560048036038101906102009190613fd6565b610a73565b005b610221600480360381019061021c9190614016565b610e4a565b005b61022b611047565b6040516102389190614052565b60405180910390f35b61025b6004803603810190610256919061406d565b61106b565b6040516102689190613f8f565b60405180910390f35b61028b60048036038101906102869190613fd6565b6111d5565b005b610295611517565b6040516102a291906140dc565b60405180910390f35b6102c560048036038101906102c091906140f7565b611520565b005b6102cf6116b7565b005b6102eb60048036038101906102e6919061415e565b61174f565b005b61030760048036038101906103029190614016565b6117eb565b6040516103149190614052565b60405180910390f35b610325611834565b005b610341600480360381019061033c9190614016565b6118ce565b60405161034e9190613f8f565b60405180910390f35b61035f611924565b60405161036d92919061419e565b60405180910390f35b61037e611935565b60405161038b9190613e6a565b60405180910390f35b6103ae60048036038101906103a991906140f7565b611972565b005b6103b8611a4d565b6040516103c7939291906141c7565b60405180910390f35b6103ea60048036038101906103e59190613f34565b611a75565b6040516103f79190613f8f565b60405180910390f35b610408611a8c565b60405161041b979695949392919061420d565b60405180910390f35b61043e60048036038101906104399190614016565b611b76565b005b61045a60048036038101906104559190614016565b611db4565b6040516104679190613f8f565b60405180910390f35b610478611e0a565b6040516104879392919061427c565b60405180910390f35b6104aa60048036038101906104a591906142b3565b611ea2565b6040516104b79190614052565b60405180910390f35b6104da60048036038101906104d59190614016565b611f29565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461056a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105619061433f565b60405180910390fd5b600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105b9919061435f565b602060405180830381865afa1580156105d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fa919061438f565b1161063a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190614408565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c290614474565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561072a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074e91906144a9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486040518363ffffffff1660e01b815260040161079c9291906144d6565b6020604051808303816000875af11580156107bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107df91906144a9565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061097230600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205473a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161092a919061435f565b602060405180830381865afa158015610947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096b919061438f565b6000611fc3565b600b5442610980919061452e565b600a8190555061012c600a54610996919061452e565b600c81905550565b60606040518060400160405280601a81526020017f50726f746563746f7273206f66205468652050726f746f636f6c000000000000815250905090565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a55906145ae565b60405180910390fd5b610a69338484612265565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af89061433f565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158190610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc29190613e6a565b60405180910390fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c579190613e6a565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cca9190613e6a565b60405180910390fd5b507f000000000000000000000000edfbd6e321abc2ddf3f5d059aa075fe33783428f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d9190613e6a565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de49190613e6a565b60405180910390fd5b5081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecf9061433f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d9061461a565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f81919061435f565b602060405180830381865afa158015610f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc2919061438f565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610fff92919061463a565b6020604051808303816000875af115801561101e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110429190614678565b505050565b60006009600a61105791906147d8565b633b9aca006110669190614823565b905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561112c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611123906148b1565b60405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111b891906148d1565b925050819055506111ca8484846123f9565b600190509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a9061433f565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615819061132d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113249190613e6a565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906113a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113979190613e6a565b60405180910390fd5b507f000000000000000000000000edfbd6e321abc2ddf3f5d059aa075fe33783428f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a9190613e6a565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b19190613e6a565b60405180910390fd5b5081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006009905090565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156115a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159990614951565b60405180910390fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115f191906148d1565b9250508190555080600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611647919061452e565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116ac9190614052565b60405180910390a350565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c9061433f565b60405180910390fd5b61174d6128a9565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d49061433f565b60405180910390fd5b6117e78282612c97565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b99061433f565b60405180910390fd5b6118cc6000612e48565b565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600454600554915091509091565b60606040518060400160405280600681526020017f5765525448450000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f79061433f565b60405180910390fd5b60008111611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a906149bd565b60405180910390fd5b8060038190555050565b600080600080600080611a5e612ec2565b925092509250828282955095509550505050909192565b6000611a823384846123f9565b6001905092915050565b60008060008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000edfbd6e321abc2ddf3f5d059aa075fe33783428f600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673c5fb36dd2fb59d3b98deff88425a3f425ee469ed73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48737a250d5630b4cf539739df2c5dacb4c659f2488d600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16965096509650965096509650965090919293949596565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb9061433f565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c9e5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd657503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611d0f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611d1857600080fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600080611e18612f6b565b905060006009600a611e2a91906147d8565b633b9aca00611e399190614823565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e849190614823565b611e8e9190614a0c565b905081816003549450945094505050909192565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae9061433f565b60405180910390fd5b611fc081612e48565b50565b828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ffd919061435f565b602060405180830381865afa15801561201a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203e919061438f565b101561207f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207690614a89565b60405180910390fd5b8173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120cd919061435f565b602060405180830381865afa1580156120ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210e919061438f565b101561214f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214690614af5565b60405180910390fd5b6121598484613154565b61217773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4883613154565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156121a857600090505b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663e8e3370073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4887868860008088426040518963ffffffff1660e01b8152600401612218989796959493929190614b5a565b6060604051808303816000875af1158015612237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225b9190614bd8565b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122cf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61230e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230590614c77565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123ec9190614052565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124635750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6124a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249990614c77565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251b90614ce3565b60405180910390fd5b61252f838383613433565b61256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590614d4f565b60405180910390fd5b600a5442116125b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a990614dbb565b60405180910390fd5b600a54421180156125c45750600c5442105b80156125cf5750483a115b15612633576000483a6125e291906148d1565b905060006402540be4009050808210612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262790614dbb565b60405180910390fd5b50505b600d60009054906101000a900460ff1615801561269a5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126ef5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126fd576126fc6128a9565b5b600080600061270d868686613671565b9250925092506000818385612722919061452e565b61272c919061452e565b905084600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461277d91906148d1565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127d3919061452e565b9250508190555080856127e691906148d1565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612834919061452e565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516128989190614052565b60405180910390a350505050505050565b6001600d60006101000a81548160ff02191690831515021790555060006128ce613860565b905060008060006128dd612ec2565b92509250925060008183856128f29190614ddb565b6128fc9190614ddb565b90506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008260ff161180156129555750858110155b15612c745785905060008260ff168660ff16836129729190614823565b61297c9190614a0c565b9050600060028460ff168760ff16856129959190614823565b61299f9190614a0c565b6129a99190614a0c565b905060008460ff168660ff16856129c09190614823565b6129ca9190614a0c565b905060008282856129db919061452e565b6129e5919061452e565b90506009600a6129f591906147d8565b8110612c6f576000612a1e3073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48846001613a56565b90506000828583612a2f9190614823565b612a399190614a0c565b905060006002848885612a4c9190614823565b612a569190614a0c565b612a609190614a0c565b90506000848685612a719190614823565b612a7b9190614a0c565b905060008c60ff161115612a9757612a963088856001611fc3565b5b60008d60ff161115612aff576000612ada73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873c5fb36dd2fb59d3b98deff88425a3f425ee469ed856000613a56565b9050612afd73c5fb36dd2fb59d3b98deff88425a3f425ee469ed82856001611fc3565b505b60008b60ff161115612c6a57600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b5a919061435f565b602060405180830381865afa158015612b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9b919061438f565b905080821115612ba9578091505b6000821115612c685773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612c2392919061463a565b6020604051808303816000875af1158015612c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c669190614678565b505b505b505050505b505050505b5050505050506000600d60006101000a81548160ff021916908315150217905550565b60006009600a612ca791906147d8565b600a612cb39190614823565b6103e88461ffff166009600a612cc991906147d8565b633b9aca00612cd89190614823565b612ce29190614823565b612cec9190614a0c565b612cf6919061452e565b905060006009600a612d0891906147d8565b600a612d149190614823565b6103e88461ffff166009600a612d2a91906147d8565b633b9aca00612d399190614823565b612d439190614823565b612d4d9190614a0c565b612d57919061452e565b90506004548210158015612d6d57506005548110155b612dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da390614e5c565b60405180910390fd5b6009600a612dba91906147d8565b633b9aca00612dc99190614823565b821115612df0576009600a612dde91906147d8565b633b9aca00612ded9190614823565b91505b6009600a612dfe91906147d8565b633b9aca00612e0d9190614823565b811115612e34576009600a612e2291906147d8565b633b9aca00612e319190614823565b90505b816004819055508060058190555050505050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612eb7919061435f565b60405180910390a150565b6000806000806000806000612ed5612f6b565b9050627a1200811015612ef357600293506002925060029150612f59565b627a12008110158015612f08575062f4240081105b15612f1e57600293506000925060029150612f58565b62f424008110158015612f3457506305f5e10081105b15612f4a57600293506000925060009150612f57565b6000935060009250600091505b5b5b83838396509650965050505050909192565b600080600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461314d57600060016000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060007f0000000000000000000000000000000000000000000000000000000000000006600a61305991906147d8565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016130c8919061435f565b602060405180830381865afa1580156130e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613109919061438f565b6131139190614a0c565b9050816009600a61312491906147d8565b633b9aca006131339190614823565b8261313e9190614823565b6131489190614a0c565b925050505b8091505090565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132df57600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808211156132da577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61342e565b8273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30737a250d5630b4cf539739df2c5dacb4c659f2488d6040518363ffffffff1660e01b815260040161332e9291906144d6565b602060405180830381865afa15801561334b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336f919061438f565b90508082111561342d578273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016133e892919061463a565b6020604051808303816000875af1158015613407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342b9190614678565b505b5b505050565b60008060019050600454831180156134955750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134eb5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134f557600090505b600060019050600084600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613548919061452e565b9050600554811180156135a55750600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135fb5750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136515750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561365b57600091505b8280156136655750815b93505050509392505050565b600080600080600080600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561371d5750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b806137c75750600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137c65750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561383e5760008060006137d9612ec2565b92509250925060648360ff168b6137f09190614823565b6137fa9190614a0c565b955060648260ff168b61380d9190614823565b6138179190614a0c565b945060648160ff168b61382a9190614823565b6138349190614a0c565b935050505061384b565b6000925060009150600090505b82828295509550955050505093509350939050565b600080600267ffffffffffffffff81111561387e5761387d614e7c565b5b6040519080825280602002602001820160405280156138ac5781602001602082028036833780820191505090505b50905030816000815181106138c4576138c3614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488160018151811061392757613926614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16631f00ca747f0000000000000000000000000000000000000000000000000000000000000006600a6139c091906147d8565b6003546139cd9190614823565b846040518363ffffffff1660e01b81526004016139eb929190614f98565b600060405180830381865afa158015613a08573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613a3191906150e1565b905080600081518110613a4757613a46614eab565b5b60200260200101519250505090565b6000803090506000806001151585151503613a93577f000000000000000000000000edfbd6e321abc2ddf3f5d059aa075fe33783428f9250613b10565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613acc919061435f565b602060405180830381865afa158015613ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0d919061438f565b91505b613b1a8887613154565b6000600267ffffffffffffffff811115613b3757613b36614e7c565b5b604051908082528060200260200182016040528015613b655781602001602082028036833780820191505090505b5090508881600081518110613b7d57613b7c614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508781600181518110613bcc57613bcb614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d7958860008488426040518663ffffffff1660e01b8152600401613c5c95949392919061512a565b600060405180830381600087803b158015613c7657600080fd5b505af1158015613c8a573d6000803e3d6000fd5b505050506001151586151503613d3d577f000000000000000000000000edfbd6e321abc2ddf3f5d059aa075fe33783428f73ffffffffffffffffffffffffffffffffffffffff16636433bbd7896040518263ffffffff1660e01b8152600401613cf3919061435f565b6020604051808303816000875af1158015613d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d36919061438f565b9150613dcb565b60008873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613d78919061435f565b602060405180830381865afa158015613d95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613db9919061438f565b90508381613dc791906148d1565b9250505b81945050505050949350505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e14578082015181840152602081019050613df9565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e3c82613dda565b613e468185613de5565b9350613e56818560208601613df6565b613e5f81613e20565b840191505092915050565b60006020820190508181036000830152613e848184613e31565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ecb82613ea0565b9050919050565b613edb81613ec0565b8114613ee657600080fd5b50565b600081359050613ef881613ed2565b92915050565b6000819050919050565b613f1181613efe565b8114613f1c57600080fd5b50565b600081359050613f2e81613f08565b92915050565b60008060408385031215613f4b57613f4a613e96565b5b6000613f5985828601613ee9565b9250506020613f6a85828601613f1f565b9150509250929050565b60008115159050919050565b613f8981613f74565b82525050565b6000602082019050613fa46000830184613f80565b92915050565b613fb381613f74565b8114613fbe57600080fd5b50565b600081359050613fd081613faa565b92915050565b60008060408385031215613fed57613fec613e96565b5b6000613ffb85828601613ee9565b925050602061400c85828601613fc1565b9150509250929050565b60006020828403121561402c5761402b613e96565b5b600061403a84828501613ee9565b91505092915050565b61404c81613efe565b82525050565b60006020820190506140676000830184614043565b92915050565b60008060006060848603121561408657614085613e96565b5b600061409486828701613ee9565b93505060206140a586828701613ee9565b92505060406140b686828701613f1f565b9150509250925092565b600060ff82169050919050565b6140d6816140c0565b82525050565b60006020820190506140f160008301846140cd565b92915050565b60006020828403121561410d5761410c613e96565b5b600061411b84828501613f1f565b91505092915050565b600061ffff82169050919050565b61413b81614124565b811461414657600080fd5b50565b60008135905061415881614132565b92915050565b6000806040838503121561417557614174613e96565b5b600061418385828601614149565b925050602061419485828601614149565b9150509250929050565b60006040820190506141b36000830185614043565b6141c06020830184614043565b9392505050565b60006060820190506141dc60008301866140cd565b6141e960208301856140cd565b6141f660408301846140cd565b949350505050565b61420781613ec0565b82525050565b600060e082019050614222600083018a6141fe565b61422f60208301896141fe565b61423c60408301886141fe565b61424960608301876141fe565b61425660808301866141fe565b61426360a08301856141fe565b61427060c08301846141fe565b98975050505050505050565b60006060820190506142916000830186614043565b61429e6020830185614043565b6142ab6040830184614043565b949350505050565b600080604083850312156142ca576142c9613e96565b5b60006142d885828601613ee9565b92505060206142e985828601613ee9565b9150509250929050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b6000614329600d83613de5565b9150614334826142f3565b602082019050919050565b600060208201905081810360008301526143588161431c565b9050919050565b600060208201905061437460008301846141fe565b92915050565b60008151905061438981613f08565b92915050565b6000602082840312156143a5576143a4613e96565b5b60006143b38482850161437a565b91505092915050565b7f555344432076616c7565207a65726f0000000000000000000000000000000000600082015250565b60006143f2600f83613de5565b91506143fd826143bc565b602082019050919050565b60006020820190508181036000830152614421816143e5565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b600061445e600983613de5565b915061446982614428565b602082019050919050565b6000602082019050818103600083015261448d81614451565b9050919050565b6000815190506144a381613ed2565b92915050565b6000602082840312156144bf576144be613e96565b5b60006144cd84828501614494565b91505092915050565b60006040820190506144eb60008301856141fe565b6144f860208301846141fe565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061453982613efe565b915061454483613efe565b925082820190508082111561455c5761455b6144ff565b5b92915050565b7f45524332303a205a65726f2062616c616e636500000000000000000000000000600082015250565b6000614598601383613de5565b91506145a382614562565b602082019050919050565b600060208201905081810360008301526145c78161458b565b9050919050565b7f4e6f7420616c6c6f776564000000000000000000000000000000000000000000600082015250565b6000614604600b83613de5565b915061460f826145ce565b602082019050919050565b60006020820190508181036000830152614633816145f7565b9050919050565b600060408201905061464f60008301856141fe565b61465c6020830184614043565b9392505050565b60008151905061467281613faa565b92915050565b60006020828403121561468e5761468d613e96565b5b600061469c84828501614663565b91505092915050565b60008160011c9050919050565b6000808291508390505b60018511156146fc578086048111156146d8576146d76144ff565b5b60018516156146e75780820291505b80810290506146f5856146a5565b94506146bc565b94509492505050565b60008261471557600190506147d1565b8161472357600090506147d1565b8160018114614739576002811461474357614772565b60019150506147d1565b60ff841115614755576147546144ff565b5b8360020a91508482111561476c5761476b6144ff565b5b506147d1565b5060208310610133831016604e8410600b84101617156147a75782820a9050838111156147a2576147a16144ff565b5b6147d1565b6147b484848460016146b2565b925090508184048111156147cb576147ca6144ff565b5b81810290505b9392505050565b60006147e382613efe565b91506147ee836140c0565b925061481b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614705565b905092915050565b600061482e82613efe565b915061483983613efe565b925082820261484781613efe565b9150828204841483151761485e5761485d6144ff565b5b5092915050565b7f45524332303a20616d6f756e74206578636565647320616c6c6f77616e636500600082015250565b600061489b601f83613de5565b91506148a682614865565b602082019050919050565b600060208201905081810360008301526148ca8161488e565b9050919050565b60006148dc82613efe565b91506148e783613efe565b92508282039050818111156148ff576148fe6144ff565b5b92915050565b7f4c6f772062616c616e6365000000000000000000000000000000000000000000600082015250565b600061493b600b83613de5565b915061494682614905565b602082019050919050565b6000602082019050818103600083015261496a8161492e565b9050919050565b7f5468726573686f6c642063616e6e6f7420626520300000000000000000000000600082015250565b60006149a7601583613de5565b91506149b282614971565b602082019050919050565b600060208201905081810360008301526149d68161499a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a1782613efe565b9150614a2283613efe565b925082614a3257614a316149dd565b5b828204905092915050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b6000614a73601183613de5565b9150614a7e82614a3d565b602082019050919050565b60006020820190508181036000830152614aa281614a66565b9050919050565b7f4e6f7420656e6f75676820555344430000000000000000000000000000000000600082015250565b6000614adf600f83613de5565b9150614aea82614aa9565b602082019050919050565b60006020820190508181036000830152614b0e81614ad2565b9050919050565b6000819050919050565b6000819050919050565b6000614b44614b3f614b3a84614b15565b614b1f565b613efe565b9050919050565b614b5481614b29565b82525050565b600061010082019050614b70600083018b6141fe565b614b7d602083018a6141fe565b614b8a6040830189614043565b614b976060830188614043565b614ba46080830187614b4b565b614bb160a0830186614b4b565b614bbe60c08301856141fe565b614bcb60e0830184614043565b9998505050505050505050565b600080600060608486031215614bf157614bf0613e96565b5b6000614bff8682870161437a565b9350506020614c108682870161437a565b9250506040614c218682870161437a565b9150509250925092565b7f45524332303a205a65726f206164647265737300000000000000000000000000600082015250565b6000614c61601383613de5565b9150614c6c82614c2b565b602082019050919050565b60006020820190508181036000830152614c9081614c54565b9050919050565b7f45524332303a20616d6f756e7420657863656564732062616c616e6365000000600082015250565b6000614ccd601d83613de5565b9150614cd882614c97565b602082019050919050565b60006020820190508181036000830152614cfc81614cc0565b9050919050565b7f4c696d6974732065786365656465640000000000000000000000000000000000600082015250565b6000614d39600f83613de5565b9150614d4482614d03565b602082019050919050565b60006020820190508181036000830152614d6881614d2c565b9050919050565b7f4e6f7420656e61626c6564000000000000000000000000000000000000000000600082015250565b6000614da5600b83613de5565b9150614db082614d6f565b602082019050919050565b60006020820190508181036000830152614dd481614d98565b9050919050565b6000614de6826140c0565b9150614df1836140c0565b9250828201905060ff811115614e0a57614e096144ff565b5b92915050565b7f43616e6e6f74206465637265617365206c696d69747300000000000000000000600082015250565b6000614e46601683613de5565b9150614e5182614e10565b602082019050919050565b60006020820190508181036000830152614e7581614e39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f0f81613ec0565b82525050565b6000614f218383614f06565b60208301905092915050565b6000602082019050919050565b6000614f4582614eda565b614f4f8185614ee5565b9350614f5a83614ef6565b8060005b83811015614f8b578151614f728882614f15565b9750614f7d83614f2d565b925050600181019050614f5e565b5085935050505092915050565b6000604082019050614fad6000830185614043565b8181036020830152614fbf8184614f3a565b90509392505050565b600080fd5b614fd682613e20565b810181811067ffffffffffffffff82111715614ff557614ff4614e7c565b5b80604052505050565b6000615008613e8c565b90506150148282614fcd565b919050565b600067ffffffffffffffff82111561503457615033614e7c565b5b602082029050602081019050919050565b600080fd5b600061505d61505884615019565b614ffe565b905080838252602082019050602084028301858111156150805761507f615045565b5b835b818110156150a95780615095888261437a565b845260208401935050602081019050615082565b5050509392505050565b600082601f8301126150c8576150c7614fc8565b5b81516150d884826020860161504a565b91505092915050565b6000602082840312156150f7576150f6613e96565b5b600082015167ffffffffffffffff81111561511557615114613e9b565b5b615121848285016150b3565b91505092915050565b600060a08201905061513f6000830188614043565b61514c6020830187614b4b565b818103604083015261515e8186614f3a565b905061516d60608301856141fe565b61517a6080830184614043565b969550505050505056fea2646970667358221220394aa345d9c2c4d5538c779004cbc67acaf2509b7d059d7ba1a30a4635f4bdca64736f6c63430008110033

Deployed Bytecode Sourcemap

2827:16115:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10870:477;;;:::i;:::-;;5803:80;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6130:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18409:451;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17338:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5542:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7477:270;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17650:374;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5633:80;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18180:226;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17582:65;;;:::i;:::-;;12936:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5886:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2045:83;;;:::i;:::-;;18863:76;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12718:116;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5716:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18027:148;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12489:226;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7347:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5259:278;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;13699:298;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12837:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12179:305;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;5996:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2131:97;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10870:477;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10972:1:::1;4048:42;10933:23;;;10965:4;10933:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;10925:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11028:1;11006:24;;:10;;;;;;;;;;;:24;;;10998:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4251:42;11080:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11062:51;;;11122:4;4048:42;11062:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11049:10;;:86;;;;;;;;;;;;;;;;;;11160:4;11140:5;:17;11146:10;;;;;;;;;;;11140:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;11169:101;11191:4;11198:9;:24;11216:4;11198:24;;;;;;;;;;;;;;;;4048:42;11224:23;;;11256:4;11224:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11264:5;11169:13;:101::i;:::-;11303:8;;11285:15;:26;;;;:::i;:::-;11275:7;:36;;;;11339:3;11329:7;;:13;;;;:::i;:::-;11316:10;:26;;;;10870:477::o:0;5803:80::-;5851:13;5875:5;;;;;;;;;;;;;;;;;5868:12;;5803:80;:::o;6130:205::-;6205:4;6248:1;6224:9;:21;6234:10;6224:21;;;;;;;;;;;;;;;;:25;6216:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;6277:37;6286:10;6298:7;6307:6;6277:8;:37::i;:::-;6326:4;6319:11;;6130:205;;;;:::o;18409:451::-;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;18493:29:::1;:45;;;;;;;;;;;;;;;;::::0;::::1;;18552:9;:20;18562:9;18552:20;;;;;;;;;;;;;;;;;;;;;;;;;18551:21;18574:15;18543:47;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18616:10;;;;;;;;;;;18603:23;;:9;:23;;;;18628:15;18595:49;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18678:4;18657:26;;:9;:26;;;;18685:15;18649:52;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18727:15;18714:28;;:9;:28;;;;18744:15;18706:54;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4251:42;18773:31;;:9;:31;;;;18806:15;18765:57;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18846:9;18827:5;:16;18833:9;18827:16;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18488:372;18409:451:::0;;:::o;17338:239::-;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17429:4:::1;17410:24;;:7;:24;;::::0;17402:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17454:20;17484:7;17477:25;;;17511:4;17477:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17454:63;;17529:7;17522:24;;;17547:10;17559:12;17522:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17397:180;17338:239:::0;:::o;5542:88::-;5597:7;3019:1;3080:2;:13;;;;:::i;:::-;3064;:29;;;;:::i;:::-;5608:19;;5542:88;:::o;7477:270::-;7557:4;7609:6;7576:11;:17;7588:4;7576:17;;;;;;;;;;;;;;;:29;7594:10;7576:29;;;;;;;;;;;;;;;;:39;;7568:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7688:6;7655:11;:17;7667:4;7655:17;;;;;;;;;;;;;;;:29;7673:10;7655:29;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;7699:27;7709:4;7715:2;7719:6;7699:9;:27::i;:::-;7738:4;7731:11;;7477:270;;;;;:::o;17650:374::-;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17726:29:::1;:45;;;;;;;;;;;;;;;;::::0;::::1;;17785:5;:13;17791:6;17785:13;;;;;;;;;;;;;;;;;;;;;;;;;17784:14;17800:15;17776:40;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17847:4;17829:23;;:6;:23;;;;17854:15;17821:49;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17893:15;17883:25;;:6;:25;;;;17910:15;17875:51;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4251:42;17939:28;;:6;:28;;;;17969:15;17931:54;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18011:7;17991:9;:17;18001:6;17991:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;17720:304;17650:374:::0;;:::o;5633:80::-;5685:5;3019:1;5694:16;;5633:80;:::o;18180:226::-;18257:6;18232:9;:21;18242:10;18232:21;;;;;;;;;;;;;;;;:31;;18224:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18309:6;18284:9;:21;18294:10;18284:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;18345:6;18320:9;:21;18338:1;18320:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;18390:1;18361:40;;18370:10;18361:40;;;18394:6;18361:40;;;;;;:::i;:::-;;;;;;;;18180:226;:::o;17582:65::-;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17625:19:::1;:17;:19::i;:::-;17582:65::o:0;12936:139::-;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;13025:47:::1;13039:13;13054:17;13025:13;:47::i;:::-;12936:139:::0;;:::o;5886:107::-;5954:7;5972:9;:18;5982:7;5972:18;;;;;;;;;;;;;;;;5965:25;;5886:107;;;:::o;2045:83::-;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2095:30:::1;2122:1;2095:18;:30::i;:::-;2045:83::o:0;18863:76::-;18912:4;18927:5;:9;18933:2;18927:9;;;;;;;;;;;;;;;;;;;;;;;;;18920:16;;18863:76;;;:::o;12718:116::-;12759:22;12783:17;12812:6;;12820:10;;12804:27;;;;12718:116;;:::o;5716:84::-;5766:13;5790:7;;;;;;;;;;;;;;;;;5783:14;;5716:84;:::o;18027:148::-;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;18112:1:::1;18100:9;:13;18092:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;18161:9;18144:14;:26;;;;18027:148:::0;:::o;12489:226::-;12527:20;12549:19;12570:15;12594;12611:13;12626:19;12649:14;:12;:14::i;:::-;12593:70;;;;;;12676:9;12687:7;12696:13;12668:42;;;;;;;;;12489:226;;;:::o;7347:127::-;7409:4;7420:33;7430:10;7442:2;7446:6;7420:9;:33::i;:::-;7465:4;7458:11;;7347:127;;;;:::o;5259:278::-;5305:13;5320:15;5337:17;5356:13;5371:12;5385:18;5405:17;5437:6;;;;;;;;;;;5445:15;5462:16;;;;;;;;;;;3959:42;4048;4251;5521:10;;;;;;;;;;;5429:103;;;;;;;;;;;;;;5259:278;;;;;;;:::o;13699:298::-;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;13782:5:::1;:22;13788:15;13782:22;;;;;;;;;;;;;;;;;;;;;;;;;13781:23;:64;;;;;4251:42;13808:37;;:15;:37;;;;13781:64;:100;;;;;13876:4;13849:32;;:15;:32;;;;13781:100;:133;;;;;13912:1;13885:29;;:15;:29;;;;13781:133;13773:142;;;::::0;::::1;;13949:4;13920:9;:26;13930:15;13920:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;13977:15;13958:16;;:34;;;;;;;;;;;;;;;;;;13699:298:::0;:::o;12837:94::-;12896:4;12911:9;:17;12921:6;12911:17;;;;;;;;;;;;;;;;;;;;;;;;;12904:24;;12837:94;;;:::o;12179:305::-;12219:20;12241:21;12264:24;12296:17;12316:25;:23;:25::i;:::-;12296:45;;12346:23;3019:1;3080:2;:13;;;;:::i;:::-;3064;:29;;;;:::i;:::-;12384:9;:24;12402:4;12384:24;;;;;;;;;;;;;;;;12372:9;:36;;;;:::i;:::-;:51;;;;:::i;:::-;12346:77;;12436:9;12447:15;12464:14;;12428:51;;;;;;;;12179:305;;;:::o;5996:131::-;6079:7;6097:11;:18;6109:5;6097:18;;;;;;;;;;;;;;;:27;6116:7;6097:27;;;;;;;;;;;;;;;;6090:34;;5996:131;;;;:::o;2131:97::-;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2197:28:::1;2216:8;2197:18;:28::i;:::-;2131:97:::0;:::o;11352:822::-;11516:11;11480:6;11473:24;;;11506:4;11473:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;11465:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;11604:10;4048:42;11562:23;;;11594:4;11562:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;11554:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;11639:51;11670:6;11678:11;11639:30;:51::i;:::-;11695:49;4048:42;11733:10;11695:30;:49::i;:::-;11749:19;11771:6;;;;;;;;;;;11749:28;;11786:12;11782:47;;;11824:1;11802:24;;11782:47;4251:42;11835:24;;;4048:42;11889:6;11913:10;11951:11;11989:1;12038;12087:11;12137:15;11835:334;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11460:714;11352:822;;;;:::o;6338:244::-;6443:1;6426:19;;:5;:19;;;;:44;;;;;6468:1;6449:21;;:7;:21;;;;6426:44;6418:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;6529:6;6499:11;:18;6511:5;6499:18;;;;;;;;;;;;;;;:27;6518:7;6499:27;;;;;;;;;;;;;;;:36;;;;6561:7;6545:32;;6554:5;6545:32;;;6570:6;6545:32;;;;;;:::i;:::-;;;;;;;;6338:244;;;:::o;7750:934::-;7848:1;7832:18;;:4;:18;;;;:38;;;;;7868:1;7854:16;;:2;:16;;;;7832:38;7824:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7927:6;7908:9;:15;7918:4;7908:15;;;;;;;;;;;;;;;;:25;;7900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7981:29;7993:4;7999:2;8003:6;7981:11;:29::i;:::-;7973:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;8059:7;;8043:15;:23;8035:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;8109:7;;8093:15;:23;:53;;;;;8136:10;;8120:15;:26;8093:53;:82;;;;;8162:13;8150:11;:25;8093:82;8089:213;;;8183:12;8212:13;8198:11;:27;;;;:::i;:::-;8183:42;;8231:12;8246;8231:27;;8277:4;8272;:9;8264:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;8177:125;;8089:213;8314:10;;;;;;;;;;;8313:11;:31;;;;;8329:9;:15;8339:4;8329:15;;;;;;;;;;;;;;;;;;;;;;;;;8328:16;8313:31;:44;;;;;8348:5;:9;8354:2;8348:9;;;;;;;;;;;;;;;;;;;;;;;;;8313:44;8308:76;;;8362:19;:17;:19::i;:::-;8308:76;8393:15;8410:13;8425:17;8446:31;8460:4;8466:2;8470:6;8446:13;:31::i;:::-;8392:85;;;;;;8482:17;8520:9;8512:5;8502:7;:15;;;;:::i;:::-;:27;;;;:::i;:::-;8482:47;;8553:6;8534:9;:15;8544:4;8534:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;8592:9;8564;:24;8582:4;8564:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;8633:9;8624:6;:18;;;;:::i;:::-;8606:9;:13;8616:2;8606:13;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;8668:2;8653:26;;8662:4;8653:26;;;8672:6;8653:26;;;;;;:::i;:::-;;;;;;;;7819:865;;;;7750:934;;;:::o;14293:2028::-;4680:4;4667:10;;:17;;;;;;;;;;;;;;;;;;14344:23:::1;14370:26;:24;:26::i;:::-;14344:52;;14402:15;14419:13:::0;14434:19:::1;14457:14;:12;:14::i;:::-;14401:70;;;;;;14476:15;14516:13;14506:7;14494:9;:19;;;;:::i;:::-;:35;;;;:::i;:::-;14476:53;;14534:18;14555:9;:24;14573:4;14555:24;;;;;;;;;;;;;;;;14534:45;;14598:1;14588:9;:11;;;:44;;;;;14617:15;14603:10;:29;;14588:44;14584:1733;;;14653:15;14640:28;;14676:22;14727:9;14702:34;;14715:9;14702:22;;:10;:22;;;;:::i;:::-;:34;;;;:::i;:::-;14676:61;;14743:22;14803:1;14792:9;14769:32;;14782:7;14769:20;;:10;:20;;;;:::i;:::-;:32;;;;:::i;:::-;14768:36;;;;:::i;:::-;14743:61;;14810:26;14868:9;14839:38;;14852:13;14839:26;;:10;:26;;;;:::i;:::-;:38;;;;:::i;:::-;14810:67;;14885:20;14946:14;14925:18;14908:14;:35;;;;:::i;:::-;:52;;;;:::i;:::-;14885:75;;3019:1;14986:2;:13;;;;:::i;:::-;14970:12;:29;14966:1344;;15008:25;15036:53;15056:4;4048:42;15070:12;15084:4;15036:11;:53::i;:::-;15008:81;;15139:20;15199:12;15182:14;15162:17;:34;;;;:::i;:::-;:49;;;;:::i;:::-;15139:72;;15249:26;15332:1;15316:12;15299:14;15279:17;:34;;;;:::i;:::-;:49;;;;:::i;:::-;15278:55;;;;:::i;:::-;15249:84;;15372:24;15440:12;15419:18;15399:17;:38;;;;:::i;:::-;:53;;;;:::i;:::-;15372:80;;15499:1;15491:7;:9;;;15487:84;;;15504:64;15526:4;15533:14;15549:12;15563:4;15504:13;:64::i;:::-;15487:84;15633:1;15623:9;:11;;;15619:284;;;15644:22;15669:59;4048:42;3959;15702:18;15722:5;15669:11;:59::i;:::-;15644:84;;15785:69;3959:42;15813:14;15829:18;15849:4;15785:13;:69::i;:::-;15636:267;15619:284;15929:1;15915:13;:15;;;15911:393;;;15940:28;4048:42;15971:23;;;16003:4;15971:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15940:69;;16040:20;16021:16;:39;16017:89;;;16083:20;16064:39;;16017:89;16195:1;16176:16;:20;16172:89;;;4048:42;16200:22;;;16223:16;;;;;;;;;;;16241;16200:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16172:89;15932:372;15911:393;15001:1309;;;;14966:1344;14634:1683;;;;14584:1733;14339:1982;;;;;;4702:5:::0;4689:10;;:18;;;;;;;;;;;;;;;;;;14293:2028::o;13078:616::-;13164:16;3019:1;13230:2;:13;;;;:::i;:::-;13225:2;:18;;;;:::i;:::-;13216:4;13199:14;13184:29;;3019:1;3080:2;:13;;;;:::i;:::-;3064;:29;;;;:::i;:::-;13184;;;;:::i;:::-;:36;;;;:::i;:::-;13183:61;;;;:::i;:::-;13164:80;;13290:20;3019:1;13364:2;:13;;;;:::i;:::-;13359:2;:18;;;;:::i;:::-;13350:4;13329:18;13314:33;;3019:1;3080:2;:13;;;;:::i;:::-;3064;:29;;;;:::i;:::-;13314:33;;;;:::i;:::-;:40;;;;:::i;:::-;13313:65;;;;:::i;:::-;13290:88;;13444:6;;13432:8;:18;;:48;;;;;13470:10;;13454:12;:26;;13432:48;13424:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;3019:1;3080:2;:13;;;;:::i;:::-;3064;:29;;;;:::i;:::-;13516:8;:23;13512:57;;;3019:1;3080:2;:13;;;;:::i;:::-;3064;:29;;;;:::i;:::-;13543:23;;13512:57;3019:1;3080:2;:13;;;;:::i;:::-;3064;:29;;;;:::i;:::-;13577:12;:27;13573:65;;;3019:1;3080:2;:13;;;;:::i;:::-;3064;:29;;;;:::i;:::-;13608:27;;13573:65;13651:8;13642:6;:17;;;;13677:12;13664:10;:25;;;;13159:535;;13078:616;;:::o;2231:127::-;2301:9;2292:6;;:18;;;;;;;;;;;;;;;;;;2321:31;2342:9;2321:31;;;;;;:::i;:::-;;;;;;;;2231:127;:::o;9462:776::-;9508:15;9525:13;9540:19;9566:22;9590:14;9606:20;9631:27;9661:25;:23;:25::i;:::-;9631:55;;3483:9;9695:19;:35;9691:487;;;9758:1;9739:20;;9772:1;9761:12;;9792:1;9775:18;;9691:487;;;3483:9;9809:19;:36;;:75;;;;;3592:10;9849:19;:35;9809:75;9805:373;;;9911:1;9892:20;;9925:1;9914:12;;9945:1;9928:18;;9805:373;;;3592:10;9962:19;:36;;:75;;;;;3696:11;10002:19;:35;9962:75;9958:220;;;10064:1;10045:20;;10078:1;10067:12;;10098:1;10081:18;;9958:220;;;10137:1;10118:20;;10151:1;10140:12;;10171:1;10154:18;;9958:220;9805:373;9691:487;10190:16;10208:8;10218:14;10182:51;;;;;;;;;;9462:776;;;:::o;9119:340::-;9176:7;9190:17;9238:1;9216:24;;:10;;;;;;;;;;;:24;;;9212:222;;9248:18;9269:9;:21;9279:10;;;;;;;;;;;9269:21;;;;;;;;;;;;;;;;9248:42;;9296:16;9358:13;9354:2;:17;;;;:::i;:::-;4048:42;9315:23;;;9339:10;;;;;;;;;;;9315:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:57;;;;:::i;:::-;9296:76;;9417:10;3019:1;3080:2;:13;;;;:::i;:::-;3064;:29;;;;:::i;:::-;9391:8;:23;;;;:::i;:::-;:36;;;;:::i;:::-;9378:50;;9242:192;;9212:222;9445:9;9438:16;;;9119:340;:::o;6801:541::-;6887:22;6936:4;6918:23;;:6;:23;;;6914:421;;6966:11;:26;6986:4;6966:26;;;;;;;;;;;;;;;:46;4251:42;6966:46;;;;;;;;;;;;;;;;6949:63;;7031:14;7022:6;:23;7018:109;;;7103:17;7054:11;:26;7074:4;7054:26;;;;;;;;;;;;;;;:46;4251:42;7054:46;;;;;;;;;;;;;;;:66;;;;7018:109;6914:421;;;7168:6;7161:24;;;7194:4;4251:42;7161:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7144:76;;7239:14;7230:6;:23;7226:104;;;7269:6;7262:22;;;4251:42;7305:17;7262:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7226:104;6914:421;6882:460;6801:541;;:::o;8687:427::-;8772:4;8783:11;8797:4;8783:18;;8820:6;;8811;:15;:35;;;;;8831:9;:15;8841:4;8831:15;;;;;;;;;;;;;;;;;;;;;;;;;8830:16;8811:35;:53;;;;;8851:9;:13;8861:2;8851:13;;;;;;;;;;;;;;;;;;;;;;;;;8850:14;8811:53;8806:80;;;8878:5;8869:14;;8806:80;8890:15;8908:4;8890:22;;8917:20;8956:6;8940:9;:13;8950:2;8940:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;8917:45;;8987:10;;8972:12;:25;:45;;;;;9002:9;:15;9012:4;9002:15;;;;;;;;;;;;;;;;;;;;;;;;;9001:16;8972:45;:63;;;;;9022:9;:13;9032:2;9022:13;;;;;;;;;;;;;;;;;;;;;;;;;9021:14;8972:63;:77;;;;;9040:5;:9;9046:2;9040:9;;;;;;;;;;;;;;;;;;;;;;;;;9039:10;8972:77;8967:108;;;9067:5;9054:18;;8967:108;9088:6;:20;;;;;9098:10;9088:20;9080:29;;;;;8687:427;;;;;:::o;10241:622::-;10328:15;10345:13;10360:17;10384:22;10408:14;10424:18;10453:5;:11;10459:4;10453:11;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;10469:9;:13;10479:2;10469:13;;;;;;;;;;;;;;;;;;;;;;;;;10468:14;10453:29;10452:66;;;;10488:5;:9;10494:2;10488:9;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;10502:9;:15;10512:4;10502:15;;;;;;;;;;;;;;;;;;;;;;;;;10501:16;10488:29;10452:66;10447:364;;;10529:15;10546:13;10561:19;10584:14;:12;:14::i;:::-;10528:70;;;;;;10642:3;10630:9;10621:18;;:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;10604:41;;10679:3;10669:7;10660:16;;:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;10651:31;;10726:3;10710:13;10701:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;10688:41;;10521:214;;;10447:364;;;10768:1;10751:18;;10784:1;10775:10;;10804:1;10791:14;;10447:364;10823:14;10839:6;10847:10;10815:43;;;;;;;;;10241:622;;;;;;;:::o;14004:286::-;14062:7;14076:21;14114:1;14100:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14076:40;;14139:4;14121;14126:1;14121:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;4048:42;14149:4;14154:1;14149:7;;;;;;;;:::i;:::-;;;;;;;:15;;;;;;;;;;;14169:24;4251:42;14196:24;;;14242:13;14238:2;:17;;;;:::i;:::-;14221:14;;:34;;;;:::i;:::-;14257:4;14196:66;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14169:93;;14275:7;14283:1;14275:10;;;;;;;;:::i;:::-;;;;;;;;14268:17;;;;14004:286;:::o;16326:1007::-;16442:20;16471:29;16511:4;16471:45;;16521:21;16547:27;16601:4;16587:18;;:10;:18;;;16583:142;;16633:15;16609:39;;16583:142;;;16685:11;16678:29;;;16716:4;16678:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16662:60;;16583:142;16731:55;16762:10;16774:11;16731:30;:55::i;:::-;16791:21;16829:1;16815:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16791:40;;16846:10;16836:4;16841:1;16836:7;;;;;;;;:::i;:::-;;;;;;;:20;;;;;;;;;;;16871:11;16861:4;16866:1;16861:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;4251:42;16887:65;;;16958:11;16975:1;16982:4;16992:21;17019:15;16887:152;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17066:4;17052:18;;:10;:18;;;17048:247;;17096:16;:35;;;17132:11;17096:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17074:70;;17048:247;;;17163:20;17193:11;17186:29;;;17224:4;17186:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17163:67;;17274:13;17259:12;:28;;;;:::i;:::-;17236:52;;17156:139;17048:247;17308:19;17301:26;;;;;;16326:1007;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:468::-;3772:6;3780;3829:2;3817:9;3808:7;3804:23;3800:32;3797:119;;;3835:79;;:::i;:::-;3797:119;3955:1;3980:53;4025:7;4016:6;4005:9;4001:22;3980:53;:::i;:::-;3970:63;;3926:117;4082:2;4108:50;4150:7;4141:6;4130:9;4126:22;4108:50;:::i;:::-;4098:60;;4053:115;3707:468;;;;;:::o;4181:329::-;4240:6;4289:2;4277:9;4268:7;4264:23;4260:32;4257:119;;;4295:79;;:::i;:::-;4257:119;4415:1;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4386:117;4181:329;;;;:::o;4516:118::-;4603:24;4621:5;4603:24;:::i;:::-;4598:3;4591:37;4516:118;;:::o;4640:222::-;4733:4;4771:2;4760:9;4756:18;4748:26;;4784:71;4852:1;4841:9;4837:17;4828:6;4784:71;:::i;:::-;4640:222;;;;:::o;4868:619::-;4945:6;4953;4961;5010:2;4998:9;4989:7;4985:23;4981:32;4978:119;;;5016:79;;:::i;:::-;4978:119;5136:1;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5107:117;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;5391:2;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5362:118;4868:619;;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:329::-;5982:6;6031:2;6019:9;6010:7;6006:23;6002:32;5999:119;;;6037:79;;:::i;:::-;5999:119;6157:1;6182:53;6227:7;6218:6;6207:9;6203:22;6182:53;:::i;:::-;6172:63;;6128:117;5923:329;;;;:::o;6258:89::-;6294:7;6334:6;6327:5;6323:18;6312:29;;6258:89;;;:::o;6353:120::-;6425:23;6442:5;6425:23;:::i;:::-;6418:5;6415:34;6405:62;;6463:1;6460;6453:12;6405:62;6353:120;:::o;6479:137::-;6524:5;6562:6;6549:20;6540:29;;6578:32;6604:5;6578:32;:::i;:::-;6479:137;;;;:::o;6622:470::-;6688:6;6696;6745:2;6733:9;6724:7;6720:23;6716:32;6713:119;;;6751:79;;:::i;:::-;6713:119;6871:1;6896:52;6940:7;6931:6;6920:9;6916:22;6896:52;:::i;:::-;6886:62;;6842:116;6997:2;7023:52;7067:7;7058:6;7047:9;7043:22;7023:52;:::i;:::-;7013:62;;6968:117;6622:470;;;;;:::o;7098:332::-;7219:4;7257:2;7246:9;7242:18;7234:26;;7270:71;7338:1;7327:9;7323:17;7314:6;7270:71;:::i;:::-;7351:72;7419:2;7408:9;7404:18;7395:6;7351:72;:::i;:::-;7098:332;;;;;:::o;7436:418::-;7573:4;7611:2;7600:9;7596:18;7588:26;;7624:67;7688:1;7677:9;7673:17;7664:6;7624:67;:::i;:::-;7701:68;7765:2;7754:9;7750:18;7741:6;7701:68;:::i;:::-;7779;7843:2;7832:9;7828:18;7819:6;7779:68;:::i;:::-;7436:418;;;;;;:::o;7860:118::-;7947:24;7965:5;7947:24;:::i;:::-;7942:3;7935:37;7860:118;;:::o;7984:886::-;8245:4;8283:3;8272:9;8268:19;8260:27;;8297:71;8365:1;8354:9;8350:17;8341:6;8297:71;:::i;:::-;8378:72;8446:2;8435:9;8431:18;8422:6;8378:72;:::i;:::-;8460;8528:2;8517:9;8513:18;8504:6;8460:72;:::i;:::-;8542;8610:2;8599:9;8595:18;8586:6;8542:72;:::i;:::-;8624:73;8692:3;8681:9;8677:19;8668:6;8624:73;:::i;:::-;8707;8775:3;8764:9;8760:19;8751:6;8707:73;:::i;:::-;8790;8858:3;8847:9;8843:19;8834:6;8790:73;:::i;:::-;7984:886;;;;;;;;;;:::o;8876:442::-;9025:4;9063:2;9052:9;9048:18;9040:26;;9076:71;9144:1;9133:9;9129:17;9120:6;9076:71;:::i;:::-;9157:72;9225:2;9214:9;9210:18;9201:6;9157:72;:::i;:::-;9239;9307:2;9296:9;9292:18;9283:6;9239:72;:::i;:::-;8876:442;;;;;;:::o;9324:474::-;9392:6;9400;9449:2;9437:9;9428:7;9424:23;9420:32;9417:119;;;9455:79;;:::i;:::-;9417:119;9575:1;9600:53;9645:7;9636:6;9625:9;9621:22;9600:53;:::i;:::-;9590:63;;9546:117;9702:2;9728:53;9773:7;9764:6;9753:9;9749:22;9728:53;:::i;:::-;9718:63;;9673:118;9324:474;;;;;:::o;9804:163::-;9944:15;9940:1;9932:6;9928:14;9921:39;9804:163;:::o;9973:366::-;10115:3;10136:67;10200:2;10195:3;10136:67;:::i;:::-;10129:74;;10212:93;10301:3;10212:93;:::i;:::-;10330:2;10325:3;10321:12;10314:19;;9973:366;;;:::o;10345:419::-;10511:4;10549:2;10538:9;10534:18;10526:26;;10598:9;10592:4;10588:20;10584:1;10573:9;10569:17;10562:47;10626:131;10752:4;10626:131;:::i;:::-;10618:139;;10345:419;;;:::o;10770:222::-;10863:4;10901:2;10890:9;10886:18;10878:26;;10914:71;10982:1;10971:9;10967:17;10958:6;10914:71;:::i;:::-;10770:222;;;;:::o;10998:143::-;11055:5;11086:6;11080:13;11071:22;;11102:33;11129:5;11102:33;:::i;:::-;10998:143;;;;:::o;11147:351::-;11217:6;11266:2;11254:9;11245:7;11241:23;11237:32;11234:119;;;11272:79;;:::i;:::-;11234:119;11392:1;11417:64;11473:7;11464:6;11453:9;11449:22;11417:64;:::i;:::-;11407:74;;11363:128;11147:351;;;;:::o;11504:165::-;11644:17;11640:1;11632:6;11628:14;11621:41;11504:165;:::o;11675:366::-;11817:3;11838:67;11902:2;11897:3;11838:67;:::i;:::-;11831:74;;11914:93;12003:3;11914:93;:::i;:::-;12032:2;12027:3;12023:12;12016:19;;11675:366;;;:::o;12047:419::-;12213:4;12251:2;12240:9;12236:18;12228:26;;12300:9;12294:4;12290:20;12286:1;12275:9;12271:17;12264:47;12328:131;12454:4;12328:131;:::i;:::-;12320:139;;12047:419;;;:::o;12472:159::-;12612:11;12608:1;12600:6;12596:14;12589:35;12472:159;:::o;12637:365::-;12779:3;12800:66;12864:1;12859:3;12800:66;:::i;:::-;12793:73;;12875:93;12964:3;12875:93;:::i;:::-;12993:2;12988:3;12984:12;12977:19;;12637:365;;;:::o;13008:419::-;13174:4;13212:2;13201:9;13197:18;13189:26;;13261:9;13255:4;13251:20;13247:1;13236:9;13232:17;13225:47;13289:131;13415:4;13289:131;:::i;:::-;13281:139;;13008:419;;;:::o;13433:143::-;13490:5;13521:6;13515:13;13506:22;;13537:33;13564:5;13537:33;:::i;:::-;13433:143;;;;:::o;13582:351::-;13652:6;13701:2;13689:9;13680:7;13676:23;13672:32;13669:119;;;13707:79;;:::i;:::-;13669:119;13827:1;13852:64;13908:7;13899:6;13888:9;13884:22;13852:64;:::i;:::-;13842:74;;13798:128;13582:351;;;;:::o;13939:332::-;14060:4;14098:2;14087:9;14083:18;14075:26;;14111:71;14179:1;14168:9;14164:17;14155:6;14111:71;:::i;:::-;14192:72;14260:2;14249:9;14245:18;14236:6;14192:72;:::i;:::-;13939:332;;;;;:::o;14277:180::-;14325:77;14322:1;14315:88;14422:4;14419:1;14412:15;14446:4;14443:1;14436:15;14463:191;14503:3;14522:20;14540:1;14522:20;:::i;:::-;14517:25;;14556:20;14574:1;14556:20;:::i;:::-;14551:25;;14599:1;14596;14592:9;14585:16;;14620:3;14617:1;14614:10;14611:36;;;14627:18;;:::i;:::-;14611:36;14463:191;;;;:::o;14660:169::-;14800:21;14796:1;14788:6;14784:14;14777:45;14660:169;:::o;14835:366::-;14977:3;14998:67;15062:2;15057:3;14998:67;:::i;:::-;14991:74;;15074:93;15163:3;15074:93;:::i;:::-;15192:2;15187:3;15183:12;15176:19;;14835:366;;;:::o;15207:419::-;15373:4;15411:2;15400:9;15396:18;15388:26;;15460:9;15454:4;15450:20;15446:1;15435:9;15431:17;15424:47;15488:131;15614:4;15488:131;:::i;:::-;15480:139;;15207:419;;;:::o;15632:161::-;15772:13;15768:1;15760:6;15756:14;15749:37;15632:161;:::o;15799:366::-;15941:3;15962:67;16026:2;16021:3;15962:67;:::i;:::-;15955:74;;16038:93;16127:3;16038:93;:::i;:::-;16156:2;16151:3;16147:12;16140:19;;15799:366;;;:::o;16171:419::-;16337:4;16375:2;16364:9;16360:18;16352:26;;16424:9;16418:4;16414:20;16410:1;16399:9;16395:17;16388:47;16452:131;16578:4;16452:131;:::i;:::-;16444:139;;16171:419;;;:::o;16596:332::-;16717:4;16755:2;16744:9;16740:18;16732:26;;16768:71;16836:1;16825:9;16821:17;16812:6;16768:71;:::i;:::-;16849:72;16917:2;16906:9;16902:18;16893:6;16849:72;:::i;:::-;16596:332;;;;;:::o;16934:137::-;16988:5;17019:6;17013:13;17004:22;;17035:30;17059:5;17035:30;:::i;:::-;16934:137;;;;:::o;17077:345::-;17144:6;17193:2;17181:9;17172:7;17168:23;17164:32;17161:119;;;17199:79;;:::i;:::-;17161:119;17319:1;17344:61;17397:7;17388:6;17377:9;17373:22;17344:61;:::i;:::-;17334:71;;17290:125;17077:345;;;;:::o;17428:102::-;17470:8;17517:5;17514:1;17510:13;17489:34;;17428:102;;;:::o;17536:848::-;17597:5;17604:4;17628:6;17619:15;;17652:5;17643:14;;17666:712;17687:1;17677:8;17674:15;17666:712;;;17782:4;17777:3;17773:14;17767:4;17764:24;17761:50;;;17791:18;;:::i;:::-;17761:50;17841:1;17831:8;17827:16;17824:451;;;18256:4;18249:5;18245:16;18236:25;;17824:451;18306:4;18300;18296:15;18288:23;;18336:32;18359:8;18336:32;:::i;:::-;18324:44;;17666:712;;;17536:848;;;;;;;:::o;18390:1073::-;18444:5;18635:8;18625:40;;18656:1;18647:10;;18658:5;;18625:40;18684:4;18674:36;;18701:1;18692:10;;18703:5;;18674:36;18770:4;18818:1;18813:27;;;;18854:1;18849:191;;;;18763:277;;18813:27;18831:1;18822:10;;18833:5;;;18849:191;18894:3;18884:8;18881:17;18878:43;;;18901:18;;:::i;:::-;18878:43;18950:8;18947:1;18943:16;18934:25;;18985:3;18978:5;18975:14;18972:40;;;18992:18;;:::i;:::-;18972:40;19025:5;;;18763:277;;19149:2;19139:8;19136:16;19130:3;19124:4;19121:13;19117:36;19099:2;19089:8;19086:16;19081:2;19075:4;19072:12;19068:35;19052:111;19049:246;;;19205:8;19199:4;19195:19;19186:28;;19240:3;19233:5;19230:14;19227:40;;;19247:18;;:::i;:::-;19227:40;19280:5;;19049:246;19320:42;19358:3;19348:8;19342:4;19339:1;19320:42;:::i;:::-;19305:57;;;;19394:4;19389:3;19385:14;19378:5;19375:25;19372:51;;;19403:18;;:::i;:::-;19372:51;19452:4;19445:5;19441:16;19432:25;;18390:1073;;;;;;:::o;19469:281::-;19527:5;19551:23;19569:4;19551:23;:::i;:::-;19543:31;;19595:25;19611:8;19595:25;:::i;:::-;19583:37;;19639:104;19676:66;19666:8;19660:4;19639:104;:::i;:::-;19630:113;;19469:281;;;;:::o;19756:410::-;19796:7;19819:20;19837:1;19819:20;:::i;:::-;19814:25;;19853:20;19871:1;19853:20;:::i;:::-;19848:25;;19908:1;19905;19901:9;19930:30;19948:11;19930:30;:::i;:::-;19919:41;;20109:1;20100:7;20096:15;20093:1;20090:22;20070:1;20063:9;20043:83;20020:139;;20139:18;;:::i;:::-;20020:139;19804:362;19756:410;;;;:::o;20172:181::-;20312:33;20308:1;20300:6;20296:14;20289:57;20172:181;:::o;20359:366::-;20501:3;20522:67;20586:2;20581:3;20522:67;:::i;:::-;20515:74;;20598:93;20687:3;20598:93;:::i;:::-;20716:2;20711:3;20707:12;20700:19;;20359:366;;;:::o;20731:419::-;20897:4;20935:2;20924:9;20920:18;20912:26;;20984:9;20978:4;20974:20;20970:1;20959:9;20955:17;20948:47;21012:131;21138:4;21012:131;:::i;:::-;21004:139;;20731:419;;;:::o;21156:194::-;21196:4;21216:20;21234:1;21216:20;:::i;:::-;21211:25;;21250:20;21268:1;21250:20;:::i;:::-;21245:25;;21294:1;21291;21287:9;21279:17;;21318:1;21312:4;21309:11;21306:37;;;21323:18;;:::i;:::-;21306:37;21156:194;;;;:::o;21356:161::-;21496:13;21492:1;21484:6;21480:14;21473:37;21356:161;:::o;21523:366::-;21665:3;21686:67;21750:2;21745:3;21686:67;:::i;:::-;21679:74;;21762:93;21851:3;21762:93;:::i;:::-;21880:2;21875:3;21871:12;21864:19;;21523:366;;;:::o;21895:419::-;22061:4;22099:2;22088:9;22084:18;22076:26;;22148:9;22142:4;22138:20;22134:1;22123:9;22119:17;22112:47;22176:131;22302:4;22176:131;:::i;:::-;22168:139;;21895:419;;;:::o;22320:171::-;22460:23;22456:1;22448:6;22444:14;22437:47;22320:171;:::o;22497:366::-;22639:3;22660:67;22724:2;22719:3;22660:67;:::i;:::-;22653:74;;22736:93;22825:3;22736:93;:::i;:::-;22854:2;22849:3;22845:12;22838:19;;22497:366;;;:::o;22869:419::-;23035:4;23073:2;23062:9;23058:18;23050:26;;23122:9;23116:4;23112:20;23108:1;23097:9;23093:17;23086:47;23150:131;23276:4;23150:131;:::i;:::-;23142:139;;22869:419;;;:::o;23294:180::-;23342:77;23339:1;23332:88;23439:4;23436:1;23429:15;23463:4;23460:1;23453:15;23480:185;23520:1;23537:20;23555:1;23537:20;:::i;:::-;23532:25;;23571:20;23589:1;23571:20;:::i;:::-;23566:25;;23610:1;23600:35;;23615:18;;:::i;:::-;23600:35;23657:1;23654;23650:9;23645:14;;23480:185;;;;:::o;23671:167::-;23811:19;23807:1;23799:6;23795:14;23788:43;23671:167;:::o;23844:366::-;23986:3;24007:67;24071:2;24066:3;24007:67;:::i;:::-;24000:74;;24083:93;24172:3;24083:93;:::i;:::-;24201:2;24196:3;24192:12;24185:19;;23844:366;;;:::o;24216:419::-;24382:4;24420:2;24409:9;24405:18;24397:26;;24469:9;24463:4;24459:20;24455:1;24444:9;24440:17;24433:47;24497:131;24623:4;24497:131;:::i;:::-;24489:139;;24216:419;;;:::o;24641:165::-;24781:17;24777:1;24769:6;24765:14;24758:41;24641:165;:::o;24812:366::-;24954:3;24975:67;25039:2;25034:3;24975:67;:::i;:::-;24968:74;;25051:93;25140:3;25051:93;:::i;:::-;25169:2;25164:3;25160:12;25153:19;;24812:366;;;:::o;25184:419::-;25350:4;25388:2;25377:9;25373:18;25365:26;;25437:9;25431:4;25427:20;25423:1;25412:9;25408:17;25401:47;25465:131;25591:4;25465:131;:::i;:::-;25457:139;;25184:419;;;:::o;25609:85::-;25654:7;25683:5;25672:16;;25609:85;;;:::o;25700:60::-;25728:3;25749:5;25742:12;;25700:60;;;:::o;25766:158::-;25824:9;25857:61;25875:42;25884:32;25910:5;25884:32;:::i;:::-;25875:42;:::i;:::-;25857:61;:::i;:::-;25844:74;;25766:158;;;:::o;25930:147::-;26025:45;26064:5;26025:45;:::i;:::-;26020:3;26013:58;25930:147;;:::o;26083:1029::-;26388:4;26426:3;26415:9;26411:19;26403:27;;26440:71;26508:1;26497:9;26493:17;26484:6;26440:71;:::i;:::-;26521:72;26589:2;26578:9;26574:18;26565:6;26521:72;:::i;:::-;26603;26671:2;26660:9;26656:18;26647:6;26603:72;:::i;:::-;26685;26753:2;26742:9;26738:18;26729:6;26685:72;:::i;:::-;26767:81;26843:3;26832:9;26828:19;26819:6;26767:81;:::i;:::-;26858;26934:3;26923:9;26919:19;26910:6;26858:81;:::i;:::-;26949:73;27017:3;27006:9;27002:19;26993:6;26949:73;:::i;:::-;27032;27100:3;27089:9;27085:19;27076:6;27032:73;:::i;:::-;26083:1029;;;;;;;;;;;:::o;27118:663::-;27206:6;27214;27222;27271:2;27259:9;27250:7;27246:23;27242:32;27239:119;;;27277:79;;:::i;:::-;27239:119;27397:1;27422:64;27478:7;27469:6;27458:9;27454:22;27422:64;:::i;:::-;27412:74;;27368:128;27535:2;27561:64;27617:7;27608:6;27597:9;27593:22;27561:64;:::i;:::-;27551:74;;27506:129;27674:2;27700:64;27756:7;27747:6;27736:9;27732:22;27700:64;:::i;:::-;27690:74;;27645:129;27118:663;;;;;:::o;27787:169::-;27927:21;27923:1;27915:6;27911:14;27904:45;27787:169;:::o;27962:366::-;28104:3;28125:67;28189:2;28184:3;28125:67;:::i;:::-;28118:74;;28201:93;28290:3;28201:93;:::i;:::-;28319:2;28314:3;28310:12;28303:19;;27962:366;;;:::o;28334:419::-;28500:4;28538:2;28527:9;28523:18;28515:26;;28587:9;28581:4;28577:20;28573:1;28562:9;28558:17;28551:47;28615:131;28741:4;28615:131;:::i;:::-;28607:139;;28334:419;;;:::o;28759:179::-;28899:31;28895:1;28887:6;28883:14;28876:55;28759:179;:::o;28944:366::-;29086:3;29107:67;29171:2;29166:3;29107:67;:::i;:::-;29100:74;;29183:93;29272:3;29183:93;:::i;:::-;29301:2;29296:3;29292:12;29285:19;;28944:366;;;:::o;29316:419::-;29482:4;29520:2;29509:9;29505:18;29497:26;;29569:9;29563:4;29559:20;29555:1;29544:9;29540:17;29533:47;29597:131;29723:4;29597:131;:::i;:::-;29589:139;;29316:419;;;:::o;29741:165::-;29881:17;29877:1;29869:6;29865:14;29858:41;29741:165;:::o;29912:366::-;30054:3;30075:67;30139:2;30134:3;30075:67;:::i;:::-;30068:74;;30151:93;30240:3;30151:93;:::i;:::-;30269:2;30264:3;30260:12;30253:19;;29912:366;;;:::o;30284:419::-;30450:4;30488:2;30477:9;30473:18;30465:26;;30537:9;30531:4;30527:20;30523:1;30512:9;30508:17;30501:47;30565:131;30691:4;30565:131;:::i;:::-;30557:139;;30284:419;;;:::o;30709:161::-;30849:13;30845:1;30837:6;30833:14;30826:37;30709:161;:::o;30876:366::-;31018:3;31039:67;31103:2;31098:3;31039:67;:::i;:::-;31032:74;;31115:93;31204:3;31115:93;:::i;:::-;31233:2;31228:3;31224:12;31217:19;;30876:366;;;:::o;31248:419::-;31414:4;31452:2;31441:9;31437:18;31429:26;;31501:9;31495:4;31491:20;31487:1;31476:9;31472:17;31465:47;31529:131;31655:4;31529:131;:::i;:::-;31521:139;;31248:419;;;:::o;31673:188::-;31711:3;31730:18;31746:1;31730:18;:::i;:::-;31725:23;;31762:18;31778:1;31762:18;:::i;:::-;31757:23;;31803:1;31800;31796:9;31789:16;;31826:4;31821:3;31818:13;31815:39;;;31834:18;;:::i;:::-;31815:39;31673:188;;;;:::o;31867:172::-;32007:24;32003:1;31995:6;31991:14;31984:48;31867:172;:::o;32045:366::-;32187:3;32208:67;32272:2;32267:3;32208:67;:::i;:::-;32201:74;;32284:93;32373:3;32284:93;:::i;:::-;32402:2;32397:3;32393:12;32386:19;;32045:366;;;:::o;32417:419::-;32583:4;32621:2;32610:9;32606:18;32598:26;;32670:9;32664:4;32660:20;32656:1;32645:9;32641:17;32634:47;32698:131;32824:4;32698:131;:::i;:::-;32690:139;;32417:419;;;:::o;32842:180::-;32890:77;32887:1;32880:88;32987:4;32984:1;32977:15;33011:4;33008:1;33001:15;33028:180;33076:77;33073:1;33066:88;33173:4;33170:1;33163:15;33197:4;33194:1;33187:15;33214:114;33281:6;33315:5;33309:12;33299:22;;33214:114;;;:::o;33334:184::-;33433:11;33467:6;33462:3;33455:19;33507:4;33502:3;33498:14;33483:29;;33334:184;;;;:::o;33524:132::-;33591:4;33614:3;33606:11;;33644:4;33639:3;33635:14;33627:22;;33524:132;;;:::o;33662:108::-;33739:24;33757:5;33739:24;:::i;:::-;33734:3;33727:37;33662:108;;:::o;33776:179::-;33845:10;33866:46;33908:3;33900:6;33866:46;:::i;:::-;33944:4;33939:3;33935:14;33921:28;;33776:179;;;;:::o;33961:113::-;34031:4;34063;34058:3;34054:14;34046:22;;33961:113;;;:::o;34110:732::-;34229:3;34258:54;34306:5;34258:54;:::i;:::-;34328:86;34407:6;34402:3;34328:86;:::i;:::-;34321:93;;34438:56;34488:5;34438:56;:::i;:::-;34517:7;34548:1;34533:284;34558:6;34555:1;34552:13;34533:284;;;34634:6;34628:13;34661:63;34720:3;34705:13;34661:63;:::i;:::-;34654:70;;34747:60;34800:6;34747:60;:::i;:::-;34737:70;;34593:224;34580:1;34577;34573:9;34568:14;;34533:284;;;34537:14;34833:3;34826:10;;34234:608;;;34110:732;;;;:::o;34848:483::-;35019:4;35057:2;35046:9;35042:18;35034:26;;35070:71;35138:1;35127:9;35123:17;35114:6;35070:71;:::i;:::-;35188:9;35182:4;35178:20;35173:2;35162:9;35158:18;35151:48;35216:108;35319:4;35310:6;35216:108;:::i;:::-;35208:116;;34848:483;;;;;:::o;35337:117::-;35446:1;35443;35436:12;35460:281;35543:27;35565:4;35543:27;:::i;:::-;35535:6;35531:40;35673:6;35661:10;35658:22;35637:18;35625:10;35622:34;35619:62;35616:88;;;35684:18;;:::i;:::-;35616:88;35724:10;35720:2;35713:22;35503:238;35460:281;;:::o;35747:129::-;35781:6;35808:20;;:::i;:::-;35798:30;;35837:33;35865:4;35857:6;35837:33;:::i;:::-;35747:129;;;:::o;35882:311::-;35959:4;36049:18;36041:6;36038:30;36035:56;;;36071:18;;:::i;:::-;36035:56;36121:4;36113:6;36109:17;36101:25;;36181:4;36175;36171:15;36163:23;;35882:311;;;:::o;36199:117::-;36308:1;36305;36298:12;36339:732;36446:5;36471:81;36487:64;36544:6;36487:64;:::i;:::-;36471:81;:::i;:::-;36462:90;;36572:5;36601:6;36594:5;36587:21;36635:4;36628:5;36624:16;36617:23;;36688:4;36680:6;36676:17;36668:6;36664:30;36717:3;36709:6;36706:15;36703:122;;;36736:79;;:::i;:::-;36703:122;36851:6;36834:231;36868:6;36863:3;36860:15;36834:231;;;36943:3;36972:48;37016:3;37004:10;36972:48;:::i;:::-;36967:3;36960:61;37050:4;37045:3;37041:14;37034:21;;36910:155;36894:4;36889:3;36885:14;36878:21;;36834:231;;;36838:21;36452:619;;36339:732;;;;;:::o;37094:385::-;37176:5;37225:3;37218:4;37210:6;37206:17;37202:27;37192:122;;37233:79;;:::i;:::-;37192:122;37343:6;37337:13;37368:105;37469:3;37461:6;37454:4;37446:6;37442:17;37368:105;:::i;:::-;37359:114;;37182:297;37094:385;;;;:::o;37485:554::-;37580:6;37629:2;37617:9;37608:7;37604:23;37600:32;37597:119;;;37635:79;;:::i;:::-;37597:119;37776:1;37765:9;37761:17;37755:24;37806:18;37798:6;37795:30;37792:117;;;37828:79;;:::i;:::-;37792:117;37933:89;38014:7;38005:6;37994:9;37990:22;37933:89;:::i;:::-;37923:99;;37726:306;37485:554;;;;:::o;38045:831::-;38308:4;38346:3;38335:9;38331:19;38323:27;;38360:71;38428:1;38417:9;38413:17;38404:6;38360:71;:::i;:::-;38441:80;38517:2;38506:9;38502:18;38493:6;38441:80;:::i;:::-;38568:9;38562:4;38558:20;38553:2;38542:9;38538:18;38531:48;38596:108;38699:4;38690:6;38596:108;:::i;:::-;38588:116;;38714:72;38782:2;38771:9;38767:18;38758:6;38714:72;:::i;:::-;38796:73;38864:3;38853:9;38849:19;38840:6;38796:73;:::i;:::-;38045:831;;;;;;;;:::o

Swarm Source

ipfs://0943c379b5668c8e26b7abe316e2df2a0e0d482d9ca0e280ec78fec5b1cc7144
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.