ETH Price: $2,607.58 (-2.03%)

Token

Lucky Doo (DOO)
 

Overview

Max Total Supply

999,000,000,000,000 DOO

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
397,493,197.80174597118703045 DOO

Value
$0.00
0x055c483ffde29e41072f993f15aF34a3dE7A6CCb
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:
LuckyDoo

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

interface IERC20 {
	function totalSupply() external view returns (uint256);

	function balanceOf(address account) external view returns (uint256);

	function transfer(address recipient, uint256 amount)
	external
	returns (bool);

	function allowance(address owner, address spender)
	external
	view
	returns (uint256);

	function approve(address spender, uint256 amount) external returns (bool);

	function transferFrom(
		address sender,
		address recipient,
		uint256 amount
	) external returns (bool);

	event Transfer(address indexed from, address indexed to, uint256 value);

	event Approval(
		address indexed owner,
		address indexed spender,
		uint256 value
	);
}

interface IFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

interface IRouter {
	function factory() external pure returns (address);

	function WETH() external pure returns (address);

	function addLiquidityETH(
		address token,
		uint256 amountTokenDesired,
		uint256 amountTokenMin,
		uint256 amountETHMin,
		address to,
		uint256 deadline
	)
	external
	payable
	returns (
		uint256 amountToken,
		uint256 amountETH,
		uint256 liquidity
	);

	function swapExactETHForTokensSupportingFeeOnTransferTokens(
		uint256 amountOutMin,
		address[] calldata path,
		address to,
		uint256 deadline
	) external payable;

	function swapExactTokensForETHSupportingFeeOnTransferTokens(
		uint256 amountIn,
		uint256 amountOutMin,
		address[] calldata path,
		address to,
		uint256 deadline
	) external;
}

library SafeMath {

	function add(uint256 a, uint256 b) internal pure returns (uint256) {
		uint256 c = a + b;
		require(c >= a, "SafeMath: addition overflow");

		return c;
	}

	function sub(uint256 a, uint256 b) internal pure returns (uint256) {
		return sub(a, b, "SafeMath: subtraction overflow");
	}

	function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
		require(b <= a, errorMessage);
		uint256 c = a - b;

		return c;
	}

	function mul(uint256 a, uint256 b) internal pure returns (uint256) {
		// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
		// benefit is lost if 'b' is also tested.
		// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
		if (a == 0) {
			return 0;
		}

		uint256 c = a * b;
		require(c / a == b, "SafeMath: multiplication overflow");

		return c;
	}

	function div(uint256 a, uint256 b) internal pure returns (uint256) {
		return div(a, b, "SafeMath: division by zero");
	}

	function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
		require(b > 0, errorMessage);
		uint256 c = a / b;
		// assert(a == b * c + a % b); // There is no case in which this doesn't hold

		return c;
	}

	function mod(uint256 a, uint256 b) internal pure returns (uint256) {
		return mod(a, b, "SafeMath: modulo by zero");
	}

	function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
		require(b != 0, errorMessage);
		return a % b;
	}
}

library Address {
	function isContract(address account) internal view returns (bool) {
		uint256 size;
		assembly {
			size := extcodesize(account)
		}
		return size > 0;
	}

	function sendValue(address payable recipient, uint256 amount) internal {
		require(
			address(this).balance >= amount,
			"Address: insufficient balance"
		);

		(bool success, ) = recipient.call{value: amount}("");
		require(
			success,
			"Address: unable to send value, recipient may have reverted"
		);
	}

	function functionCall(address target, bytes memory data)
	internal
	returns (bytes memory)
	{
		return functionCall(target, data, "Address: low-level call failed");
	}

	function functionCall(
		address target,
		bytes memory data,
		string memory errorMessage
	) internal returns (bytes memory) {
		return functionCallWithValue(target, data, 0, errorMessage);
	}

	function functionCallWithValue(
		address target,
		bytes memory data,
		uint256 value
	) internal returns (bytes memory) {
		return
		functionCallWithValue(
			target,
			data,
			value,
			"Address: low-level call with value failed"
		);
	}

	function functionCallWithValue(
		address target,
		bytes memory data,
		uint256 value,
		string memory errorMessage
	) internal returns (bytes memory) {
		require(
			address(this).balance >= value,
			"Address: insufficient balance for call"
		);
		require(isContract(target), "Address: call to non-contract");

		(bool success, bytes memory returndata) = target.call{value: value}(
		data
		);
		return _verifyCallResult(success, returndata, errorMessage);
	}

	function functionStaticCall(address target, bytes memory data)
	internal
	view
	returns (bytes memory)
	{
		return
		functionStaticCall(
			target,
			data,
			"Address: low-level static call failed"
		);
	}

	function functionStaticCall(
		address target,
		bytes memory data,
		string memory errorMessage
	) internal view returns (bytes memory) {
		require(isContract(target), "Address: static call to non-contract");

		(bool success, bytes memory returndata) = target.staticcall(data);
		return _verifyCallResult(success, returndata, errorMessage);
	}

	function functionDelegateCall(address target, bytes memory data)
	internal
	returns (bytes memory)
	{
		return
		functionDelegateCall(
			target,
			data,
			"Address: low-level delegate call failed"
		);
	}

	function functionDelegateCall(
		address target,
		bytes memory data,
		string memory errorMessage
	) internal returns (bytes memory) {
		require(isContract(target), "Address: delegate call to non-contract");

		(bool success, bytes memory returndata) = target.delegatecall(data);
		return _verifyCallResult(success, returndata, errorMessage);
	}

	function _verifyCallResult(
		bool success,
		bytes memory returndata,
		string memory errorMessage
	) private pure returns (bytes memory) {
		if (success) {
			return returndata;
		} else {
			if (returndata.length > 0) {
				assembly {
					let returndata_size := mload(returndata)
					revert(add(32, returndata), returndata_size)
				}
			} else {
				revert(errorMessage);
			}
		}
	}
}

abstract contract Context {
		function _msgSender() internal view virtual returns (address) {
		return msg.sender;
	}

	function _msgData() internal view virtual returns (bytes calldata) {
		this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
		return msg.data;
	}
}

contract Ownable is Context {
	address private _owner;

	event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

	constructor () public {
		address msgSender = _msgSender();
		_owner = msgSender;
		emit OwnershipTransferred(address(0), msgSender);
	}

	function owner() public view returns (address) {
		return _owner;
	}

	modifier onlyOwner() {
		require(_owner == _msgSender(), "Ownable: caller is not the owner");
		_;
	}

	function renounceOwnership() public virtual onlyOwner {
		emit OwnershipTransferred(_owner, address(0));
		_owner = address(0);
	}

	function transferOwnership(address newOwner) public virtual onlyOwner {
		require(newOwner != address(0), "Ownable: new owner is the zero address");
		emit OwnershipTransferred(_owner, newOwner);
		_owner = newOwner;
	}
}

contract LuckyDoo is IERC20, Ownable {
	using Address for address;
	using SafeMath for uint256;

	IRouter public uniswapV2Router;
	address public immutable uniswapV2Pair;

	string private constant _name =  "Lucky Doo";
	string private constant _symbol = "DOO";
	uint8 private constant _decimals = 18;

	mapping (address => uint256) private _rOwned;
	mapping (address => uint256) private _tOwned;
	mapping (address => mapping (address => uint256)) private _allowances;

	uint256 private constant MAX = ~uint256(0);
	uint256 private constant _tTotal = 999000000000000 * 10**18;
	uint256 private _rTotal = (MAX - (MAX % _tTotal));
	uint256 private _tFeeTotal;

	bool public isTradingEnabled;
    uint256 private _tradingPausedTimestamp;

	// max wallet is 2.0% of initialSupply
	uint256 public maxWalletAmount = _tTotal * 200 / 10000;

    // max tx is 0.53% of initialSupply
	uint256 public maxTxAmount = _tTotal * 530 / 100000;

	bool private _swapping;

    // max wallet is 0.025% of initialSupply
	uint256 public minimumTokensBeforeSwap = _tTotal * 250 / 1000000;

    address private dead = 0x000000000000000000000000000000000000dEaD;

	address public liquidityWallet;
    address public marketingWallet;
	address public devWallet;
	address public buyBackWallet;

	struct CustomTaxPeriod {
		bytes23 periodName;
		uint8 blocksInPeriod;
		uint256 timeInPeriod;
		uint8 liquidityFeeOnBuy;
		uint8 liquidityFeeOnSell;
		uint8 marketingFeeOnBuy;
		uint8 marketingFeeOnSell;
        uint8 devFeeOnBuy;
		uint8 devFeeOnSell;
		uint8 buyBackFeeOnBuy;
		uint8 buyBackFeeOnSell;
		uint8 holdersFeeOnBuy;
		uint8 holdersFeeOnSell;
	}

	// Launch taxes
	bool private _isLaunched;
	uint256 private _launchStartTimestamp;
	uint256 private _launchBlockNumber;
	CustomTaxPeriod private _launch1 = CustomTaxPeriod('launch1',5,0,100,1,0,4,0,2,0,3,0,2);
	CustomTaxPeriod private _launch2 = CustomTaxPeriod('launch2',0,3600,1,2,4,10,2,3,3,10,2,5);
	CustomTaxPeriod private _launch3 = CustomTaxPeriod('launch3',0,86400,1,2,4,8,2,3,3,10,2,4);

	// Base taxes
	CustomTaxPeriod private _default = CustomTaxPeriod('default',0,0,1,1,4,4,2,2,3,3,2,2);
	CustomTaxPeriod private _base = CustomTaxPeriod('base',0,0,1,1,4,4,2,2,3,3,2,2);

    uint256 private constant _blockedTimeLimit = 172800;
	mapping (address => bool) private _isAllowedToTradeWhenDisabled;
	mapping (address => bool) private _isExcludedFromFee;
	mapping (address => bool) private _isExcludedFromMaxWalletLimit;
	mapping (address => bool) private _isExcludedFromMaxTransactionLimit;
    mapping (address => bool) private _isExcludedFromDividends;
	mapping (address => bool) private _isBlocked;
	mapping (address => bool) public automatedMarketMakerPairs;
    address[] private _excludedFromDividends;

	uint8 private _liquidityFee;
	uint8 private _devFee;
	uint8 private _marketingFee;
	uint8 private _buyBackFee;
	uint8 private _holdersFee;
	uint8 private _totalFee;

	event AutomatedMarketMakerPairChange(address indexed pair, bool indexed value);
	event UniswapV2RouterChange(address indexed newAddress, address indexed oldAddress);
	event WalletChange(string indexed indentifier, address indexed newWallet, address indexed oldWallet);
	event FeeChange(string indexed identifier, uint8 liquidityFee, uint8 marketingFee, uint8 devFee, uint8 buyBackFee, uint8 holdersFee);
	event CustomTaxPeriodChange(uint256 indexed newValue, uint256 indexed oldValue, string indexed taxType, bytes23 period);
	event BlockedAccountChange(address indexed holder, bool indexed status);
	event MaxWalletAmountChange(uint256 indexed newValue, uint256 indexed oldValue);
	event MaxTransactionAmountChange(uint256 indexed newValue, uint256 indexed oldValue);
	event ExcludeFromFeesChange(address indexed account, bool isExcluded);
	event ExcludeFromMaxTransferChange(address indexed account, bool isExcluded);
	event ExcludeFromMaxWalletChange(address indexed account, bool isExcluded);
    event ExcludeFromDividendsChange(address indexed account, bool isExcluded);
	event AllowedWhenTradingDisabledChange(address indexed account, bool isExcluded);
	event MinTokenAmountBeforeSwapChange(uint256 indexed newValue, uint256 indexed oldValue);
	event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived,uint256 tokensIntoLiqudity);
	event ClaimETHOverflow(uint256 amount);
	event FeesApplied(uint8 liquidityFee, uint8 marketingFee, uint8 devFee, uint8 buyBackFee, uint8 holdersFee, uint8 totalFee);

	constructor() {
		liquidityWallet = owner();
		marketingWallet = owner();
        devWallet = owner();
		buyBackWallet = owner();

		IRouter _uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
		address _uniswapV2Pair = IFactory(_uniswapV2Router.factory()).createPair(
			address(this),
			_uniswapV2Router.WETH()
		);
        uniswapV2Router = _uniswapV2Router;
		uniswapV2Pair = _uniswapV2Pair;
		_setAutomatedMarketMakerPair(_uniswapV2Pair, true);

        _isExcludedFromFee[owner()] = true;
		_isExcludedFromFee[address(this)] = true;

        excludeFromDividends(address(this), true);
		excludeFromDividends(address(dead), true);
		excludeFromDividends(address(_uniswapV2Router), true);

		_isAllowedToTradeWhenDisabled[owner()] = true;

		_isExcludedFromMaxWalletLimit[_uniswapV2Pair] = true;
		_isExcludedFromMaxWalletLimit[address(uniswapV2Router)] = true;
		_isExcludedFromMaxWalletLimit[address(this)] = true;
		_isExcludedFromMaxWalletLimit[owner()] = true;

        _isExcludedFromMaxTransactionLimit[address(this)] = true;
		_isExcludedFromMaxTransactionLimit[address(dead)] = true;
		_isExcludedFromMaxTransactionLimit[owner()] = true;

		_rOwned[owner()] = _rTotal;
		emit Transfer(address(0), owner(), _tTotal);
	}

	receive() external payable {}

	// Setters
	function transfer(address recipient, uint256 amount) external override returns (bool) {
		_transfer(_msgSender(), recipient, amount);
		return true;
	}
	function approve(address spender, uint256 amount) public override returns (bool) {
		_approve(_msgSender(), spender, amount);
		return true;
	}
	function transferFrom( address sender,address recipient,uint256 amount) external override returns (bool) {
		_transfer(sender, recipient, amount);
		_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount,"ERC20: transfer amount exceeds allowance"));
		return true;
	}
	function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool){
		_approve(_msgSender(),spender,_allowances[_msgSender()][spender].add(addedValue));
		return true;
	}
	function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
		_approve(_msgSender(),spender,_allowances[_msgSender()][spender].sub(subtractedValue,"ERC20: decreased allowance below zero"));
		return true;
	}
	function _approve(address owner,address spender,uint256 amount) private {
		require(owner != address(0), "ERC20: approve from the zero address");
		require(spender != address(0), "ERC20: approve to the zero address");
		_allowances[owner][spender] = amount;
		emit Approval(owner, spender, amount);
	}
	function _getNow() private view returns (uint256) {
		return block.timestamp;
	}
	function launch() external onlyOwner {
		_launchStartTimestamp = _getNow();
		_launchBlockNumber = block.number;
		isTradingEnabled = true;
		_isLaunched = true;
	}
	function cancelLaunch() external onlyOwner {
		require(this.isInLaunch(), "LuckyDooToken: Launch is not set");
		_launchStartTimestamp = 0;
		_launchBlockNumber = 0;
		_isLaunched = false;
	}
	function activateTrading() external onlyOwner {
		isTradingEnabled = true;
	}
	function deactivateTrading() external onlyOwner {
		isTradingEnabled = false;
		_tradingPausedTimestamp = _getNow();
	}
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
		require(automatedMarketMakerPairs[pair] != value, "LuckyDooToken: Automated market maker pair is already set to that value");
		automatedMarketMakerPairs[pair] = value;
		emit AutomatedMarketMakerPairChange(pair, value);
	}
	function allowTradingWhenDisabled(address account, bool allowed) external onlyOwner {
		_isAllowedToTradeWhenDisabled[account] = allowed;
		emit AllowedWhenTradingDisabledChange(account, allowed);
	}
	function excludeFromFees(address account, bool excluded) external onlyOwner {
		require(_isExcludedFromFee[account] != excluded, "LuckyDooToken: Account is already the value of 'excluded'");
		_isExcludedFromFee[account] = excluded;
		emit ExcludeFromFeesChange(account, excluded);
	}
    function excludeFromMaxWalletLimit(address account, bool excluded) external onlyOwner {
		require(_isExcludedFromMaxWalletLimit[account] != excluded, "LuckyDooToken: Account is already the value of 'excluded'");
		_isExcludedFromMaxWalletLimit[account] = excluded;
		emit ExcludeFromMaxWalletChange(account, excluded);
	}
	function excludeFromMaxTransactionLimit(address account, bool excluded) external onlyOwner {
		require(_isExcludedFromMaxTransactionLimit[account] != excluded, "LuckyDooToken: Account is already the value of 'excluded'");
		_isExcludedFromMaxTransactionLimit[account] = excluded;
		emit ExcludeFromMaxTransferChange(account, excluded);
	}
    function blockAccount(address account) external onlyOwner {
		uint256 currentTimestamp = _getNow();
		require(!_isBlocked[account], "LuckyDooToken: Account is already blocked");
		if (_isLaunched) {
			require((currentTimestamp - _launchStartTimestamp) < _blockedTimeLimit, "LuckyDooToken: Time to block accounts has expired");
		}
		_isBlocked[account] = true;
		emit BlockedAccountChange(account, true);
	}
	function unblockAccount(address account) external onlyOwner {
		require(_isBlocked[account], "LuckyDooToken: Account is not blcoked");
		_isBlocked[account] = false;
		emit BlockedAccountChange(account, false);
	}
	function setWallets(address newLiquidityWallet, address newDevWallet, address newMarketingWallet, address newBuyBackWallett) external onlyOwner {
		if(liquidityWallet != newLiquidityWallet) {
            require(newLiquidityWallet != address(0), "LuckyDooToken: The liquidityWallet cannot be 0");
			emit WalletChange('liquidityWallet', newLiquidityWallet, liquidityWallet);
			liquidityWallet = newLiquidityWallet;
		}
		if(devWallet != newDevWallet) {
            require(newDevWallet != address(0), "LuckyDooToken: The devWallet cannot be 0");
			emit WalletChange('devWallet', newDevWallet, devWallet);
			devWallet = newDevWallet;
		}
		if(marketingWallet != newMarketingWallet) {
            require(newMarketingWallet != address(0), "LuckyDooToken: The marketingWallet cannot be 0");
			emit WalletChange('marketingWallet', newMarketingWallet, marketingWallet);
			marketingWallet = newMarketingWallet;
		}
		if(buyBackWallet != newBuyBackWallett) {
            require(newBuyBackWallett != address(0), "LuckyDooToken: The buyBackWallet cannot be 0");
			emit WalletChange('buyBackWallet', newBuyBackWallett, buyBackWallet);
			buyBackWallet = newBuyBackWallett;
		}
	}
    // Base fees
	function setBaseFeesOnBuy(uint8 _liquidityFeeOnBuy,  uint8 _marketingFeeOnBuy, uint8 _devFeeOnBuy,  uint8 _buyBackFeeOnBuy, uint8 _holdersFeeOnBuy) external onlyOwner {
		_setCustomBuyTaxPeriod(_base, _liquidityFeeOnBuy, _marketingFeeOnBuy, _devFeeOnBuy, _buyBackFeeOnBuy, _holdersFeeOnBuy);
		emit FeeChange('baseFees-Buy', _liquidityFeeOnBuy, _marketingFeeOnBuy, _devFeeOnBuy, _buyBackFeeOnBuy, _holdersFeeOnBuy);
	}
	function setBaseFeesOnSell(uint8 _liquidityFeeOnSell, uint8 _marketingFeeOnSell, uint8 _devFeeOnSell, uint8 _buyBackFeeOnSell, uint8 _holdersFeeOnSell) external onlyOwner {
		_setCustomSellTaxPeriod(_base, _liquidityFeeOnSell, _marketingFeeOnSell, _devFeeOnSell, _buyBackFeeOnSell, _holdersFeeOnSell);
		emit FeeChange('baseFees-Sell', _liquidityFeeOnSell, _marketingFeeOnSell, _devFeeOnSell, _buyBackFeeOnSell, _holdersFeeOnSell);
	}
    //Launch2 Fees
	function setLaunch2FeesOnBuy(uint8 _liquidityFeeOnBuy, uint8 _marketingFeeOnBuy, uint8 _devFeeOnBuy,  uint8 _buyBackFeeOnBuy, uint8 _holdersFeeOnBuy) external onlyOwner {
		_setCustomBuyTaxPeriod(_launch2, _liquidityFeeOnBuy, _marketingFeeOnBuy, _devFeeOnBuy, _buyBackFeeOnBuy, _holdersFeeOnBuy);
		emit FeeChange('launch2Fees-Buy', _liquidityFeeOnBuy, _marketingFeeOnBuy, _devFeeOnBuy, _buyBackFeeOnBuy, _holdersFeeOnBuy);
	}
	function setLaunch2FeesOnSell(uint8 _liquidityFeeOnSell, uint8 _marketingFeeOnSell, uint8 _devFeeOnSell, uint8 _buyBackFeeOnSell, uint8 _holdersFeeOnSell) external onlyOwner {
		_setCustomSellTaxPeriod(_launch2, _liquidityFeeOnSell, _marketingFeeOnSell, _devFeeOnSell, _buyBackFeeOnSell, _holdersFeeOnSell);
		emit FeeChange('launch2Fees-Sell', _liquidityFeeOnSell, _marketingFeeOnSell, _devFeeOnSell, _buyBackFeeOnSell, _holdersFeeOnSell);
	}
	//Launch3 Fees
	function setLaunch3FeesOnBuy(uint8 _liquidityFeeOnBuy, uint8 _marketingFeeOnBuy, uint8 _devFeeOnBuy, uint8 _buyBackFeeOnBuy, uint8 _holdersFeeOnBuy) external onlyOwner {
		_setCustomBuyTaxPeriod(_launch3, _liquidityFeeOnBuy, _marketingFeeOnBuy, _devFeeOnBuy, _buyBackFeeOnBuy, _holdersFeeOnBuy);
		emit FeeChange('launch3Fees-Buy', _liquidityFeeOnBuy, _marketingFeeOnBuy, _devFeeOnBuy, _buyBackFeeOnBuy, _holdersFeeOnBuy);
	}
	function setLaunch3FeesOnSell(uint8 _liquidityFeeOnSell, uint8 _marketingFeeOnSell, uint8 _devFeeOnSell, uint8 _buyBackFeeOnSell,  uint8 _holdersFeeOnSell) external onlyOwner {
		_setCustomSellTaxPeriod(_launch3, _liquidityFeeOnSell, _marketingFeeOnSell, _devFeeOnSell, _buyBackFeeOnSell, _holdersFeeOnSell);
		emit FeeChange('launch3Fees-Sell', _liquidityFeeOnSell, _marketingFeeOnSell, _devFeeOnSell, _buyBackFeeOnSell, _holdersFeeOnSell);
	}
	function setMaxWalletAmount(uint256 newValue) external onlyOwner {
		require(newValue != maxWalletAmount, "LuckyDooToken: Cannot update maxWalletAmount to same value");
		emit MaxWalletAmountChange(newValue, maxWalletAmount);
		maxWalletAmount = newValue;
	}
	function setMaxTransactionAmount(uint256 newValue) external onlyOwner {
		require(newValue != maxTxAmount, "LuckyDooToken: Cannot update maxTxAmount to same value");
        emit MaxTransactionAmountChange(newValue, maxTxAmount);
        maxTxAmount = newValue;
	}
	function excludeFromDividends(address account, bool excluded) public onlyOwner {
		require(_isExcludedFromDividends[account] != excluded, "LuckyDooToken: Account is already the value of 'excluded'");
		if(excluded) {
			if(_rOwned[account] > 0) {
				_tOwned[account] = tokenFromReflection(_rOwned[account]);
			}
			_isExcludedFromDividends[account] = excluded;
			_excludedFromDividends.push(account);
		} else {
			for (uint256 i = 0; i < _excludedFromDividends.length; i++) {
				if (_excludedFromDividends[i] == account) {
					_excludedFromDividends[i] = _excludedFromDividends[_excludedFromDividends.length - 1];
					_tOwned[account] = 0;
					_isExcludedFromDividends[account] = false;
					_excludedFromDividends.pop();
					break;
				}
			}
		}
		emit ExcludeFromDividendsChange(account, excluded);
	}
	function setMinimumTokensBeforeSwap(uint256 newValue) external onlyOwner {
		require(newValue != minimumTokensBeforeSwap, "LuckyDooToken: Cannot update minimumTokensBeforeSwap to same value");
		emit MinTokenAmountBeforeSwapChange(newValue, minimumTokensBeforeSwap);
		minimumTokensBeforeSwap = newValue;
	}
	function claimETHOverflow() external onlyOwner {
		require(address(this).balance > 0, "LuckyDooToken: Cannot send more than contract balance");
        uint256 amount = address(this).balance;
		(bool success,) = address(owner()).call{value : amount}("");
		if (success){
			emit ClaimETHOverflow(amount);
		}
	}

	// Getters
	function name() external view returns (string memory) {
		return _name;
	}
	function symbol() external view returns (string memory) {
		return _symbol;
	}
	function decimals() external view virtual returns (uint8) {
		return _decimals;
	}
	function totalSupply() external view override returns (uint256) {
		return _tTotal;
	}
	function balanceOf(address account) public view override returns (uint256) {
		if (_isExcludedFromDividends[account]) return _tOwned[account];
		return tokenFromReflection(_rOwned[account]);
	}
	function totalFees() external view returns (uint256) {
		return _tFeeTotal;
	}
	function allowance(address owner, address spender) external view override returns (uint256) {
		return _allowances[owner][spender];
	}
	function isInLaunch() external view returns (bool) {
		uint256 currentTimestamp = !isTradingEnabled && _tradingPausedTimestamp > _launchStartTimestamp  ? _tradingPausedTimestamp : _getNow();
		uint256 totalLaunchTime =  _launch1.timeInPeriod + _launch2.timeInPeriod + _launch3.timeInPeriod;
		if(_isLaunched && ((currentTimestamp - _launchStartTimestamp) < totalLaunchTime || (block.number - _launchBlockNumber) < _launch1.blocksInPeriod )) {
			return true;
		} else {
			return false;
		}
	}
    function getBaseBuyFees() external view returns (uint256, uint256, uint256, uint256, uint256){
		return (_base.liquidityFeeOnBuy, _base.marketingFeeOnBuy, _base.devFeeOnBuy, _base.buyBackFeeOnBuy, _base.holdersFeeOnBuy);
	}
	function getBaseSellFees() external view returns (uint256, uint256, uint256, uint256, uint256){
		return (_base.liquidityFeeOnSell, _base.marketingFeeOnSell, _base.devFeeOnSell, _base.buyBackFeeOnSell, _base.holdersFeeOnSell);
	}
	function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
		require(rAmount <= _rTotal, "LuckyDooToken: Amount must be less than total reflections");
		uint256 currentRate =  _getRate();
		return rAmount / currentRate;
	}
	function reflectionFromToken(uint256 tAmount, bool deductTransferFee) external view returns (uint256) {
		require(tAmount <= _tTotal, "LuckyDooToken: Amount must be less than supply");
		uint256 currentRate = _getRate();
		uint256 rAmount  = tAmount * currentRate;
		if (!deductTransferFee) {
			return rAmount;
		}
		else {
			uint256 rTotalFee  = tAmount * _totalFee / 100 * currentRate;
			uint256 rTransferAmount = rAmount - rTotalFee;
			return rTransferAmount;
		}
	}

	// Main
	function _transfer(
	address from,
	address to,
	uint256 amount
	) internal {
		require(from != address(0), "ERC20: transfer from the zero address");
		require(to != address(0), "ERC20: transfer to the zero address");
		require(amount > 0, "Transfer amount must be greater than zero");
		require(amount <= balanceOf(from), "LuckyDooToken: Cannot transfer more than balance");

		bool isBuyFromLp = automatedMarketMakerPairs[from];
		bool isSelltoLp = automatedMarketMakerPairs[to];
        bool _isInLaunch = this.isInLaunch();

		if(!_isAllowedToTradeWhenDisabled[from] && !_isAllowedToTradeWhenDisabled[to]) {
			require(isTradingEnabled, "LuckyDooToken: Trading is currently disabled.");
			require(!_isBlocked[to], "LuckyDooToken: Account is blocked");
			require(!_isBlocked[from], "LuckyDooToken: Account is blocked");
            if (!_isExcludedFromMaxTransactionLimit[to] && !_isExcludedFromMaxTransactionLimit[from]) {
                require(amount <= maxTxAmount, "LuckyDooToken: Transfer amount exceeds the maxTxAmount.");
            }
			if (!_isExcludedFromMaxWalletLimit[to]) {
				require((balanceOf(to) + amount) <= maxWalletAmount, "LuckyDooToken: Expected wallet amount exceeds the maxWalletAmount.");
			}
		}

		_adjustTaxes(isBuyFromLp, isSelltoLp, _isInLaunch);
		bool canSwap = balanceOf(address(this)) >= minimumTokensBeforeSwap;

		if (
			isTradingEnabled &&
			canSwap &&
			!_swapping &&
			_totalFee > 0 &&
			automatedMarketMakerPairs[to] &&
			from != liquidityWallet && to != liquidityWallet &&
			from != devWallet && to != devWallet &&
			from != marketingWallet && to != marketingWallet &&
			from != buyBackWallet && to != buyBackWallet
		) {
			_swapping = true;
			_swapAndLiquify();
			_swapping = false;
		}

		bool takeFee = !_swapping && isTradingEnabled;

		if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
			takeFee = false;
		}
		_tokenTransfer(from, to, amount, takeFee);
	}
	function _tokenTransfer(address sender,address recipient, uint256 tAmount, bool takeFee) private {
		(uint256 tTransferAmount,uint256 tFee, uint256 tOther) = _getTValues(tAmount, takeFee);
		(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 rOther) = _getRValues(tAmount, tFee, tOther, _getRate());

		if (_isExcludedFromDividends[sender]) {
			_tOwned[sender] = _tOwned[sender] - tAmount;
		}
		if (_isExcludedFromDividends[recipient]) {
			_tOwned[recipient] = _tOwned[recipient] + tTransferAmount;
		}
		_rOwned[sender] = _rOwned[sender] - rAmount;
		_rOwned[recipient] = _rOwned[recipient] + rTransferAmount;
		_takeContractFees(rOther, tOther);
		_reflectFee(rFee, tFee);
		emit Transfer(sender, recipient, tTransferAmount);
	}
	function _reflectFee(uint256 rFee, uint256 tFee) private {
		_rTotal -= rFee;
		_tFeeTotal += tFee;
	}
	function _getTValues(uint256 tAmount, bool takeFee) private view returns (uint256,uint256,uint256){
		if (!takeFee) {
			return (tAmount, 0, 0);
		}
		else {
			uint256 tFee = tAmount * _holdersFee / 100;
			uint256 tOther = tAmount * (_liquidityFee + _devFee + _marketingFee + _buyBackFee) / 100;
			uint256 tTransferAmount = tAmount - (tFee + tOther);
			return (tTransferAmount, tFee, tOther);
		}
	}
	function _getRValues(
		uint256 tAmount,
		uint256 tFee,
		uint256 tOther,
		uint256 currentRate
		) private pure returns ( uint256, uint256, uint256, uint256) {
		uint256 rAmount = tAmount * currentRate;
		uint256 rFee = tFee * currentRate;
		uint256 rOther = tOther * currentRate;
		uint256 rTransferAmount = rAmount - (rFee + rOther);
		return (rAmount, rTransferAmount, rFee, rOther);
	}
	function _getRate() private view returns (uint256) {
		(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
		return rSupply.div(tSupply);
	}
	function _getCurrentSupply() private view returns (uint256, uint256) {
		uint256 rSupply = _rTotal;
		uint256 tSupply = _tTotal;
		for (uint256 i = 0; i < _excludedFromDividends.length; i++) {
			if (
				_rOwned[_excludedFromDividends[i]] > rSupply ||
				_tOwned[_excludedFromDividends[i]] > tSupply
			) return (_rTotal, _tTotal);
			rSupply = rSupply - _rOwned[_excludedFromDividends[i]];
			tSupply = tSupply - _tOwned[_excludedFromDividends[i]];
		}
		if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
		return (rSupply, tSupply);
	}
	function _takeContractFees(uint256 rOther, uint256 tOther) private {
		if (_isExcludedFromDividends[address(this)]) {
			_tOwned[address(this)] += tOther;
		}
		_rOwned[address(this)] += rOther;
	}
	function _adjustTaxes(bool isBuyFromLp, bool isSelltoLp, bool isLaunching) private {
		uint256 blocksSinceLaunch = block.number - _launchBlockNumber;
		uint256 currentTimestamp = !isTradingEnabled && _tradingPausedTimestamp > _launchStartTimestamp  ? _tradingPausedTimestamp : _getNow();
		uint256 timeSinceLaunch = currentTimestamp - _launchStartTimestamp;

		_liquidityFee = 0;
		_devFee = 0;
		_marketingFee = 0;
		_buyBackFee = 0;
		_holdersFee = 0;

		if (isBuyFromLp) {
			_liquidityFee = _base.liquidityFeeOnBuy;
			_devFee = _base.devFeeOnBuy;
			_marketingFee = _base.marketingFeeOnBuy;
			_buyBackFee = _base.buyBackFeeOnBuy;
			_holdersFee = _base.holdersFeeOnBuy;

			if(isLaunching) {
				if (_isLaunched && blocksSinceLaunch < _launch1.blocksInPeriod) {
					_liquidityFee = _launch1.liquidityFeeOnBuy;
					_devFee = _launch1.devFeeOnBuy;
					_marketingFee = _launch1.marketingFeeOnBuy;
					_buyBackFee = _launch1.buyBackFeeOnBuy;
					_holdersFee = _launch1.holdersFeeOnBuy;
				}
				else if (_isLaunched && timeSinceLaunch <= _launch2.timeInPeriod && blocksSinceLaunch > _launch1.blocksInPeriod) {
					_liquidityFee = _launch2.liquidityFeeOnBuy;
					_devFee = _launch2.devFeeOnBuy;
					_marketingFee = _launch2.marketingFeeOnBuy;
					_buyBackFee = _launch2.buyBackFeeOnBuy;
					_holdersFee = _launch2.holdersFeeOnBuy;
				}
				else {
					_liquidityFee = _launch3.liquidityFeeOnBuy;
					_devFee = _launch3.devFeeOnBuy;
					_marketingFee = _launch3.marketingFeeOnBuy;
					_buyBackFee = _launch3.buyBackFeeOnBuy;
					_holdersFee = _launch3.holdersFeeOnBuy;
				}
			}
		}
		if (isSelltoLp) {
			_liquidityFee = _base.liquidityFeeOnSell;
			_devFee = _base.devFeeOnSell;
			_marketingFee = _base.marketingFeeOnSell;
			_buyBackFee = _base.buyBackFeeOnSell;
			_holdersFee = _base.holdersFeeOnSell;

			if(isLaunching) {
				if (_isLaunched && blocksSinceLaunch < _launch1.blocksInPeriod) {
					_liquidityFee = _launch1.liquidityFeeOnSell;
					_devFee = _launch1.devFeeOnSell;
					_marketingFee = _launch1.marketingFeeOnSell;
					_buyBackFee = _launch1.buyBackFeeOnSell;
					_holdersFee = _launch1.holdersFeeOnSell;
				}
				else if (_isLaunched && timeSinceLaunch <= _launch2.timeInPeriod && blocksSinceLaunch > _launch1.blocksInPeriod) {
					_liquidityFee = _launch2.liquidityFeeOnSell;
					_devFee = _launch2.devFeeOnSell;
					_marketingFee = _launch2.marketingFeeOnSell;
					_buyBackFee = _launch2.buyBackFeeOnSell;
					_holdersFee = _launch2.holdersFeeOnSell;
				}
				else {
					_liquidityFee = _launch3.liquidityFeeOnSell;
					_devFee = _launch3.devFeeOnSell;
					_marketingFee = _launch3.marketingFeeOnSell;
					_buyBackFee = _launch3.buyBackFeeOnSell;
					_holdersFee = _launch3.holdersFeeOnSell;
				}
			}
		}

		_totalFee = _liquidityFee + _marketingFee + _devFee + _buyBackFee + _holdersFee;
		emit FeesApplied(_liquidityFee, _marketingFee, _devFee, _buyBackFee, _holdersFee, _totalFee);
	}
	function _setCustomSellTaxPeriod(CustomTaxPeriod storage map,
		uint8 _liquidityFeeOnSell,
		uint8 _marketingFeeOnSell,
        uint8 _devFeeOnSell,
		uint8 _buyBackFeeOnSell,
		uint8 _holdersFeeOnSell
	) private {
		if (map.liquidityFeeOnSell != _liquidityFeeOnSell) {
			emit CustomTaxPeriodChange(_liquidityFeeOnSell, map.liquidityFeeOnSell, 'liquidityFeeOnSell', map.periodName);
			map.liquidityFeeOnSell = _liquidityFeeOnSell;
		}
		if (map.marketingFeeOnSell != _marketingFeeOnSell) {
			emit CustomTaxPeriodChange(_marketingFeeOnSell, map.marketingFeeOnSell, 'marketingFeeOnSell', map.periodName);
			map.marketingFeeOnSell = _marketingFeeOnSell;
		}
        if (map.devFeeOnSell != _devFeeOnSell) {
			emit CustomTaxPeriodChange(_devFeeOnSell, map.devFeeOnSell, 'devFeeOnSell', map.periodName);
			map.devFeeOnSell = _devFeeOnSell;
		}
		if (map.buyBackFeeOnSell != _buyBackFeeOnSell) {
			emit CustomTaxPeriodChange(_buyBackFeeOnSell, map.buyBackFeeOnSell, 'buyBackFeeOnSell', map.periodName);
			map.buyBackFeeOnSell = _buyBackFeeOnSell;
		}
		if (map.holdersFeeOnSell != _holdersFeeOnSell) {
			emit CustomTaxPeriodChange(_holdersFeeOnSell, map.holdersFeeOnSell, 'holdersFeeOnSell', map.periodName);
			map.holdersFeeOnSell = _holdersFeeOnSell;
		}
	}
	function _setCustomBuyTaxPeriod(CustomTaxPeriod storage map,
		uint8 _liquidityFeeOnBuy,
		uint8 _marketingFeeOnBuy,
        uint8 _devFeeOnBuy,
		uint8 _buyBackFeeOnBuy,
		uint8 _holdersFeeOnBuy
	) private {
		if (map.liquidityFeeOnBuy != _liquidityFeeOnBuy) {
			emit CustomTaxPeriodChange(_liquidityFeeOnBuy, map.liquidityFeeOnBuy, 'liquidityFeeOnBuy', map.periodName);
			map.liquidityFeeOnBuy = _liquidityFeeOnBuy;
		}
		if (map.marketingFeeOnBuy != _marketingFeeOnBuy) {
			emit CustomTaxPeriodChange(_marketingFeeOnBuy, map.marketingFeeOnBuy, 'marketingFeeOnBuy', map.periodName);
			map.marketingFeeOnBuy = _marketingFeeOnBuy;
		}
        if (map.devFeeOnBuy != _devFeeOnBuy) {
			emit CustomTaxPeriodChange(_devFeeOnBuy, map.devFeeOnBuy, 'devFeeOnBuy', map.periodName);
			map.devFeeOnBuy = _devFeeOnBuy;
		}
		if (map.buyBackFeeOnBuy != _buyBackFeeOnBuy) {
			emit CustomTaxPeriodChange(_buyBackFeeOnBuy, map.buyBackFeeOnBuy, 'buyBackFeeOnBuy', map.periodName);
			map.buyBackFeeOnBuy = _buyBackFeeOnBuy;
		}
		if (map.holdersFeeOnBuy != _holdersFeeOnBuy) {
			emit CustomTaxPeriodChange(_holdersFeeOnBuy, map.holdersFeeOnBuy, 'holdersFeeOnBuy', map.periodName);
			map.holdersFeeOnBuy = _holdersFeeOnBuy;
		}
	}
	function _swapAndLiquify() private {
		uint256 contractBalance = balanceOf(address(this));
		uint256 initialETHBalance = address(this).balance;

		uint8 totalFeePrior = _totalFee;
        uint8 liquidityFeePrior = _liquidityFee;
        uint8 marketingFeePrior = _marketingFee;
        uint8 devFeePrior = _devFee;
        uint8 buyBackFeePrior  = _buyBackFee;

		uint256 amountToLiquify = contractBalance * _liquidityFee / _totalFee / 2;
		uint256 amountToSwapForETH = contractBalance - amountToLiquify;

		_swapTokensForETH(amountToSwapForETH);

		uint256 ETHBalanceAfterSwap = address(this).balance - initialETHBalance;
		uint256 totalETHFee = _totalFee - (_liquidityFee / 2);
		uint256 amountETHLiquidity = ETHBalanceAfterSwap * _liquidityFee / totalETHFee / 2;
		uint256 amountETHDev = ETHBalanceAfterSwap * _devFee / totalETHFee;
		uint256 amountETHBuyBack = ETHBalanceAfterSwap * _buyBackFee / totalETHFee;
		uint256 amountETHMarketing = ETHBalanceAfterSwap - (amountETHLiquidity + amountETHDev + amountETHBuyBack);

		payable(marketingWallet).transfer(amountETHMarketing);
		payable(devWallet).transfer(amountETHDev);
        payable(buyBackWallet).transfer(amountETHBuyBack);

		if (amountToLiquify > 0) {
			_addLiquidity(amountToLiquify, amountETHLiquidity);
			emit SwapAndLiquify(amountToSwapForETH, amountETHLiquidity, amountToLiquify);
		}
		_totalFee = totalFeePrior;
        _liquidityFee = liquidityFeePrior;
        _marketingFee = marketingFeePrior;
        _devFee = devFeePrior;
        _buyBackFee = buyBackFeePrior;
	}
	function _swapTokensForETH(uint256 tokenAmount) private {
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = uniswapV2Router.WETH();
		_approve(address(this), address(uniswapV2Router), tokenAmount);
		uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
		tokenAmount,
		0, // accept any amount of ETH
		path,
		address(this),
		block.timestamp
		);
	}
	function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
		_approve(address(this), address(uniswapV2Router), tokenAmount);
		uniswapV2Router.addLiquidityETH{value: ethAmount}(
		address(this),
		tokenAmount,
		0, // slippage is unavoidable
		0, // slippage is unavoidable
		liquidityWallet,
		block.timestamp
		);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"AllowedWhenTradingDisabledChange","type":"event"},{"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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"AutomatedMarketMakerPairChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"BlockedAccountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimETHOverflow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":true,"internalType":"string","name":"taxType","type":"string"},{"indexed":false,"internalType":"bytes23","name":"period","type":"bytes23"}],"name":"CustomTaxPeriodChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromDividendsChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFeesChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromMaxTransferChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromMaxWalletChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"identifier","type":"string"},{"indexed":false,"internalType":"uint8","name":"liquidityFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"marketingFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"devFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"buyBackFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"holdersFee","type":"uint8"}],"name":"FeeChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"liquidityFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"marketingFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"devFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"buyBackFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"holdersFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"totalFee","type":"uint8"}],"name":"FeesApplied","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MaxTransactionAmountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MaxWalletAmountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MinTokenAmountBeforeSwapChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UniswapV2RouterChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"indentifier","type":"string"},{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"WalletChange","type":"event"},{"inputs":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"allowTradingWhenDisabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"account","type":"address"}],"name":"blockAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyBackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimETHOverflow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deactivateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBaseBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInLaunch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","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":"minimumTokensBeforeSwap","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidityFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_devFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_buyBackFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_holdersFeeOnBuy","type":"uint8"}],"name":"setBaseFeesOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidityFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_devFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_buyBackFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_holdersFeeOnSell","type":"uint8"}],"name":"setBaseFeesOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidityFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_devFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_buyBackFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_holdersFeeOnBuy","type":"uint8"}],"name":"setLaunch2FeesOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidityFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_devFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_buyBackFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_holdersFeeOnSell","type":"uint8"}],"name":"setLaunch2FeesOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidityFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_devFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_buyBackFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_holdersFeeOnBuy","type":"uint8"}],"name":"setLaunch3FeesOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidityFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_devFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_buyBackFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_holdersFeeOnSell","type":"uint8"}],"name":"setLaunch3FeesOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinimumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityWallet","type":"address"},{"internalType":"address","name":"newDevWallet","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newBuyBackWallett","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unblockAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052620000206d31412717f0c2f24c6d1fc000000060001962001821565b6200002e906000196200184e565b6005556127106200004f6d31412717f0c2f24c6d1fc000000060c862001868565b6200005b91906200188a565b600955620186a06200007e6d31412717f0c2f24c6d1fc000000061021262001868565b6200008a91906200188a565b600a55620f4240620000ac6d31412717f0c2f24c6d1fc000000060fa62001868565b620000b891906200188a565b600c5561dead600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550604051806101a00160405280666c61756e63683160c81b6001600160481b0319168152602001600560ff16815260200160008152602001606460ff168152602001600160ff168152602001600060ff168152602001600460ff168152602001600060ff168152602001600260ff168152602001600060ff168152602001600360ff168152602001600060ff168152602001600260ff16815250601460008201518160000160006101000a8154816001600160b81b03021916908360481c021790555060208201518160000160176101000a81548160ff021916908360ff1602179055506040820151816001015560608201518160020160006101000a81548160ff021916908360ff16021790555060808201518160020160016101000a81548160ff021916908360ff16021790555060a08201518160020160026101000a81548160ff021916908360ff16021790555060c08201518160020160036101000a81548160ff021916908360ff16021790555060e08201518160020160046101000a81548160ff021916908360ff1602179055506101008201518160020160056101000a81548160ff021916908360ff1602179055506101208201518160020160066101000a81548160ff021916908360ff1602179055506101408201518160020160076101000a81548160ff021916908360ff1602179055506101608201518160020160086101000a81548160ff021916908360ff1602179055506101808201518160020160096101000a81548160ff021916908360ff1602179055505050604051806101a00160405280663630bab731b41960c91b6001600160481b0319168152602001600060ff168152602001610e108152602001600160ff168152602001600260ff168152602001600460ff168152602001600a60ff168152602001600260ff168152602001600360ff168152602001600360ff168152602001600a60ff168152602001600260ff168152602001600560ff16815250601760008201518160000160006101000a8154816001600160b81b03021916908360481c021790555060208201518160000160176101000a81548160ff021916908360ff1602179055506040820151816001015560608201518160020160006101000a81548160ff021916908360ff16021790555060808201518160020160016101000a81548160ff021916908360ff16021790555060a08201518160020160026101000a81548160ff021916908360ff16021790555060c08201518160020160036101000a81548160ff021916908360ff16021790555060e08201518160020160046101000a81548160ff021916908360ff1602179055506101008201518160020160056101000a81548160ff021916908360ff1602179055506101208201518160020160066101000a81548160ff021916908360ff1602179055506101408201518160020160076101000a81548160ff021916908360ff1602179055506101608201518160020160086101000a81548160ff021916908360ff1602179055506101808201518160020160096101000a81548160ff021916908360ff1602179055505050604051806101a00160405280666c61756e63683360c81b6001600160481b0319168152602001600060ff168152602001620151808152602001600160ff168152602001600260ff168152602001600460ff168152602001600860ff168152602001600260ff168152602001600360ff168152602001600360ff168152602001600a60ff168152602001600260ff168152602001600460ff16815250601a60008201518160000160006101000a8154816001600160b81b03021916908360481c021790555060208201518160000160176101000a81548160ff021916908360ff1602179055506040820151816001015560608201518160020160006101000a81548160ff021916908360ff16021790555060808201518160020160016101000a81548160ff021916908360ff16021790555060a08201518160020160026101000a81548160ff021916908360ff16021790555060c08201518160020160036101000a81548160ff021916908360ff16021790555060e08201518160020160046101000a81548160ff021916908360ff1602179055506101008201518160020160056101000a81548160ff021916908360ff1602179055506101208201518160020160066101000a81548160ff021916908360ff1602179055506101408201518160020160076101000a81548160ff021916908360ff1602179055506101608201518160020160086101000a81548160ff021916908360ff1602179055506101808201518160020160096101000a81548160ff021916908360ff1602179055505050604051806101a0016040528066191959985d5b1d60ca1b6001600160481b0319168152602001600060ff16815260200160008152602001600160ff168152602001600160ff168152602001600460ff168152602001600460ff168152602001600260ff168152602001600260ff168152602001600360ff168152602001600360ff168152602001600260ff168152602001600260ff16815250601d60008201518160000160006101000a8154816001600160b81b03021916908360481c021790555060208201518160000160176101000a81548160ff021916908360ff1602179055506040820151816001015560608201518160020160006101000a81548160ff021916908360ff16021790555060808201518160020160016101000a81548160ff021916908360ff16021790555060a08201518160020160026101000a81548160ff021916908360ff16021790555060c08201518160020160036101000a81548160ff021916908360ff16021790555060e08201518160020160046101000a81548160ff021916908360ff1602179055506101008201518160020160056101000a81548160ff021916908360ff1602179055506101208201518160020160066101000a81548160ff021916908360ff1602179055506101408201518160020160076101000a81548160ff021916908360ff1602179055506101608201518160020160086101000a81548160ff021916908360ff1602179055506101808201518160020160096101000a81548160ff021916908360ff1602179055505050604051806101a00160405280636261736560e01b6001600160481b0319168152602001600060ff16815260200160008152602001600160ff168152602001600160ff168152602001600460ff168152602001600460ff168152602001600260ff168152602001600260ff168152602001600360ff168152602001600360ff168152602001600260ff168152602001600260ff16815250602060008201518160000160006101000a8154816001600160b81b03021916908360481c021790555060208201518160000160176101000a81548160ff021916908360ff1602179055506040820151816001015560608201518160020160006101000a81548160ff021916908360ff16021790555060808201518160020160016101000a81548160ff021916908360ff16021790555060a08201518160020160026101000a81548160ff021916908360ff16021790555060c08201518160020160036101000a81548160ff021916908360ff16021790555060e08201518160020160046101000a81548160ff021916908360ff1602179055506101008201518160020160056101000a81548160ff021916908360ff1602179055506101208201518160020160066101000a81548160ff021916908360ff1602179055506101408201518160020160076101000a81548160ff021916908360ff1602179055506101608201518160020160086101000a81548160ff021916908360ff1602179055506101808201518160020160096101000a81548160ff021916908360ff160217905550505034801562000c2757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060008054600e80546001600160a01b039092166001600160a01b03199283168117909155600f805483168217905560108054831682179055601180549092161790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000d00573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d269190620018a1565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000d74573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d9a9190620018a1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000de8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e0e9190620018a1565b600180546001600160a01b0319166001600160a01b03858116919091178255821660805290915062000e42908290620010a9565b60016024600062000e5b6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308082526024909352208054909216600190811790925562000ea991620011a9565b600d5462000ec2906001600160a01b03166001620011a9565b62000ecf826001620011a9565b60016023600062000ee86000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905585821681526025938490528281208054861660019081179091558054909216815282812080548616831790553081529182208054909416811790935562000f656000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152602693849052828120805486166001908117909155600d5490921681529182208054909416811790935562000fd36000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805460ff19169215159290921790915560055490600290620010186000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055620010456000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6d31412717f0c2f24c6d1fc00000006040516200109991815260200190565b60405180910390a350506200196c565b6001600160a01b03821660009081526029602052604090205481151560ff909116151503620011555760405162461bcd60e51b815260206004820152604760248201527f4c75636b79446f6f546f6b656e3a204175746f6d61746564206d61726b65742060448201527f6d616b6572207061697220697320616c72656164792073657420746f20746861606482015266742076616c756560c81b608482015260a4015b60405180910390fd5b6001600160a01b038216600081815260296020526040808220805460ff191685151590811790915590519092917fa666b9b2dc2c8f2d86fda7ba3a115be30d3a958fd84d359cbc6bc919df97990a91a35050565b6000546001600160a01b03163314620012055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200114c565b6001600160a01b03821660009081526027602052604090205481151560ff9091161515036200129d5760405162461bcd60e51b815260206004820152603960248201527f4c75636b79446f6f546f6b656e3a204163636f756e7420697320616c7265616460448201527f79207468652076616c7565206f6620276578636c75646564270000000000000060648201526084016200114c565b80156200136a576001600160a01b0382166000908152600260205260409020541562001301576001600160a01b038216600090815260026020526040902054620012e790620014eb565b6001600160a01b0383166000908152600360205260409020555b6001600160a01b0382166000818152602760205260408120805460ff1916841515179055602a805460018101825591527fbeced09521047d05b8960b7e7bcc1d1292cf3e4b2a6b63f48335cbde5f7545d20180546001600160a01b0319169091179055620014a1565b60005b602a548110156200149f57826001600160a01b0316602a8281548110620013985762001398620018cc565b6000918252602090912001546001600160a01b0316036200148a57602a8054620013c5906001906200184e565b81548110620013d857620013d8620018cc565b600091825260209091200154602a80546001600160a01b039092169183908110620014075762001407620018cc565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600382526040808220829055602790925220805460ff19169055602a805480620014625762001462620018e2565b600082815260209020810160001990810180546001600160a01b03191690550190556200149f565b806200149681620018f8565b9150506200136d565b505b816001600160a01b03167fcb9d59a6e9da25dee1a9ddef81481537dfd94e20b1593b58b08193bea9e9baa982604051620014df911515815260200190565b60405180910390a25050565b6000600554821115620015675760405162461bcd60e51b815260206004820152603960248201527f4c75636b79446f6f546f6b656e3a20416d6f756e74206d757374206265206c6560448201527f7373207468616e20746f74616c207265666c656374696f6e730000000000000060648201526084016200114c565b60006200157362001588565b90506200158181846200188a565b9392505050565b6000808062001596620015bb565b91509150620015b481836200178560201b620022ed1790919060201c565b9250505090565b60055460009081906d31412717f0c2f24c6d1fc0000000825b602a548110156200173a578260026000602a8481548110620015fa57620015fa620018cc565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200166957508160036000602a8481548110620016425762001642620018cc565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200168b575050600554936d31412717f0c2f24c6d1fc00000009350915050565b60026000602a8381548110620016a557620016a5620018cc565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620016d690846200184e565b925060036000602a8381548110620016f257620016f2620018cc565b60009182526020808320909101546001600160a01b031683528201929092526040019020546200172390836200184e565b9150806200173181620018f8565b915050620015d4565b506d31412717f0c2f24c6d1fc00000006005546200175991906200188a565b8210156200177c575050600554926d31412717f0c2f24c6d1fc000000092509050565b90939092509050565b60006200158183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620017cf60201b60201c565b60008183620017f35760405162461bcd60e51b81526004016200114c919062001914565b5060006200180284866200188a565b95945050505050565b634e487b7160e01b600052601260045260246000fd5b6000826200183357620018336200180b565b500690565b634e487b7160e01b600052601160045260246000fd5b60008282101562001863576200186362001838565b500390565b600081600019048311821515161562001885576200188562001838565b500290565b6000826200189c576200189c6200180b565b500490565b600060208284031215620018b457600080fd5b81516001600160a01b03811681146200158157600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6000600182016200190d576200190d62001838565b5060010190565b600060208083528351808285015260005b81811015620019435785810183015185820160400152820162001925565b8181111562001956576000604083870101525b50601f01601f1916929092016040019392505050565b6080516147e56200198860003960006105e501526147e56000f3fe60806040526004361061031e5760003560e01c806375f0a874116101ab578063aa4bde28116100f7578063d322157611610095578063f2fde38b1161006f578063f2fde38b146109b8578063f4b587c1146109d8578063fc960745146109f8578063fe01753514610a1857600080fd5b8063d322157614610932578063d469801614610952578063dd62ed3e1461097257600080fd5b8063b62496f5116100d1578063b62496f514610867578063c024666814610897578063cd43e228146108b7578063d2d7ad831461091c57600080fd5b8063aa4bde2814610811578063aee50b1e14610827578063b1ba39ea1461084757600080fd5b80638c0b5e221161016457806395d89b411161013e57806395d89b41146107855780639fad9683146107b1578063a457c2d7146107d1578063a9059cbb146107f157600080fd5b80638c0b5e22146107315780638da5cb5b146107475780638ea5220f1461076557600080fd5b806375f0a87414610671578063781edb3c146106915780637c0a893d146106b157806383672f3e146106d1578063880bcbc1146106f157806389886efa1461071157600080fd5b806327a14fc21161026a57806339509351116102235780634d78fdc6116101fd5780634d78fdc61461060757806366164f6f1461062757806370a082311461063c578063715018a61461065c57600080fd5b806339509351146105935780634549b039146105b357806349bd5a5e146105d357600080fd5b806327a14fc2146104f85780632d83811914610518578063313ce5671461053857806332769db61461055457806334cf1fea14610569578063392c695e1461057e57600080fd5b80630bd05b69116102d757806318160ddd116102b157806318160ddd146104775780631cd348c0146104985780631e293c10146104b857806323b872dd146104d857600080fd5b80630bd05b691461040b57806313114a9d146104205780631694505e1461043f57600080fd5b806301339c211461032a5780630483f7a014610341578063064a59d01461036157806306fdde031461039057806307f8f43d146103cb578063095ea7b3146103eb57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610a5e565b005b34801561034d57600080fd5b5061033f61035c3660046141c7565b610abb565b34801561036d57600080fd5b5060075461037b9060ff1681565b60405190151581526020015b60405180910390f35b34801561039c57600080fd5b506040805180820190915260098152684c75636b7920446f6f60b81b60208201525b6040516103879190614200565b3480156103d757600080fd5b5061033f6103e636600461426b565b610d59565b3480156103f757600080fd5b5061037b6104063660046142d0565b610e13565b34801561041757600080fd5b5061033f610e2a565b34801561042c57600080fd5b506006545b604051908152602001610387565b34801561044b57600080fd5b5060015461045f906001600160a01b031681565b6040516001600160a01b039091168152602001610387565b34801561048357600080fd5b506d31412717f0c2f24c6d1fc0000000610431565b3480156104a457600080fd5b5060115461045f906001600160a01b031681565b3480156104c457600080fd5b5061033f6104d33660046142fc565b610e63565b3480156104e457600080fd5b5061037b6104f3366004614315565b610f30565b34801561050457600080fd5b5061033f6105133660046142fc565b610f99565b34801561052457600080fd5b506104316105333660046142fc565b61106d565b34801561054457600080fd5b5060405160128152602001610387565b34801561056057600080fd5b5061037b611104565b34801561057557600080fd5b5061033f6111b2565b34801561058a57600080fd5b5061033f6111ec565b34801561059f57600080fd5b5061037b6105ae3660046142d0565b6112dd565b3480156105bf57600080fd5b506104316105ce366004614356565b611313565b3480156105df57600080fd5b5061045f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561061357600080fd5b5061033f61062236600461437b565b6113ff565b34801561063357600080fd5b5061033f6114ec565b34801561064857600080fd5b5061043161065736600461437b565b61162a565b34801561066857600080fd5b5061033f611689565b34801561067d57600080fd5b50600f5461045f906001600160a01b031681565b34801561069d57600080fd5b5061033f6106ac3660046141c7565b6116fd565b3480156106bd57600080fd5b5061033f6106cc36600461437b565b6117bf565b3480156106dd57600080fd5b5061033f6106ec366004614398565b611944565b3480156106fd57600080fd5b5061033f61070c3660046141c7565b611d08565b34801561071d57600080fd5b5061033f61072c36600461426b565b611dca565b34801561073d57600080fd5b50610431600a5481565b34801561075357600080fd5b506000546001600160a01b031661045f565b34801561077157600080fd5b5060105461045f906001600160a01b031681565b34801561079157600080fd5b50604080518082019091526003815262444f4f60e81b60208201526103be565b3480156107bd57600080fd5b5061033f6107cc36600461426b565b611e23565b3480156107dd57600080fd5b5061037b6107ec3660046142d0565b611e79565b3480156107fd57600080fd5b5061037b61080c3660046142d0565b611ec8565b34801561081d57600080fd5b5061043160095481565b34801561083357600080fd5b5061033f6108423660046142fc565b611ed5565b34801561085357600080fd5b5061033f61086236600461426b565b611fb4565b34801561087357600080fd5b5061037b61088236600461437b565b60296020526000908152604090205460ff1681565b3480156108a357600080fd5b5061033f6108b23660046141c7565b61200b565b3480156108c357600080fd5b5060225460ff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b909104165b604080519586526020860194909452928401919091526060830152608082015260a001610387565b34801561092857600080fd5b50610431600c5481565b34801561093e57600080fd5b5061033f61094d3660046141c7565b6120cd565b34801561095e57600080fd5b50600e5461045f906001600160a01b031681565b34801561097e57600080fd5b5061043161098d3660046143f4565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156109c457600080fd5b5061033f6109d336600461437b565b61214f565b3480156109e457600080fd5b5061033f6109f336600461426b565b612239565b348015610a0457600080fd5b5061033f610a1336600461426b565b612293565b348015610a2457600080fd5b5060225460ff610100820481169163010000008104821691600160281b8204811691600160381b8104821691600160481b909104166108f4565b6000546001600160a01b03163314610a915760405162461bcd60e51b8152600401610a8890614422565b60405180910390fd5b42601255436013556007805460ff191660011790556011805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610ae55760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b03821660009081526027602052604090205481151560ff909116151503610b255760405162461bcd60e51b8152600401610a8890614457565b8015610bed576001600160a01b03821660009081526002602052604090205415610b85576001600160a01b038216600090815260026020526040902054610b6b9061106d565b6001600160a01b0383166000908152600360205260409020555b6001600160a01b0382166000818152602760205260408120805460ff1916841515179055602a805460018101825591527fbeced09521047d05b8960b7e7bcc1d1292cf3e4b2a6b63f48335cbde5f7545d20180546001600160a01b0319169091179055610d10565b60005b602a54811015610d0e57826001600160a01b0316602a8281548110610c1757610c176144b4565b6000918252602090912001546001600160a01b031603610cfc57602a8054610c41906001906144e0565b81548110610c5157610c516144b4565b600091825260209091200154602a80546001600160a01b039092169183908110610c7d57610c7d6144b4565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600382526040808220829055602790925220805460ff19169055602a805480610cd557610cd56144f7565b600082815260209020810160001990810180546001600160a01b0319169055019055610d0e565b80610d068161450d565b915050610bf0565b505b816001600160a01b03167fcb9d59a6e9da25dee1a9ddef81481537dfd94e20b1593b58b08193bea9e9baa982604051610d4d911515815260200190565b60405180910390a25050565b6000546001600160a01b03163314610d835760405162461bcd60e51b8152600401610a8890614422565b610d92601a868686868661232f565b6040516e6c61756e636833466565732d42757960881b8152600f015b6040805191829003822060ff8881168452878116602085015286811684840152858116606085015284166080840152905190917f9a3619059270a48acdf850268d8f96db29f0cfe103bc17b5b4040a05af4d4f67919081900360a00190a25050505050565b6000610e20338484612612565b5060015b92915050565b6000546001600160a01b03163314610e545760405162461bcd60e51b8152600401610a8890614422565b6007805460ff19166001179055565b6000546001600160a01b03163314610e8d5760405162461bcd60e51b8152600401610a8890614422565b600a548103610efd5760405162461bcd60e51b815260206004820152603660248201527f4c75636b79446f6f546f6b656e3a2043616e6e6f7420757064617465206d61786044820152755478416d6f756e7420746f2073616d652076616c756560501b6064820152608401610a88565b600a5460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600a55565b6000610f3d848484612736565b610f8f8433610f8a85604051806060016040528060288152602001614743602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190612dd8565b612612565b5060019392505050565b6000546001600160a01b03163314610fc35760405162461bcd60e51b8152600401610a8890614422565b600954810361103a5760405162461bcd60e51b815260206004820152603a60248201527f4c75636b79446f6f546f6b656e3a2043616e6e6f7420757064617465206d617860448201527f57616c6c6574416d6f756e7420746f2073616d652076616c75650000000000006064820152608401610a88565b60095460405182907f6d3e257c59a11116c3e97bb144abf5ba1a6a9da6bd509192ecf0d48f7be1fc7690600090a3600955565b60006005548211156110e75760405162461bcd60e51b815260206004820152603960248201527f4c75636b79446f6f546f6b656e3a20416d6f756e74206d757374206265206c6560448201527f7373207468616e20746f74616c207265666c656374696f6e73000000000000006064820152608401610a88565b60006110f1612e12565b90506110fd818461453c565b9392505050565b600754600090819060ff1615801561111f5750601254600854115b611129574261112d565b6008545b601b546018546015549293506000926111469190614550565b6111509190614550565b601154909150600160a01b900460ff16801561119b5750806012548361117691906144e0565b108061119b5750601454601354600160b81b90910460ff169061119990436144e0565b105b156111a95760019250505090565b60009250505090565b6000546001600160a01b031633146111dc5760405162461bcd60e51b8152600401610a8890614422565b6007805460ff1916905542600855565b6000546001600160a01b031633146112165760405162461bcd60e51b8152600401610a8890614422565b306001600160a01b03166332769db66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112789190614568565b6112c45760405162461bcd60e51b815260206004820181905260248201527f4c75636b79446f6f546f6b656e3a204c61756e6368206973206e6f74207365746044820152606401610a88565b600060128190556013556011805460ff60a01b19169055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610e20918590610f8a9086612e35565b60006d31412717f0c2f24c6d1fc000000083111561138a5760405162461bcd60e51b815260206004820152602e60248201527f4c75636b79446f6f546f6b656e3a20416d6f756e74206d757374206265206c6560448201526d7373207468616e20737570706c7960901b6064820152608401610a88565b6000611394612e12565b905060006113a28286614585565b9050836113b2579150610e249050565b602b5460009083906064906113d190600160281b900460ff1689614585565b6113db919061453c565b6113e59190614585565b905060006113f382846144e0565b9450610e249350505050565b6000546001600160a01b031633146114295760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b03811660009081526028602052604090205460ff1661149f5760405162461bcd60e51b815260206004820152602560248201527f4c75636b79446f6f546f6b656e3a204163636f756e74206973206e6f7420626c60448201526418dbdad95960da1b6064820152608401610a88565b6001600160a01b038116600081815260286020526040808220805460ff19169055519091907f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba908390a350565b6000546001600160a01b031633146115165760405162461bcd60e51b8152600401610a8890614422565b600047116115845760405162461bcd60e51b815260206004820152603560248201527f4c75636b79446f6f546f6b656e3a2043616e6e6f742073656e64206d6f7265206044820152747468616e20636f6e74726163742062616c616e636560581b6064820152608401610a88565b4760006115996000546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d80600081146115e3576040519150601f19603f3d011682016040523d82523d6000602084013e6115e8565b606091505b505090508015611626576040518281527f362ae087cf4ccfc970d45b9e8ce6520f03b4eda3f9d76a70b655dc22badcca489060200160405180910390a15b5050565b6001600160a01b03811660009081526027602052604081205460ff161561166757506001600160a01b031660009081526003602052604090205490565b6001600160a01b038216600090815260026020526040902054610e249061106d565b6000546001600160a01b031633146116b35760405162461bcd60e51b8152600401610a8890614422565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146117275760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b03821660009081526025602052604090205481151560ff9091161515036117675760405162461bcd60e51b8152600401610a8890614457565b6001600160a01b038216600081815260256020908152604091829020805460ff191685151590811790915591519182527ff5133f371b17bf21ce0df4ae2c1b6e11ca7c2f27257eb55282edb1ccfd4ecb2e9101610d4d565b6000546001600160a01b031633146117e95760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b038116600090815260286020526040902054429060ff16156118665760405162461bcd60e51b815260206004820152602960248201527f4c75636b79446f6f546f6b656e3a204163636f756e7420697320616c726561646044820152681e48189b1bd8dad95960ba1b6064820152608401610a88565b601154600160a01b900460ff16156118f1576202a3006012548261188a91906144e0565b106118f15760405162461bcd60e51b815260206004820152603160248201527f4c75636b79446f6f546f6b656e3a2054696d6520746f20626c6f636b206163636044820152701bdd5b9d1cc81a185cc8195e1c1a5c9959607a1b6064820152608401610a88565b6001600160a01b038216600081815260286020526040808220805460ff1916600190811790915590519092917f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba91a35050565b6000546001600160a01b0316331461196e5760405162461bcd60e51b8152600401610a8890614422565b600e546001600160a01b03858116911614611a57576001600160a01b0384166119f05760405162461bcd60e51b815260206004820152602e60248201527f4c75636b79446f6f546f6b656e3a20546865206c697175696469747957616c6c60448201526d065742063616e6e6f7420626520360941b6064820152608401610a88565b600e546040516e1b1a5c5d5a591a5d1e55d85b1b195d608a1b81526001600160a01b0391821691861690600f016040519081900381209060008051602061472383398151915290600090a4600e80546001600160a01b0319166001600160a01b0386161790555b6010546001600160a01b03848116911614611b34576001600160a01b038316611ad35760405162461bcd60e51b815260206004820152602860248201527f4c75636b79446f6f546f6b656e3a205468652064657657616c6c65742063616e60448201526706e6f7420626520360c41b6064820152608401610a88565b6010546040516819195d95d85b1b195d60ba1b81526001600160a01b03918216918516906009016040519081900381209060008051602061472383398151915290600090a4601080546001600160a01b0319166001600160a01b0385161790555b600f546001600160a01b03838116911614611c1d576001600160a01b038216611bb65760405162461bcd60e51b815260206004820152602e60248201527f4c75636b79446f6f546f6b656e3a20546865206d61726b6574696e6757616c6c60448201526d065742063616e6e6f7420626520360941b6064820152608401610a88565b600f80546040516e1b585c9ad95d1a5b99d5d85b1b195d608a1b81526001600160a01b039182169291851691016040519081900381209060008051602061472383398151915290600090a4600f80546001600160a01b0319166001600160a01b0384161790555b6011546001600160a01b03828116911614611d02576001600160a01b038116611c9d5760405162461bcd60e51b815260206004820152602c60248201527f4c75636b79446f6f546f6b656e3a20546865206275794261636b57616c6c657460448201526b02063616e6e6f7420626520360a41b6064820152608401610a88565b6011546040516c189d5e509858dad5d85b1b195d609a1b81526001600160a01b0391821691831690600d016040519081900381209060008051602061472383398151915290600090a4601180546001600160a01b0319166001600160a01b0383161790555b50505050565b6000546001600160a01b03163314611d325760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b03821660009081526026602052604090205481151560ff909116151503611d725760405162461bcd60e51b8152600401610a8890614457565b6001600160a01b038216600081815260266020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a409101610d4d565b6000546001600160a01b03163314611df45760405162461bcd60e51b8152600401610a8890614422565b611e036017868686868661232f565b6040516e6c61756e636832466565732d42757960881b8152600f01610dae565b6000546001600160a01b03163314611e4d5760405162461bcd60e51b8152600401610a8890614422565b611e5c6020868686868661232f565b6040516b62617365466565732d42757960a01b8152600c01610dae565b6000610e203384610f8a8560405180606001604052806025815260200161478b602591393360009081526004602090815260408083206001600160a01b038d1684529091529020549190612dd8565b6000610e20338484612736565b6000546001600160a01b03163314611eff5760405162461bcd60e51b8152600401610a8890614422565b600c548103611f815760405162461bcd60e51b815260206004820152604260248201527f4c75636b79446f6f546f6b656e3a2043616e6e6f7420757064617465206d696e60448201527f696d756d546f6b656e734265666f72655377617020746f2073616d652076616c606482015261756560f01b608482015260a401610a88565b600c5460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600c55565b6000546001600160a01b03163314611fde5760405162461bcd60e51b8152600401610a8890614422565b611fed60208686868686612e94565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d01610dae565b6000546001600160a01b031633146120355760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b03821660009081526024602052604090205481151560ff9091161515036120755760405162461bcd60e51b8152600401610a8890614457565b6001600160a01b038216600081815260246020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b9101610d4d565b6000546001600160a01b031633146120f75760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527fcb9f97b7b4b41413e5c8d418a8cf9a88db1cf34dee66b213d070faf881d9d3509101610d4d565b6000546001600160a01b031633146121795760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b0381166121de5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a88565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146122635760405162461bcd60e51b8152600401610a8890614422565b612272601a8686868686612e94565b6040516f1b185d5b98da0cd199595ccb54d95b1b60821b8152601001610dae565b6000546001600160a01b031633146122bd5760405162461bcd60e51b8152600401610a8890614422565b6122cc60178686868686612e94565b6040516f1b185d5b98da0c9199595ccb54d95b1b60821b8152601001610dae565b60006110fd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613194565b600286015460ff8681169116146123b057604051706c69717569646974794665654f6e42757960781b815260110160405190819003812060028801548854919260ff918216929189169160008051602061476b833981519152916123969160481b906145a4565b60405180910390a460028601805460ff191660ff87161790555b600286015460ff85811662010000909204161461244457604051706d61726b6574696e674665654f6e42757960781b815260110160405190819003812060028801548854919260ff620100009092048216929188169160008051602061476b833981519152916124239160481b906145a4565b60405180910390a460028601805462ff000019166201000060ff8716021790555b600286015460ff848116600160201b90920416146124d6576040516a6465764665654f6e42757960a81b8152600b0160405190819003812060028801548854919260ff600160201b9092048216929187169160008051602061476b833981519152916124b39160481b906145a4565b60405180910390a460028601805460ff60201b1916600160201b60ff8616021790555b600286015460ff838116600160301b909204161461256f576040516e6275794261636b4665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160301b9092048216929186169160008051602061476b833981519152916125499160481b906145a4565b60405180910390a460028601805466ff0000000000001916600160301b60ff8516021790555b600286015460ff828116600160401b909204161461260a576040516e686f6c646572734665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160401b9092048216929185169160008051602061476b833981519152916125e29160481b906145a4565b60405180910390a460028601805468ff00000000000000001916600160401b60ff8416021790555b505050505050565b6001600160a01b0383166126745760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a88565b6001600160a01b0382166126d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a88565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661279a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a88565b6001600160a01b0382166127fc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a88565b6000811161285e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a88565b6128678361162a565b8111156128cf5760405162461bcd60e51b815260206004820152603060248201527f4c75636b79446f6f546f6b656e3a2043616e6e6f74207472616e73666572206d60448201526f6f7265207468616e2062616c616e636560801b6064820152608401610a88565b6001600160a01b03838116600090815260296020908152604080832054938616835280832054815163193b4edb60e11b8152915160ff95861695909116939230926332769db692600480830193928290030181865afa158015612936573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295a9190614568565b6001600160a01b03871660009081526023602052604090205490915060ff1615801561299f57506001600160a01b03851660009081526023602052604090205460ff16155b15612bf35760075460ff16612a0c5760405162461bcd60e51b815260206004820152602d60248201527f4c75636b79446f6f546f6b656e3a2054726164696e672069732063757272656e60448201526c3a363c903234b9b0b13632b21760991b6064820152608401610a88565b6001600160a01b03851660009081526028602052604090205460ff1615612a455760405162461bcd60e51b8152600401610a88906145bb565b6001600160a01b03861660009081526028602052604090205460ff1615612a7e5760405162461bcd60e51b8152600401610a88906145bb565b6001600160a01b03851660009081526026602052604090205460ff16158015612ac057506001600160a01b03861660009081526026602052604090205460ff16155b15612b3d57600a54841115612b3d5760405162461bcd60e51b815260206004820152603760248201527f4c75636b79446f6f546f6b656e3a205472616e7366657220616d6f756e74206560448201527f78636565647320746865206d61785478416d6f756e742e0000000000000000006064820152608401610a88565b6001600160a01b03851660009081526025602052604090205460ff16612bf35760095484612b6a8761162a565b612b749190614550565b1115612bf35760405162461bcd60e51b815260206004820152604260248201527f4c75636b79446f6f546f6b656e3a2045787065637465642077616c6c6574206160448201527f6d6f756e74206578636565647320746865206d617857616c6c6574416d6f756e6064820152613a1760f11b608482015260a401610a88565b612bfe8383836131c2565b6000600c54612c0c3061162a565b600754911115915060ff168015612c205750805b8015612c2f5750600b5460ff16155b8015612c465750602b54600160281b900460ff1615155b8015612c6a57506001600160a01b03861660009081526029602052604090205460ff165b8015612c845750600e546001600160a01b03888116911614155b8015612c9e5750600e546001600160a01b03878116911614155b8015612cb857506010546001600160a01b03888116911614155b8015612cd257506010546001600160a01b03878116911614155b8015612cec5750600f546001600160a01b03888116911614155b8015612d065750600f546001600160a01b03878116911614155b8015612d2057506011546001600160a01b03888116911614155b8015612d3a57506011546001600160a01b03878116911614155b15612d5f57600b805460ff19166001179055612d54613795565b600b805460ff191690555b600b5460009060ff16158015612d77575060075460ff165b6001600160a01b03891660009081526024602052604090205490915060ff1680612db957506001600160a01b03871660009081526024602052604090205460ff165b15612dc2575060005b612dce88888884613a67565b5050505050505050565b60008184841115612dfc5760405162461bcd60e51b8152600401610a889190614200565b506000612e0984866144e0565b95945050505050565b6000806000612e1f613c38565b9092509050612e2e82826122ed565b9250505090565b600080612e428385614550565b9050838110156110fd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a88565b600286015460ff8681166101009092041614612f2557604051711b1a5c5d5a591a5d1e51995953db94d95b1b60721b815260120160405190819003812060028801548854919260ff6101009092048216929189169160008051602061476b83398151915291612f069160481b906145a4565b60405180910390a460028601805461ff00191661010060ff8816021790555b600286015460ff85811663010000009092041614612fbe57604051711b585c9ad95d1a5b99d1995953db94d95b1b60721b815260120160405190819003812060028801548854919260ff63010000009092048216929188169160008051602061476b83398151915291612f9b9160481b906145a4565b60405180910390a460028601805463ff0000001916630100000060ff8716021790555b600286015460ff848116600160281b9092041614613053576040516b19195d91995953db94d95b1b60a21b8152600c0160405190819003812060028801548854919260ff600160281b9092048216929187169160008051602061476b8339815191529161302e9160481b906145a4565b60405180910390a460028601805465ff00000000001916600160281b60ff8616021790555b600286015460ff838116600160381b90920416146130ee576040516f189d5e509858dad1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160381b9092048216929186169160008051602061476b833981519152916130c79160481b906145a4565b60405180910390a460028601805467ff000000000000001916600160381b60ff8516021790555b600286015460ff828116600160481b909204161461260a576040516f1a1bdb19195c9cd1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160481b9092048216929185169160008051602061476b833981519152916131629160481b906145a4565b60405180910390a460028601805460ff8316600160481b0269ff00000000000000000019909116179055505050505050565b600081836131b55760405162461bcd60e51b8152600401610a889190614200565b506000612e09848661453c565b6000601354436131d291906144e0565b60075490915060009060ff161580156131ee5750601254600854115b6131f857426131fc565b6008545b905060006012548261320e91906144e0565b602b805464ffffffffff191690559050851561345157602254602b805460ff80841661ffff1990921691909117610100600160201b8086048416919091029190911763ffff000019166201000080860484160263ff000000191617600160301b850483166301000000021760ff60201b1916600160401b9094049190911602919091179055831561345157601154600160a01b900460ff1680156132bd5750601454600160b81b900460ff1683105b1561333657601654602b805460ff80841661ffff1990921691909117610100600160201b8086048416919091029190911763ffff000019166201000080860484160263ff000000191617600160301b850483166301000000021760ff60201b1916600160401b9094049190911602919091179055613451565b601154600160a01b900460ff16801561335157506018548111155b80156133685750601454600160b81b900460ff1683115b156133e157601954602b805460ff80841661ffff1990921691909117610100600160201b8086048416919091029190911763ffff000019166201000080860484160263ff000000191617600160301b850483166301000000021760ff60201b1916600160401b9094049190911602919091179055613451565b601c54602b805460ff80841661ffff1990921691909117610100600160201b8086048416919091029190911763ffff000019166201000080860484160263ff000000191617600160301b850483166301000000021760ff60201b1916600160401b90940491909116029190911790555b84156136a057602254602b805461010080840460ff90811661ffff1990931692909217600160281b85048316919091021763ffff0000191663010000008085048316620100000263ff000000191691909117600160381b85048316919091021760ff60201b1916600160481b90930416600160201b0291909117905583156136a057601154600160a01b900460ff1680156134f75750601454600160b81b900460ff1683105b1561357757601654602b805461010080840460ff90811661ffff1990931692909217600160281b85048316919091021763ffff0000191663010000008085048316620100000263ff000000191691909117600160381b85048316919091021760ff60201b1916600160481b90930416600160201b029190911790556136a0565b601154600160a01b900460ff16801561359257506018548111155b80156135a95750601454600160b81b900460ff1683115b1561362957601954602b805461010080840460ff90811661ffff1990931692909217600160281b85048316919091021763ffff0000191663010000008085048316620100000263ff000000191691909117600160381b85048316919091021760ff60201b1916600160481b90930416600160201b029190911790556136a0565b601c54602b805461010080840460ff90811661ffff1990931692909217600160281b85048316919091021763ffff0000191663010000008085048316620100000263ff000000191691909117600160381b85048316919091021760ff60201b1916600160481b90930416600160201b029190911790555b602b5460ff600160201b82048116916301000000810482169161010082048116916136d491620100008204811691166145fc565b6136de91906145fc565b6136e891906145fc565b6136f291906145fc565b602b805460ff928316600160281b90810265ff0000000000198316811793849055604080519186169386169390931781526201000084048516602082015261010084048516818401526301000000840485166060820152600160201b840485166080820152920490921660a082015290517f6c6977cb51242ec6e05aba0e2a29a5292ed1a8a5cffa3b87ff66395b7997d6d29181900360c00190a1505050505050565b60006137a03061162a565b602b54909150479060ff600160281b820481169181811691620100008204811691610100810482169163010000009091041660006002866137e1878b614585565b6137eb919061453c565b6137f5919061453c565b90506000613803828a6144e0565b905061380e81613de9565b600061381a89476144e0565b602b549091506000906138329060029060ff16614621565b602b546138499190600160281b900460ff16614643565b602b5460ff91821692506000916002918491613866911686614585565b613870919061453c565b61387a919061453c565b602b54909150600090839061389790610100900460ff1686614585565b6138a1919061453c565b602b5490915060009084906138c0906301000000900460ff1687614585565b6138ca919061453c565b90506000816138d98486614550565b6138e39190614550565b6138ed90876144e0565b600f546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015613928573d6000803e3d6000fd5b506010546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015613963573d6000803e3d6000fd5b506011546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561399e573d6000803e3d6000fd5b5087156139f1576139af8885613f3b565b60408051888152602081018690529081018990527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b5050602b805460ff98891663010000000263ff000000199a8a16610100029a909a1663ff00ff00199b8a16620100000262ff00ff199e8b16600160281b029e909e1665ff0000ff00ff19909216919091179b9098169a909a179a909a179790971694909417949094179095555050505050505050565b6000806000613a768585613fef565b925092509250600080600080613a95898787613a90612e12565b6140b9565b6001600160a01b038f166000908152602760205260409020549397509195509350915060ff1615613afe576001600160a01b038b16600090815260036020526040902054613ae4908a906144e0565b6001600160a01b038c166000908152600360205260409020555b6001600160a01b038a1660009081526027602052604090205460ff1615613b5d576001600160a01b038a16600090815260036020526040902054613b43908890614550565b6001600160a01b038b166000908152600360205260409020555b6001600160a01b038b16600090815260026020526040902054613b819085906144e0565b6001600160a01b03808d1660009081526002602052604080822093909355908c1681522054613bb1908490614550565b6001600160a01b038b16600090815260026020526040902055613bd48186614111565b613bde8287614176565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef89604051613c2391815260200190565b60405180910390a35050505050505050505050565b60055460009081906d31412717f0c2f24c6d1fc0000000825b602a54811015613da1578260026000602a8481548110613c7357613c736144b4565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613cde57508160036000602a8481548110613cb757613cb76144b4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613cff575050600554936d31412717f0c2f24c6d1fc00000009350915050565b60026000602a8381548110613d1657613d166144b4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054613d4590846144e0565b925060036000602a8381548110613d5e57613d5e6144b4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054613d8d90836144e0565b915080613d998161450d565b915050613c51565b506d31412717f0c2f24c6d1fc0000000600554613dbe919061453c565b821015613de0575050600554926d31412717f0c2f24c6d1fc000000092509050565b90939092509050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613e1e57613e1e6144b4565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613e77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e9b9190614666565b81600181518110613eae57613eae6144b4565b6001600160a01b039283166020918202929092010152600154613ed49130911684612612565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790613f0d908590600090869030904290600401614683565b600060405180830381600087803b158015613f2757600080fd5b505af115801561260a573d6000803e3d6000fd5b600154613f539030906001600160a01b031684612612565b600154600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015613fc3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613fe891906146f4565b5050505050565b600080600083614007575083915060009050806140b2565b602b5460009060649061402490600160201b900460ff1688614585565b61402e919061453c565b602b5490915060009060649060ff63010000008204811691620100008104821691614061916101008104821691166145fc565b61406b91906145fc565b61407591906145fc565b6140829060ff1689614585565b61408c919061453c565b9050600061409a8284614550565b6140a490896144e0565b955091935091506140b29050565b9250925092565b6000808080806140c9868a614585565b905060006140d7878a614585565b905060006140e5888a614585565b905060006140f38284614550565b6140fd90856144e0565b939c939b5091995097509095505050505050565b3060009081526027602052604090205460ff161561414e573060009081526003602052604081208054839290614148908490614550565b90915550505b306000908152600260205260408120805484929061416d908490614550565b90915550505050565b816005600082825461418891906144e0565b92505081905550806006600082825461416d9190614550565b6001600160a01b03811681146141b657600080fd5b50565b80151581146141b657600080fd5b600080604083850312156141da57600080fd5b82356141e5816141a1565b915060208301356141f5816141b9565b809150509250929050565b600060208083528351808285015260005b8181101561422d57858101830151858201604001528201614211565b8181111561423f576000604083870101525b50601f01601f1916929092016040019392505050565b803560ff8116811461426657600080fd5b919050565b600080600080600060a0868803121561428357600080fd5b61428c86614255565b945061429a60208701614255565b93506142a860408701614255565b92506142b660608701614255565b91506142c460808701614255565b90509295509295909350565b600080604083850312156142e357600080fd5b82356142ee816141a1565b946020939093013593505050565b60006020828403121561430e57600080fd5b5035919050565b60008060006060848603121561432a57600080fd5b8335614335816141a1565b92506020840135614345816141a1565b929592945050506040919091013590565b6000806040838503121561436957600080fd5b8235915060208301356141f5816141b9565b60006020828403121561438d57600080fd5b81356110fd816141a1565b600080600080608085870312156143ae57600080fd5b84356143b9816141a1565b935060208501356143c9816141a1565b925060408501356143d9816141a1565b915060608501356143e9816141a1565b939692955090935050565b6000806040838503121561440757600080fd5b8235614412816141a1565b915060208301356141f5816141a1565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526039908201527f4c75636b79446f6f546f6b656e3a204163636f756e7420697320616c7265616460408201527f79207468652076616c7565206f6620276578636c756465642700000000000000606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156144f2576144f26144ca565b500390565b634e487b7160e01b600052603160045260246000fd5b60006001820161451f5761451f6144ca565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261454b5761454b614526565b500490565b60008219821115614563576145636144ca565b500190565b60006020828403121561457a57600080fd5b81516110fd816141b9565b600081600019048311821515161561459f5761459f6144ca565b500290565b68ffffffffffffffffff1991909116815260200190565b60208082526021908201527f4c75636b79446f6f546f6b656e3a204163636f756e7420697320626c6f636b656040820152601960fa1b606082015260800190565b600060ff821660ff84168060ff03821115614619576146196144ca565b019392505050565b600060ff83168061463457614634614526565b8060ff84160491505092915050565b600060ff821660ff84168082101561465d5761465d6144ca565b90039392505050565b60006020828403121561467857600080fd5b81516110fd816141a1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156146d35784516001600160a01b0316835293830193918301916001016146ae565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561470957600080fd5b835192506020840151915060408401519050925092509256fe4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636500edc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203084574085aba8adf8bd6fa057454a217e2339c100aff7233b3e43e668854fbd64736f6c634300080d0033

Deployed Bytecode

0x60806040526004361061031e5760003560e01c806375f0a874116101ab578063aa4bde28116100f7578063d322157611610095578063f2fde38b1161006f578063f2fde38b146109b8578063f4b587c1146109d8578063fc960745146109f8578063fe01753514610a1857600080fd5b8063d322157614610932578063d469801614610952578063dd62ed3e1461097257600080fd5b8063b62496f5116100d1578063b62496f514610867578063c024666814610897578063cd43e228146108b7578063d2d7ad831461091c57600080fd5b8063aa4bde2814610811578063aee50b1e14610827578063b1ba39ea1461084757600080fd5b80638c0b5e221161016457806395d89b411161013e57806395d89b41146107855780639fad9683146107b1578063a457c2d7146107d1578063a9059cbb146107f157600080fd5b80638c0b5e22146107315780638da5cb5b146107475780638ea5220f1461076557600080fd5b806375f0a87414610671578063781edb3c146106915780637c0a893d146106b157806383672f3e146106d1578063880bcbc1146106f157806389886efa1461071157600080fd5b806327a14fc21161026a57806339509351116102235780634d78fdc6116101fd5780634d78fdc61461060757806366164f6f1461062757806370a082311461063c578063715018a61461065c57600080fd5b806339509351146105935780634549b039146105b357806349bd5a5e146105d357600080fd5b806327a14fc2146104f85780632d83811914610518578063313ce5671461053857806332769db61461055457806334cf1fea14610569578063392c695e1461057e57600080fd5b80630bd05b69116102d757806318160ddd116102b157806318160ddd146104775780631cd348c0146104985780631e293c10146104b857806323b872dd146104d857600080fd5b80630bd05b691461040b57806313114a9d146104205780631694505e1461043f57600080fd5b806301339c211461032a5780630483f7a014610341578063064a59d01461036157806306fdde031461039057806307f8f43d146103cb578063095ea7b3146103eb57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610a5e565b005b34801561034d57600080fd5b5061033f61035c3660046141c7565b610abb565b34801561036d57600080fd5b5060075461037b9060ff1681565b60405190151581526020015b60405180910390f35b34801561039c57600080fd5b506040805180820190915260098152684c75636b7920446f6f60b81b60208201525b6040516103879190614200565b3480156103d757600080fd5b5061033f6103e636600461426b565b610d59565b3480156103f757600080fd5b5061037b6104063660046142d0565b610e13565b34801561041757600080fd5b5061033f610e2a565b34801561042c57600080fd5b506006545b604051908152602001610387565b34801561044b57600080fd5b5060015461045f906001600160a01b031681565b6040516001600160a01b039091168152602001610387565b34801561048357600080fd5b506d31412717f0c2f24c6d1fc0000000610431565b3480156104a457600080fd5b5060115461045f906001600160a01b031681565b3480156104c457600080fd5b5061033f6104d33660046142fc565b610e63565b3480156104e457600080fd5b5061037b6104f3366004614315565b610f30565b34801561050457600080fd5b5061033f6105133660046142fc565b610f99565b34801561052457600080fd5b506104316105333660046142fc565b61106d565b34801561054457600080fd5b5060405160128152602001610387565b34801561056057600080fd5b5061037b611104565b34801561057557600080fd5b5061033f6111b2565b34801561058a57600080fd5b5061033f6111ec565b34801561059f57600080fd5b5061037b6105ae3660046142d0565b6112dd565b3480156105bf57600080fd5b506104316105ce366004614356565b611313565b3480156105df57600080fd5b5061045f7f000000000000000000000000009297eb227018ea29fd278a21cc7842d048242881565b34801561061357600080fd5b5061033f61062236600461437b565b6113ff565b34801561063357600080fd5b5061033f6114ec565b34801561064857600080fd5b5061043161065736600461437b565b61162a565b34801561066857600080fd5b5061033f611689565b34801561067d57600080fd5b50600f5461045f906001600160a01b031681565b34801561069d57600080fd5b5061033f6106ac3660046141c7565b6116fd565b3480156106bd57600080fd5b5061033f6106cc36600461437b565b6117bf565b3480156106dd57600080fd5b5061033f6106ec366004614398565b611944565b3480156106fd57600080fd5b5061033f61070c3660046141c7565b611d08565b34801561071d57600080fd5b5061033f61072c36600461426b565b611dca565b34801561073d57600080fd5b50610431600a5481565b34801561075357600080fd5b506000546001600160a01b031661045f565b34801561077157600080fd5b5060105461045f906001600160a01b031681565b34801561079157600080fd5b50604080518082019091526003815262444f4f60e81b60208201526103be565b3480156107bd57600080fd5b5061033f6107cc36600461426b565b611e23565b3480156107dd57600080fd5b5061037b6107ec3660046142d0565b611e79565b3480156107fd57600080fd5b5061037b61080c3660046142d0565b611ec8565b34801561081d57600080fd5b5061043160095481565b34801561083357600080fd5b5061033f6108423660046142fc565b611ed5565b34801561085357600080fd5b5061033f61086236600461426b565b611fb4565b34801561087357600080fd5b5061037b61088236600461437b565b60296020526000908152604090205460ff1681565b3480156108a357600080fd5b5061033f6108b23660046141c7565b61200b565b3480156108c357600080fd5b5060225460ff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b909104165b604080519586526020860194909452928401919091526060830152608082015260a001610387565b34801561092857600080fd5b50610431600c5481565b34801561093e57600080fd5b5061033f61094d3660046141c7565b6120cd565b34801561095e57600080fd5b50600e5461045f906001600160a01b031681565b34801561097e57600080fd5b5061043161098d3660046143f4565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156109c457600080fd5b5061033f6109d336600461437b565b61214f565b3480156109e457600080fd5b5061033f6109f336600461426b565b612239565b348015610a0457600080fd5b5061033f610a1336600461426b565b612293565b348015610a2457600080fd5b5060225460ff610100820481169163010000008104821691600160281b8204811691600160381b8104821691600160481b909104166108f4565b6000546001600160a01b03163314610a915760405162461bcd60e51b8152600401610a8890614422565b60405180910390fd5b42601255436013556007805460ff191660011790556011805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610ae55760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b03821660009081526027602052604090205481151560ff909116151503610b255760405162461bcd60e51b8152600401610a8890614457565b8015610bed576001600160a01b03821660009081526002602052604090205415610b85576001600160a01b038216600090815260026020526040902054610b6b9061106d565b6001600160a01b0383166000908152600360205260409020555b6001600160a01b0382166000818152602760205260408120805460ff1916841515179055602a805460018101825591527fbeced09521047d05b8960b7e7bcc1d1292cf3e4b2a6b63f48335cbde5f7545d20180546001600160a01b0319169091179055610d10565b60005b602a54811015610d0e57826001600160a01b0316602a8281548110610c1757610c176144b4565b6000918252602090912001546001600160a01b031603610cfc57602a8054610c41906001906144e0565b81548110610c5157610c516144b4565b600091825260209091200154602a80546001600160a01b039092169183908110610c7d57610c7d6144b4565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600382526040808220829055602790925220805460ff19169055602a805480610cd557610cd56144f7565b600082815260209020810160001990810180546001600160a01b0319169055019055610d0e565b80610d068161450d565b915050610bf0565b505b816001600160a01b03167fcb9d59a6e9da25dee1a9ddef81481537dfd94e20b1593b58b08193bea9e9baa982604051610d4d911515815260200190565b60405180910390a25050565b6000546001600160a01b03163314610d835760405162461bcd60e51b8152600401610a8890614422565b610d92601a868686868661232f565b6040516e6c61756e636833466565732d42757960881b8152600f015b6040805191829003822060ff8881168452878116602085015286811684840152858116606085015284166080840152905190917f9a3619059270a48acdf850268d8f96db29f0cfe103bc17b5b4040a05af4d4f67919081900360a00190a25050505050565b6000610e20338484612612565b5060015b92915050565b6000546001600160a01b03163314610e545760405162461bcd60e51b8152600401610a8890614422565b6007805460ff19166001179055565b6000546001600160a01b03163314610e8d5760405162461bcd60e51b8152600401610a8890614422565b600a548103610efd5760405162461bcd60e51b815260206004820152603660248201527f4c75636b79446f6f546f6b656e3a2043616e6e6f7420757064617465206d61786044820152755478416d6f756e7420746f2073616d652076616c756560501b6064820152608401610a88565b600a5460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600a55565b6000610f3d848484612736565b610f8f8433610f8a85604051806060016040528060288152602001614743602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190612dd8565b612612565b5060019392505050565b6000546001600160a01b03163314610fc35760405162461bcd60e51b8152600401610a8890614422565b600954810361103a5760405162461bcd60e51b815260206004820152603a60248201527f4c75636b79446f6f546f6b656e3a2043616e6e6f7420757064617465206d617860448201527f57616c6c6574416d6f756e7420746f2073616d652076616c75650000000000006064820152608401610a88565b60095460405182907f6d3e257c59a11116c3e97bb144abf5ba1a6a9da6bd509192ecf0d48f7be1fc7690600090a3600955565b60006005548211156110e75760405162461bcd60e51b815260206004820152603960248201527f4c75636b79446f6f546f6b656e3a20416d6f756e74206d757374206265206c6560448201527f7373207468616e20746f74616c207265666c656374696f6e73000000000000006064820152608401610a88565b60006110f1612e12565b90506110fd818461453c565b9392505050565b600754600090819060ff1615801561111f5750601254600854115b611129574261112d565b6008545b601b546018546015549293506000926111469190614550565b6111509190614550565b601154909150600160a01b900460ff16801561119b5750806012548361117691906144e0565b108061119b5750601454601354600160b81b90910460ff169061119990436144e0565b105b156111a95760019250505090565b60009250505090565b6000546001600160a01b031633146111dc5760405162461bcd60e51b8152600401610a8890614422565b6007805460ff1916905542600855565b6000546001600160a01b031633146112165760405162461bcd60e51b8152600401610a8890614422565b306001600160a01b03166332769db66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112789190614568565b6112c45760405162461bcd60e51b815260206004820181905260248201527f4c75636b79446f6f546f6b656e3a204c61756e6368206973206e6f74207365746044820152606401610a88565b600060128190556013556011805460ff60a01b19169055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610e20918590610f8a9086612e35565b60006d31412717f0c2f24c6d1fc000000083111561138a5760405162461bcd60e51b815260206004820152602e60248201527f4c75636b79446f6f546f6b656e3a20416d6f756e74206d757374206265206c6560448201526d7373207468616e20737570706c7960901b6064820152608401610a88565b6000611394612e12565b905060006113a28286614585565b9050836113b2579150610e249050565b602b5460009083906064906113d190600160281b900460ff1689614585565b6113db919061453c565b6113e59190614585565b905060006113f382846144e0565b9450610e249350505050565b6000546001600160a01b031633146114295760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b03811660009081526028602052604090205460ff1661149f5760405162461bcd60e51b815260206004820152602560248201527f4c75636b79446f6f546f6b656e3a204163636f756e74206973206e6f7420626c60448201526418dbdad95960da1b6064820152608401610a88565b6001600160a01b038116600081815260286020526040808220805460ff19169055519091907f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba908390a350565b6000546001600160a01b031633146115165760405162461bcd60e51b8152600401610a8890614422565b600047116115845760405162461bcd60e51b815260206004820152603560248201527f4c75636b79446f6f546f6b656e3a2043616e6e6f742073656e64206d6f7265206044820152747468616e20636f6e74726163742062616c616e636560581b6064820152608401610a88565b4760006115996000546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d80600081146115e3576040519150601f19603f3d011682016040523d82523d6000602084013e6115e8565b606091505b505090508015611626576040518281527f362ae087cf4ccfc970d45b9e8ce6520f03b4eda3f9d76a70b655dc22badcca489060200160405180910390a15b5050565b6001600160a01b03811660009081526027602052604081205460ff161561166757506001600160a01b031660009081526003602052604090205490565b6001600160a01b038216600090815260026020526040902054610e249061106d565b6000546001600160a01b031633146116b35760405162461bcd60e51b8152600401610a8890614422565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146117275760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b03821660009081526025602052604090205481151560ff9091161515036117675760405162461bcd60e51b8152600401610a8890614457565b6001600160a01b038216600081815260256020908152604091829020805460ff191685151590811790915591519182527ff5133f371b17bf21ce0df4ae2c1b6e11ca7c2f27257eb55282edb1ccfd4ecb2e9101610d4d565b6000546001600160a01b031633146117e95760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b038116600090815260286020526040902054429060ff16156118665760405162461bcd60e51b815260206004820152602960248201527f4c75636b79446f6f546f6b656e3a204163636f756e7420697320616c726561646044820152681e48189b1bd8dad95960ba1b6064820152608401610a88565b601154600160a01b900460ff16156118f1576202a3006012548261188a91906144e0565b106118f15760405162461bcd60e51b815260206004820152603160248201527f4c75636b79446f6f546f6b656e3a2054696d6520746f20626c6f636b206163636044820152701bdd5b9d1cc81a185cc8195e1c1a5c9959607a1b6064820152608401610a88565b6001600160a01b038216600081815260286020526040808220805460ff1916600190811790915590519092917f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba91a35050565b6000546001600160a01b0316331461196e5760405162461bcd60e51b8152600401610a8890614422565b600e546001600160a01b03858116911614611a57576001600160a01b0384166119f05760405162461bcd60e51b815260206004820152602e60248201527f4c75636b79446f6f546f6b656e3a20546865206c697175696469747957616c6c60448201526d065742063616e6e6f7420626520360941b6064820152608401610a88565b600e546040516e1b1a5c5d5a591a5d1e55d85b1b195d608a1b81526001600160a01b0391821691861690600f016040519081900381209060008051602061472383398151915290600090a4600e80546001600160a01b0319166001600160a01b0386161790555b6010546001600160a01b03848116911614611b34576001600160a01b038316611ad35760405162461bcd60e51b815260206004820152602860248201527f4c75636b79446f6f546f6b656e3a205468652064657657616c6c65742063616e60448201526706e6f7420626520360c41b6064820152608401610a88565b6010546040516819195d95d85b1b195d60ba1b81526001600160a01b03918216918516906009016040519081900381209060008051602061472383398151915290600090a4601080546001600160a01b0319166001600160a01b0385161790555b600f546001600160a01b03838116911614611c1d576001600160a01b038216611bb65760405162461bcd60e51b815260206004820152602e60248201527f4c75636b79446f6f546f6b656e3a20546865206d61726b6574696e6757616c6c60448201526d065742063616e6e6f7420626520360941b6064820152608401610a88565b600f80546040516e1b585c9ad95d1a5b99d5d85b1b195d608a1b81526001600160a01b039182169291851691016040519081900381209060008051602061472383398151915290600090a4600f80546001600160a01b0319166001600160a01b0384161790555b6011546001600160a01b03828116911614611d02576001600160a01b038116611c9d5760405162461bcd60e51b815260206004820152602c60248201527f4c75636b79446f6f546f6b656e3a20546865206275794261636b57616c6c657460448201526b02063616e6e6f7420626520360a41b6064820152608401610a88565b6011546040516c189d5e509858dad5d85b1b195d609a1b81526001600160a01b0391821691831690600d016040519081900381209060008051602061472383398151915290600090a4601180546001600160a01b0319166001600160a01b0383161790555b50505050565b6000546001600160a01b03163314611d325760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b03821660009081526026602052604090205481151560ff909116151503611d725760405162461bcd60e51b8152600401610a8890614457565b6001600160a01b038216600081815260266020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a409101610d4d565b6000546001600160a01b03163314611df45760405162461bcd60e51b8152600401610a8890614422565b611e036017868686868661232f565b6040516e6c61756e636832466565732d42757960881b8152600f01610dae565b6000546001600160a01b03163314611e4d5760405162461bcd60e51b8152600401610a8890614422565b611e5c6020868686868661232f565b6040516b62617365466565732d42757960a01b8152600c01610dae565b6000610e203384610f8a8560405180606001604052806025815260200161478b602591393360009081526004602090815260408083206001600160a01b038d1684529091529020549190612dd8565b6000610e20338484612736565b6000546001600160a01b03163314611eff5760405162461bcd60e51b8152600401610a8890614422565b600c548103611f815760405162461bcd60e51b815260206004820152604260248201527f4c75636b79446f6f546f6b656e3a2043616e6e6f7420757064617465206d696e60448201527f696d756d546f6b656e734265666f72655377617020746f2073616d652076616c606482015261756560f01b608482015260a401610a88565b600c5460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600c55565b6000546001600160a01b03163314611fde5760405162461bcd60e51b8152600401610a8890614422565b611fed60208686868686612e94565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d01610dae565b6000546001600160a01b031633146120355760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b03821660009081526024602052604090205481151560ff9091161515036120755760405162461bcd60e51b8152600401610a8890614457565b6001600160a01b038216600081815260246020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b9101610d4d565b6000546001600160a01b031633146120f75760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527fcb9f97b7b4b41413e5c8d418a8cf9a88db1cf34dee66b213d070faf881d9d3509101610d4d565b6000546001600160a01b031633146121795760405162461bcd60e51b8152600401610a8890614422565b6001600160a01b0381166121de5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a88565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146122635760405162461bcd60e51b8152600401610a8890614422565b612272601a8686868686612e94565b6040516f1b185d5b98da0cd199595ccb54d95b1b60821b8152601001610dae565b6000546001600160a01b031633146122bd5760405162461bcd60e51b8152600401610a8890614422565b6122cc60178686868686612e94565b6040516f1b185d5b98da0c9199595ccb54d95b1b60821b8152601001610dae565b60006110fd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613194565b600286015460ff8681169116146123b057604051706c69717569646974794665654f6e42757960781b815260110160405190819003812060028801548854919260ff918216929189169160008051602061476b833981519152916123969160481b906145a4565b60405180910390a460028601805460ff191660ff87161790555b600286015460ff85811662010000909204161461244457604051706d61726b6574696e674665654f6e42757960781b815260110160405190819003812060028801548854919260ff620100009092048216929188169160008051602061476b833981519152916124239160481b906145a4565b60405180910390a460028601805462ff000019166201000060ff8716021790555b600286015460ff848116600160201b90920416146124d6576040516a6465764665654f6e42757960a81b8152600b0160405190819003812060028801548854919260ff600160201b9092048216929187169160008051602061476b833981519152916124b39160481b906145a4565b60405180910390a460028601805460ff60201b1916600160201b60ff8616021790555b600286015460ff838116600160301b909204161461256f576040516e6275794261636b4665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160301b9092048216929186169160008051602061476b833981519152916125499160481b906145a4565b60405180910390a460028601805466ff0000000000001916600160301b60ff8516021790555b600286015460ff828116600160401b909204161461260a576040516e686f6c646572734665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160401b9092048216929185169160008051602061476b833981519152916125e29160481b906145a4565b60405180910390a460028601805468ff00000000000000001916600160401b60ff8416021790555b505050505050565b6001600160a01b0383166126745760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a88565b6001600160a01b0382166126d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a88565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661279a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a88565b6001600160a01b0382166127fc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a88565b6000811161285e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a88565b6128678361162a565b8111156128cf5760405162461bcd60e51b815260206004820152603060248201527f4c75636b79446f6f546f6b656e3a2043616e6e6f74207472616e73666572206d60448201526f6f7265207468616e2062616c616e636560801b6064820152608401610a88565b6001600160a01b03838116600090815260296020908152604080832054938616835280832054815163193b4edb60e11b8152915160ff95861695909116939230926332769db692600480830193928290030181865afa158015612936573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295a9190614568565b6001600160a01b03871660009081526023602052604090205490915060ff1615801561299f57506001600160a01b03851660009081526023602052604090205460ff16155b15612bf35760075460ff16612a0c5760405162461bcd60e51b815260206004820152602d60248201527f4c75636b79446f6f546f6b656e3a2054726164696e672069732063757272656e60448201526c3a363c903234b9b0b13632b21760991b6064820152608401610a88565b6001600160a01b03851660009081526028602052604090205460ff1615612a455760405162461bcd60e51b8152600401610a88906145bb565b6001600160a01b03861660009081526028602052604090205460ff1615612a7e5760405162461bcd60e51b8152600401610a88906145bb565b6001600160a01b03851660009081526026602052604090205460ff16158015612ac057506001600160a01b03861660009081526026602052604090205460ff16155b15612b3d57600a54841115612b3d5760405162461bcd60e51b815260206004820152603760248201527f4c75636b79446f6f546f6b656e3a205472616e7366657220616d6f756e74206560448201527f78636565647320746865206d61785478416d6f756e742e0000000000000000006064820152608401610a88565b6001600160a01b03851660009081526025602052604090205460ff16612bf35760095484612b6a8761162a565b612b749190614550565b1115612bf35760405162461bcd60e51b815260206004820152604260248201527f4c75636b79446f6f546f6b656e3a2045787065637465642077616c6c6574206160448201527f6d6f756e74206578636565647320746865206d617857616c6c6574416d6f756e6064820152613a1760f11b608482015260a401610a88565b612bfe8383836131c2565b6000600c54612c0c3061162a565b600754911115915060ff168015612c205750805b8015612c2f5750600b5460ff16155b8015612c465750602b54600160281b900460ff1615155b8015612c6a57506001600160a01b03861660009081526029602052604090205460ff165b8015612c845750600e546001600160a01b03888116911614155b8015612c9e5750600e546001600160a01b03878116911614155b8015612cb857506010546001600160a01b03888116911614155b8015612cd257506010546001600160a01b03878116911614155b8015612cec5750600f546001600160a01b03888116911614155b8015612d065750600f546001600160a01b03878116911614155b8015612d2057506011546001600160a01b03888116911614155b8015612d3a57506011546001600160a01b03878116911614155b15612d5f57600b805460ff19166001179055612d54613795565b600b805460ff191690555b600b5460009060ff16158015612d77575060075460ff165b6001600160a01b03891660009081526024602052604090205490915060ff1680612db957506001600160a01b03871660009081526024602052604090205460ff165b15612dc2575060005b612dce88888884613a67565b5050505050505050565b60008184841115612dfc5760405162461bcd60e51b8152600401610a889190614200565b506000612e0984866144e0565b95945050505050565b6000806000612e1f613c38565b9092509050612e2e82826122ed565b9250505090565b600080612e428385614550565b9050838110156110fd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a88565b600286015460ff8681166101009092041614612f2557604051711b1a5c5d5a591a5d1e51995953db94d95b1b60721b815260120160405190819003812060028801548854919260ff6101009092048216929189169160008051602061476b83398151915291612f069160481b906145a4565b60405180910390a460028601805461ff00191661010060ff8816021790555b600286015460ff85811663010000009092041614612fbe57604051711b585c9ad95d1a5b99d1995953db94d95b1b60721b815260120160405190819003812060028801548854919260ff63010000009092048216929188169160008051602061476b83398151915291612f9b9160481b906145a4565b60405180910390a460028601805463ff0000001916630100000060ff8716021790555b600286015460ff848116600160281b9092041614613053576040516b19195d91995953db94d95b1b60a21b8152600c0160405190819003812060028801548854919260ff600160281b9092048216929187169160008051602061476b8339815191529161302e9160481b906145a4565b60405180910390a460028601805465ff00000000001916600160281b60ff8616021790555b600286015460ff838116600160381b90920416146130ee576040516f189d5e509858dad1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160381b9092048216929186169160008051602061476b833981519152916130c79160481b906145a4565b60405180910390a460028601805467ff000000000000001916600160381b60ff8516021790555b600286015460ff828116600160481b909204161461260a576040516f1a1bdb19195c9cd1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160481b9092048216929185169160008051602061476b833981519152916131629160481b906145a4565b60405180910390a460028601805460ff8316600160481b0269ff00000000000000000019909116179055505050505050565b600081836131b55760405162461bcd60e51b8152600401610a889190614200565b506000612e09848661453c565b6000601354436131d291906144e0565b60075490915060009060ff161580156131ee5750601254600854115b6131f857426131fc565b6008545b905060006012548261320e91906144e0565b602b805464ffffffffff191690559050851561345157602254602b805460ff80841661ffff1990921691909117610100600160201b8086048416919091029190911763ffff000019166201000080860484160263ff000000191617600160301b850483166301000000021760ff60201b1916600160401b9094049190911602919091179055831561345157601154600160a01b900460ff1680156132bd5750601454600160b81b900460ff1683105b1561333657601654602b805460ff80841661ffff1990921691909117610100600160201b8086048416919091029190911763ffff000019166201000080860484160263ff000000191617600160301b850483166301000000021760ff60201b1916600160401b9094049190911602919091179055613451565b601154600160a01b900460ff16801561335157506018548111155b80156133685750601454600160b81b900460ff1683115b156133e157601954602b805460ff80841661ffff1990921691909117610100600160201b8086048416919091029190911763ffff000019166201000080860484160263ff000000191617600160301b850483166301000000021760ff60201b1916600160401b9094049190911602919091179055613451565b601c54602b805460ff80841661ffff1990921691909117610100600160201b8086048416919091029190911763ffff000019166201000080860484160263ff000000191617600160301b850483166301000000021760ff60201b1916600160401b90940491909116029190911790555b84156136a057602254602b805461010080840460ff90811661ffff1990931692909217600160281b85048316919091021763ffff0000191663010000008085048316620100000263ff000000191691909117600160381b85048316919091021760ff60201b1916600160481b90930416600160201b0291909117905583156136a057601154600160a01b900460ff1680156134f75750601454600160b81b900460ff1683105b1561357757601654602b805461010080840460ff90811661ffff1990931692909217600160281b85048316919091021763ffff0000191663010000008085048316620100000263ff000000191691909117600160381b85048316919091021760ff60201b1916600160481b90930416600160201b029190911790556136a0565b601154600160a01b900460ff16801561359257506018548111155b80156135a95750601454600160b81b900460ff1683115b1561362957601954602b805461010080840460ff90811661ffff1990931692909217600160281b85048316919091021763ffff0000191663010000008085048316620100000263ff000000191691909117600160381b85048316919091021760ff60201b1916600160481b90930416600160201b029190911790556136a0565b601c54602b805461010080840460ff90811661ffff1990931692909217600160281b85048316919091021763ffff0000191663010000008085048316620100000263ff000000191691909117600160381b85048316919091021760ff60201b1916600160481b90930416600160201b029190911790555b602b5460ff600160201b82048116916301000000810482169161010082048116916136d491620100008204811691166145fc565b6136de91906145fc565b6136e891906145fc565b6136f291906145fc565b602b805460ff928316600160281b90810265ff0000000000198316811793849055604080519186169386169390931781526201000084048516602082015261010084048516818401526301000000840485166060820152600160201b840485166080820152920490921660a082015290517f6c6977cb51242ec6e05aba0e2a29a5292ed1a8a5cffa3b87ff66395b7997d6d29181900360c00190a1505050505050565b60006137a03061162a565b602b54909150479060ff600160281b820481169181811691620100008204811691610100810482169163010000009091041660006002866137e1878b614585565b6137eb919061453c565b6137f5919061453c565b90506000613803828a6144e0565b905061380e81613de9565b600061381a89476144e0565b602b549091506000906138329060029060ff16614621565b602b546138499190600160281b900460ff16614643565b602b5460ff91821692506000916002918491613866911686614585565b613870919061453c565b61387a919061453c565b602b54909150600090839061389790610100900460ff1686614585565b6138a1919061453c565b602b5490915060009084906138c0906301000000900460ff1687614585565b6138ca919061453c565b90506000816138d98486614550565b6138e39190614550565b6138ed90876144e0565b600f546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015613928573d6000803e3d6000fd5b506010546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015613963573d6000803e3d6000fd5b506011546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561399e573d6000803e3d6000fd5b5087156139f1576139af8885613f3b565b60408051888152602081018690529081018990527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b5050602b805460ff98891663010000000263ff000000199a8a16610100029a909a1663ff00ff00199b8a16620100000262ff00ff199e8b16600160281b029e909e1665ff0000ff00ff19909216919091179b9098169a909a179a909a179790971694909417949094179095555050505050505050565b6000806000613a768585613fef565b925092509250600080600080613a95898787613a90612e12565b6140b9565b6001600160a01b038f166000908152602760205260409020549397509195509350915060ff1615613afe576001600160a01b038b16600090815260036020526040902054613ae4908a906144e0565b6001600160a01b038c166000908152600360205260409020555b6001600160a01b038a1660009081526027602052604090205460ff1615613b5d576001600160a01b038a16600090815260036020526040902054613b43908890614550565b6001600160a01b038b166000908152600360205260409020555b6001600160a01b038b16600090815260026020526040902054613b819085906144e0565b6001600160a01b03808d1660009081526002602052604080822093909355908c1681522054613bb1908490614550565b6001600160a01b038b16600090815260026020526040902055613bd48186614111565b613bde8287614176565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef89604051613c2391815260200190565b60405180910390a35050505050505050505050565b60055460009081906d31412717f0c2f24c6d1fc0000000825b602a54811015613da1578260026000602a8481548110613c7357613c736144b4565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613cde57508160036000602a8481548110613cb757613cb76144b4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613cff575050600554936d31412717f0c2f24c6d1fc00000009350915050565b60026000602a8381548110613d1657613d166144b4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054613d4590846144e0565b925060036000602a8381548110613d5e57613d5e6144b4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054613d8d90836144e0565b915080613d998161450d565b915050613c51565b506d31412717f0c2f24c6d1fc0000000600554613dbe919061453c565b821015613de0575050600554926d31412717f0c2f24c6d1fc000000092509050565b90939092509050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613e1e57613e1e6144b4565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613e77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e9b9190614666565b81600181518110613eae57613eae6144b4565b6001600160a01b039283166020918202929092010152600154613ed49130911684612612565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790613f0d908590600090869030904290600401614683565b600060405180830381600087803b158015613f2757600080fd5b505af115801561260a573d6000803e3d6000fd5b600154613f539030906001600160a01b031684612612565b600154600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015613fc3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613fe891906146f4565b5050505050565b600080600083614007575083915060009050806140b2565b602b5460009060649061402490600160201b900460ff1688614585565b61402e919061453c565b602b5490915060009060649060ff63010000008204811691620100008104821691614061916101008104821691166145fc565b61406b91906145fc565b61407591906145fc565b6140829060ff1689614585565b61408c919061453c565b9050600061409a8284614550565b6140a490896144e0565b955091935091506140b29050565b9250925092565b6000808080806140c9868a614585565b905060006140d7878a614585565b905060006140e5888a614585565b905060006140f38284614550565b6140fd90856144e0565b939c939b5091995097509095505050505050565b3060009081526027602052604090205460ff161561414e573060009081526003602052604081208054839290614148908490614550565b90915550505b306000908152600260205260408120805484929061416d908490614550565b90915550505050565b816005600082825461418891906144e0565b92505081905550806006600082825461416d9190614550565b6001600160a01b03811681146141b657600080fd5b50565b80151581146141b657600080fd5b600080604083850312156141da57600080fd5b82356141e5816141a1565b915060208301356141f5816141b9565b809150509250929050565b600060208083528351808285015260005b8181101561422d57858101830151858201604001528201614211565b8181111561423f576000604083870101525b50601f01601f1916929092016040019392505050565b803560ff8116811461426657600080fd5b919050565b600080600080600060a0868803121561428357600080fd5b61428c86614255565b945061429a60208701614255565b93506142a860408701614255565b92506142b660608701614255565b91506142c460808701614255565b90509295509295909350565b600080604083850312156142e357600080fd5b82356142ee816141a1565b946020939093013593505050565b60006020828403121561430e57600080fd5b5035919050565b60008060006060848603121561432a57600080fd5b8335614335816141a1565b92506020840135614345816141a1565b929592945050506040919091013590565b6000806040838503121561436957600080fd5b8235915060208301356141f5816141b9565b60006020828403121561438d57600080fd5b81356110fd816141a1565b600080600080608085870312156143ae57600080fd5b84356143b9816141a1565b935060208501356143c9816141a1565b925060408501356143d9816141a1565b915060608501356143e9816141a1565b939692955090935050565b6000806040838503121561440757600080fd5b8235614412816141a1565b915060208301356141f5816141a1565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526039908201527f4c75636b79446f6f546f6b656e3a204163636f756e7420697320616c7265616460408201527f79207468652076616c7565206f6620276578636c756465642700000000000000606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156144f2576144f26144ca565b500390565b634e487b7160e01b600052603160045260246000fd5b60006001820161451f5761451f6144ca565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261454b5761454b614526565b500490565b60008219821115614563576145636144ca565b500190565b60006020828403121561457a57600080fd5b81516110fd816141b9565b600081600019048311821515161561459f5761459f6144ca565b500290565b68ffffffffffffffffff1991909116815260200190565b60208082526021908201527f4c75636b79446f6f546f6b656e3a204163636f756e7420697320626c6f636b656040820152601960fa1b606082015260800190565b600060ff821660ff84168060ff03821115614619576146196144ca565b019392505050565b600060ff83168061463457614634614526565b8060ff84160491505092915050565b600060ff821660ff84168082101561465d5761465d6144ca565b90039392505050565b60006020828403121561467857600080fd5b81516110fd816141a1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156146d35784516001600160a01b0316835293830193918301916001016146ae565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561470957600080fd5b835192506020840151915060408401519050925092509256fe4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636500edc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203084574085aba8adf8bd6fa057454a217e2339c100aff7233b3e43e668854fbd64736f6c634300080d0033

Deployed Bytecode Sourcemap

7780:30921:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15107:169;;;;;;;;;;;;;:::i;:::-;;22225:833;;;;;;;;;;-1:-1:-1;22225:833:0;;;;;:::i;:::-;;:::i;8459:28::-;;;;;;;;;;-1:-1:-1;8459:28:0;;;;;;;;;;;825:14:1;;818:22;800:41;;788:2;773:18;8459:28:0;;;;;;;;23711:76;;;;;;;;;;-1:-1:-1;23777:5:0;;;;;;;;;;;;-1:-1:-1;;;23777:5:0;;;;23711:76;;;;;;;:::i;20808:428::-;;;;;;;;;;-1:-1:-1;20808:428:0;;;;;:::i;:::-;;:::i;13808:146::-;;;;;;;;;;-1:-1:-1;13808:146:0;;;;;:::i;:::-;;:::i;15478:79::-;;;;;;;;;;;;;:::i;24250:80::-;;;;;;;;;;-1:-1:-1;24315:10:0;;24250:80;;;2550:25:1;;;2538:2;2523:18;24250:80:0;2404:177:1;7882:30:0;;;;;;;;;;-1:-1:-1;7882:30:0;;;;-1:-1:-1;;;;;7882:30:0;;;;;;-1:-1:-1;;;;;2765:32:1;;;2747:51;;2735:2;2720:18;7882:30:0;2586:218:1;23960:88:0;;;;;;;;;;-1:-1:-1;8346:24:0;23960:88;;9055:28;;;;;;;;;;-1:-1:-1;9055:28:0;;;;-1:-1:-1;;;;;9055:28:0;;;21954:268;;;;;;;;;;-1:-1:-1;21954:268:0;;;;;:::i;:::-;;:::i;13957:292::-;;;;;;;;;;-1:-1:-1;13957:292:0;;;;;:::i;:::-;;:::i;21689:262::-;;;;;;;;;;-1:-1:-1;21689:262:0;;;;;:::i;:::-;;:::i;25441:244::-;;;;;;;;;;-1:-1:-1;25441:244:0;;;;;:::i;:::-;;:::i;23873:84::-;;;;;;;;;;-1:-1:-1;23873:84:0;;8086:2;3805:36:1;;3793:2;3778:18;23873:84:0;3663:184:1;24472:501:0;;;;;;;;;;;;;:::i;15560:122::-;;;;;;;;;;;;;:::i;15279:196::-;;;;;;;;;;;;;:::i;14252:202::-;;;;;;;;;;-1:-1:-1;14252:202:0;;;;;:::i;:::-;;:::i;25688:485::-;;;;;;;;;;-1:-1:-1;25688:485:0;;;;;:::i;:::-;;:::i;7916:38::-;;;;;;;;;;;;;;;17588:217;;;;;;;;;;-1:-1:-1;17588:217:0;;;;;:::i;:::-;;:::i;23375:318::-;;;;;;;;;;;;;:::i;24051:196::-;;;;;;;;;;-1:-1:-1;24051:196:0;;;;;:::i;:::-;;:::i;7412:133::-;;;;;;;;;;;;;:::i;8993:30::-;;;;;;;;;;-1:-1:-1;8993:30:0;;;;-1:-1:-1;;;;;8993:30:0;;;16493:325;;;;;;;;;;-1:-1:-1;16493:325:0;;;;;:::i;:::-;;:::i;17169:416::-;;;;;;;;;;-1:-1:-1;17169:416:0;;;;;:::i;:::-;;:::i;17808:1197::-;;;;;;;;;;-1:-1:-1;17808:1197:0;;;;;:::i;:::-;;:::i;16821:342::-;;;;;;;;;;-1:-1:-1;16821:342:0;;;;;:::i;:::-;;:::i;19910:429::-;;;;;;;;;;-1:-1:-1;19910:429:0;;;;;:::i;:::-;;:::i;8681:51::-;;;;;;;;;;;;;;;;7228:70;;;;;;;;;;-1:-1:-1;7266:7:0;7287:6;-1:-1:-1;;;;;7287:6:0;7228:70;;9027:24;;;;;;;;;;-1:-1:-1;9027:24:0;;;;-1:-1:-1;;;;;9027:24:0;;;23790:80;;;;;;;;;;-1:-1:-1;23858:7:0;;;;;;;;;;;;-1:-1:-1;;;23858:7:0;;;;23790:80;;19026:421;;;;;;;;;;-1:-1:-1;19026:421:0;;;;;:::i;:::-;;:::i;14457:253::-;;;;;;;;;;-1:-1:-1;14457:253:0;;;;;:::i;:::-;;:::i;13651:154::-;;;;;;;;;;-1:-1:-1;13651:154:0;;;;;:::i;:::-;;:::i;8580:54::-;;;;;;;;;;;;;;;;23061:311;;;;;;;;;;-1:-1:-1;23061:311:0;;;;;:::i;:::-;;:::i;19450:437::-;;;;;;;;;;-1:-1:-1;19450:437:0;;;;;:::i;:::-;;:::i;10495:58::-;;;;;;;;;;-1:-1:-1;10495:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16199:288;;;;;;;;;;-1:-1:-1;16199:288:0;;;;;:::i;:::-;;:::i;24979:225::-;;;;;;;;;;-1:-1:-1;25085:23:0;;;;;;;25110;;;;;;-1:-1:-1;;;25135:17:0;;;;;-1:-1:-1;;;25154:21:0;;;;;-1:-1:-1;;;25177:21:0;;;;24979:225;;;;5353:25:1;;;5409:2;5394:18;;5387:34;;;;5437:18;;;5430:34;;;;5495:2;5480:18;;5473:34;5538:3;5523:19;;5516:35;5340:3;5325:19;24979:225:0;5094:463:1;8812:64:0;;;;;;;;;;;;;;;;15994:202;;;;;;;;;;-1:-1:-1;15994:202:0;;;;;:::i;:::-;;:::i;8956:30::-;;;;;;;;;;-1:-1:-1;8956:30:0;;;;-1:-1:-1;;;;;8956:30:0;;;24333:136;;;;;;;;;;-1:-1:-1;24333:136:0;;;;;:::i;:::-;-1:-1:-1;;;;;24437:18:0;;;24416:7;24437:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;24333:136;7550:223;;;;;;;;;;-1:-1:-1;7550:223:0;;;;;:::i;:::-;;:::i;21239:447::-;;;;;;;;;;-1:-1:-1;21239:447:0;;;;;:::i;:::-;;:::i;20342:446::-;;;;;;;;;;-1:-1:-1;20342:446:0;;;;;:::i;:::-;;:::i;25207:231::-;;;;;;;;;;-1:-1:-1;25314:24:0;;;;;;;;;25340;;;;;;-1:-1:-1;;;25366:18:0;;;;;-1:-1:-1;;;25386:22:0;;;;;-1:-1:-1;;;25410:22:0;;;;25207:231;;15107:169;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;;;;;;;;;15084:15;15149:21:::1;:33:::0;15208:12:::1;15187:18;:33:::0;15225:16:::1;:23:::0;;-1:-1:-1;;15225:23:0::1;15244:4;15225:23;::::0;;15253:11:::1;:18:::0;;-1:-1:-1;;;;15253:18:0::1;-1:-1:-1::0;;;15253:18:0::1;::::0;;15107:169::o;22225:833::-;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22317:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;;:45;::::1;;:33;::::0;;::::1;:45;;::::0;22309:115:::1;;;;-1:-1:-1::0;;;22309:115:0::1;;;;;;;:::i;:::-;22432:8;22429:570;;;-1:-1:-1::0;;;;;22451:16:0;::::1;22470:1;22451:16:::0;;;:7:::1;:16;::::0;;;;;:20;22448:95:::1;;-1:-1:-1::0;;;;;22519:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;22499:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;22480:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;22448:95:::1;-1:-1:-1::0;;;;;22548:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;:44;;-1:-1:-1;;22548:44:0::1;::::0;::::1;;;::::0;;22598:22:::1;:36:::0;;-1:-1:-1;22598:36:0;::::1;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;22598:36:0::1;::::0;;::::1;::::0;;22429:570:::1;;;22657:9;22652:342;22676:22;:29:::0;22672:33;::::1;22652:342;;;22752:7;-1:-1:-1::0;;;;;22723:36:0::1;:22;22746:1;22723:25;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22723:25:0::1;:36:::0;22719:269:::1;;22797:22;22820:29:::0;;:33:::1;::::0;22852:1:::1;::::0;22820:33:::1;:::i;:::-;22797:57;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;22769:22:::1;:25:::0;;-1:-1:-1;;;;;22797:57:0;;::::1;::::0;22792:1;;22769:25;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:85:::0;;-1:-1:-1;;;;;;22769:85:0::1;-1:-1:-1::0;;;;;22769:85:0;;::::1;;::::0;;22862:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;22890:24:::1;:33:::0;;;;:41;;-1:-1:-1;;22890:41:0::1;::::0;;22939:22:::1;:28:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22939:28:0;;;;;-1:-1:-1;;;;;;22939:28:0::1;::::0;;;;;22975:5:::1;;22719:269;22707:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22652:342;;;;22429:570;23035:7;-1:-1:-1::0;;;;;23008:45:0::1;;23044:8;23008:45;;;;825:14:1::0;818:22;800:41;;788:2;773:18;;660:187;23008:45:0::1;;;;;;;;22225:833:::0;;:::o;20808:428::-;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;20981:122:::1;21004:8;21014:18;21034;21054:12;21068:16;21086;20981:22;:122::i;:::-;21113:118;::::0;-1:-1:-1;;;7610:30:1;;7665:2;7656:12;21113:118:0::1;;::::0;;;;;::::1;::::0;;7948:4:1;7936:17;;;7918:36;;7990:17;;;7985:2;7970:18;;7963:45;8044:17;;;8024:18;;;8017:45;8098:17;;;8093:2;8078:18;;8071:45;8153:17;;8147:3;8132:19;;8125:46;21113:118:0;;;;::::1;::::0;;;;;7905:3:1;21113:118:0;;::::1;20808:428:::0;;;;;:::o;13808:146::-;13883:4;13894:39;6687:10;13917:7;13926:6;13894:8;:39::i;:::-;-1:-1:-1;13945:4:0;13808:146;;;;;:::o;15478:79::-;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;15529:16:::1;:23:::0;;-1:-1:-1;;15529:23:0::1;15548:4;15529:23;::::0;;15478:79::o;21954:268::-;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;22049:11:::1;;22037:8;:23:::0;22029:90:::1;;;::::0;-1:-1:-1;;;22029:90:0;;8384:2:1;22029:90:0::1;::::0;::::1;8366:21:1::0;8423:2;8403:18;;;8396:30;8462:34;8442:18;;;8435:62;-1:-1:-1;;;8513:18:1;;;8506:52;8575:19;;22029:90:0::1;8182:418:1::0;22029:90:0::1;22172:11;::::0;22135:49:::1;::::0;22162:8;;22135:49:::1;::::0;;;::::1;22195:11;:22:::0;21954:268::o;13957:292::-;14056:4;14067:36;14077:6;14085:9;14096:6;14067:9;:36::i;:::-;14108:120;14117:6;6687:10;14139:88;14177:6;14139:88;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14139:19:0;;;;;;:11;:19;;;;;;;;6687:10;14139:33;;;;;;;;;;:37;:88::i;:::-;14108:8;:120::i;:::-;-1:-1:-1;14240:4:0;13957:292;;;;;:::o;21689:262::-;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;21779:15:::1;;21767:8;:27:::0;21759:98:::1;;;::::0;-1:-1:-1;;;21759:98:0;;8807:2:1;21759:98:0::1;::::0;::::1;8789:21:1::0;8846:2;8826:18;;;8819:30;8885:34;8865:18;;;8858:62;8956:28;8936:18;;;8929:56;9002:19;;21759:98:0::1;8605:422:1::0;21759:98:0::1;21899:15;::::0;21867:48:::1;::::0;21889:8;;21867:48:::1;::::0;;;::::1;21920:15;:26:::0;21689:262::o;25441:244::-;25507:7;25540;;25529;:18;;25521:88;;;;-1:-1:-1;;;25521:88:0;;9234:2:1;25521:88:0;;;9216:21:1;9273:2;9253:18;;;9246:30;9312:34;9292:18;;;9285:62;9383:27;9363:18;;;9356:55;9428:19;;25521:88:0;9032:421:1;25521:88:0;25614:19;25637:10;:8;:10::i;:::-;25614:33;-1:-1:-1;25659:21:0;25614:33;25659:7;:21;:::i;:::-;25652:28;25441:244;-1:-1:-1;;;25441:244:0:o;24472:501::-;24556:16;;24517:4;;;;24556:16;;24555:17;:68;;;;;24602:21;;24576:23;;:47;24555:68;:107;;15084:15;24555:107;;;24627:23;;24555:107;24742:21;;24718;;24694;;24528:134;;-1:-1:-1;24667:23:0;;24694:45;;24718:21;24694:45;:::i;:::-;:69;;;;:::i;:::-;24771:11;;24667:96;;-1:-1:-1;;;;24771:11:0;;;;:143;;;;;24832:15;24807:21;;24788:16;:40;;;;:::i;:::-;24787:60;:125;;;-1:-1:-1;24889:8:0;:23;24867:18;;-1:-1:-1;;;24889:23:0;;;;;;24852:33;;:12;:33;:::i;:::-;24851:61;24787:125;24768:201;;;24929:4;24922:11;;;;24472:501;:::o;24768:201::-;24958:5;24951:12;;;;24472:501;:::o;15560:122::-;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;15613:16:::1;:24:::0;;-1:-1:-1;;15613:24:0::1;::::0;;15084:15;15642:23:::1;:35:::0;15560:122::o;15279:196::-;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;15335:4:::1;-1:-1:-1::0;;;;;15335:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15327:62;;;::::0;-1:-1:-1;;;15327:62:0;;10300:2:1;15327:62:0::1;::::0;::::1;10282:21:1::0;;;10319:18;;;10312:30;10378:34;10358:18;;;10351:62;10430:18;;15327:62:0::1;10098:356:1::0;15327:62:0::1;15418:1;15394:21;:25:::0;;;15424:18:::1;:22:::0;15451:11:::1;:19:::0;;-1:-1:-1;;;;15451:19:0::1;::::0;;15279:196::o;14252:202::-;6687:10;14342:4;14382:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14382:34:0;;;;;;;;;;14342:4;;14352:81;;14374:7;;14382:50;;14421:10;14382:38;:50::i;25688:485::-;25781:7;8346:24;25803:7;:18;;25795:77;;;;-1:-1:-1;;;25795:77:0;;10661:2:1;25795:77:0;;;10643:21:1;10700:2;10680:18;;;10673:30;10739:34;10719:18;;;10712:62;-1:-1:-1;;;10790:18:1;;;10783:44;10844:19;;25795:77:0;10459:410:1;25795:77:0;25877:19;25899:10;:8;:10::i;:::-;25877:32;-1:-1:-1;25914:15:0;25933:21;25877:32;25933:7;:21;:::i;:::-;25914:40;;25964:17;25959:210;;25996:7;-1:-1:-1;25989:14:0;;-1:-1:-1;25989:14:0;25959:210;26055:9;;26024:17;;26073:11;;26067:3;;26045:19;;-1:-1:-1;;;26055:9:0;;;;26045:7;:19;:::i;:::-;:25;;;;:::i;:::-;:39;;;;:::i;:::-;26024:60;-1:-1:-1;26090:23:0;26116:19;26024:60;26116:7;:19;:::i;:::-;26090:45;-1:-1:-1;26141:22:0;;-1:-1:-1;;;;26141:22:0;17588:217;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17661:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;::::1;;17653:69;;;::::0;-1:-1:-1;;;17653:69:0;;11249:2:1;17653:69:0::1;::::0;::::1;11231:21:1::0;11288:2;11268:18;;;11261:30;11327:34;11307:18;;;11300:62;-1:-1:-1;;;11378:18:1;;;11371:35;11423:19;;17653:69:0::1;11047:401:1::0;17653:69:0::1;-1:-1:-1::0;;;;;17727:19:0;::::1;17749:5;17727:19:::0;;;:10:::1;:19;::::0;;;;;:27;;-1:-1:-1;;17727:27:0::1;::::0;;17764:36;17749:5;;17727:19;17764:36:::1;::::0;17749:5;;17764:36:::1;17588:217:::0;:::o;23375:318::-;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;23459:1:::1;23435:21;:25;23427:91;;;::::0;-1:-1:-1;;;23427:91:0;;11655:2:1;23427:91:0::1;::::0;::::1;11637:21:1::0;11694:2;11674:18;;;11667:30;11733:34;11713:18;;;11706:62;-1:-1:-1;;;11784:18:1;;;11777:51;11845:19;;23427:91:0::1;11453:417:1::0;23427:91:0::1;23546:21;23529:14;23598:7;7266::::0;7287:6;-1:-1:-1;;;;;7287:6:0;;7228:70;23598:7:::1;-1:-1:-1::0;;;;;23590:21:0::1;23620:6;23590:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23572:59;;;23640:7;23636:53;;;23659:24;::::0;2550:25:1;;;23659:24:0::1;::::0;2538:2:1;2523:18;23659:24:0::1;;;;;;;23636:53;23422:271;;23375:318::o:0;24051:196::-;-1:-1:-1;;;;;24135:33:0;;24117:7;24135:33;;;:24;:33;;;;;;;;24131:62;;;-1:-1:-1;;;;;;24177:16:0;;;;;:7;:16;;;;;;;24051:196::o;24131:62::-;-1:-1:-1;;;;;24225:16:0;;;;;;:7;:16;;;;;;24205:37;;:19;:37::i;7412:133::-;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;7513:1:::1;7497:6:::0;;7476:40:::1;::::0;-1:-1:-1;;;;;7497:6:0;;::::1;::::0;7476:40:::1;::::0;7513:1;;7476:40:::1;7538:1;7521:19:::0;;-1:-1:-1;;;;;;7521:19:0::1;::::0;;7412:133::o;16493:325::-;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16592:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;:50;::::1;;:38;::::0;;::::1;:50;;::::0;16584:120:::1;;;;-1:-1:-1::0;;;16584:120:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16709:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;;;;:49;;-1:-1:-1;;16709:49:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16768:45;;800:41:1;;;16768:45:0::1;::::0;773:18:1;16768:45:0::1;660:187:1::0;17169:416:0;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17282:19:0;::::1;17232:24;17282:19:::0;;;:10:::1;:19;::::0;;;;;15084:15;;17282:19:::1;;17281:20;17273:74;;;::::0;-1:-1:-1;;;17273:74:0;;12287:2:1;17273:74:0::1;::::0;::::1;12269:21:1::0;12326:2;12306:18;;;12299:30;12365:34;12345:18;;;12338:62;-1:-1:-1;;;12416:18:1;;;12409:39;12465:19;;17273:74:0::1;12085:405:1::0;17273:74:0::1;17356:11;::::0;-1:-1:-1;;;17356:11:0;::::1;;;17352:153;;;10110:6;17403:21;;17384:16;:40;;;;:::i;:::-;17383:62;17375:124;;;::::0;-1:-1:-1;;;17375:124:0;;12697:2:1;17375:124:0::1;::::0;::::1;12679:21:1::0;12736:2;12716:18;;;12709:30;12775:34;12755:18;;;12748:62;-1:-1:-1;;;12826:18:1;;;12819:47;12883:19;;17375:124:0::1;12495:413:1::0;17375:124:0::1;-1:-1:-1::0;;;;;17509:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;:26;;-1:-1:-1;;17509:26:0::1;17531:4;17509:26:::0;;::::1;::::0;;;17545:35;;17531:4;;17509:19;17545:35:::1;::::0;::::1;17227:358;17169:416:::0;:::o;17808:1197::-;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;17960:15:::1;::::0;-1:-1:-1;;;;;17960:37:0;;::::1;:15:::0;::::1;:37;17957:275;;-1:-1:-1::0;;;;;18022:32:0;::::1;18014:91;;;::::0;-1:-1:-1;;;18014:91:0;;13115:2:1;18014:91:0::1;::::0;::::1;13097:21:1::0;13154:2;13134:18;;;13127:30;13193:34;13173:18;;;13166:62;-1:-1:-1;;;13244:18:1;;;13237:44;13298:19;;18014:91:0::1;12913:410:1::0;18014:91:0::1;18168:15;::::0;18116:68:::1;::::0;-1:-1:-1;;;13530:30:1;;-1:-1:-1;;;;;18168:15:0;;::::1;::::0;18116:68;::::1;::::0;13585:2:1;13576:12;18116:68:0::1;::::0;;;;::::1;::::0;;;-1:-1:-1;;;;;;;;;;;18116:68:0;;;::::1;18190:15;:36:::0;;-1:-1:-1;;;;;;18190:36:0::1;-1:-1:-1::0;;;;;18190:36:0;::::1;;::::0;;17957:275:::1;18239:9;::::0;-1:-1:-1;;;;;18239:25:0;;::::1;:9:::0;::::1;:25;18236:221;;-1:-1:-1::0;;;;;18289:26:0;::::1;18281:79;;;::::0;-1:-1:-1;;;18281:79:0;;13801:2:1;18281:79:0::1;::::0;::::1;13783:21:1::0;13840:2;13820:18;;;13813:30;13879:34;13859:18;;;13852:62;-1:-1:-1;;;13930:18:1;;;13923:38;13978:19;;18281:79:0::1;13599:404:1::0;18281:79:0::1;18411:9;::::0;18371:50:::1;::::0;-1:-1:-1;;;14210:24:1;;-1:-1:-1;;;;;18411:9:0;;::::1;::::0;18371:50;::::1;::::0;14259:1:1;14250:11;18371:50:0::1;::::0;;;;::::1;::::0;;;-1:-1:-1;;;;;;;;;;;18371:50:0;;;::::1;18427:9;:24:::0;;-1:-1:-1;;;;;;18427:24:0::1;-1:-1:-1::0;;;;;18427:24:0;::::1;;::::0;;18236:221:::1;18464:15;::::0;-1:-1:-1;;;;;18464:37:0;;::::1;:15:::0;::::1;:37;18461:275;;-1:-1:-1::0;;;;;18526:32:0;::::1;18518:91;;;::::0;-1:-1:-1;;;18518:91:0;;14474:2:1;18518:91:0::1;::::0;::::1;14456:21:1::0;14513:2;14493:18;;;14486:30;14552:34;14532:18;;;14525:62;-1:-1:-1;;;14603:18:1;;;14596:44;14657:19;;18518:91:0::1;14272:410:1::0;18518:91:0::1;18672:15;::::0;;18620:68:::1;::::0;-1:-1:-1;;;14889:30:1;;-1:-1:-1;;;;;18672:15:0;;::::1;::::0;18620:68;;::::1;::::0;14935:12:1;18620:68:0::1;::::0;;;;::::1;::::0;;;-1:-1:-1;;;;;;;;;;;18620:68:0;;;::::1;18694:15;:36:::0;;-1:-1:-1;;;;;;18694:36:0::1;-1:-1:-1::0;;;;;18694:36:0;::::1;;::::0;;18461:275:::1;18743:13;::::0;-1:-1:-1;;;;;18743:34:0;;::::1;:13:::0;::::1;:34;18740:261;;-1:-1:-1::0;;;;;18802:31:0;::::1;18794:88;;;::::0;-1:-1:-1;;;18794:88:0;;15160:2:1;18794:88:0::1;::::0;::::1;15142:21:1::0;15199:2;15179:18;;;15172:30;15238:34;15218:18;;;15211:62;-1:-1:-1;;;15289:18:1;;;15282:42;15341:19;;18794:88:0::1;14958:408:1::0;18794:88:0::1;18942:13;::::0;18893:63:::1;::::0;-1:-1:-1;;;15573:28:1;;-1:-1:-1;;;;;18942:13:0;;::::1;::::0;18893:63;::::1;::::0;15626:2:1;15617:12;18893:63:0::1;::::0;;;;::::1;::::0;;;-1:-1:-1;;;;;;;;;;;18893:63:0;;;::::1;18962:13;:33:::0;;-1:-1:-1;;;;;;18962:33:0::1;-1:-1:-1::0;;;;;18962:33:0;::::1;;::::0;;18740:261:::1;17808:1197:::0;;;;:::o;16821:342::-;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16925:43:0;::::1;;::::0;;;:34:::1;:43;::::0;;;;;:55;::::1;;:43;::::0;;::::1;:55;;::::0;16917:125:::1;;;;-1:-1:-1::0;;;16917:125:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17047:43:0;::::1;;::::0;;;:34:::1;:43;::::0;;;;;;;;:54;;-1:-1:-1;;17047:54:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17111:47;;800:41:1;;;17111:47:0::1;::::0;773:18:1;17111:47:0::1;660:187:1::0;19910:429:0;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;20084:122:::1;20107:8;20117:18;20137;20157:12;20171:16;20189;20084:22;:122::i;:::-;20216:118;::::0;-1:-1:-1;;;15842:30:1;;15897:2;15888:12;20216:118:0::1;15640:266:1::0;19026:421:0;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;19198:119:::1;19221:5;19228:18;19248;19268:12;19282:16;19300;19198:22;:119::i;:::-;19327:115;::::0;-1:-1:-1;;;16113:27:1;;16165:2;16156:12;19327:115:0::1;15911:263:1::0;14457:253:0;14552:4;14563:126;6687:10;14585:7;14593:95;14632:15;14593:95;;;;;;;;;;;;;;;;;6687:10;14593:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14593:34:0;;;;;;;;;;;;:38;:95::i;13651:154::-;13731:4;13742:42;6687:10;13766:9;13777:6;13742:9;:42::i;23061:311::-;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;23159:23:::1;;23147:8;:35:::0;23139:114:::1;;;::::0;-1:-1:-1;;;23139:114:0;;16381:2:1;23139:114:0::1;::::0;::::1;16363:21:1::0;16420:2;16400:18;;;16393:30;16459:34;16439:18;;;16432:62;16530:34;16510:18;;;16503:62;-1:-1:-1;;;16581:19:1;;;16574:33;16624:19;;23139:114:0::1;16179:470:1::0;23139:114:0::1;23304:23;::::0;23263:65:::1;::::0;23294:8;;23263:65:::1;::::0;;;::::1;23333:23;:34:::0;23061:311::o;19450:437::-;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;19626:125:::1;19650:5;19657:19;19678;19699:13;19714:17;19733;19626:23;:125::i;:::-;19761:121;::::0;-1:-1:-1;;;16856:28:1;;16909:2;16900:12;19761:121:0::1;16654:264:1::0;16199:288:0;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16288:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;:39;::::1;;:27;::::0;;::::1;:39;;::::0;16280:109:::1;;;;-1:-1:-1::0;;;16280:109:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16394:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:38;;-1:-1:-1;;16394:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16442:40;;800:41:1;;;16442:40:0::1;::::0;773:18:1;16442:40:0::1;660:187:1::0;15994:202:0;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16083:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;;;;:48;;-1:-1:-1;;16083:48:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16141:50;;800:41:1;;;16141:50:0::1;::::0;773:18:1;16141:50:0::1;660:187:1::0;7550:223:0;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7633:22:0;::::1;7625:73;;;::::0;-1:-1:-1;;;7625:73:0;;17125:2:1;7625:73:0::1;::::0;::::1;17107:21:1::0;17164:2;17144:18;;;17137:30;17203:34;17183:18;;;17176:62;-1:-1:-1;;;17254:18:1;;;17247:36;17300:19;;7625:73:0::1;16923:402:1::0;7625:73:0::1;7729:6;::::0;;7708:38:::1;::::0;-1:-1:-1;;;;;7708:38:0;;::::1;::::0;7729:6;::::1;::::0;7708:38:::1;::::0;::::1;7751:6;:17:::0;;-1:-1:-1;;;;;;7751:17:0::1;-1:-1:-1::0;;;;;7751:17:0;;;::::1;::::0;;;::::1;::::0;;7550:223::o;21239:447::-;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;21419:128:::1;21443:8;21453:19;21474;21495:13;21510:17;21529;21419:23;:128::i;:::-;21557:124;::::0;-1:-1:-1;;;17532:31:1;;17588:2;17579:12;21557:124:0::1;17330:267:1::0;20342:446:0;7337:6;;-1:-1:-1;;;;;7337:6:0;6687:10;7337:22;7329:67;;;;-1:-1:-1;;;7329:67:0;;;;;;;:::i;:::-;20521:128:::1;20545:8;20555:19;20576;20597:13;20612:17;20631;20521:23;:128::i;:::-;20659:124;::::0;-1:-1:-1;;;17804:31:1;;17860:2;17851:12;20659:124:0::1;17602:267:1::0;2702:123:0;2760:7;2781:39;2785:1;2788;2781:39;;;;;;;;;;;;;;;;;:3;:39::i;35107:1249::-;35329:21;;;;:43;;;;:21;;:43;35325:215;;35385:101;;-1:-1:-1;;;18076:32:1;;18133:2;18124:12;35385:101:0;;;;;;;;35427:21;;;;35471:14;;35385:101;;35427:21;;;;;35385:101;;;;-1:-1:-1;;;;;;;;;;;35385:101:0;;;35471:14;;;35385:101;:::i;:::-;;;;;;;;35492:21;;;:42;;-1:-1:-1;;35492:42:0;;;;;;;35325:215;35548:21;;;;:43;;;;:21;;;;;:43;35544:215;;35604:101;;-1:-1:-1;;;18563:32:1;;18620:2;18611:12;35604:101:0;;;;;;;;35646:21;;;;35690:14;;35604:101;;35646:21;;;;;;;;35604:101;;;;-1:-1:-1;;;;;;;;;;;35604:101:0;;;35690:14;;;35604:101;:::i;:::-;;;;;;;;35711:21;;;:42;;-1:-1:-1;;35711:42:0;;;;;;;;;35544:215;35773:15;;;;:31;;;;-1:-1:-1;;;35773:15:0;;;;:31;35769:173;;35817:83;;-1:-1:-1;;;18836:26:1;;18887:2;18878:12;35817:83:0;;;;;;;;35853:15;;;;35885:14;;35817:83;;35853:15;-1:-1:-1;;;35853:15:0;;;;;;35817:83;;;;-1:-1:-1;;;;;;;;;;;35817:83:0;;;35885:14;;;35817:83;:::i;:::-;;;;;;;;35906:15;;;:30;;-1:-1:-1;;;;35906:30:0;-1:-1:-1;;;35906:30:0;;;;;;;35769:173;35950:19;;;;:39;;;;-1:-1:-1;;;35950:19:0;;;;:39;35946:201;;36002:95;;-1:-1:-1;;;19103:30:1;;19158:2;19149:12;36002:95:0;;;;;;;;36042:19;;;;36082:14;;36002:95;;36042:19;-1:-1:-1;;;36042:19:0;;;;;;36002:95;;;;-1:-1:-1;;;;;;;;;;;36002:95:0;;;36082:14;;;36002:95;:::i;:::-;;;;;;;;36103:19;;;:38;;-1:-1:-1;;36103:38:0;-1:-1:-1;;;36103:38:0;;;;;;;35946:201;36155:19;;;;:39;;;;-1:-1:-1;;;36155:19:0;;;;:39;36151:201;;36207:95;;-1:-1:-1;;;19374:30:1;;19429:2;19420:12;36207:95:0;;;;;;;;36247:19;;;;36287:14;;36207:95;;36247:19;-1:-1:-1;;;36247:19:0;;;;;;36207:95;;;;-1:-1:-1;;;;;;;;;;;36207:95:0;;;36287:14;;;36207:95;:::i;:::-;;;;;;;;36308:19;;;:38;;-1:-1:-1;;36308:38:0;-1:-1:-1;;;36308:38:0;;;;;;;36151:201;35107:1249;;;;;;:::o;14713:306::-;-1:-1:-1;;;;;14798:19:0;;14790:68;;;;-1:-1:-1;;;14790:68:0;;19645:2:1;14790:68:0;;;19627:21:1;19684:2;19664:18;;;19657:30;19723:34;19703:18;;;19696:62;-1:-1:-1;;;19774:18:1;;;19767:34;19818:19;;14790:68:0;19443:400:1;14790:68:0;-1:-1:-1;;;;;14871:21:0;;14863:68;;;;-1:-1:-1;;;14863:68:0;;20050:2:1;14863:68:0;;;20032:21:1;20089:2;20069:18;;;20062:30;20128:34;20108:18;;;20101:62;-1:-1:-1;;;20179:18:1;;;20172:32;20221:19;;14863:68:0;19848:398:1;14863:68:0;-1:-1:-1;;;;;14936:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14982:32;;2550:25:1;;;14982:32:0;;2523:18:1;14982:32:0;;;;;;;14713:306;;;:::o;26188:1982::-;-1:-1:-1;;;;;26281:18:0;;26273:68;;;;-1:-1:-1;;;26273:68:0;;20453:2:1;26273:68:0;;;20435:21:1;20492:2;20472:18;;;20465:30;20531:34;20511:18;;;20504:62;-1:-1:-1;;;20582:18:1;;;20575:35;20627:19;;26273:68:0;20251:401:1;26273:68:0;-1:-1:-1;;;;;26354:16:0;;26346:64;;;;-1:-1:-1;;;26346:64:0;;20859:2:1;26346:64:0;;;20841:21:1;20898:2;20878:18;;;20871:30;20937:34;20917:18;;;20910:62;-1:-1:-1;;;20988:18:1;;;20981:33;21031:19;;26346:64:0;20657:399:1;26346:64:0;26432:1;26423:6;:10;26415:64;;;;-1:-1:-1;;;26415:64:0;;21263:2:1;26415:64:0;;;21245:21:1;21302:2;21282:18;;;21275:30;21341:34;21321:18;;;21314:62;-1:-1:-1;;;21392:18:1;;;21385:39;21441:19;;26415:64:0;21061:405:1;26415:64:0;26502:15;26512:4;26502:9;:15::i;:::-;26492:6;:25;;26484:86;;;;-1:-1:-1;;;26484:86:0;;21673:2:1;26484:86:0;;;21655:21:1;21712:2;21692:18;;;21685:30;21751:34;21731:18;;;21724:62;-1:-1:-1;;;21802:18:1;;;21795:46;21858:19;;26484:86:0;21471:412:1;26484:86:0;-1:-1:-1;;;;;26596:31:0;;;26577:16;26596:31;;;:25;:31;;;;;;;;;26650:29;;;;;;;;;26709:17;;-1:-1:-1;;;26709:17:0;;;;26596:31;;;;;26650:29;;;;26577:16;26709:4;;:15;;:17;;;;;26596:31;26709:17;;;;;:4;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26737:35:0;;;;;;:29;:35;;;;;;26690:36;;-1:-1:-1;26737:35:0;;26736:36;:74;;;;-1:-1:-1;;;;;;26777:33:0;;;;;;:29;:33;;;;;;;;26776:34;26736:74;26733:710;;;26826:16;;;;26818:74;;;;-1:-1:-1;;;26818:74:0;;22090:2:1;26818:74:0;;;22072:21:1;22129:2;22109:18;;;22102:30;22168:34;22148:18;;;22141:62;-1:-1:-1;;;22219:18:1;;;22212:43;22272:19;;26818:74:0;21888:409:1;26818:74:0;-1:-1:-1;;;;;26907:14:0;;;;;;:10;:14;;;;;;;;26906:15;26898:61;;;;-1:-1:-1;;;26898:61:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26974:16:0;;;;;;:10;:16;;;;;;;;26973:17;26965:63;;;;-1:-1:-1;;;26965:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27048:38:0;;;;;;:34;:38;;;;;;;;27047:39;:84;;;;-1:-1:-1;;;;;;27091:40:0;;;;;;:34;:40;;;;;;;;27090:41;27047:84;27043:214;;;27170:11;;27160:6;:21;;27152:89;;;;-1:-1:-1;;;27152:89:0;;22906:2:1;27152:89:0;;;22888:21:1;22945:2;22925:18;;;22918:30;22984:34;22964:18;;;22957:62;23055:25;23035:18;;;23028:53;23098:19;;27152:89:0;22704:419:1;27152:89:0;-1:-1:-1;;;;;27267:33:0;;;;;;:29;:33;;;;;;;;27262:176;;27345:15;;27334:6;27318:13;27328:2;27318:9;:13::i;:::-;:22;;;;:::i;:::-;27317:43;;27309:122;;;;-1:-1:-1;;;27309:122:0;;23330:2:1;27309:122:0;;;23312:21:1;23369:2;23349:18;;;23342:30;23408:34;23388:18;;;23381:62;23479:34;23459:18;;;23452:62;-1:-1:-1;;;23530:19:1;;;23523:33;23573:19;;27309:122:0;23128:470:1;27309:122:0;27449:50;27462:11;27475:10;27487:11;27449:12;:50::i;:::-;27504:12;27547:23;;27519:24;27537:4;27519:9;:24::i;:::-;27586:16;;27519:51;-1:-1:-1;27519:51:0;;-1:-1:-1;27586:16:0;;:31;;;;;27610:7;27586:31;:49;;;;-1:-1:-1;27626:9:0;;;;27625:10;27586:49;:70;;;;-1:-1:-1;27643:9:0;;-1:-1:-1;;;27643:9:0;;;;:13;;27586:70;:107;;;;-1:-1:-1;;;;;;27664:29:0;;;;;;:25;:29;;;;;;;;27586:107;:138;;;;-1:-1:-1;27709:15:0;;-1:-1:-1;;;;;27701:23:0;;;27709:15;;27701:23;;27586:138;:163;;;;-1:-1:-1;27734:15:0;;-1:-1:-1;;;;;27728:21:0;;;27734:15;;27728:21;;27586:163;:188;;;;-1:-1:-1;27765:9:0;;-1:-1:-1;;;;;27757:17:0;;;27765:9;;27757:17;;27586:188;:207;;;;-1:-1:-1;27784:9:0;;-1:-1:-1;;;;;27778:15:0;;;27784:9;;27778:15;;27586:207;:238;;;;-1:-1:-1;27809:15:0;;-1:-1:-1;;;;;27801:23:0;;;27809:15;;27801:23;;27586:238;:263;;;;-1:-1:-1;27834:15:0;;-1:-1:-1;;;;;27828:21:0;;;27834:15;;27828:21;;27586:263;:292;;;;-1:-1:-1;27865:13:0;;-1:-1:-1;;;;;27857:21:0;;;27865:13;;27857:21;;27586:292;:315;;;;-1:-1:-1;27888:13:0;;-1:-1:-1;;;;;27882:19:0;;;27888:13;;27882:19;;27586:315;27577:404;;;27913:9;:16;;-1:-1:-1;;27913:16:0;27925:4;27913:16;;;27935:17;:15;:17::i;:::-;27958:9;:17;;-1:-1:-1;;27958:17:0;;;27577:404;28003:9;;27987:12;;28003:9;;28002:10;:30;;;;-1:-1:-1;28016:16:0;;;;28002:30;-1:-1:-1;;;;;28042:24:0;;;;;;:18;:24;;;;;;27987:45;;-1:-1:-1;28042:24:0;;;:50;;-1:-1:-1;;;;;;28070:22:0;;;;;;:18;:22;;;;;;;;28042:50;28039:81;;;-1:-1:-1;28109:5:0;28039:81;28124:41;28139:4;28145:2;28149:6;28157:7;28124:14;:41::i;:::-;26268:1902;;;;;26188:1982;;;:::o;2110:171::-;2196:7;2226:12;2218:6;;;;2210:29;;;;-1:-1:-1;;;2210:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2244:9:0;2256:5;2260:1;2256;:5;:::i;:::-;2244:17;2110:171;-1:-1:-1;;;;;2110:171:0:o;29867:149::-;29909:7;29924:15;29941;29960:19;:17;:19::i;:::-;29923:56;;-1:-1:-1;29923:56:0;-1:-1:-1;29991:20:0;29923:56;;29991:11;:20::i;:::-;29984:27;;;;29867:149;:::o;1813:160::-;1871:7;;1897:5;1901:1;1897;:5;:::i;:::-;1885:17;;1920:1;1915;:6;;1907:46;;;;-1:-1:-1;;;1907:46:0;;23805:2:1;1907:46:0;;;23787:21:1;23844:2;23824:18;;;23817:30;23883:29;23863:18;;;23856:57;23930:18;;1907:46:0;23603:351:1;33814:1290:0;34042:22;;;;:45;;;;:22;;;;;:45;34038:222;;34100:104;;-1:-1:-1;;;24161:33:1;;24219:2;24210:12;34100:104:0;;;;;;;;34143:22;;;;34189:14;;34100:104;;34143:22;;;;;;;;34100:104;;;;-1:-1:-1;;;;;;;;;;;34100:104:0;;;34189:14;;;34100:104;:::i;:::-;;;;;;;;34210:22;;;:44;;-1:-1:-1;;34210:44:0;;;;;;;;;34038:222;34268:22;;;;:45;;;;:22;;;;;:45;34264:222;;34326:104;;-1:-1:-1;;;24435:33:1;;24493:2;24484:12;34326:104:0;;;;;;;;34369:22;;;;34415:14;;34326:104;;34369:22;;;;;;;;34326:104;;;;-1:-1:-1;;;;;;;;;;;34326:104:0;;;34415:14;;;34326:104;:::i;:::-;;;;;;;;34436:22;;;:44;;-1:-1:-1;;34436:44:0;;;;;;;;;34264:222;34500:16;;;;:33;;;;-1:-1:-1;;;34500:16:0;;;;:33;34496:180;;34546:86;;-1:-1:-1;;;24709:27:1;;24761:2;24752:12;34546:86:0;;;;;;;;34583:16;;;;34617:14;;34546:86;;34583:16;-1:-1:-1;;;34583:16:0;;;;;;34546:86;;;;-1:-1:-1;;;;;;;;;;;34546:86:0;;;34617:14;;;34546:86;:::i;:::-;;;;;;;;34638:16;;;:32;;-1:-1:-1;;34638:32:0;-1:-1:-1;;;34638:32:0;;;;;;;34496:180;34684:20;;;;:41;;;;-1:-1:-1;;;34684:20:0;;;;:41;34680:208;;34738:98;;-1:-1:-1;;;24977:31:1;;25033:2;25024:12;34738:98:0;;;;;;;;34779:20;;;;34821:14;;34738:98;;34779:20;-1:-1:-1;;;34779:20:0;;;;;;34738:98;;;;-1:-1:-1;;;;;;;;;;;34738:98:0;;;34821:14;;;34738:98;:::i;:::-;;;;;;;;34842:20;;;:40;;-1:-1:-1;;34842:40:0;-1:-1:-1;;;34842:40:0;;;;;;;34680:208;34896:20;;;;:41;;;;-1:-1:-1;;;34896:20:0;;;;:41;34892:208;;34950:98;;-1:-1:-1;;;25249:31:1;;25305:2;25296:12;34950:98:0;;;;;;;;34991:20;;;;35033:14;;34950:98;;34991:20;-1:-1:-1;;;34991:20:0;;;;;;34950:98;;;;-1:-1:-1;;;;;;;;;;;34950:98:0;;;35033:14;;;34950:98;:::i;:::-;;;;;;;;35054:20;;;:40;;;;;-1:-1:-1;;;35054:40:0;-1:-1:-1;;35054:40:0;;;;;;33814:1290;;;;;;:::o;2830:251::-;2916:7;2945:12;2938:5;2930:28;;;;-1:-1:-1;;;2930:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2963:9:0;2975:5;2979:1;2975;:5;:::i;30789:3022::-;30877:25;30920:18;;30905:12;:33;;;;:::i;:::-;30971:16;;30877:61;;-1:-1:-1;30943:24:0;;30971:16;;30970:17;:68;;;;;31017:21;;30991:23;;:47;30970:68;:107;;15084:15;30970:107;;;31042:23;;30970:107;30943:134;;31082:23;31127:21;;31108:16;:40;;;;:::i;:::-;31155:13;:17;;-1:-1:-1;;31235:15:0;;;31082:66;-1:-1:-1;31257:1172:0;;;;31296:23;;31280:13;:39;;31296:23;;;;-1:-1:-1;;31325:27:0;;;;;;;31296:23;-1:-1:-1;;;31335:17:0;;;;;31325:27;;;;;;;;-1:-1:-1;;31403:35:0;31374:23;;;;;;31358:39;-1:-1:-1;;31403:35:0;;-1:-1:-1;;;31417:21:0;;;;31403:35;;;-1:-1:-1;;;;31444:35:0;-1:-1:-1;;;31458:21:0;;;;;;;31444:35;;;;;;;31487:937;;;;31514:11;;-1:-1:-1;;;31514:11:0;;;;:58;;;;-1:-1:-1;31549:8:0;:23;-1:-1:-1;;;31549:23:0;;;;31529:43;;31514:58;31510:908;;;31598:26;;31582:13;:42;;31598:26;;;;-1:-1:-1;;31632:30:0;;;;;;;31598:26;-1:-1:-1;;;31642:20:0;;;;;31632:30;;;;;;;;-1:-1:-1;;31720:38:0;31686:26;;;;;;31670:42;-1:-1:-1;;31720:38:0;;-1:-1:-1;;;31734:24:0;;;;31720:38;;;-1:-1:-1;;;;31766:38:0;-1:-1:-1;;;31780:24:0;;;;;;;31766:38;;;;;;;31510:908;;;31827:11;;-1:-1:-1;;;31827:11:0;;;;:55;;;;-1:-1:-1;31861:21:0;;31842:40;;;31827:55;:102;;;;-1:-1:-1;31906:8:0;:23;-1:-1:-1;;;31906:23:0;;;;31886:43;;31827:102;31823:595;;;31955:26;;31939:13;:42;;31955:26;;;;-1:-1:-1;;31989:30:0;;;;;;;31955:26;-1:-1:-1;;;31999:20:0;;;;;31989:30;;;;;;;;-1:-1:-1;;32077:38:0;32043:26;;;;;;32027:42;-1:-1:-1;;32077:38:0;;-1:-1:-1;;;32091:24:0;;;;32077:38;;;-1:-1:-1;;;;32123:38:0;-1:-1:-1;;;32137:24:0;;;;;;;32123:38;;;;;;;31823:595;;;32204:26;;32188:13;:42;;32204:26;;;;-1:-1:-1;;32238:30:0;;;;;;;32204:26;-1:-1:-1;;;32248:20:0;;;;;32238:30;;;;;;;;-1:-1:-1;;32326:38:0;32292:26;;;;;;32276:42;-1:-1:-1;;32326:38:0;;-1:-1:-1;;;32340:24:0;;;;32326:38;;;-1:-1:-1;;;;32372:38:0;-1:-1:-1;;;32386:24:0;;;;;;;32372:38;;;;;;;31823:595;32437:10;32433:1191;;;32471:24;;32455:13;:40;;32471:24;;;;;;;;-1:-1:-1;;32501:28:0;;;;;;;-1:-1:-1;;;32511:18:0;;;;32501:28;;;;;-1:-1:-1;;32581:36:0;32551:24;;;;;;32535:40;;-1:-1:-1;;32581:36:0;;;;;-1:-1:-1;;;32595:22:0;;;;32581:36;;;;;-1:-1:-1;;;;32623:36:0;-1:-1:-1;;;32637:22:0;;;;-1:-1:-1;;;32623:36:0;;;;;;;32667:952;;;;32694:11;;-1:-1:-1;;;32694:11:0;;;;:58;;;;-1:-1:-1;32729:8:0;:23;-1:-1:-1;;;32729:23:0;;;;32709:43;;32694:58;32690:923;;;32778:27;;32762:13;:43;;32778:27;;;;;;;;-1:-1:-1;;32813:31:0;;;;;;;-1:-1:-1;;;32823:21:0;;;;32813:31;;;;;-1:-1:-1;;32903:39:0;32868:27;;;;;;32852:43;;-1:-1:-1;;32903:39:0;;;;;-1:-1:-1;;;32917:25:0;;;;32903:39;;;;;-1:-1:-1;;;;32950:39:0;-1:-1:-1;;;32964:25:0;;;;-1:-1:-1;;;32950:39:0;;;;;;;32690:923;;;33012:11;;-1:-1:-1;;;33012:11:0;;;;:55;;;;-1:-1:-1;33046:21:0;;33027:40;;;33012:55;:102;;;;-1:-1:-1;33091:8:0;:23;-1:-1:-1;;;33091:23:0;;;;33071:43;;33012:102;33008:605;;;33140:27;;33124:13;:43;;33140:27;;;;;;;;-1:-1:-1;;33175:31:0;;;;;;;-1:-1:-1;;;33185:21:0;;;;33175:31;;;;;-1:-1:-1;;33265:39:0;33230:27;;;;;;33214:43;;-1:-1:-1;;33265:39:0;;;;;-1:-1:-1;;;33279:25:0;;;;33265:39;;;;;-1:-1:-1;;;;33312:39:0;-1:-1:-1;;;33326:25:0;;;;-1:-1:-1;;;33312:39:0;;;;;;;33008:605;;;33394:27;;33378:13;:43;;33394:27;;;;;;;;-1:-1:-1;;33429:31:0;;;;;;;-1:-1:-1;;;33439:21:0;;;;33429:31;;;;;-1:-1:-1;;33519:39:0;33484:27;;;;;;33468:43;;-1:-1:-1;;33519:39:0;;;;;-1:-1:-1;;;33533:25:0;;;;33519:39;;;;;-1:-1:-1;;;;33566:39:0;-1:-1:-1;;;33580:25:0;;;;-1:-1:-1;;;33566:39:0;;;;;;;33008:605;33698:11;;;-1:-1:-1;;;33698:11:0;;;;;33684;;;;;;33698;33674:7;;;;;33642:29;;33658:13;;;;;;33642;:29;:::i;:::-;:39;;;;:::i;:::-;:53;;;;:::i;:::-;:67;;;;:::i;:::-;33630:9;:79;;;;;;-1:-1:-1;;;33630:79:0;;;-1:-1:-1;;33630:79:0;;;;;;;;33719:87;;;33731:13;;;;;;;;;;25814:34:1;;33746:13:0;;;;;25879:2:1;25864:18;;25857:43;33630:79:0;33761:7;;;;25916:18:1;;;25909:43;33770:11:0;;;;;25983:2:1;25968:18;;25961:43;-1:-1:-1;;;33783:11:0;;;;26035:3:1;26020:19;;26013:44;33796:9:0;;;;;26088:3:1;26073:19;;26066:44;33719:87:0;;;;;;;25778:3:1;33719:87:0;;;30872:2939;;;30789:3022;;;:::o;36359:1577::-;36399:23;36425:24;36443:4;36425:9;:24::i;:::-;36532:9;;36399:50;;-1:-1:-1;36482:21:0;;36532:9;-1:-1:-1;;;36532:9:0;;;;;36578:13;;;;36628;;;;;;36532:9;36672:7;;;;;36715:11;;;;;36454:25;36628:13;36532:9;36759:31;36578:13;36399:50;36759:31;:::i;:::-;:43;;;;:::i;:::-;:47;;;;:::i;:::-;36733:73;-1:-1:-1;36811:26:0;36840:33;36733:73;36840:15;:33;:::i;:::-;36811:62;;36880:37;36898:18;36880:17;:37::i;:::-;36924:27;36954:41;36978:17;36954:21;:41;:::i;:::-;37035:13;;36924:71;;-1:-1:-1;37000:19:0;;37035:17;;37051:1;;37035:13;;:17;:::i;:::-;37022:9;;:31;;;-1:-1:-1;;;37022:9:0;;;;:31;:::i;:::-;37109:13;;37000:53;;;;;-1:-1:-1;37058:26:0;;37139:1;;37000:53;;37087:35;;37109:13;37087:19;:35;:::i;:::-;:49;;;;:::i;:::-;:53;;;;:::i;:::-;37190:7;;37058:82;;-1:-1:-1;37145:20:0;;37200:11;;37168:29;;37190:7;;;;;37168:19;:29;:::i;:::-;:43;;;;:::i;:::-;37265:11;;37145:66;;-1:-1:-1;37216:24:0;;37279:11;;37243:33;;37265:11;;;;;37243:19;:33;:::i;:::-;:47;;;;:::i;:::-;37216:74;-1:-1:-1;37295:26:0;37216:74;37347:33;37368:12;37347:18;:33;:::i;:::-;:52;;;;:::i;:::-;37324:76;;:19;:76;:::i;:::-;37415:15;;37407:53;;37295:105;;-1:-1:-1;;;;;;37415:15:0;;37407:53;;;;;37295:105;;37415:15;37407:53;37415:15;37407:53;37295:105;37415:15;37407:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37473:9:0;;37465:41;;-1:-1:-1;;;;;37473:9:0;;;;37465:41;;;;;37493:12;;37473:9;37465:41;37473:9;37465:41;37493:12;37473:9;37465:41;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37525:13:0;;37517:49;;-1:-1:-1;;;;;37525:13:0;;;;37517:49;;;;;37549:16;;37525:13;37517:49;37525:13;37517:49;37549:16;37525:13;37517:49;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37577:19:0;;37573:169;;37604:50;37618:15;37635:18;37604:13;:50::i;:::-;37665:71;;;26693:25:1;;;26749:2;26734:18;;26727:34;;;26777:18;;;26770:34;;;37665:71:0;;26681:2:1;26666:18;37665:71:0;;;;;;;37573:169;-1:-1:-1;;37746:9:0;:25;;;37902:29;;;;;-1:-1:-1;;37870:21:0;;;37746:25;37870:21;37902:29;;;;-1:-1:-1;;37826:33:0;;;;;-1:-1:-1;;37746:25:0;;;-1:-1:-1;;;37746:25:0;37826:33;;;;-1:-1:-1;;37826:33:0;;;;;;;37782;;;;37826;;;;;;;;37902:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;36359:1577:0:o;28173:762::-;28276:23;28300:12;28314:14;28332:29;28344:7;28353;28332:11;:29::i;:::-;28275:86;;;;;;28367:15;28384:23;28409:12;28423:14;28441:46;28453:7;28462:4;28468:6;28476:10;:8;:10::i;:::-;28441:11;:46::i;:::-;-1:-1:-1;;;;;28498:32:0;;;;;;:24;:32;;;;;;28366:121;;-1:-1:-1;28366:121:0;;-1:-1:-1;28366:121:0;-1:-1:-1;28366:121:0;-1:-1:-1;28498:32:0;;28494:93;;;-1:-1:-1;;;;;28556:15:0;;;;;;:7;:15;;;;;;:25;;28574:7;;28556:25;:::i;:::-;-1:-1:-1;;;;;28538:15:0;;;;;;:7;:15;;;;;:43;28494:93;-1:-1:-1;;;;;28595:35:0;;;;;;:24;:35;;;;;;;;28591:110;;;-1:-1:-1;;;;;28659:18:0;;;;;;:7;:18;;;;;;:36;;28680:15;;28659:36;:::i;:::-;-1:-1:-1;;;;;28638:18:0;;;;;;:7;:18;;;;;:57;28591:110;-1:-1:-1;;;;;28723:15:0;;;;;;:7;:15;;;;;;:25;;28741:7;;28723:25;:::i;:::-;-1:-1:-1;;;;;28705:15:0;;;;;;;:7;:15;;;;;;:43;;;;28774:18;;;;;;;:36;;28795:15;;28774:36;:::i;:::-;-1:-1:-1;;;;;28753:18:0;;;;;;:7;:18;;;;;:57;28815:33;28833:6;28841;28815:17;:33::i;:::-;28853:23;28865:4;28871;28853:11;:23::i;:::-;28903:9;-1:-1:-1;;;;;28886:44:0;28895:6;-1:-1:-1;;;;;28886:44:0;;28914:15;28886:44;;;;2550:25:1;;2538:2;2523:18;;2404:177;28886:44:0;;;;;;;;28270:665;;;;;;;28173:762;;;;:::o;30019:562::-;30111:7;;30070;;;;8346:24;30070:7;30153:331;30177:22;:29;30173:33;;30153:331;;;30266:7;30229;:34;30237:22;30260:1;30237:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30237:25:0;30229:34;;;;;;;;;;;;;:44;;:97;;;30319:7;30282;:34;30290:22;30313:1;30290:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30290:25:0;30282:34;;;;;;;;;;;;;:44;30229:97;30219:139;;;-1:-1:-1;;30341:7:0;;;8346:24;;-1:-1:-1;30019:562:0;-1:-1:-1;;30019:562:0:o;30219:139::-;30384:7;:34;30392:22;30415:1;30392:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30392:25:0;30384:34;;;;;;;;;;;;;30374:44;;:7;:44;:::i;:::-;30364:54;;30444:7;:34;30452:22;30475:1;30452:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30452:25:0;30444:34;;;;;;;;;;;;;30434:44;;:7;:44;:::i;:::-;30424:54;-1:-1:-1;30208:3:0;;;;:::i;:::-;;;;30153:331;;;;8346:24;30502:7;;:17;;;;:::i;:::-;30492:7;:27;30488:58;;;-1:-1:-1;;30529:7:0;;;8346:24;;-1:-1:-1;30019:562:0;-1:-1:-1;30019:562:0:o;30488:58::-;30559:7;;30568;;-1:-1:-1;30019:562:0;-1:-1:-1;30019:562:0:o;37939:411::-;38024:16;;;38038:1;38024:16;;;;;;;;38000:21;;38024:16;;;;;;;;;;-1:-1:-1;38024:16:0;38000:40;;38063:4;38045;38050:1;38045:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;38045:23:0;;;:7;;;;;;;;;;:23;;;;38083:15;;:22;;;-1:-1:-1;;;38083:22:0;;;;:15;;;;;:20;;:22;;;;;38045:7;;38083:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38073:4;38078:1;38073:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;38073:32:0;;;:7;;;;;;;;;:32;38142:15;;38110:62;;38127:4;;38142:15;38160:11;38110:8;:62::i;:::-;38177:15;;:168;;-1:-1:-1;;;38177:168:0;;-1:-1:-1;;;;;38177:15:0;;;;:66;;:168;;38248:11;;38177:15;;38298:4;;38315;;38325:15;;38177:168;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38353:345;38461:15;;38429:62;;38446:4;;-1:-1:-1;;;;;38461:15:0;38479:11;38429:8;:62::i;:::-;38496:15;;38650;;38496:194;;-1:-1:-1;;;38496:194:0;;38558:4;38496:194;;;28529:34:1;28579:18;;;28572:34;;;38496:15:0;28622:18:1;;;28615:34;;;28665:18;;;28658:34;-1:-1:-1;;;;;38650:15:0;;;28708:19:1;;;28701:44;38670:15:0;28761:19:1;;;28754:35;38496:15:0;;;:31;;38535:9;;28463:19:1;;38496:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;38353:345;;:::o;29046:413::-;29120:7;29128;29136;29154;29149:306;;-1:-1:-1;29177:7:0;;-1:-1:-1;29186:1:0;;-1:-1:-1;29186:1:0;29169:22;;29149:306;29237:11;;29212:12;;29251:3;;29227:21;;-1:-1:-1;;;29237:11:0;;;;29227:7;:21;:::i;:::-;:27;;;;:::i;:::-;29330:11;;29212:42;;-1:-1:-1;29260:14:0;;29345:3;;29330:11;;;;;;;29314:13;;;;;;29288:23;;29330:11;29304:7;;;;;29288:13;:23;:::i;:::-;:39;;;;:::i;:::-;:53;;;;:::i;:::-;29277:65;;;;:7;:65;:::i;:::-;:71;;;;:::i;:::-;29260:88;-1:-1:-1;29354:23:0;29391:13;29260:88;29391:4;:13;:::i;:::-;29380:25;;:7;:25;:::i;:::-;29354:51;-1:-1:-1;29436:4:0;;-1:-1:-1;29442:6:0;-1:-1:-1;29411:38:0;;-1:-1:-1;29411:38:0;29149:306;29046:413;;;;;:::o;29462:402::-;29591:7;;;;;29650:21;29660:11;29650:7;:21;:::i;:::-;29632:39;-1:-1:-1;29676:12:0;29691:18;29698:11;29691:4;:18;:::i;:::-;29676:33;-1:-1:-1;29714:14:0;29731:20;29740:11;29731:6;:20;:::i;:::-;29714:37;-1:-1:-1;29756:23:0;29793:13;29714:37;29793:4;:13;:::i;:::-;29782:25;;:7;:25;:::i;:::-;29820:7;;;;-1:-1:-1;29846:4:0;;-1:-1:-1;29846:4:0;-1:-1:-1;29462:402:0;;-1:-1:-1;;;;;;29462:402:0:o;30584:202::-;30693:4;30660:39;;;;:24;:39;;;;;;;;30656:89;;;30723:4;30707:22;;;;:7;:22;;;;;:32;;30733:6;;30707:22;:32;;30733:6;;30707:32;:::i;:::-;;;;-1:-1:-1;;30656:89:0;30765:4;30749:22;;;;:7;:22;;;;;:32;;30775:6;;30749:22;:32;;30775:6;;30749:32;:::i;:::-;;;;-1:-1:-1;;;;30584:202:0:o;28938:105::-;29011:4;29000:7;;:15;;;;;;;:::i;:::-;;;;;;;;29034:4;29020:10;;:18;;;;;;;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:118::-;236:5;229:13;222:21;215:5;212:32;202:60;;258:1;255;248:12;273:382;338:6;346;399:2;387:9;378:7;374:23;370:32;367:52;;;415:1;412;405:12;367:52;454:9;441:23;473:31;498:5;473:31;:::i;:::-;523:5;-1:-1:-1;580:2:1;565:18;;552:32;593:30;552:32;593:30;:::i;:::-;642:7;632:17;;;273:382;;;;;:::o;852:597::-;964:4;993:2;1022;1011:9;1004:21;1054:6;1048:13;1097:6;1092:2;1081:9;1077:18;1070:34;1122:1;1132:140;1146:6;1143:1;1140:13;1132:140;;;1241:14;;;1237:23;;1231:30;1207:17;;;1226:2;1203:26;1196:66;1161:10;;1132:140;;;1290:6;1287:1;1284:13;1281:91;;;1360:1;1355:2;1346:6;1335:9;1331:22;1327:31;1320:42;1281:91;-1:-1:-1;1433:2:1;1412:15;-1:-1:-1;;1408:29:1;1393:45;;;;1440:2;1389:54;;852:597;-1:-1:-1;;;852:597:1:o;1454:156::-;1520:20;;1580:4;1569:16;;1559:27;;1549:55;;1600:1;1597;1590:12;1549:55;1454:156;;;:::o;1615:464::-;1700:6;1708;1716;1724;1732;1785:3;1773:9;1764:7;1760:23;1756:33;1753:53;;;1802:1;1799;1792:12;1753:53;1825:27;1842:9;1825:27;:::i;:::-;1815:37;;1871:36;1903:2;1892:9;1888:18;1871:36;:::i;:::-;1861:46;;1926:36;1958:2;1947:9;1943:18;1926:36;:::i;:::-;1916:46;;1981:36;2013:2;2002:9;1998:18;1981:36;:::i;:::-;1971:46;;2036:37;2068:3;2057:9;2053:19;2036:37;:::i;:::-;2026:47;;1615:464;;;;;;;;:::o;2084:315::-;2152:6;2160;2213:2;2201:9;2192:7;2188:23;2184:32;2181:52;;;2229:1;2226;2219:12;2181:52;2268:9;2255:23;2287:31;2312:5;2287:31;:::i;:::-;2337:5;2389:2;2374:18;;;;2361:32;;-1:-1:-1;;;2084:315:1:o;3017:180::-;3076:6;3129:2;3117:9;3108:7;3104:23;3100:32;3097:52;;;3145:1;3142;3135:12;3097:52;-1:-1:-1;3168:23:1;;3017:180;-1:-1:-1;3017:180:1:o;3202:456::-;3279:6;3287;3295;3348:2;3336:9;3327:7;3323:23;3319:32;3316:52;;;3364:1;3361;3354:12;3316:52;3403:9;3390:23;3422:31;3447:5;3422:31;:::i;:::-;3472:5;-1:-1:-1;3529:2:1;3514:18;;3501:32;3542:33;3501:32;3542:33;:::i;:::-;3202:456;;3594:7;;-1:-1:-1;;;3648:2:1;3633:18;;;;3620:32;;3202:456::o;3852:309::-;3917:6;3925;3978:2;3966:9;3957:7;3953:23;3949:32;3946:52;;;3994:1;3991;3984:12;3946:52;4030:9;4017:23;4007:33;;4090:2;4079:9;4075:18;4062:32;4103:28;4125:5;4103:28;:::i;4166:247::-;4225:6;4278:2;4266:9;4257:7;4253:23;4249:32;4246:52;;;4294:1;4291;4284:12;4246:52;4333:9;4320:23;4352:31;4377:5;4352:31;:::i;4418:671::-;4504:6;4512;4520;4528;4581:3;4569:9;4560:7;4556:23;4552:33;4549:53;;;4598:1;4595;4588:12;4549:53;4637:9;4624:23;4656:31;4681:5;4656:31;:::i;:::-;4706:5;-1:-1:-1;4763:2:1;4748:18;;4735:32;4776:33;4735:32;4776:33;:::i;:::-;4828:7;-1:-1:-1;4887:2:1;4872:18;;4859:32;4900:33;4859:32;4900:33;:::i;:::-;4952:7;-1:-1:-1;5011:2:1;4996:18;;4983:32;5024:33;4983:32;5024:33;:::i;:::-;4418:671;;;;-1:-1:-1;4418:671:1;;-1:-1:-1;;4418:671:1:o;5562:388::-;5630:6;5638;5691:2;5679:9;5670:7;5666:23;5662:32;5659:52;;;5707:1;5704;5697:12;5659:52;5746:9;5733:23;5765:31;5790:5;5765:31;:::i;:::-;5815:5;-1:-1:-1;5872:2:1;5857:18;;5844:32;5885:33;5844:32;5885:33;:::i;5955:356::-;6157:2;6139:21;;;6176:18;;;6169:30;6235:34;6230:2;6215:18;;6208:62;6302:2;6287:18;;5955:356::o;6316:421::-;6518:2;6500:21;;;6557:2;6537:18;;;6530:30;6596:34;6591:2;6576:18;;6569:62;6667:27;6662:2;6647:18;;6640:55;6727:3;6712:19;;6316:421::o;6742:127::-;6803:10;6798:3;6794:20;6791:1;6784:31;6834:4;6831:1;6824:15;6858:4;6855:1;6848:15;6874:127;6935:10;6930:3;6926:20;6923:1;6916:31;6966:4;6963:1;6956:15;6990:4;6987:1;6980:15;7006:125;7046:4;7074:1;7071;7068:8;7065:34;;;7079:18;;:::i;:::-;-1:-1:-1;7116:9:1;;7006:125::o;7136:127::-;7197:10;7192:3;7188:20;7185:1;7178:31;7228:4;7225:1;7218:15;7252:4;7249:1;7242:15;7268:135;7307:3;7328:17;;;7325:43;;7348:18;;:::i;:::-;-1:-1:-1;7395:1:1;7384:13;;7268:135::o;9458:127::-;9519:10;9514:3;9510:20;9507:1;9500:31;9550:4;9547:1;9540:15;9574:4;9571:1;9564:15;9590:120;9630:1;9656;9646:35;;9661:18;;:::i;:::-;-1:-1:-1;9695:9:1;;9590:120::o;9715:128::-;9755:3;9786:1;9782:6;9779:1;9776:13;9773:39;;;9792:18;;:::i;:::-;-1:-1:-1;9828:9:1;;9715:128::o;9848:245::-;9915:6;9968:2;9956:9;9947:7;9943:23;9939:32;9936:52;;;9984:1;9981;9974:12;9936:52;10016:9;10010:16;10035:28;10057:5;10035:28;:::i;10874:168::-;10914:7;10980:1;10976;10972:6;10968:14;10965:1;10962:21;10957:1;10950:9;10943:17;10939:45;10936:71;;;10987:18;;:::i;:::-;-1:-1:-1;11027:9:1;;10874:168::o;18147:209::-;-1:-1:-1;;18311:38:1;;;;18293:57;;18281:2;18266:18;;18147:209::o;22302:397::-;22504:2;22486:21;;;22543:2;22523:18;;;22516:30;22582:34;22577:2;22562:18;;22555:62;-1:-1:-1;;;22648:2:1;22633:18;;22626:31;22689:3;22674:19;;22302:397::o;25319:204::-;25357:3;25393:4;25390:1;25386:12;25425:4;25422:1;25418:12;25460:3;25454:4;25450:14;25445:3;25442:23;25439:49;;;25468:18;;:::i;:::-;25504:13;;25319:204;-1:-1:-1;;;25319:204:1:o;26121:165::-;26159:1;26193:4;26190:1;26186:12;26217:3;26207:37;;26224:18;;:::i;:::-;26276:3;26269:4;26266:1;26262:12;26258:22;26253:27;;;26121:165;;;;:::o;26291:195::-;26329:4;26366;26363:1;26359:12;26398:4;26395:1;26391:12;26423:3;26418;26415:12;26412:38;;;26430:18;;:::i;:::-;26467:13;;;26291:195;-1:-1:-1;;;26291:195:1:o;26947:251::-;27017:6;27070:2;27058:9;27049:7;27045:23;27041:32;27038:52;;;27086:1;27083;27076:12;27038:52;27118:9;27112:16;27137:31;27162:5;27137:31;:::i;27203:980::-;27465:4;27513:3;27502:9;27498:19;27544:6;27533:9;27526:25;27570:2;27608:6;27603:2;27592:9;27588:18;27581:34;27651:3;27646:2;27635:9;27631:18;27624:31;27675:6;27710;27704:13;27741:6;27733;27726:22;27779:3;27768:9;27764:19;27757:26;;27818:2;27810:6;27806:15;27792:29;;27839:1;27849:195;27863:6;27860:1;27857:13;27849:195;;;27928:13;;-1:-1:-1;;;;;27924:39:1;27912:52;;28019:15;;;;27984:12;;;;27960:1;27878:9;27849:195;;;-1:-1:-1;;;;;;;28100:32:1;;;;28095:2;28080:18;;28073:60;-1:-1:-1;;;28164:3:1;28149:19;28142:35;28061:3;27203:980;-1:-1:-1;;;27203:980:1:o;28800:306::-;28888:6;28896;28904;28957:2;28945:9;28936:7;28932:23;28928:32;28925:52;;;28973:1;28970;28963:12;28925:52;29002:9;28996:16;28986:26;;29052:2;29041:9;29037:18;29031:25;29021:35;;29096:2;29085:9;29081:18;29075:25;29065:35;;28800:306;;;;;:::o

Swarm Source

ipfs://3084574085aba8adf8bd6fa057454a217e2339c100aff7233b3e43e668854fbd
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.