ETH Price: $3,407.27 (-0.29%)
Gas: 23 Gwei

Token

GTFO (GTFO)
 

Overview

Max Total Supply

100,000,000,000 GTFO

Holders

23 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: GTFO 16
Balance
26,491,643.878810815764378315 GTFO

Value
$0.00
0x0ec659E31b297AB0a3074E7AE3B1A72c33FA70f3
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Providing a lively and enjoyable platform where every form of talent can shine and receive the recognition they rightfully deserve!

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GTFO

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-13
*/

// SPDX-License-Identifier: MIT

/**
GTFO.vip
*/


pragma solidity 0.8.9;

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

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 IERC20Metadata is IERC20 {
 function name() external view returns(string memory);

 function symbol() external view returns(string memory);

 function decimals() external view returns(uint8);
}

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

contract ERC20 is Context, IERC20, IERC20Metadata {
 using SafeMath for uint256;

 mapping(address => uint256) private _balances;
 mapping(address => mapping(address => uint256)) private _allowances;
 uint256 private _totalSupply;
 
 string private _name;
 string private _symbol;

 constructor(string memory name_, string memory symbol_) {
 _name = name_;
 _symbol = symbol_;
 }

 function name() public view virtual override returns(string memory) {
 return _name;
 }

 function symbol() public view virtual override returns(string memory) {
 return _symbol;
 }

 function decimals() public view virtual override returns(uint8) {
 return 18;
 }

 function totalSupply() public view virtual override returns(uint256) {
 return _totalSupply;
 }

 function balanceOf(address account) public view virtual override returns(uint256) {
 return _balances[account];
 }

 function transfer(address recipient, uint256 amount) public virtual override returns(bool) {
 _transfer(_msgSender(), recipient, amount);
 return true;
 }

 function allowance(address owner, address spender) public view virtual override returns(uint256) {
 return _allowances[owner][spender];
 }

 function approve(address spender, uint256 amount) public virtual override returns(bool) {
 _approve(_msgSender(), spender, amount);
 return true;
 }

 function transferFrom(
 address sender,
 address recipient,
 uint256 amount
 ) public virtual override returns(bool) {
 _transfer(sender, recipient, amount);
 _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
 return true;
 }

 function increaseAllowance(address spender, uint256 addedValue) public virtual returns(bool) {
 _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
 return true;
 }

 function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns(bool) {
 _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased cannot be below zero"));
 return true;
 }

 function _transfer(
 address sender,
 address recipient,
 uint256 amount
 ) internal virtual {
 
 _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
 _balances[recipient] = _balances[recipient].add(amount);
 emit Transfer(sender, recipient, amount);
 }

 function _mint(address account, uint256 amount) internal virtual {
 require(account != address(0), "ERC20: mint to the zero address");

 _totalSupply = _totalSupply.add(amount);
 _balances[account] = _balances[account].add(amount);
 emit Transfer(address(0), account, amount);
 }

 function _approve(
 address owner,
 address spender,
 uint256 amount
 ) internal virtual {
 _allowances[owner][spender] = amount;
 emit Approval(owner, spender, amount);
 }
}
 
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) {
 
 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;

 return c;
 }
}
 
contract Ownable is Context {
 address private _owner;
 
 event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

 constructor() {
 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;
 }
}
 
library SafeMathInt {
 int256 private constant MIN_INT256 = int256(1) << 255;
 int256 private constant MAX_INT256 = ~(int256(1) << 255);

 function mul(int256 a, int256 b) internal pure returns(int256) {
 int256 c = a * b;

 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
 require((b == 0) || (c / b == a));
 return c;
 }

 function div(int256 a, int256 b) internal pure returns(int256) {
 require(b != -1 || a != MIN_INT256);

 return a / b;
 }

 function sub(int256 a, int256 b) internal pure returns(int256) {
 int256 c = a - b;
 require((b >= 0 && c <= a) || (b < 0 && c > a));
 return c;
 }

 function add(int256 a, int256 b) internal pure returns(int256) {
 int256 c = a + b;
 require((b >= 0 && c >= a) || (b < 0 && c < a));
 return c;
 }

 function abs(int256 a) internal pure returns(int256) {
 require(a != MIN_INT256);
 return a < 0 ? -a : a;
 }

 function toUint256Safe(int256 a) internal pure returns(uint256) {
 require(a >= 0);
 return uint256(a);
 }
}
 
library SafeMathUint {
 function toInt256Safe(uint256 a) internal pure returns(int256) {
 int256 b = int256(a);
 require(b >= 0);
 return b;
 }
}

interface IUniswapV2Router01 {
 function factory() external pure returns(address);
 function WETH() external pure returns(address);

 function addLiquidity(
 address tokenA,
 address tokenB,
 uint amountADesired,
 uint amountBDesired,
 uint amountAMin,
 uint amountBMin,
 address to,
 uint deadline
 ) external returns(uint amountA, uint amountB, uint liquidity);
 function addLiquidityETH(
 address token,
 uint amountTokenDesired,
 uint amountTokenMin,
 uint amountETHMin,
 address to,
 uint deadline
 ) external payable returns(uint amountToken, uint amountETH, uint liquidity);
 function removeLiquidity(
 address tokenA,
 address tokenB,
 uint liquidity,
 uint amountAMin,
 uint amountBMin,
 address to,
 uint deadline
 ) external returns(uint amountA, uint amountB);
 function removeLiquidityETH(
 address token,
 uint liquidity,
 uint amountTokenMin,
 uint amountETHMin,
 address to,
 uint deadline
 ) external returns(uint amountToken, uint amountETH);
 function removeLiquidityWithPermit(
 address tokenA,
 address tokenB,
 uint liquidity,
 uint amountAMin,
 uint amountBMin,
 address to,
 uint deadline,
 bool approveMax, uint8 v, bytes32 r, bytes32 s
 ) external returns(uint amountA, uint amountB);
 function removeLiquidityETHWithPermit(
 address token,
 uint liquidity,
 uint amountTokenMin,
 uint amountETHMin,
 address to,
 uint deadline,
 bool approveMax, uint8 v, bytes32 r, bytes32 s
 ) external returns(uint amountToken, uint amountETH);
 function swapExactTokensForTokens(
 uint amountIn,
 uint amountOutMin,
 address[] calldata path,
 address to,
 uint deadline
 ) external returns(uint[] memory amounts);
 function swapTokensForExactTokens(
 uint amountOut,
 uint amountInMax,
 address[] calldata path,
 address to,
 uint deadline
 ) external returns(uint[] memory amounts);
 function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
 external
 payable
 returns(uint[] memory amounts);
 function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
 external
 returns(uint[] memory amounts);
 function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
 external
 returns(uint[] memory amounts);
 function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
 external
 payable
 returns(uint[] memory amounts);

 function quote(uint amountA, uint reserveA, uint reserveB) external pure returns(uint amountB);
 function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns(uint amountOut);
 function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns(uint amountIn);
 function getAmountsOut(uint amountIn, address[] calldata path) external view returns(uint[] memory amounts);
 function getAmountsIn(uint amountOut, address[] calldata path) external view returns(uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
 function removeLiquidityETHSupportingFeeOnTransferTokens(
 address token,
 uint liquidity,
 uint amountTokenMin,
 uint amountETHMin,
 address to,
 uint deadline
 ) external returns(uint amountETH);
 function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
 address token,
 uint liquidity,
 uint amountTokenMin,
 uint amountETHMin,
 address to,
 uint deadline,
 bool approveMax, uint8 v, bytes32 r, bytes32 s
 ) external returns(uint amountETH);

 function swapExactTokensForTokensSupportingFeeOnTransferTokens(
 uint amountIn,
 uint amountOutMin,
 address[] calldata path,
 address to,
 uint deadline
 ) external;
 function swapExactETHForTokensSupportingFeeOnTransferTokens(
 uint amountOutMin,
 address[] calldata path,
 address to,
 uint deadline
 ) external payable;
 function swapExactTokensForETHSupportingFeeOnTransferTokens(
 uint amountIn,
 uint amountOutMin,
 address[] calldata path,
 address to,
 uint deadline
 ) external;
}
 
contract GTFO is ERC20, Ownable {
 using SafeMath for uint256;

 IUniswapV2Router02 public immutable router;
 address public immutable uniswapV2Pair;

 // addresses
 address public devWallet;
 address private marketingWallet;

 // limits 
 uint256 private maxBuyAmount;
 uint256 private maxSellAmount; 
 uint256 private maxWalletAmount;
 
 uint256 private thresholdSwapAmount;

 // status flags
 bool private isTrading = false;
 bool public swapEnabled = false;
 bool public isSwapping;

 struct Fees {
 uint8 buyTotalFees;
 uint8 buyMarketingFee;
 uint8 buyDevFee;
 uint8 buyLiquidityFee;

 uint8 sellTotalFees;
 uint8 sellMarketingFee;
 uint8 sellDevFee;
 uint8 sellLiquidityFee;
 } 

 Fees public _fees = Fees({
 sellTotalFees: 0,
 sellMarketingFee: 0,
 sellDevFee:0,
 sellLiquidityFee: 0,

 buyTotalFees: 0,
 buyMarketingFee: 0,
 buyDevFee:0,
 buyLiquidityFee: 0
 });
 
 mapping(address => bool) private _isExcludedFromFees;
 mapping(address => bool) public _isExcludedMaxTransactionAmount;
 mapping(address => bool) public _isExcludedMaxWalletAmount;

 uint256 public tokensForMarketing;
 uint256 public tokensForLiquidity;
 uint256 public tokensForDev;
 uint256 private taxTill;

 mapping(address => bool) public marketPair;
 mapping(address => bool) public _isBlacklisted;
 
 event SwapAndLiquify(
 uint256 tokensSwapped,
 uint256 ethReceived
 );

 constructor() ERC20("GTFO", "GTFO") {
 
 router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
 uniswapV2Pair = IUniswapV2Factory(router.factory()).createPair(address(this), router.WETH());

 //Wallets
 devWallet = address(0xf1761b6FB3CC5d2a4B8406c1a0b96D98BA179157);
 marketingWallet = address(0x84d84B2A5BA6D4B60B271D417278AFE72bc18E40);

//Fees
 _fees.buyMarketingFee = 2;
 _fees.buyLiquidityFee = 2;
 _fees.buyDevFee = 0;
 _fees.buyTotalFees = _fees.buyMarketingFee + _fees.buyLiquidityFee + _fees.buyDevFee;

 _fees.sellMarketingFee = 2;
 _fees.sellLiquidityFee = 2;
 _fees.sellDevFee = 1 ;
 _fees.sellTotalFees = _fees.sellMarketingFee + _fees.sellLiquidityFee + _fees.sellDevFee;

// Lists
 _isExcludedMaxWalletAmount[owner()] = true;
 _isExcludedMaxWalletAmount[address(this)] = true;
 _isExcludedMaxWalletAmount[address(uniswapV2Pair)] = true;
 
 _isExcludedMaxTransactionAmount[address(router)] = true;
 _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true; 
 _isExcludedMaxTransactionAmount[owner()] = true;
 _isExcludedMaxTransactionAmount[address(this)] = true;

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

 marketPair[address(uniswapV2Pair)] = true;
 approve(address(router), type(uint256).max);
 
 //Supply
 uint256 totalSupply = 100000000000 * 10**18;

//Limits
 maxBuyAmount = totalSupply * 5 / 100;
 maxSellAmount = totalSupply * 5 / 100;
 maxWalletAmount = totalSupply * 5 / 100;
 thresholdSwapAmount = totalSupply * 2 / 10000;

 _mint(msg.sender, totalSupply);
 }

 receive() external payable {
 }

 function swapTrading() external onlyOwner {
 isTrading = true;
 swapEnabled = true;
 taxTill = block.number + 2;
 }

 function updateThresholdSwapAmount(uint256 newAmount) external onlyOwner returns(bool){
 thresholdSwapAmount = newAmount;
 return true;
 }

 function updateMaxTxnAmount(uint256 newMaxBuy, uint256 newMaxSell) external onlyOwner {
 require(((totalSupply() * newMaxBuy) / 1000) >= (totalSupply() / 100), "maxBuyAmount must be higher than 1%");
 require(((totalSupply() * newMaxSell) / 1000) >= (totalSupply() / 100), "maxSellAmount must be higher than 1%");
 maxBuyAmount = (totalSupply() * newMaxBuy) / 1000;
 maxSellAmount = (totalSupply() * newMaxSell) / 1000;
 }

 function updateMaxWalletAmount(uint256 newPercentage) external onlyOwner {
 require(((totalSupply() * newPercentage) / 1000) >= (totalSupply() / 100), "Cannot set maxWallet lower than 1%");
 maxWalletAmount = (totalSupply() * newPercentage) / 1000;
 }

 function toggleSwapEnabled(bool enabled) external onlyOwner(){
 swapEnabled = enabled;
 }

 function blacklistAddress(address account, bool value) external onlyOwner{
 _isBlacklisted[account] = value;
 }

 function updateFees(uint8 _marketingFeeBuy, uint8 _liquidityFeeBuy,uint8 _devFeeBuy,uint8 _marketingFeeSell, uint8 _liquidityFeeSell,uint8 _devFeeSell) external onlyOwner{
 _fees.buyMarketingFee = _marketingFeeBuy;
 _fees.buyLiquidityFee = _liquidityFeeBuy;
 _fees.buyDevFee = _devFeeBuy;
 _fees.buyTotalFees = _fees.buyMarketingFee + _fees.buyLiquidityFee + _fees.buyDevFee;

 _fees.sellMarketingFee = _marketingFeeSell;
 _fees.sellLiquidityFee = _liquidityFeeSell;
 _fees.sellDevFee = _devFeeSell;
 _fees.sellTotalFees = _fees.sellMarketingFee + _fees.sellLiquidityFee + _fees.sellDevFee;
 require(_fees.buyTotalFees <= 40, "Must keep fees at 40% or less"); 
 require(_fees.sellTotalFees <= 40, "Must keep fees at 40% or less");
 
 }
 
 function excludeFromFees(address account, bool excluded) public onlyOwner {
 _isExcludedFromFees[account] = excluded;
 }
 function excludeFromWalletLimit(address account, bool excluded) public onlyOwner {
 _isExcludedMaxWalletAmount[account] = excluded;
 }
 function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
 _isExcludedMaxTransactionAmount[updAds] = isEx;
 }

 function setMarketPair(address pair, bool value) public onlyOwner {
 require(pair != uniswapV2Pair, "Must keep uniswapV2Pair");
 marketPair[pair] = value;
 }

 function setWallets(address _marketingWallet,address _devWallet) external onlyOwner{
 marketingWallet = _marketingWallet;
 devWallet = _devWallet;
 }

 function isExcludedFromFees(address account) public view returns(bool) {
 return _isExcludedFromFees[account];
 }

 function _transfer(
 address sender,
 address recipient,
 uint256 amount
 
 ) internal override {
 
 if (amount == 0) {
 super._transfer(sender, recipient, 0);
 return;
 }

 if (
 sender != owner() &&
 recipient != owner() &&
 !isSwapping
 ) {

 if (!isTrading) {
 require(_isExcludedFromFees[sender] || _isExcludedFromFees[recipient], "Trading is not active.");
 }
 if (marketPair[sender] && !_isExcludedMaxTransactionAmount[recipient]) {
 require(amount <= maxBuyAmount, "buy transfer over max amount");
 } 
 else if (marketPair[recipient] && !_isExcludedMaxTransactionAmount[sender]) {
 require(amount <= maxSellAmount, "Sell transfer over max amount");
 }

 if (!_isExcludedMaxWalletAmount[recipient]) {
 require(amount + balanceOf(recipient) <= maxWalletAmount, "Max wallet exceeded");
 }
 require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], "Blacklisted address");
 }
 
 uint256 contractTokenBalance = balanceOf(address(this));
 
 bool canSwap = contractTokenBalance >= thresholdSwapAmount;

 if (
 canSwap &&
 swapEnabled &&
 !isSwapping &&
 marketPair[recipient] &&
 !_isExcludedFromFees[sender] &&
 !_isExcludedFromFees[recipient]
 ) {
 isSwapping = true;
 swapBack();
 isSwapping = false;
 }
 
 bool takeFee = !isSwapping;

 if (_isExcludedFromFees[sender] || _isExcludedFromFees[recipient]) {
 takeFee = false;
 }
 
 if (takeFee) {
 uint256 fees = 0;
 if(block.number < taxTill) {
 fees = amount.mul(99).div(100);
 tokensForMarketing += (fees * 94) / 99;
 tokensForDev += (fees * 5) / 99;
 } else if (marketPair[recipient] && _fees.sellTotalFees > 0) {
 fees = amount.mul(_fees.sellTotalFees).div(100);
 tokensForLiquidity += fees * _fees.sellLiquidityFee / _fees.sellTotalFees;
 tokensForMarketing += fees * _fees.sellMarketingFee / _fees.sellTotalFees;
 tokensForDev += fees * _fees.sellDevFee / _fees.sellTotalFees;
 }
 // on buy
 else if (marketPair[sender] && _fees.buyTotalFees > 0) {
 fees = amount.mul(_fees.buyTotalFees).div(100);
 tokensForLiquidity += fees * _fees.buyLiquidityFee / _fees.buyTotalFees;
 tokensForMarketing += fees * _fees.buyMarketingFee / _fees.buyTotalFees;
 tokensForDev += fees * _fees.buyDevFee / _fees.buyTotalFees;
 }

 if (fees > 0) {
 super._transfer(sender, address(this), fees);
 }

 amount -= fees;

 }

 super._transfer(sender, recipient, amount);
 }

 function swapTokensForEth(uint256 tAmount) private {

 address[] memory path = new address[](2);
 path[0] = address(this);
 path[1] = router.WETH();

 _approve(address(this), address(router), tAmount);

 router.swapExactTokensForETHSupportingFeeOnTransferTokens(
 tAmount,
 0, // accept any amount of ETH!
 path,
 address(this),
 block.timestamp
 );
 }

 function addLiquidity(uint256 tAmount, uint256 ethAmount) private {
 _approve(address(this), address(router), tAmount);

 router.addLiquidityETH{ value: ethAmount } (address(this), tAmount, 0, 0 , address(this), block.timestamp);
 }

 function swapBack() private {
 uint256 contractTokenBalance = balanceOf(address(this));
 uint256 toSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
 bool success;

 if (contractTokenBalance == 0 || toSwap == 0) { return; }

 if (contractTokenBalance > thresholdSwapAmount * 20) {
 contractTokenBalance = thresholdSwapAmount * 20;
 }

 uint256 liquidityTokens = contractTokenBalance * tokensForLiquidity / toSwap / 2;
 uint256 amountToSwapForETH = contractTokenBalance.sub(liquidityTokens);
 
 uint256 initialETHBalance = address(this).balance;

 swapTokensForEth(amountToSwapForETH); 
 
 uint256 newBalance = address(this).balance.sub(initialETHBalance);
 
 uint256 ethForMarketing = newBalance.mul(tokensForMarketing).div(toSwap);
 uint256 ethForDev = newBalance.mul(tokensForDev).div(toSwap);
 uint256 ethForLiquidity = newBalance - (ethForMarketing + ethForDev);

 tokensForLiquidity = 0;
 tokensForMarketing = 0;
 tokensForDev = 0;

 if (liquidityTokens > 0 && ethForLiquidity > 0) {
 addLiquidity(liquidityTokens, ethForLiquidity);
 emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity);
 }

 (success,) = address(devWallet).call{ value: (address(this).balance - ethForMarketing) } ("");
 (success,) = address(marketingWallet).call{ value: address(this).balance } ("");
 }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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"}],"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"},{"inputs":[],"name":"_fees","outputs":[{"internalType":"uint8","name":"buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"buyMarketingFee","type":"uint8"},{"internalType":"uint8","name":"buyDevFee","type":"uint8"},{"internalType":"uint8","name":"buyLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"sellTotalFees","type":"uint8"},{"internalType":"uint8","name":"sellMarketingFee","type":"uint8"},{"internalType":"uint8","name":"sellDevFee","type":"uint8"},{"internalType":"uint8","name":"sellLiquidityFee","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","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":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"toggleSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_marketingFeeBuy","type":"uint8"},{"internalType":"uint8","name":"_liquidityFeeBuy","type":"uint8"},{"internalType":"uint8","name":"_devFeeBuy","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeSell","type":"uint8"},{"internalType":"uint8","name":"_liquidityFeeSell","type":"uint8"},{"internalType":"uint8","name":"_devFeeSell","type":"uint8"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxBuy","type":"uint256"},{"internalType":"uint256","name":"newMaxSell","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentage","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateThresholdSwapAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff021916908315150217905550604051806101000160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff16815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a81548160ff021916908360ff16021790555060c08201518160000160066101000a81548160ff021916908360ff16021790555060e08201518160000160076101000a81548160ff021916908360ff1602179055505050348015620001ad57600080fd5b506040518060400160405280600481526020017f4754464f000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4754464f0000000000000000000000000000000000000000000000000000000081525081600390805190602001906200023292919062000f30565b5080600490805190602001906200024b92919062000f30565b50505060006200026062000be560201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039057600080fd5b505afa158015620003a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cb91906200104a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043057600080fd5b505afa15801562000445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046b91906200104a565b6040518363ffffffff1660e01b81526004016200048a9291906200108d565b602060405180830381600087803b158015620004a557600080fd5b505af1158015620004ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e091906200104a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505073f1761b6fb3cc5d2a4b8406c1a0b96d98ba179157600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507384d84b2a5ba6d4b60b271d417278afe72bc18e40600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600d60000160016101000a81548160ff021916908360ff1602179055506002600d60000160036101000a81548160ff021916908360ff1602179055506000600d60000160026101000a81548160ff021916908360ff160217905550600d60000160029054906101000a900460ff16600d60000160039054906101000a900460ff16600d60000160019054906101000a900460ff166200065f9190620010f6565b6200066b9190620010f6565b600d60000160006101000a81548160ff021916908360ff1602179055506002600d60000160056101000a81548160ff021916908360ff1602179055506002600d60000160076101000a81548160ff021916908360ff1602179055506001600d60000160066101000a81548160ff021916908360ff160217905550600d60000160069054906101000a900460ff16600d60000160079054906101000a900460ff16600d60000160059054906101000a900460ff166200072a9190620010f6565b620007369190620010f6565b600d60000160046101000a81548160ff021916908360ff1602179055506001601060006200076962000bed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60006200093662000bed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000620009f562000bed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000b2c6080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000c1760201b60201c565b5060006c01431e0fae6d7217caa00000009050606460058262000b5091906200113e565b62000b5c9190620011ce565b600881905550606460058262000b7391906200113e565b62000b7f9190620011ce565b600981905550606460058262000b9691906200113e565b62000ba29190620011ce565b600a8190555061271060028262000bba91906200113e565b62000bc69190620011ce565b600b8190555062000bde338262000c4560201b60201c565b50620013eb565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600062000c3b62000c2d62000be560201b60201c565b848462000de060201b60201c565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000cb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000caf9062001267565b60405180910390fd5b62000cd48160025462000ecd60201b620022381790919060201c565b60028190555062000d32816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000ecd60201b620022381790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000dd491906200129a565b60405180910390a35050565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000ec091906200129a565b60405180910390a3505050565b600080828462000ede9190620012b7565b90508381101562000f26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f1d9062001364565b60405180910390fd5b8091505092915050565b82805462000f3e90620013b5565b90600052602060002090601f01602090048101928262000f62576000855562000fae565b82601f1062000f7d57805160ff191683800117855562000fae565b8280016001018555821562000fae579182015b8281111562000fad57825182559160200191906001019062000f90565b5b50905062000fbd919062000fc1565b5090565b5b8082111562000fdc57600081600090555060010162000fc2565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010128262000fe5565b9050919050565b620010248162001005565b81146200103057600080fd5b50565b600081519050620010448162001019565b92915050565b60006020828403121562001063576200106262000fe0565b5b6000620010738482850162001033565b91505092915050565b620010878162001005565b82525050565b6000604082019050620010a460008301856200107c565b620010b360208301846200107c565b9392505050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200110382620010ba565b91506200111083620010ba565b92508260ff03821115620011295762001128620010c7565b5b828201905092915050565b6000819050919050565b60006200114b8262001134565b9150620011588362001134565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620011945762001193620010c7565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011db8262001134565b9150620011e88362001134565b925082620011fb57620011fa6200119f565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200124f601f8362001206565b91506200125c8262001217565b602082019050919050565b60006020820190508181036000830152620012828162001240565b9050919050565b620012948162001134565b82525050565b6000602082019050620012b1600083018462001289565b92915050565b6000620012c48262001134565b9150620012d18362001134565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620013095762001308620010c7565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200134c601b8362001206565b9150620013598262001314565b602082019050919050565b600060208201905081810360008301526200137f816200133d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620013ce57607f821691505b60208210811415620013e557620013e462001386565b5b50919050565b60805160a051614b366200143b600039600081816112a30152611adc015260008181612216015281816135ec015281816136dc015281816137030152818161379f01526137c60152614b366000f3fe60806040526004361061023f5760003560e01c80637571336a1161012e578063c0246668116100ab578063dd62ed3e1161006f578063dd62ed3e146108bf578063e16830a8146108fc578063f2fde38b14610925578063f5b3c3bf1461094e578063f887ea401461098b57610246565b8063c0246668146107e9578063c16dd4a414610812578063c18bc1951461083b578063d212a69a14610864578063d3f6a1571461089657610246565b80639fccce32116100f25780639fccce3214610702578063a457c2d71461072d578063a9059cbb1461076a578063b8863115146107a7578063b9e418e7146107d257610246565b80637571336a1461061b5780638da5cb5b146106445780638ea5220f1461066f57806395d89b411461069a57806396880b17146106c557610246565b8063313ce567116101bc5780634fbee193116101805780634fbee19314610522578063555467a11461055f5780636ddd17131461059c57806370a08231146105c7578063715018a61461060457610246565b8063313ce5671461043d5780633265e846146104685780633950935114610491578063455a4396146104ce57806349bd5a5e146104f757610246565b80631a8145bb116102035780631a8145bb146103445780631c6e8a751461036f5780631cdd3be3146103985780631f3fed8f146103d557806323b872dd1461040057610246565b806306fdde031461024b578063095ea7b31461027657806310d5de53146102b357806311a582c3146102f057806318160ddd1461031957610246565b3661024657005b600080fd5b34801561025757600080fd5b506102606109b6565b60405161026d919061397e565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613a39565b610a48565b6040516102aa9190613a94565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613aaf565b610a66565b6040516102e79190613a94565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190613adc565b610a86565b005b34801561032557600080fd5b5061032e610c57565b60405161033b9190613b2b565b60405180910390f35b34801561035057600080fd5b50610359610c61565b6040516103669190613b2b565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190613b72565b610c67565b005b3480156103a457600080fd5b506103bf60048036038101906103ba9190613aaf565b610d1b565b6040516103cc9190613a94565b60405180910390f35b3480156103e157600080fd5b506103ea610d3b565b6040516103f79190613b2b565b60405180910390f35b34801561040c57600080fd5b5061042760048036038101906104229190613b9f565b610d41565b6040516104349190613a94565b60405180910390f35b34801561044957600080fd5b50610452610e1a565b60405161045f9190613c0e565b60405180910390f35b34801561047457600080fd5b5061048f600480360381019061048a9190613c55565b610e23565b005b34801561049d57600080fd5b506104b860048036038101906104b39190613a39565b6110fc565b6040516104c59190613a94565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613ce2565b6111af565b005b34801561050357600080fd5b5061050c6112a1565b6040516105199190613d31565b60405180910390f35b34801561052e57600080fd5b5061054960048036038101906105449190613aaf565b6112c5565b6040516105569190613a94565b60405180910390f35b34801561056b57600080fd5b5061058660048036038101906105819190613d4c565b61131b565b6040516105939190613a94565b60405180910390f35b3480156105a857600080fd5b506105b16113c4565b6040516105be9190613a94565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190613aaf565b6113d7565b6040516105fb9190613b2b565b60405180910390f35b34801561061057600080fd5b5061061961141f565b005b34801561062757600080fd5b50610642600480360381019061063d9190613ce2565b611577565b005b34801561065057600080fd5b50610659611669565b6040516106669190613d31565b60405180910390f35b34801561067b57600080fd5b50610684611693565b6040516106919190613d31565b60405180910390f35b3480156106a657600080fd5b506106af6116b9565b6040516106bc919061397e565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e79190613aaf565b61174b565b6040516106f99190613a94565b60405180910390f35b34801561070e57600080fd5b5061071761176b565b6040516107249190613b2b565b60405180910390f35b34801561073957600080fd5b50610754600480360381019061074f9190613a39565b611771565b6040516107619190613a94565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c9190613a39565b61183e565b60405161079e9190613a94565b60405180910390f35b3480156107b357600080fd5b506107bc61185c565b6040516107c99190613a94565b60405180910390f35b3480156107de57600080fd5b506107e761186f565b005b3480156107f557600080fd5b50610810600480360381019061080b9190613ce2565b611951565b005b34801561081e57600080fd5b5061083960048036038101906108349190613ce2565b611a43565b005b34801561084757600080fd5b50610862600480360381019061085d9190613d4c565b611bc4565b005b34801561087057600080fd5b50610879611cf9565b60405161088d989796959493929190613d79565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b89190613df7565b611d97565b005b3480156108cb57600080fd5b506108e660048036038101906108e19190613df7565b611eb4565b6040516108f39190613b2b565b60405180910390f35b34801561090857600080fd5b50610923600480360381019061091e9190613ce2565b611f3b565b005b34801561093157600080fd5b5061094c60048036038101906109479190613aaf565b61202d565b005b34801561095a57600080fd5b5061097560048036038101906109709190613aaf565b6121f4565b6040516109829190613a94565b60405180910390f35b34801561099757600080fd5b506109a0612214565b6040516109ad9190613e96565b60405180910390f35b6060600380546109c590613ee0565b80601f01602080910402602001604051908101604052809291908181526020018280546109f190613ee0565b8015610a3e5780601f10610a1357610100808354040283529160200191610a3e565b820191906000526020600020905b815481529060010190602001808311610a2157829003601f168201915b5050505050905090565b6000610a5c610a55612296565b848461229e565b6001905092915050565b600f6020528060005260406000206000915054906101000a900460ff1681565b610a8e612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490613f5e565b60405180910390fd5b6064610b27610c57565b610b319190613fdc565b6103e883610b3d610c57565b610b47919061400d565b610b519190613fdc565b1015610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b89906140d9565b60405180910390fd5b6064610b9c610c57565b610ba69190613fdc565b6103e882610bb2610c57565b610bbc919061400d565b610bc69190613fdc565b1015610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe9061416b565b60405180910390fd5b6103e882610c13610c57565b610c1d919061400d565b610c279190613fdc565b6008819055506103e881610c39610c57565b610c43919061400d565b610c4d9190613fdc565b6009819055505050565b6000600254905090565b60125481565b610c6f612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf590613f5e565b60405180910390fd5b80600c60016101000a81548160ff02191690831515021790555050565b60166020528060005260406000206000915054906101000a900460ff1681565b60115481565b6000610d4e848484612389565b610e0f84610d5a612296565b610e0a85604051806060016040528060288152602001614ad960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dc0612296565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f429092919063ffffffff16565b61229e565b600190509392505050565b60006012905090565b610e2b612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb190613f5e565b60405180910390fd5b85600d60000160016101000a81548160ff021916908360ff16021790555084600d60000160036101000a81548160ff021916908360ff16021790555083600d60000160026101000a81548160ff021916908360ff160217905550600d60000160029054906101000a900460ff16600d60000160039054906101000a900460ff16600d60000160019054906101000a900460ff16610f57919061418b565b610f61919061418b565b600d60000160006101000a81548160ff021916908360ff16021790555082600d60000160056101000a81548160ff021916908360ff16021790555081600d60000160076101000a81548160ff021916908360ff16021790555080600d60000160066101000a81548160ff021916908360ff160217905550600d60000160069054906101000a900460ff16600d60000160079054906101000a900460ff16600d60000160059054906101000a900460ff1661101b919061418b565b611025919061418b565b600d60000160046101000a81548160ff021916908360ff1602179055506028600d60000160009054906101000a900460ff1660ff16111561109b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110929061420e565b60405180910390fd5b6028600d60000160049054906101000a900460ff1660ff1611156110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb9061420e565b60405180910390fd5b505050505050565b60006111a5611109612296565b846111a0856001600061111a612296565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461223890919063ffffffff16565b61229e565b6001905092915050565b6111b7612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d90613f5e565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611325612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab90613f5e565b60405180910390fd5b81600b8190555060019050919050565b600c60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611427612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ad90613f5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61157f612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461160e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160590613f5e565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546116c890613ee0565b80601f01602080910402602001604051908101604052809291908181526020018280546116f490613ee0565b80156117415780601f1061171657610100808354040283529160200191611741565b820191906000526020600020905b81548152906001019060200180831161172457829003601f168201915b5050505050905090565b60106020528060005260406000206000915054906101000a900460ff1681565b60135481565b600061183461177e612296565b8461182f85604051806060016040528060258152602001614a8e60259139600160006117a8612296565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f429092919063ffffffff16565b61229e565b6001905092915050565b600061185261184b612296565b8484612389565b6001905092915050565b600c60029054906101000a900460ff1681565b611877612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fd90613f5e565b60405180910390fd5b6001600c60006101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550600243611949919061422e565b601481905550565b611959612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119df90613f5e565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611a4b612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad190613f5e565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b60906142d0565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611bcc612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5290613f5e565b60405180910390fd5b6064611c65610c57565b611c6f9190613fdc565b6103e882611c7b610c57565b611c85919061400d565b611c8f9190613fdc565b1015611cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc790614362565b60405180910390fd5b6103e881611cdc610c57565b611ce6919061400d565b611cf09190613fdc565b600a8190555050565b600d8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16908060000160049054906101000a900460ff16908060000160059054906101000a900460ff16908060000160069054906101000a900460ff16908060000160079054906101000a900460ff16905088565b611d9f612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2590613f5e565b60405180910390fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f43612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc990613f5e565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612035612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb90613f5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212b906143f4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60156020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000808284612247919061422e565b90508381101561228c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228390614460565b60405180910390fd5b8091505092915050565b600033905090565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161237c9190613b2b565b60405180910390a3505050565b60008114156123a35761239e83836000612fa6565b612f3d565b6123ab611669565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561241957506123e9611669565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124325750600c60029054906101000a900460ff16155b1561289b57600c60009054906101000a900460ff1661252c57600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124ec5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61252b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612522906144cc565b60405180910390fd5b5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125cf5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561261e57600854811115612619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261090614538565b60405180910390fd5b61270d565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126c15750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561270c5760095481111561270b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612702906145a4565b60405180910390fd5b5b5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166127b757600a5461276a836113d7565b82612775919061422e565b11156127b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ad90614610565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561285b5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61289a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128919061467c565b60405180910390fd5b5b60006128a6306113d7565b90506000600b5482101590508080156128cb5750600c60019054906101000a900460ff165b80156128e45750600c60029054906101000a900460ff16155b80156129395750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561298f5750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129e55750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a29576001600c60026101000a81548160ff021916908315150217905550612a0d613150565b6000600c60026101000a81548160ff0219169083151502179055505b6000600c60029054906101000a900460ff16159050600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612adf5750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ae957600090505b8015612f2e576000601454431015612b8b57612b226064612b1460638861343e90919063ffffffff16565b6134b990919063ffffffff16565b90506063605e82612b33919061400d565b612b3d9190613fdc565b60116000828254612b4e919061422e565b925050819055506063600582612b64919061400d565b612b6e9190613fdc565b60136000828254612b7f919061422e565b92505081905550612f09565b601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bf957506000600d60000160049054906101000a900460ff1660ff16115b15612d4b57612c396064612c2b600d60000160049054906101000a900460ff1660ff168861343e90919063ffffffff16565b6134b990919063ffffffff16565b9050600d60000160049054906101000a900460ff1660ff16600d60000160079054906101000a900460ff1660ff1682612c72919061400d565b612c7c9190613fdc565b60126000828254612c8d919061422e565b92505081905550600d60000160049054906101000a900460ff1660ff16600d60000160059054906101000a900460ff1660ff1682612ccb919061400d565b612cd59190613fdc565b60116000828254612ce6919061422e565b92505081905550600d60000160049054906101000a900460ff1660ff16600d60000160069054906101000a900460ff1660ff1682612d24919061400d565b612d2e9190613fdc565b60136000828254612d3f919061422e565b92505081905550612f08565b601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612db957506000600d60000160009054906101000a900460ff1660ff16115b15612f0757612df96064612deb600d60000160009054906101000a900460ff1660ff168861343e90919063ffffffff16565b6134b990919063ffffffff16565b9050600d60000160009054906101000a900460ff1660ff16600d60000160039054906101000a900460ff1660ff1682612e32919061400d565b612e3c9190613fdc565b60126000828254612e4d919061422e565b92505081905550600d60000160009054906101000a900460ff1660ff16600d60000160019054906101000a900460ff1660ff1682612e8b919061400d565b612e959190613fdc565b60116000828254612ea6919061422e565b92505081905550600d60000160009054906101000a900460ff1660ff16600d60000160029054906101000a900460ff1660ff1682612ee4919061400d565b612eee9190613fdc565b60136000828254612eff919061422e565b925050819055505b5b5b6000811115612f1e57612f1d873083612fa6565b5b8085612f2a919061469c565b9450505b612f39868686612fa6565b5050505b505050565b6000838311158290612f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f81919061397e565b60405180910390fd5b5060008385612f99919061469c565b9050809150509392505050565b61301181604051806060016040528060268152602001614ab3602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f429092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130a4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461223890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131439190613b2b565b60405180910390a3505050565b600061315b306113d7565b90506000601354601154601254613172919061422e565b61317c919061422e565b905060008083148061318e5750600082145b1561319b5750505061343c565b6014600b546131aa919061400d565b8311156131c3576014600b546131c0919061400d565b92505b6000600283601254866131d6919061400d565b6131e09190613fdc565b6131ea9190613fdc565b90506000613201828661350390919063ffffffff16565b905060004790506132118261354d565b6000613226824761350390919063ffffffff16565b90506000613251876132436011548561343e90919063ffffffff16565b6134b990919063ffffffff16565b9050600061327c8861326e6013548661343e90919063ffffffff16565b6134b990919063ffffffff16565b90506000818361328c919061422e565b84613297919061469c565b90506000601281905550600060118190555060006013819055506000871180156132c15750600081115b1561330a576132d08782613799565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f838148686826040516133019291906146d0565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16834761334f919061469c565b60405161335b9061472a565b60006040518083038185875af1925050503d8060008114613398576040519150601f19603f3d011682016040523d82523d6000602084013e61339d565b606091505b505080985050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516133e99061472a565b60006040518083038185875af1925050503d8060008114613426576040519150601f19603f3d011682016040523d82523d6000602084013e61342b565b606091505b505080985050505050505050505050505b565b60008083141561345157600090506134b3565b6000828461345f919061400d565b905082848261346e9190613fdc565b146134ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a5906147b1565b60405180910390fd5b809150505b92915050565b60006134fb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613882565b905092915050565b600061354583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f42565b905092915050565b6000600267ffffffffffffffff81111561356a576135696147d1565b5b6040519080825280602002602001820160405280156135985781602001602082028036833780820191505090505b50905030816000815181106135b0576135af614800565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561365057600080fd5b505afa158015613664573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136889190614844565b8160018151811061369c5761369b614800565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613701307f00000000000000000000000000000000000000000000000000000000000000008461229e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161376395949392919061496a565b600060405180830381600087803b15801561377d57600080fd5b505af1158015613791573d6000803e3d6000fd5b505050505050565b6137c4307f00000000000000000000000000000000000000000000000000000000000000008461229e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401613829969594939291906149c4565b6060604051808303818588803b15801561384257600080fd5b505af1158015613856573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061387b9190614a3a565b5050505050565b600080831182906138c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c0919061397e565b60405180910390fd5b50600083856138d89190613fdc565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561391f578082015181840152602081019050613904565b8381111561392e576000848401525b50505050565b6000601f19601f8301169050919050565b6000613950826138e5565b61395a81856138f0565b935061396a818560208601613901565b61397381613934565b840191505092915050565b600060208201905081810360008301526139988184613945565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139d0826139a5565b9050919050565b6139e0816139c5565b81146139eb57600080fd5b50565b6000813590506139fd816139d7565b92915050565b6000819050919050565b613a1681613a03565b8114613a2157600080fd5b50565b600081359050613a3381613a0d565b92915050565b60008060408385031215613a5057613a4f6139a0565b5b6000613a5e858286016139ee565b9250506020613a6f85828601613a24565b9150509250929050565b60008115159050919050565b613a8e81613a79565b82525050565b6000602082019050613aa96000830184613a85565b92915050565b600060208284031215613ac557613ac46139a0565b5b6000613ad3848285016139ee565b91505092915050565b60008060408385031215613af357613af26139a0565b5b6000613b0185828601613a24565b9250506020613b1285828601613a24565b9150509250929050565b613b2581613a03565b82525050565b6000602082019050613b406000830184613b1c565b92915050565b613b4f81613a79565b8114613b5a57600080fd5b50565b600081359050613b6c81613b46565b92915050565b600060208284031215613b8857613b876139a0565b5b6000613b9684828501613b5d565b91505092915050565b600080600060608486031215613bb857613bb76139a0565b5b6000613bc6868287016139ee565b9350506020613bd7868287016139ee565b9250506040613be886828701613a24565b9150509250925092565b600060ff82169050919050565b613c0881613bf2565b82525050565b6000602082019050613c236000830184613bff565b92915050565b613c3281613bf2565b8114613c3d57600080fd5b50565b600081359050613c4f81613c29565b92915050565b60008060008060008060c08789031215613c7257613c716139a0565b5b6000613c8089828a01613c40565b9650506020613c9189828a01613c40565b9550506040613ca289828a01613c40565b9450506060613cb389828a01613c40565b9350506080613cc489828a01613c40565b92505060a0613cd589828a01613c40565b9150509295509295509295565b60008060408385031215613cf957613cf86139a0565b5b6000613d07858286016139ee565b9250506020613d1885828601613b5d565b9150509250929050565b613d2b816139c5565b82525050565b6000602082019050613d466000830184613d22565b92915050565b600060208284031215613d6257613d616139a0565b5b6000613d7084828501613a24565b91505092915050565b600061010082019050613d8f600083018b613bff565b613d9c602083018a613bff565b613da96040830189613bff565b613db66060830188613bff565b613dc36080830187613bff565b613dd060a0830186613bff565b613ddd60c0830185613bff565b613dea60e0830184613bff565b9998505050505050505050565b60008060408385031215613e0e57613e0d6139a0565b5b6000613e1c858286016139ee565b9250506020613e2d858286016139ee565b9150509250929050565b6000819050919050565b6000613e5c613e57613e52846139a5565b613e37565b6139a5565b9050919050565b6000613e6e82613e41565b9050919050565b6000613e8082613e63565b9050919050565b613e9081613e75565b82525050565b6000602082019050613eab6000830184613e87565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613ef857607f821691505b60208210811415613f0c57613f0b613eb1565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f486020836138f0565b9150613f5382613f12565b602082019050919050565b60006020820190508181036000830152613f7781613f3b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613fe782613a03565b9150613ff283613a03565b92508261400257614001613f7e565b5b828204905092915050565b600061401882613a03565b915061402383613a03565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561405c5761405b613fad565b5b828202905092915050565b7f6d6178427579416d6f756e74206d75737420626520686967686572207468616e60008201527f2031250000000000000000000000000000000000000000000000000000000000602082015250565b60006140c36023836138f0565b91506140ce82614067565b604082019050919050565b600060208201905081810360008301526140f2816140b6565b9050919050565b7f6d617853656c6c416d6f756e74206d757374206265206869676865722074686160008201527f6e20312500000000000000000000000000000000000000000000000000000000602082015250565b60006141556024836138f0565b9150614160826140f9565b604082019050919050565b6000602082019050818103600083015261418481614148565b9050919050565b600061419682613bf2565b91506141a183613bf2565b92508260ff038211156141b7576141b6613fad565b5b828201905092915050565b7f4d757374206b656570206665657320617420343025206f72206c657373000000600082015250565b60006141f8601d836138f0565b9150614203826141c2565b602082019050919050565b60006020820190508181036000830152614227816141eb565b9050919050565b600061423982613a03565b915061424483613a03565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561427957614278613fad565b5b828201905092915050565b7f4d757374206b65657020756e6973776170563250616972000000000000000000600082015250565b60006142ba6017836138f0565b91506142c582614284565b602082019050919050565b600060208201905081810360008301526142e9816142ad565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b600061434c6022836138f0565b9150614357826142f0565b604082019050919050565b6000602082019050818103600083015261437b8161433f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006143de6026836138f0565b91506143e982614382565b604082019050919050565b6000602082019050818103600083015261440d816143d1565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061444a601b836138f0565b915061445582614414565b602082019050919050565b600060208201905081810360008301526144798161443d565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006144b66016836138f0565b91506144c182614480565b602082019050919050565b600060208201905081810360008301526144e5816144a9565b9050919050565b7f627579207472616e73666572206f766572206d617820616d6f756e7400000000600082015250565b6000614522601c836138f0565b915061452d826144ec565b602082019050919050565b6000602082019050818103600083015261455181614515565b9050919050565b7f53656c6c207472616e73666572206f766572206d617820616d6f756e74000000600082015250565b600061458e601d836138f0565b915061459982614558565b602082019050919050565b600060208201905081810360008301526145bd81614581565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006145fa6013836138f0565b9150614605826145c4565b602082019050919050565b60006020820190508181036000830152614629816145ed565b9050919050565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b60006146666013836138f0565b915061467182614630565b602082019050919050565b6000602082019050818103600083015261469581614659565b9050919050565b60006146a782613a03565b91506146b283613a03565b9250828210156146c5576146c4613fad565b5b828203905092915050565b60006040820190506146e56000830185613b1c565b6146f26020830184613b1c565b9392505050565b600081905092915050565b50565b60006147146000836146f9565b915061471f82614704565b600082019050919050565b600061473582614707565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061479b6021836138f0565b91506147a68261473f565b604082019050919050565b600060208201905081810360008301526147ca8161478e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061483e816139d7565b92915050565b60006020828403121561485a576148596139a0565b5b60006148688482850161482f565b91505092915050565b6000819050919050565b600061489661489161488c84614871565b613e37565b613a03565b9050919050565b6148a68161487b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148e1816139c5565b82525050565b60006148f383836148d8565b60208301905092915050565b6000602082019050919050565b6000614917826148ac565b61492181856148b7565b935061492c836148c8565b8060005b8381101561495d57815161494488826148e7565b975061494f836148ff565b925050600181019050614930565b5085935050505092915050565b600060a08201905061497f6000830188613b1c565b61498c602083018761489d565b818103604083015261499e818661490c565b90506149ad6060830185613d22565b6149ba6080830184613b1c565b9695505050505050565b600060c0820190506149d96000830189613d22565b6149e66020830188613b1c565b6149f3604083018761489d565b614a00606083018661489d565b614a0d6080830185613d22565b614a1a60a0830184613b1c565b979650505050505050565b600081519050614a3481613a0d565b92915050565b600080600060608486031215614a5357614a526139a0565b5b6000614a6186828701614a25565b9350506020614a7286828701614a25565b9250506040614a8386828701614a25565b915050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b406ef446a490b9753de3cb98d08ed4c7d15014ae376d177ae0e4fc6c45d86dd64736f6c63430008090033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80637571336a1161012e578063c0246668116100ab578063dd62ed3e1161006f578063dd62ed3e146108bf578063e16830a8146108fc578063f2fde38b14610925578063f5b3c3bf1461094e578063f887ea401461098b57610246565b8063c0246668146107e9578063c16dd4a414610812578063c18bc1951461083b578063d212a69a14610864578063d3f6a1571461089657610246565b80639fccce32116100f25780639fccce3214610702578063a457c2d71461072d578063a9059cbb1461076a578063b8863115146107a7578063b9e418e7146107d257610246565b80637571336a1461061b5780638da5cb5b146106445780638ea5220f1461066f57806395d89b411461069a57806396880b17146106c557610246565b8063313ce567116101bc5780634fbee193116101805780634fbee19314610522578063555467a11461055f5780636ddd17131461059c57806370a08231146105c7578063715018a61461060457610246565b8063313ce5671461043d5780633265e846146104685780633950935114610491578063455a4396146104ce57806349bd5a5e146104f757610246565b80631a8145bb116102035780631a8145bb146103445780631c6e8a751461036f5780631cdd3be3146103985780631f3fed8f146103d557806323b872dd1461040057610246565b806306fdde031461024b578063095ea7b31461027657806310d5de53146102b357806311a582c3146102f057806318160ddd1461031957610246565b3661024657005b600080fd5b34801561025757600080fd5b506102606109b6565b60405161026d919061397e565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613a39565b610a48565b6040516102aa9190613a94565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613aaf565b610a66565b6040516102e79190613a94565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190613adc565b610a86565b005b34801561032557600080fd5b5061032e610c57565b60405161033b9190613b2b565b60405180910390f35b34801561035057600080fd5b50610359610c61565b6040516103669190613b2b565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190613b72565b610c67565b005b3480156103a457600080fd5b506103bf60048036038101906103ba9190613aaf565b610d1b565b6040516103cc9190613a94565b60405180910390f35b3480156103e157600080fd5b506103ea610d3b565b6040516103f79190613b2b565b60405180910390f35b34801561040c57600080fd5b5061042760048036038101906104229190613b9f565b610d41565b6040516104349190613a94565b60405180910390f35b34801561044957600080fd5b50610452610e1a565b60405161045f9190613c0e565b60405180910390f35b34801561047457600080fd5b5061048f600480360381019061048a9190613c55565b610e23565b005b34801561049d57600080fd5b506104b860048036038101906104b39190613a39565b6110fc565b6040516104c59190613a94565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613ce2565b6111af565b005b34801561050357600080fd5b5061050c6112a1565b6040516105199190613d31565b60405180910390f35b34801561052e57600080fd5b5061054960048036038101906105449190613aaf565b6112c5565b6040516105569190613a94565b60405180910390f35b34801561056b57600080fd5b5061058660048036038101906105819190613d4c565b61131b565b6040516105939190613a94565b60405180910390f35b3480156105a857600080fd5b506105b16113c4565b6040516105be9190613a94565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190613aaf565b6113d7565b6040516105fb9190613b2b565b60405180910390f35b34801561061057600080fd5b5061061961141f565b005b34801561062757600080fd5b50610642600480360381019061063d9190613ce2565b611577565b005b34801561065057600080fd5b50610659611669565b6040516106669190613d31565b60405180910390f35b34801561067b57600080fd5b50610684611693565b6040516106919190613d31565b60405180910390f35b3480156106a657600080fd5b506106af6116b9565b6040516106bc919061397e565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e79190613aaf565b61174b565b6040516106f99190613a94565b60405180910390f35b34801561070e57600080fd5b5061071761176b565b6040516107249190613b2b565b60405180910390f35b34801561073957600080fd5b50610754600480360381019061074f9190613a39565b611771565b6040516107619190613a94565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c9190613a39565b61183e565b60405161079e9190613a94565b60405180910390f35b3480156107b357600080fd5b506107bc61185c565b6040516107c99190613a94565b60405180910390f35b3480156107de57600080fd5b506107e761186f565b005b3480156107f557600080fd5b50610810600480360381019061080b9190613ce2565b611951565b005b34801561081e57600080fd5b5061083960048036038101906108349190613ce2565b611a43565b005b34801561084757600080fd5b50610862600480360381019061085d9190613d4c565b611bc4565b005b34801561087057600080fd5b50610879611cf9565b60405161088d989796959493929190613d79565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b89190613df7565b611d97565b005b3480156108cb57600080fd5b506108e660048036038101906108e19190613df7565b611eb4565b6040516108f39190613b2b565b60405180910390f35b34801561090857600080fd5b50610923600480360381019061091e9190613ce2565b611f3b565b005b34801561093157600080fd5b5061094c60048036038101906109479190613aaf565b61202d565b005b34801561095a57600080fd5b5061097560048036038101906109709190613aaf565b6121f4565b6040516109829190613a94565b60405180910390f35b34801561099757600080fd5b506109a0612214565b6040516109ad9190613e96565b60405180910390f35b6060600380546109c590613ee0565b80601f01602080910402602001604051908101604052809291908181526020018280546109f190613ee0565b8015610a3e5780601f10610a1357610100808354040283529160200191610a3e565b820191906000526020600020905b815481529060010190602001808311610a2157829003601f168201915b5050505050905090565b6000610a5c610a55612296565b848461229e565b6001905092915050565b600f6020528060005260406000206000915054906101000a900460ff1681565b610a8e612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490613f5e565b60405180910390fd5b6064610b27610c57565b610b319190613fdc565b6103e883610b3d610c57565b610b47919061400d565b610b519190613fdc565b1015610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b89906140d9565b60405180910390fd5b6064610b9c610c57565b610ba69190613fdc565b6103e882610bb2610c57565b610bbc919061400d565b610bc69190613fdc565b1015610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe9061416b565b60405180910390fd5b6103e882610c13610c57565b610c1d919061400d565b610c279190613fdc565b6008819055506103e881610c39610c57565b610c43919061400d565b610c4d9190613fdc565b6009819055505050565b6000600254905090565b60125481565b610c6f612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf590613f5e565b60405180910390fd5b80600c60016101000a81548160ff02191690831515021790555050565b60166020528060005260406000206000915054906101000a900460ff1681565b60115481565b6000610d4e848484612389565b610e0f84610d5a612296565b610e0a85604051806060016040528060288152602001614ad960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dc0612296565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f429092919063ffffffff16565b61229e565b600190509392505050565b60006012905090565b610e2b612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb190613f5e565b60405180910390fd5b85600d60000160016101000a81548160ff021916908360ff16021790555084600d60000160036101000a81548160ff021916908360ff16021790555083600d60000160026101000a81548160ff021916908360ff160217905550600d60000160029054906101000a900460ff16600d60000160039054906101000a900460ff16600d60000160019054906101000a900460ff16610f57919061418b565b610f61919061418b565b600d60000160006101000a81548160ff021916908360ff16021790555082600d60000160056101000a81548160ff021916908360ff16021790555081600d60000160076101000a81548160ff021916908360ff16021790555080600d60000160066101000a81548160ff021916908360ff160217905550600d60000160069054906101000a900460ff16600d60000160079054906101000a900460ff16600d60000160059054906101000a900460ff1661101b919061418b565b611025919061418b565b600d60000160046101000a81548160ff021916908360ff1602179055506028600d60000160009054906101000a900460ff1660ff16111561109b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110929061420e565b60405180910390fd5b6028600d60000160049054906101000a900460ff1660ff1611156110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb9061420e565b60405180910390fd5b505050505050565b60006111a5611109612296565b846111a0856001600061111a612296565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461223890919063ffffffff16565b61229e565b6001905092915050565b6111b7612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d90613f5e565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b7f0000000000000000000000000ec659e31b297ab0a3074e7ae3b1a72c33fa70f381565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611325612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab90613f5e565b60405180910390fd5b81600b8190555060019050919050565b600c60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611427612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ad90613f5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61157f612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461160e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160590613f5e565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546116c890613ee0565b80601f01602080910402602001604051908101604052809291908181526020018280546116f490613ee0565b80156117415780601f1061171657610100808354040283529160200191611741565b820191906000526020600020905b81548152906001019060200180831161172457829003601f168201915b5050505050905090565b60106020528060005260406000206000915054906101000a900460ff1681565b60135481565b600061183461177e612296565b8461182f85604051806060016040528060258152602001614a8e60259139600160006117a8612296565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f429092919063ffffffff16565b61229e565b6001905092915050565b600061185261184b612296565b8484612389565b6001905092915050565b600c60029054906101000a900460ff1681565b611877612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fd90613f5e565b60405180910390fd5b6001600c60006101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550600243611949919061422e565b601481905550565b611959612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119df90613f5e565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611a4b612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad190613f5e565b60405180910390fd5b7f0000000000000000000000000ec659e31b297ab0a3074e7ae3b1a72c33fa70f373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b60906142d0565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611bcc612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5290613f5e565b60405180910390fd5b6064611c65610c57565b611c6f9190613fdc565b6103e882611c7b610c57565b611c85919061400d565b611c8f9190613fdc565b1015611cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc790614362565b60405180910390fd5b6103e881611cdc610c57565b611ce6919061400d565b611cf09190613fdc565b600a8190555050565b600d8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16908060000160049054906101000a900460ff16908060000160059054906101000a900460ff16908060000160069054906101000a900460ff16908060000160079054906101000a900460ff16905088565b611d9f612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2590613f5e565b60405180910390fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f43612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc990613f5e565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612035612296565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb90613f5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212b906143f4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60156020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000808284612247919061422e565b90508381101561228c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228390614460565b60405180910390fd5b8091505092915050565b600033905090565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161237c9190613b2b565b60405180910390a3505050565b60008114156123a35761239e83836000612fa6565b612f3d565b6123ab611669565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561241957506123e9611669565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124325750600c60029054906101000a900460ff16155b1561289b57600c60009054906101000a900460ff1661252c57600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124ec5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61252b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612522906144cc565b60405180910390fd5b5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125cf5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561261e57600854811115612619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261090614538565b60405180910390fd5b61270d565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126c15750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561270c5760095481111561270b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612702906145a4565b60405180910390fd5b5b5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166127b757600a5461276a836113d7565b82612775919061422e565b11156127b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ad90614610565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561285b5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61289a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128919061467c565b60405180910390fd5b5b60006128a6306113d7565b90506000600b5482101590508080156128cb5750600c60019054906101000a900460ff165b80156128e45750600c60029054906101000a900460ff16155b80156129395750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561298f5750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129e55750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a29576001600c60026101000a81548160ff021916908315150217905550612a0d613150565b6000600c60026101000a81548160ff0219169083151502179055505b6000600c60029054906101000a900460ff16159050600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612adf5750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ae957600090505b8015612f2e576000601454431015612b8b57612b226064612b1460638861343e90919063ffffffff16565b6134b990919063ffffffff16565b90506063605e82612b33919061400d565b612b3d9190613fdc565b60116000828254612b4e919061422e565b925050819055506063600582612b64919061400d565b612b6e9190613fdc565b60136000828254612b7f919061422e565b92505081905550612f09565b601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bf957506000600d60000160049054906101000a900460ff1660ff16115b15612d4b57612c396064612c2b600d60000160049054906101000a900460ff1660ff168861343e90919063ffffffff16565b6134b990919063ffffffff16565b9050600d60000160049054906101000a900460ff1660ff16600d60000160079054906101000a900460ff1660ff1682612c72919061400d565b612c7c9190613fdc565b60126000828254612c8d919061422e565b92505081905550600d60000160049054906101000a900460ff1660ff16600d60000160059054906101000a900460ff1660ff1682612ccb919061400d565b612cd59190613fdc565b60116000828254612ce6919061422e565b92505081905550600d60000160049054906101000a900460ff1660ff16600d60000160069054906101000a900460ff1660ff1682612d24919061400d565b612d2e9190613fdc565b60136000828254612d3f919061422e565b92505081905550612f08565b601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612db957506000600d60000160009054906101000a900460ff1660ff16115b15612f0757612df96064612deb600d60000160009054906101000a900460ff1660ff168861343e90919063ffffffff16565b6134b990919063ffffffff16565b9050600d60000160009054906101000a900460ff1660ff16600d60000160039054906101000a900460ff1660ff1682612e32919061400d565b612e3c9190613fdc565b60126000828254612e4d919061422e565b92505081905550600d60000160009054906101000a900460ff1660ff16600d60000160019054906101000a900460ff1660ff1682612e8b919061400d565b612e959190613fdc565b60116000828254612ea6919061422e565b92505081905550600d60000160009054906101000a900460ff1660ff16600d60000160029054906101000a900460ff1660ff1682612ee4919061400d565b612eee9190613fdc565b60136000828254612eff919061422e565b925050819055505b5b5b6000811115612f1e57612f1d873083612fa6565b5b8085612f2a919061469c565b9450505b612f39868686612fa6565b5050505b505050565b6000838311158290612f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f81919061397e565b60405180910390fd5b5060008385612f99919061469c565b9050809150509392505050565b61301181604051806060016040528060268152602001614ab3602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f429092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130a4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461223890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131439190613b2b565b60405180910390a3505050565b600061315b306113d7565b90506000601354601154601254613172919061422e565b61317c919061422e565b905060008083148061318e5750600082145b1561319b5750505061343c565b6014600b546131aa919061400d565b8311156131c3576014600b546131c0919061400d565b92505b6000600283601254866131d6919061400d565b6131e09190613fdc565b6131ea9190613fdc565b90506000613201828661350390919063ffffffff16565b905060004790506132118261354d565b6000613226824761350390919063ffffffff16565b90506000613251876132436011548561343e90919063ffffffff16565b6134b990919063ffffffff16565b9050600061327c8861326e6013548661343e90919063ffffffff16565b6134b990919063ffffffff16565b90506000818361328c919061422e565b84613297919061469c565b90506000601281905550600060118190555060006013819055506000871180156132c15750600081115b1561330a576132d08782613799565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f838148686826040516133019291906146d0565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16834761334f919061469c565b60405161335b9061472a565b60006040518083038185875af1925050503d8060008114613398576040519150601f19603f3d011682016040523d82523d6000602084013e61339d565b606091505b505080985050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516133e99061472a565b60006040518083038185875af1925050503d8060008114613426576040519150601f19603f3d011682016040523d82523d6000602084013e61342b565b606091505b505080985050505050505050505050505b565b60008083141561345157600090506134b3565b6000828461345f919061400d565b905082848261346e9190613fdc565b146134ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a5906147b1565b60405180910390fd5b809150505b92915050565b60006134fb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613882565b905092915050565b600061354583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f42565b905092915050565b6000600267ffffffffffffffff81111561356a576135696147d1565b5b6040519080825280602002602001820160405280156135985781602001602082028036833780820191505090505b50905030816000815181106135b0576135af614800565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561365057600080fd5b505afa158015613664573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136889190614844565b8160018151811061369c5761369b614800565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613701307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461229e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161376395949392919061496a565b600060405180830381600087803b15801561377d57600080fd5b505af1158015613791573d6000803e3d6000fd5b505050505050565b6137c4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461229e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401613829969594939291906149c4565b6060604051808303818588803b15801561384257600080fd5b505af1158015613856573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061387b9190614a3a565b5050505050565b600080831182906138c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c0919061397e565b60405180910390fd5b50600083856138d89190613fdc565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561391f578082015181840152602081019050613904565b8381111561392e576000848401525b50505050565b6000601f19601f8301169050919050565b6000613950826138e5565b61395a81856138f0565b935061396a818560208601613901565b61397381613934565b840191505092915050565b600060208201905081810360008301526139988184613945565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139d0826139a5565b9050919050565b6139e0816139c5565b81146139eb57600080fd5b50565b6000813590506139fd816139d7565b92915050565b6000819050919050565b613a1681613a03565b8114613a2157600080fd5b50565b600081359050613a3381613a0d565b92915050565b60008060408385031215613a5057613a4f6139a0565b5b6000613a5e858286016139ee565b9250506020613a6f85828601613a24565b9150509250929050565b60008115159050919050565b613a8e81613a79565b82525050565b6000602082019050613aa96000830184613a85565b92915050565b600060208284031215613ac557613ac46139a0565b5b6000613ad3848285016139ee565b91505092915050565b60008060408385031215613af357613af26139a0565b5b6000613b0185828601613a24565b9250506020613b1285828601613a24565b9150509250929050565b613b2581613a03565b82525050565b6000602082019050613b406000830184613b1c565b92915050565b613b4f81613a79565b8114613b5a57600080fd5b50565b600081359050613b6c81613b46565b92915050565b600060208284031215613b8857613b876139a0565b5b6000613b9684828501613b5d565b91505092915050565b600080600060608486031215613bb857613bb76139a0565b5b6000613bc6868287016139ee565b9350506020613bd7868287016139ee565b9250506040613be886828701613a24565b9150509250925092565b600060ff82169050919050565b613c0881613bf2565b82525050565b6000602082019050613c236000830184613bff565b92915050565b613c3281613bf2565b8114613c3d57600080fd5b50565b600081359050613c4f81613c29565b92915050565b60008060008060008060c08789031215613c7257613c716139a0565b5b6000613c8089828a01613c40565b9650506020613c9189828a01613c40565b9550506040613ca289828a01613c40565b9450506060613cb389828a01613c40565b9350506080613cc489828a01613c40565b92505060a0613cd589828a01613c40565b9150509295509295509295565b60008060408385031215613cf957613cf86139a0565b5b6000613d07858286016139ee565b9250506020613d1885828601613b5d565b9150509250929050565b613d2b816139c5565b82525050565b6000602082019050613d466000830184613d22565b92915050565b600060208284031215613d6257613d616139a0565b5b6000613d7084828501613a24565b91505092915050565b600061010082019050613d8f600083018b613bff565b613d9c602083018a613bff565b613da96040830189613bff565b613db66060830188613bff565b613dc36080830187613bff565b613dd060a0830186613bff565b613ddd60c0830185613bff565b613dea60e0830184613bff565b9998505050505050505050565b60008060408385031215613e0e57613e0d6139a0565b5b6000613e1c858286016139ee565b9250506020613e2d858286016139ee565b9150509250929050565b6000819050919050565b6000613e5c613e57613e52846139a5565b613e37565b6139a5565b9050919050565b6000613e6e82613e41565b9050919050565b6000613e8082613e63565b9050919050565b613e9081613e75565b82525050565b6000602082019050613eab6000830184613e87565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613ef857607f821691505b60208210811415613f0c57613f0b613eb1565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f486020836138f0565b9150613f5382613f12565b602082019050919050565b60006020820190508181036000830152613f7781613f3b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613fe782613a03565b9150613ff283613a03565b92508261400257614001613f7e565b5b828204905092915050565b600061401882613a03565b915061402383613a03565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561405c5761405b613fad565b5b828202905092915050565b7f6d6178427579416d6f756e74206d75737420626520686967686572207468616e60008201527f2031250000000000000000000000000000000000000000000000000000000000602082015250565b60006140c36023836138f0565b91506140ce82614067565b604082019050919050565b600060208201905081810360008301526140f2816140b6565b9050919050565b7f6d617853656c6c416d6f756e74206d757374206265206869676865722074686160008201527f6e20312500000000000000000000000000000000000000000000000000000000602082015250565b60006141556024836138f0565b9150614160826140f9565b604082019050919050565b6000602082019050818103600083015261418481614148565b9050919050565b600061419682613bf2565b91506141a183613bf2565b92508260ff038211156141b7576141b6613fad565b5b828201905092915050565b7f4d757374206b656570206665657320617420343025206f72206c657373000000600082015250565b60006141f8601d836138f0565b9150614203826141c2565b602082019050919050565b60006020820190508181036000830152614227816141eb565b9050919050565b600061423982613a03565b915061424483613a03565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561427957614278613fad565b5b828201905092915050565b7f4d757374206b65657020756e6973776170563250616972000000000000000000600082015250565b60006142ba6017836138f0565b91506142c582614284565b602082019050919050565b600060208201905081810360008301526142e9816142ad565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b600061434c6022836138f0565b9150614357826142f0565b604082019050919050565b6000602082019050818103600083015261437b8161433f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006143de6026836138f0565b91506143e982614382565b604082019050919050565b6000602082019050818103600083015261440d816143d1565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061444a601b836138f0565b915061445582614414565b602082019050919050565b600060208201905081810360008301526144798161443d565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006144b66016836138f0565b91506144c182614480565b602082019050919050565b600060208201905081810360008301526144e5816144a9565b9050919050565b7f627579207472616e73666572206f766572206d617820616d6f756e7400000000600082015250565b6000614522601c836138f0565b915061452d826144ec565b602082019050919050565b6000602082019050818103600083015261455181614515565b9050919050565b7f53656c6c207472616e73666572206f766572206d617820616d6f756e74000000600082015250565b600061458e601d836138f0565b915061459982614558565b602082019050919050565b600060208201905081810360008301526145bd81614581565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006145fa6013836138f0565b9150614605826145c4565b602082019050919050565b60006020820190508181036000830152614629816145ed565b9050919050565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b60006146666013836138f0565b915061467182614630565b602082019050919050565b6000602082019050818103600083015261469581614659565b9050919050565b60006146a782613a03565b91506146b283613a03565b9250828210156146c5576146c4613fad565b5b828203905092915050565b60006040820190506146e56000830185613b1c565b6146f26020830184613b1c565b9392505050565b600081905092915050565b50565b60006147146000836146f9565b915061471f82614704565b600082019050919050565b600061473582614707565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061479b6021836138f0565b91506147a68261473f565b604082019050919050565b600060208201905081810360008301526147ca8161478e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061483e816139d7565b92915050565b60006020828403121561485a576148596139a0565b5b60006148688482850161482f565b91505092915050565b6000819050919050565b600061489661489161488c84614871565b613e37565b613a03565b9050919050565b6148a68161487b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148e1816139c5565b82525050565b60006148f383836148d8565b60208301905092915050565b6000602082019050919050565b6000614917826148ac565b61492181856148b7565b935061492c836148c8565b8060005b8381101561495d57815161494488826148e7565b975061494f836148ff565b925050600181019050614930565b5085935050505092915050565b600060a08201905061497f6000830188613b1c565b61498c602083018761489d565b818103604083015261499e818661490c565b90506149ad6060830185613d22565b6149ba6080830184613b1c565b9695505050505050565b600060c0820190506149d96000830189613d22565b6149e66020830188613b1c565b6149f3604083018761489d565b614a00606083018661489d565b614a0d6080830185613d22565b614a1a60a0830184613b1c565b979650505050505050565b600081519050614a3481613a0d565b92915050565b600080600060608486031215614a5357614a526139a0565b5b6000614a6186828701614a25565b9350506020614a7286828701614a25565b9250506040614a8386828701614a25565b915050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b406ef446a490b9753de3cb98d08ed4c7d15014ae376d177ae0e4fc6c45d86dd64736f6c63430008090033

Deployed Bytecode Sourcemap

11251:10183:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2422:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12228:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14579:427;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1892:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12396:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15270:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12539:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12359:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2578:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1805:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15484:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2889:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15366:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11365:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16963:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14433:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11699:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1994:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5595:131;;;;;;;;;;;;;:::i;:::-;;16502:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5415:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11424:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1707:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12295:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12433:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3094:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2115:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11734:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14309:119;;;;;;;;;;;;;:::i;:::-;;16238:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16641:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15011:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11973:192;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;16806:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2277:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16363:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5731:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12493:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11319;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1613:89;1666:13;1692:5;1685:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:89;:::o;2422:151::-;2504:4;2514:39;2523:12;:10;:12::i;:::-;2537:7;2546:6;2514:8;:39::i;:::-;2564:4;2557:11;;2422:151;;;;:::o;12228:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;14579:427::-;5531:12;:10;:12::i;:::-;5521:22;;:6;;;;;;;;;;;:22;;;5513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14734:3:::1;14718:13;:11;:13::i;:::-;:19;;;;:::i;:::-;14708:4;14695:9;14679:13;:11;:13::i;:::-;:25;;;;:::i;:::-;14678:34;;;;:::i;:::-;14677:61;;14669:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;14848:3;14832:13;:11;:13::i;:::-;:19;;;;:::i;:::-;14822:4;14808:10;14792:13;:11;:13::i;:::-;:26;;;;:::i;:::-;14791:35;;;;:::i;:::-;14790:62;;14782:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;14942:4;14929:9;14913:13;:11;:13::i;:::-;:25;;;;:::i;:::-;14912:34;;;;:::i;:::-;14897:12;:49;;;;14997:4;14983:10;14967:13;:11;:13::i;:::-;:26;;;;:::i;:::-;14966:35;;;;:::i;:::-;14950:13;:51;;;;14579:427:::0;;:::o;1892:97::-;1952:7;1972:12;;1965:19;;1892:97;:::o;12396:33::-;;;;:::o;15270:91::-;5531:12;:10;:12::i;:::-;5521:22;;:6;;;;;;;;;;;:22;;;5513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15349:7:::1;15335:11;;:21;;;;;;;;;;;;;;;;;;15270:91:::0;:::o;12539:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;12359:33::-;;;;:::o;2578:306::-;2693:4;2703:36;2713:6;2721:9;2732:6;2703:9;:36::i;:::-;2743:121;2752:6;2760:12;:10;:12::i;:::-;2774:89;2812:6;2774:89;;;;;;;;;;;;;;;;;:11;:19;2786:6;2774:19;;;;;;;;;;;;;;;:33;2794:12;:10;:12::i;:::-;2774:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;2743:8;:121::i;:::-;2875:4;2868:11;;2578:306;;;;;:::o;1805:82::-;1862:5;1880:2;1873:9;;1805:82;:::o;15484:748::-;5531:12;:10;:12::i;:::-;5521:22;;:6;;;;;;;;;;;:22;;;5513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15682:16:::1;15658:5;:21;;;:40;;;;;;;;;;;;;;;;;;15726:16;15702:5;:21;;;:40;;;;;;;;;;;;;;;;;;15764:10;15746:5;:15;;;:28;;;;;;;;;;;;;;;;;;15847:5;:15;;;;;;;;;;;;15823:5;:21;;;;;;;;;;;;15799:5;:21;;;;;;;;;;;;:45;;;;:::i;:::-;:63;;;;:::i;:::-;15778:5;:18;;;:84;;;;;;;;;;;;;;;;;;15893:17;15868:5;:22;;;:42;;;;;;;;;;;;;;;;;;15939:17;15914:5;:22;;;:42;;;;;;;;;;;;;;;;;;15979:11;15960:5;:16;;;:30;;;;;;;;;;;;;;;;;;16066:5;:16;;;;;;;;;;;;16041:5;:22;;;;;;;;;;;;16016:5;:22;;;;;;;;;;;;:47;;;;:::i;:::-;:66;;;;:::i;:::-;15994:5;:19;;;:88;;;;;;;;;;;;;;;;;;16116:2;16094:5;:18;;;;;;;;;;;;:24;;;;16086:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;16188:2;16165:5;:19;;;;;;;;;;;;:25;;;;16157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15484:748:::0;;;;;;:::o;2889:200::-;2976:4;2986:83;2995:12;:10;:12::i;:::-;3009:7;3018:50;3057:10;3018:11;:25;3030:12;:10;:12::i;:::-;3018:25;;;;;;;;;;;;;;;:34;3044:7;3018:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;2986:8;:83::i;:::-;3080:4;3073:11;;2889:200;;;;:::o;15366:113::-;5531:12;:10;:12::i;:::-;5521:22;;:6;;;;;;;;;;;:22;;;5513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15469:5:::1;15443:14;:23;15458:7;15443:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;15366:113:::0;;:::o;11365:38::-;;;:::o;16963:115::-;17028:4;17045:19;:28;17065:7;17045:28;;;;;;;;;;;;;;;;;;;;;;;;;17038:35;;16963:115;;;:::o;14433:141::-;14514:4;5531:12;:10;:12::i;:::-;5521:22;;:6;;;;;;;;;;;:22;;;5513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14545:9:::1;14523:19;:31;;;;14565:4;14558:11;;14433:141:::0;;;:::o;11699:31::-;;;;;;;;;;;;;:::o;1994:116::-;2067:7;2087:9;:18;2097:7;2087:18;;;;;;;;;;;;;;;;2080:25;;1994:116;;;:::o;5595:131::-;5531:12;:10;:12::i;:::-;5521:22;;:6;;;;;;;;;;;:22;;;5513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5695:1:::1;5658:40;;5679:6;;;;;;;;;;;5658:40;;;;;;;;;;;;5719:1;5702:6;;:19;;;;;;;;;;;;;;;;;;5595:131::o:0;16502:134::-;5531:12;:10;:12::i;:::-;5521:22;;:6;;;;;;;;;;;:22;;;5513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16627:4:::1;16585:31;:39;16617:6;16585:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;16502:134:::0;;:::o;5415:68::-;5452:7;5472:6;;;;;;;;;;;5465:13;;5415:68;:::o;11424:24::-;;;;;;;;;;;;;:::o;1707:93::-;1762:13;1788:7;1781:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1707:93;:::o;12295:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;12433:27::-;;;;:::o;3094:251::-;3186:4;3196:129;3205:12;:10;:12::i;:::-;3219:7;3228:96;3267:15;3228:96;;;;;;;;;;;;;;;;;:11;:25;3240:12;:10;:12::i;:::-;3228:25;;;;;;;;;;;;;;;:34;3254:7;3228:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;3196:8;:129::i;:::-;3336:4;3329:11;;3094:251;;;;:::o;2115:157::-;2200:4;2210:42;2220:12;:10;:12::i;:::-;2234:9;2245:6;2210:9;:42::i;:::-;2263:4;2256:11;;2115:157;;;;:::o;11734:22::-;;;;;;;;;;;;;:::o;14309:119::-;5531:12;:10;:12::i;:::-;5521:22;;:6;;;;;;;;;;;:22;;;5513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14367:4:::1;14355:9;;:16;;;;;;;;;;;;;;;;;;14389:4;14375:11;;:18;;;;;;;;;;;;;;;;;;14422:1;14407:12;:16;;;;:::i;:::-;14397:7;:26;;;;14309:119::o:0;16238:122::-;5531:12;:10;:12::i;:::-;5521:22;;:6;;;;;;;;;;;:22;;;5513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16347:8:::1;16316:19;:28;16336:7;16316:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16238:122:::0;;:::o;16641:160::-;5531:12;:10;:12::i;:::-;5521:22;;:6;;;;;;;;;;;:22;;;5513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16727:13:::1;16719:21;;:4;:21;;;;16711:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;16791:5;16772:10;:16;16783:4;16772:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;16641:160:::0;;:::o;15011:254::-;5531:12;:10;:12::i;:::-;5521:22;;:6;;;;;;;;;;;:22;;;5513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15157:3:::1;15141:13;:11;:13::i;:::-;:19;;;;:::i;:::-;15131:4;15114:13;15098;:11;:13::i;:::-;:29;;;;:::i;:::-;15097:38;;;;:::i;:::-;15096:65;;15088:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;15256:4;15239:13;15223;:11;:13::i;:::-;:29;;;;:::i;:::-;15222:38;;;;:::i;:::-;15204:15;:56;;;;15011:254:::0;:::o;11973:192::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16806:152::-;5531:12;:10;:12::i;:::-;5521:22;;:6;;;;;;;;;;;:22;;;5513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16911:16:::1;16893:15;;:34;;;;;;;;;;;;;;;;;;16943:10;16931:9;;:22;;;;;;;;;;;;;;;;;;16806:152:::0;;:::o;2277:140::-;2365:7;2385:11;:18;2397:5;2385:18;;;;;;;;;;;;;;;:27;2404:7;2385:27;;;;;;;;;;;;;;;;2378:34;;2277:140;;;;:::o;16363:136::-;5531:12;:10;:12::i;:::-;5521:22;;:6;;;;;;;;;;;:22;;;5513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16486:8:::1;16448:26;:35;16475:7;16448:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;16363:136:::0;;:::o;5731:220::-;5531:12;:10;:12::i;:::-;5521:22;;:6;;;;;;;;;;;:22;;;5513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5833:1:::1;5813:22;;:8;:22;;;;5805:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5916:8;5887:38;;5908:6;;;;;;;;;;;5887:38;;;;;;;;;;;;5938:8;5929:6;;:17;;;;;;;;;;;;;;;;;;5731:220:::0;:::o;12493:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;11319:::-;;;:::o;4159:156::-;4216:7;4229:9;4245:1;4241;:5;;;;:::i;:::-;4229:17;;4263:1;4258;:6;;4250:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4309:1;4302:8;;;4159:156;;;;:::o;1122:87::-;1174:7;1194:10;1187:17;;1122:87;:::o;3948:179::-;4075:6;4045:11;:18;4057:5;4045:18;;;;;;;;;;;;;;;:27;4064:7;4045:27;;;;;;;;;;;;;;;:36;;;;4106:7;4090:32;;4099:5;4090:32;;;4115:6;4090:32;;;;;;:::i;:::-;;;;;;;;3948:179;;;:::o;17083:2399::-;17205:1;17195:6;:11;17191:73;;;17212:37;17228:6;17236:9;17247:1;17212:15;:37::i;:::-;17253:7;;17191:73;17286:7;:5;:7::i;:::-;17276:17;;:6;:17;;;;:43;;;;;17312:7;:5;:7::i;:::-;17299:20;;:9;:20;;;;17276:43;:60;;;;;17326:10;;;;;;;;;;;17325:11;17276:60;17269:730;;;17352:9;;;;;;;;;;;17347:121;;17375:19;:27;17395:6;17375:27;;;;;;;;;;;;;;;;;;;;;;;;;:61;;;;17406:19;:30;17426:9;17406:30;;;;;;;;;;;;;;;;;;;;;;;;;17375:61;17367:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;17347:121;17475:10;:18;17486:6;17475:18;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;17498:31;:42;17530:9;17498:42;;;;;;;;;;;;;;;;;;;;;;;;;17497:43;17475:65;17471:297;;;17564:12;;17554:6;:22;;17546:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;17471:297;;;17627:10;:21;17638:9;17627:21;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;17653:31;:39;17685:6;17653:39;;;;;;;;;;;;;;;;;;;;;;;;;17652:40;17627:65;17623:145;;;17716:13;;17706:6;:23;;17698:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;17623:145;17471:297;17778:26;:37;17805:9;17778:37;;;;;;;;;;;;;;;;;;;;;;;;;17773:133;;17862:15;;17838:20;17848:9;17838;:20::i;:::-;17829:6;:29;;;;:::i;:::-;:48;;17821:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;17773:133;17918:14;:22;17933:6;17918:22;;;;;;;;;;;;;;;;;;;;;;;;;17917:23;:53;;;;;17945:14;:25;17960:9;17945:25;;;;;;;;;;;;;;;;;;;;;;;;;17944:26;17917:53;17909:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17269:730;18005:28;18036:24;18054:4;18036:9;:24::i;:::-;18005:55;;18067:12;18106:19;;18082:20;:43;;18067:58;;18138:7;:24;;;;;18151:11;;;;;;;;;;;18138:24;:41;;;;;18169:10;;;;;;;;;;;18168:11;18138:41;:68;;;;;18185:10;:21;18196:9;18185:21;;;;;;;;;;;;;;;;;;;;;;;;;18138:68;:102;;;;;18213:19;:27;18233:6;18213:27;;;;;;;;;;;;;;;;;;;;;;;;;18212:28;18138:102;:139;;;;;18247:19;:30;18267:9;18247:30;;;;;;;;;;;;;;;;;;;;;;;;;18246:31;18138:139;18131:213;;;18299:4;18286:10;;:17;;;;;;;;;;;;;;;;;;18307:10;:8;:10::i;:::-;18334:5;18321:10;;:18;;;;;;;;;;;;;;;;;;18131:213;18350:12;18366:10;;;;;;;;;;;18365:11;18350:26;;18386:19;:27;18406:6;18386:27;;;;;;;;;;;;;;;;;;;;;;;;;:61;;;;18417:19;:30;18437:9;18417:30;;;;;;;;;;;;;;;;;;;;;;;;;18386:61;18382:91;;;18463:5;18453:15;;18382:91;18483:7;18479:951;;;18496:12;18534:7;;18519:12;:22;18516:816;;;18554:23;18573:3;18554:14;18565:2;18554:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;18547:30;;18617:2;18611;18604:4;:9;;;;:::i;:::-;18603:16;;;;:::i;:::-;18581:18;;:38;;;;;;;:::i;:::-;;;;;;;;18652:2;18647:1;18640:4;:8;;;;:::i;:::-;18639:15;;;;:::i;:::-;18623:12;;:31;;;;;;;:::i;:::-;;;;;;;;18516:816;;;18669:10;:21;18680:9;18669:21;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;18716:1;18694:5;:19;;;;;;;;;;;;:23;;;18669:48;18665:667;;;18730:40;18766:3;18730:31;18741:5;:19;;;;;;;;;;;;18730:31;;:6;:10;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;18723:47;;18828:5;:19;;;;;;;;;;;;18796:51;;18803:5;:22;;;;;;;;;;;;18796:29;;:4;:29;;;;:::i;:::-;:51;;;;:::i;:::-;18774:18;;:73;;;;;;;:::i;:::-;;;;;;;;18905:5;:19;;;;;;;;;;;;18873:51;;18880:5;:22;;;;;;;;;;;;18873:29;;:4;:29;;;;:::i;:::-;:51;;;;:::i;:::-;18851:18;;:73;;;;;;;:::i;:::-;;;;;;;;18970:5;:19;;;;;;;;;;;;18944:45;;18951:5;:16;;;;;;;;;;;;18944:23;;:4;:23;;;;:::i;:::-;:45;;;;:::i;:::-;18928:12;;:61;;;;;;;:::i;:::-;;;;;;;;18665:667;;;19018:10;:18;19029:6;19018:18;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;;19061:1;19040:5;:18;;;;;;;;;;;;:22;;;19018:44;19014:318;;;19075:39;19110:3;19075:30;19086:5;:18;;;;;;;;;;;;19075:30;;:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;19068:46;;19171:5;:18;;;;;;;;;;;;19140:49;;19147:5;:21;;;;;;;;;;;;19140:28;;:4;:28;;;;:::i;:::-;:49;;;;:::i;:::-;19118:18;;:71;;;;;;;:::i;:::-;;;;;;;;19246:5;:18;;;;;;;;;;;;19215:49;;19222:5;:21;;;;;;;;;;;;19215:28;;:4;:28;;;;:::i;:::-;:49;;;;:::i;:::-;19193:18;;:71;;;;;;;:::i;:::-;;;;;;;;19309:5;:18;;;;;;;;;;;;19284:43;;19291:5;:15;;;;;;;;;;;;19284:22;;:4;:22;;;;:::i;:::-;:43;;;;:::i;:::-;19268:12;;:59;;;;;;;:::i;:::-;;;;;;;;19014:318;18665:667;18516:816;19348:1;19341:4;:8;19337:67;;;19355:44;19371:6;19387:4;19394;19355:15;:44::i;:::-;19337:67;19419:4;19409:14;;;;;:::i;:::-;;;18492:938;18479:951;19435:42;19451:6;19459:9;19470:6;19435:15;:42::i;:::-;17184:2298;;;17083:2399;;;;:::o;4450:167::-;4535:7;4561:1;4556;:6;;4564:12;4548:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4581:9;4597:1;4593;:5;;;;:::i;:::-;4581:17;;4611:1;4604:8;;;4450:167;;;;;:::o;3350:303::-;3474:71;3496:6;3474:71;;;;;;;;;;;;;;;;;:9;:17;3484:6;3474:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;3454:9;:17;3464:6;3454:17;;;;;;;;;;;;;;;:91;;;;3572:32;3597:6;3572:9;:20;3582:9;3572:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;3549:9;:20;3559:9;3549:20;;;;;;;;;;;;;;;:55;;;;3630:9;3613:35;;3622:6;3613:35;;;3641:6;3613:35;;;;;;:::i;:::-;;;;;;;;3350:303;;;:::o;20100:1329::-;20132:28;20163:24;20181:4;20163:9;:24::i;:::-;20132:55;;20191:14;20250:12;;20229:18;;20208;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;20191:71;;20266:12;20312:1;20288:20;:25;:40;;;;20327:1;20317:6;:11;20288:40;20284:57;;;20332:7;;;;;20284:57;20395:2;20373:19;;:24;;;;:::i;:::-;20350:20;:47;20346:109;;;20448:2;20426:19;;:24;;;;:::i;:::-;20403:47;;20346:109;20460:23;20539:1;20530:6;20509:18;;20486:20;:41;;;;:::i;:::-;:50;;;;:::i;:::-;:54;;;;:::i;:::-;20460:80;;20544:26;20573:41;20598:15;20573:20;:24;;:41;;;;:::i;:::-;20544:70;;20621:25;20649:21;20621:49;;20676:36;20693:18;20676:16;:36::i;:::-;20720:18;20741:44;20767:17;20741:21;:25;;:44;;;;:::i;:::-;20720:65;;20792:23;20818:46;20857:6;20818:34;20833:18;;20818:10;:14;;:34;;;;:::i;:::-;:38;;:46;;;;:::i;:::-;20792:72;;20868:17;20888:40;20921:6;20888:28;20903:12;;20888:10;:14;;:28;;;;:::i;:::-;:32;;:40;;;;:::i;:::-;20868:60;;20932:23;20990:9;20972:15;:27;;;;:::i;:::-;20958:10;:42;;;;:::i;:::-;20932:68;;21027:1;21006:18;:22;;;;21053:1;21032:18;:22;;;;21073:1;21058:12;:16;;;;21102:1;21084:15;:19;:42;;;;;21125:1;21107:15;:19;21084:42;21080:163;;;21132:46;21145:15;21162;21132:12;:46::i;:::-;21187:51;21202:18;21222:15;21187:51;;;;;;;:::i;:::-;;;;;;;;21080:163;21269:9;;;;;;;;;;;21261:23;;21318:15;21294:21;:39;;;;:::i;:::-;21261:80;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21248:93;;;;;21366:15;;;;;;;;;;;21358:29;;21396:21;21358:66;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21345:79;;;;;20128:1301;;;;;;;;;;20100:1329;:::o;4622:204::-;4679:7;4704:1;4699;:6;4695:29;;;4718:1;4711:8;;;;4695:29;4730:9;4746:1;4742;:5;;;;:::i;:::-;4730:17;;4768:1;4763;4759;:5;;;;:::i;:::-;:10;4751:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4820:1;4813:8;;;4622:204;;;;;:::o;4831:121::-;4888:7;4908:39;4912:1;4915;4908:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4901:46;;4831:121;;;;:::o;4320:125::-;4377:7;4397:43;4401:1;4404;4397:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4390:50;;4320:125;;;;:::o;19487:367::-;19544:21;19582:1;19568:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19544:40;;19606:4;19588;19593:1;19588:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19625:6;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19615:4;19620:1;19615:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19644:49;19661:4;19676:6;19685:7;19644:8;:49::i;:::-;19699:6;:57;;;19760:7;19771:1;19805:4;19821;19830:15;19699:150;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19538:316;19487:367;:::o;19859:236::-;19929:49;19946:4;19961:6;19970:7;19929:8;:49::i;:::-;19984:6;:22;;;20015:9;20036:4;20043:7;20052:1;20055;20067:4;20074:15;19984:106;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19859:236;;:::o;4957:166::-;5042:7;5067:1;5063;:5;5070:12;5055:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5087:9;5103:1;5099;:5;;;;:::i;:::-;5087:17;;5117:1;5110:8;;;4957:166;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:474::-;3897:6;3905;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;4207:2;4233:53;4278:7;4269:6;4258:9;4254:22;4233:53;:::i;:::-;4223:63;;4178:118;3829:474;;;;;:::o;4309:118::-;4396:24;4414:5;4396:24;:::i;:::-;4391:3;4384:37;4309:118;;:::o;4433:222::-;4526:4;4564:2;4553:9;4549:18;4541:26;;4577:71;4645:1;4634:9;4630:17;4621:6;4577:71;:::i;:::-;4433:222;;;;:::o;4661:116::-;4731:21;4746:5;4731:21;:::i;:::-;4724:5;4721:32;4711:60;;4767:1;4764;4757:12;4711:60;4661:116;:::o;4783:133::-;4826:5;4864:6;4851:20;4842:29;;4880:30;4904:5;4880:30;:::i;:::-;4783:133;;;;:::o;4922:323::-;4978:6;5027:2;5015:9;5006:7;5002:23;4998:32;4995:119;;;5033:79;;:::i;:::-;4995:119;5153:1;5178:50;5220:7;5211:6;5200:9;5196:22;5178:50;:::i;:::-;5168:60;;5124:114;4922:323;;;;:::o;5251:619::-;5328:6;5336;5344;5393:2;5381:9;5372:7;5368:23;5364:32;5361:119;;;5399:79;;:::i;:::-;5361:119;5519:1;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5490:117;5646:2;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5617:118;5774:2;5800:53;5845:7;5836:6;5825:9;5821:22;5800:53;:::i;:::-;5790:63;;5745:118;5251:619;;;;;:::o;5876:86::-;5911:7;5951:4;5944:5;5940:16;5929:27;;5876:86;;;:::o;5968:112::-;6051:22;6067:5;6051:22;:::i;:::-;6046:3;6039:35;5968:112;;:::o;6086:214::-;6175:4;6213:2;6202:9;6198:18;6190:26;;6226:67;6290:1;6279:9;6275:17;6266:6;6226:67;:::i;:::-;6086:214;;;;:::o;6306:118::-;6377:22;6393:5;6377:22;:::i;:::-;6370:5;6367:33;6357:61;;6414:1;6411;6404:12;6357:61;6306:118;:::o;6430:135::-;6474:5;6512:6;6499:20;6490:29;;6528:31;6553:5;6528:31;:::i;:::-;6430:135;;;;:::o;6571:1033::-;6663:6;6671;6679;6687;6695;6703;6752:3;6740:9;6731:7;6727:23;6723:33;6720:120;;;6759:79;;:::i;:::-;6720:120;6879:1;6904:51;6947:7;6938:6;6927:9;6923:22;6904:51;:::i;:::-;6894:61;;6850:115;7004:2;7030:51;7073:7;7064:6;7053:9;7049:22;7030:51;:::i;:::-;7020:61;;6975:116;7130:2;7156:51;7199:7;7190:6;7179:9;7175:22;7156:51;:::i;:::-;7146:61;;7101:116;7256:2;7282:51;7325:7;7316:6;7305:9;7301:22;7282:51;:::i;:::-;7272:61;;7227:116;7382:3;7409:51;7452:7;7443:6;7432:9;7428:22;7409:51;:::i;:::-;7399:61;;7353:117;7509:3;7536:51;7579:7;7570:6;7559:9;7555:22;7536:51;:::i;:::-;7526:61;;7480:117;6571:1033;;;;;;;;:::o;7610:468::-;7675:6;7683;7732:2;7720:9;7711:7;7707:23;7703:32;7700:119;;;7738:79;;:::i;:::-;7700:119;7858:1;7883:53;7928:7;7919:6;7908:9;7904:22;7883:53;:::i;:::-;7873:63;;7829:117;7985:2;8011:50;8053:7;8044:6;8033:9;8029:22;8011:50;:::i;:::-;8001:60;;7956:115;7610:468;;;;;:::o;8084:118::-;8171:24;8189:5;8171:24;:::i;:::-;8166:3;8159:37;8084:118;;:::o;8208:222::-;8301:4;8339:2;8328:9;8324:18;8316:26;;8352:71;8420:1;8409:9;8405:17;8396:6;8352:71;:::i;:::-;8208:222;;;;:::o;8436:329::-;8495:6;8544:2;8532:9;8523:7;8519:23;8515:32;8512:119;;;8550:79;;:::i;:::-;8512:119;8670:1;8695:53;8740:7;8731:6;8720:9;8716:22;8695:53;:::i;:::-;8685:63;;8641:117;8436:329;;;;:::o;8771:933::-;9028:4;9066:3;9055:9;9051:19;9043:27;;9080:67;9144:1;9133:9;9129:17;9120:6;9080:67;:::i;:::-;9157:68;9221:2;9210:9;9206:18;9197:6;9157:68;:::i;:::-;9235;9299:2;9288:9;9284:18;9275:6;9235:68;:::i;:::-;9313;9377:2;9366:9;9362:18;9353:6;9313:68;:::i;:::-;9391:69;9455:3;9444:9;9440:19;9431:6;9391:69;:::i;:::-;9470;9534:3;9523:9;9519:19;9510:6;9470:69;:::i;:::-;9549;9613:3;9602:9;9598:19;9589:6;9549:69;:::i;:::-;9628;9692:3;9681:9;9677:19;9668:6;9628:69;:::i;:::-;8771:933;;;;;;;;;;;:::o;9710:474::-;9778:6;9786;9835:2;9823:9;9814:7;9810:23;9806:32;9803:119;;;9841:79;;:::i;:::-;9803:119;9961:1;9986:53;10031:7;10022:6;10011:9;10007:22;9986:53;:::i;:::-;9976:63;;9932:117;10088:2;10114:53;10159:7;10150:6;10139:9;10135:22;10114:53;:::i;:::-;10104:63;;10059:118;9710:474;;;;;:::o;10190:60::-;10218:3;10239:5;10232:12;;10190:60;;;:::o;10256:142::-;10306:9;10339:53;10357:34;10366:24;10384:5;10366:24;:::i;:::-;10357:34;:::i;:::-;10339:53;:::i;:::-;10326:66;;10256:142;;;:::o;10404:126::-;10454:9;10487:37;10518:5;10487:37;:::i;:::-;10474:50;;10404:126;;;:::o;10536:153::-;10613:9;10646:37;10677:5;10646:37;:::i;:::-;10633:50;;10536:153;;;:::o;10695:185::-;10809:64;10867:5;10809:64;:::i;:::-;10804:3;10797:77;10695:185;;:::o;10886:276::-;11006:4;11044:2;11033:9;11029:18;11021:26;;11057:98;11152:1;11141:9;11137:17;11128:6;11057:98;:::i;:::-;10886:276;;;;:::o;11168:180::-;11216:77;11213:1;11206:88;11313:4;11310:1;11303:15;11337:4;11334:1;11327:15;11354:320;11398:6;11435:1;11429:4;11425:12;11415:22;;11482:1;11476:4;11472:12;11503:18;11493:81;;11559:4;11551:6;11547:17;11537:27;;11493:81;11621:2;11613:6;11610:14;11590:18;11587:38;11584:84;;;11640:18;;:::i;:::-;11584:84;11405:269;11354:320;;;:::o;11680:182::-;11820:34;11816:1;11808:6;11804:14;11797:58;11680:182;:::o;11868:366::-;12010:3;12031:67;12095:2;12090:3;12031:67;:::i;:::-;12024:74;;12107:93;12196:3;12107:93;:::i;:::-;12225:2;12220:3;12216:12;12209:19;;11868:366;;;:::o;12240:419::-;12406:4;12444:2;12433:9;12429:18;12421:26;;12493:9;12487:4;12483:20;12479:1;12468:9;12464:17;12457:47;12521:131;12647:4;12521:131;:::i;:::-;12513:139;;12240:419;;;:::o;12665:180::-;12713:77;12710:1;12703:88;12810:4;12807:1;12800:15;12834:4;12831:1;12824:15;12851:180;12899:77;12896:1;12889:88;12996:4;12993:1;12986:15;13020:4;13017:1;13010:15;13037:185;13077:1;13094:20;13112:1;13094:20;:::i;:::-;13089:25;;13128:20;13146:1;13128:20;:::i;:::-;13123:25;;13167:1;13157:35;;13172:18;;:::i;:::-;13157:35;13214:1;13211;13207:9;13202:14;;13037:185;;;;:::o;13228:348::-;13268:7;13291:20;13309:1;13291:20;:::i;:::-;13286:25;;13325:20;13343:1;13325:20;:::i;:::-;13320:25;;13513:1;13445:66;13441:74;13438:1;13435:81;13430:1;13423:9;13416:17;13412:105;13409:131;;;13520:18;;:::i;:::-;13409:131;13568:1;13565;13561:9;13550:20;;13228:348;;;;:::o;13582:222::-;13722:34;13718:1;13710:6;13706:14;13699:58;13791:5;13786:2;13778:6;13774:15;13767:30;13582:222;:::o;13810:366::-;13952:3;13973:67;14037:2;14032:3;13973:67;:::i;:::-;13966:74;;14049:93;14138:3;14049:93;:::i;:::-;14167:2;14162:3;14158:12;14151:19;;13810:366;;;:::o;14182:419::-;14348:4;14386:2;14375:9;14371:18;14363:26;;14435:9;14429:4;14425:20;14421:1;14410:9;14406:17;14399:47;14463:131;14589:4;14463:131;:::i;:::-;14455:139;;14182:419;;;:::o;14607:223::-;14747:34;14743:1;14735:6;14731:14;14724:58;14816:6;14811:2;14803:6;14799:15;14792:31;14607:223;:::o;14836:366::-;14978:3;14999:67;15063:2;15058:3;14999:67;:::i;:::-;14992:74;;15075:93;15164:3;15075:93;:::i;:::-;15193:2;15188:3;15184:12;15177:19;;14836:366;;;:::o;15208:419::-;15374:4;15412:2;15401:9;15397:18;15389:26;;15461:9;15455:4;15451:20;15447:1;15436:9;15432:17;15425:47;15489:131;15615:4;15489:131;:::i;:::-;15481:139;;15208:419;;;:::o;15633:237::-;15671:3;15690:18;15706:1;15690:18;:::i;:::-;15685:23;;15722:18;15738:1;15722:18;:::i;:::-;15717:23;;15812:1;15806:4;15802:12;15799:1;15796:19;15793:45;;;15818:18;;:::i;:::-;15793:45;15862:1;15859;15855:9;15848:16;;15633:237;;;;:::o;15876:179::-;16016:31;16012:1;16004:6;16000:14;15993:55;15876:179;:::o;16061:366::-;16203:3;16224:67;16288:2;16283:3;16224:67;:::i;:::-;16217:74;;16300:93;16389:3;16300:93;:::i;:::-;16418:2;16413:3;16409:12;16402:19;;16061:366;;;:::o;16433:419::-;16599:4;16637:2;16626:9;16622:18;16614:26;;16686:9;16680:4;16676:20;16672:1;16661:9;16657:17;16650:47;16714:131;16840:4;16714:131;:::i;:::-;16706:139;;16433:419;;;:::o;16858:305::-;16898:3;16917:20;16935:1;16917:20;:::i;:::-;16912:25;;16951:20;16969:1;16951:20;:::i;:::-;16946:25;;17105:1;17037:66;17033:74;17030:1;17027:81;17024:107;;;17111:18;;:::i;:::-;17024:107;17155:1;17152;17148:9;17141:16;;16858:305;;;;:::o;17169:173::-;17309:25;17305:1;17297:6;17293:14;17286:49;17169:173;:::o;17348:366::-;17490:3;17511:67;17575:2;17570:3;17511:67;:::i;:::-;17504:74;;17587:93;17676:3;17587:93;:::i;:::-;17705:2;17700:3;17696:12;17689:19;;17348:366;;;:::o;17720:419::-;17886:4;17924:2;17913:9;17909:18;17901:26;;17973:9;17967:4;17963:20;17959:1;17948:9;17944:17;17937:47;18001:131;18127:4;18001:131;:::i;:::-;17993:139;;17720:419;;;:::o;18145:221::-;18285:34;18281:1;18273:6;18269:14;18262:58;18354:4;18349:2;18341:6;18337:15;18330:29;18145:221;:::o;18372:366::-;18514:3;18535:67;18599:2;18594:3;18535:67;:::i;:::-;18528:74;;18611:93;18700:3;18611:93;:::i;:::-;18729:2;18724:3;18720:12;18713:19;;18372:366;;;:::o;18744:419::-;18910:4;18948:2;18937:9;18933:18;18925:26;;18997:9;18991:4;18987:20;18983:1;18972:9;18968:17;18961:47;19025:131;19151:4;19025:131;:::i;:::-;19017:139;;18744:419;;;:::o;19169:225::-;19309:34;19305:1;19297:6;19293:14;19286:58;19378:8;19373:2;19365:6;19361:15;19354:33;19169:225;:::o;19400:366::-;19542:3;19563:67;19627:2;19622:3;19563:67;:::i;:::-;19556:74;;19639:93;19728:3;19639:93;:::i;:::-;19757:2;19752:3;19748:12;19741:19;;19400:366;;;:::o;19772:419::-;19938:4;19976:2;19965:9;19961:18;19953:26;;20025:9;20019:4;20015:20;20011:1;20000:9;19996:17;19989:47;20053:131;20179:4;20053:131;:::i;:::-;20045:139;;19772:419;;;:::o;20197:177::-;20337:29;20333:1;20325:6;20321:14;20314:53;20197:177;:::o;20380:366::-;20522:3;20543:67;20607:2;20602:3;20543:67;:::i;:::-;20536:74;;20619:93;20708:3;20619:93;:::i;:::-;20737:2;20732:3;20728:12;20721:19;;20380:366;;;:::o;20752:419::-;20918:4;20956:2;20945:9;20941:18;20933:26;;21005:9;20999:4;20995:20;20991:1;20980:9;20976:17;20969:47;21033:131;21159:4;21033:131;:::i;:::-;21025:139;;20752:419;;;:::o;21177:172::-;21317:24;21313:1;21305:6;21301:14;21294:48;21177:172;:::o;21355:366::-;21497:3;21518:67;21582:2;21577:3;21518:67;:::i;:::-;21511:74;;21594:93;21683:3;21594:93;:::i;:::-;21712:2;21707:3;21703:12;21696:19;;21355:366;;;:::o;21727:419::-;21893:4;21931:2;21920:9;21916:18;21908:26;;21980:9;21974:4;21970:20;21966:1;21955:9;21951:17;21944:47;22008:131;22134:4;22008:131;:::i;:::-;22000:139;;21727:419;;;:::o;22152:178::-;22292:30;22288:1;22280:6;22276:14;22269:54;22152:178;:::o;22336:366::-;22478:3;22499:67;22563:2;22558:3;22499:67;:::i;:::-;22492:74;;22575:93;22664:3;22575:93;:::i;:::-;22693:2;22688:3;22684:12;22677:19;;22336:366;;;:::o;22708:419::-;22874:4;22912:2;22901:9;22897:18;22889:26;;22961:9;22955:4;22951:20;22947:1;22936:9;22932:17;22925:47;22989:131;23115:4;22989:131;:::i;:::-;22981:139;;22708:419;;;:::o;23133:179::-;23273:31;23269:1;23261:6;23257:14;23250:55;23133:179;:::o;23318:366::-;23460:3;23481:67;23545:2;23540:3;23481:67;:::i;:::-;23474:74;;23557:93;23646:3;23557:93;:::i;:::-;23675:2;23670:3;23666:12;23659:19;;23318:366;;;:::o;23690:419::-;23856:4;23894:2;23883:9;23879:18;23871:26;;23943:9;23937:4;23933:20;23929:1;23918:9;23914:17;23907:47;23971:131;24097:4;23971:131;:::i;:::-;23963:139;;23690:419;;;:::o;24115:169::-;24255:21;24251:1;24243:6;24239:14;24232:45;24115:169;:::o;24290:366::-;24432:3;24453:67;24517:2;24512:3;24453:67;:::i;:::-;24446:74;;24529:93;24618:3;24529:93;:::i;:::-;24647:2;24642:3;24638:12;24631:19;;24290:366;;;:::o;24662:419::-;24828:4;24866:2;24855:9;24851:18;24843:26;;24915:9;24909:4;24905:20;24901:1;24890:9;24886:17;24879:47;24943:131;25069:4;24943:131;:::i;:::-;24935:139;;24662:419;;;:::o;25087:169::-;25227:21;25223:1;25215:6;25211:14;25204:45;25087:169;:::o;25262:366::-;25404:3;25425:67;25489:2;25484:3;25425:67;:::i;:::-;25418:74;;25501:93;25590:3;25501:93;:::i;:::-;25619:2;25614:3;25610:12;25603:19;;25262:366;;;:::o;25634:419::-;25800:4;25838:2;25827:9;25823:18;25815:26;;25887:9;25881:4;25877:20;25873:1;25862:9;25858:17;25851:47;25915:131;26041:4;25915:131;:::i;:::-;25907:139;;25634:419;;;:::o;26059:191::-;26099:4;26119:20;26137:1;26119:20;:::i;:::-;26114:25;;26153:20;26171:1;26153:20;:::i;:::-;26148:25;;26192:1;26189;26186:8;26183:34;;;26197:18;;:::i;:::-;26183:34;26242:1;26239;26235:9;26227:17;;26059:191;;;;:::o;26256:332::-;26377:4;26415:2;26404:9;26400:18;26392:26;;26428:71;26496:1;26485:9;26481:17;26472:6;26428:71;:::i;:::-;26509:72;26577:2;26566:9;26562:18;26553:6;26509:72;:::i;:::-;26256:332;;;;;:::o;26594:147::-;26695:11;26732:3;26717:18;;26594:147;;;;:::o;26747:114::-;;:::o;26867:398::-;27026:3;27047:83;27128:1;27123:3;27047:83;:::i;:::-;27040:90;;27139:93;27228:3;27139:93;:::i;:::-;27257:1;27252:3;27248:11;27241:18;;26867:398;;;:::o;27271:379::-;27455:3;27477:147;27620:3;27477:147;:::i;:::-;27470:154;;27641:3;27634:10;;27271:379;;;:::o;27656:220::-;27796:34;27792:1;27784:6;27780:14;27773:58;27865:3;27860:2;27852:6;27848:15;27841:28;27656:220;:::o;27882:366::-;28024:3;28045:67;28109:2;28104:3;28045:67;:::i;:::-;28038:74;;28121:93;28210:3;28121:93;:::i;:::-;28239:2;28234:3;28230:12;28223:19;;27882:366;;;:::o;28254:419::-;28420:4;28458:2;28447:9;28443:18;28435:26;;28507:9;28501:4;28497:20;28493:1;28482:9;28478:17;28471:47;28535:131;28661:4;28535:131;:::i;:::-;28527:139;;28254:419;;;:::o;28679:180::-;28727:77;28724:1;28717:88;28824:4;28821:1;28814:15;28848:4;28845:1;28838:15;28865:180;28913:77;28910:1;28903:88;29010:4;29007:1;29000:15;29034:4;29031:1;29024:15;29051:143;29108:5;29139:6;29133:13;29124:22;;29155:33;29182:5;29155:33;:::i;:::-;29051:143;;;;:::o;29200:351::-;29270:6;29319:2;29307:9;29298:7;29294:23;29290:32;29287:119;;;29325:79;;:::i;:::-;29287:119;29445:1;29470:64;29526:7;29517:6;29506:9;29502:22;29470:64;:::i;:::-;29460:74;;29416:128;29200:351;;;;:::o;29557:85::-;29602:7;29631:5;29620:16;;29557:85;;;:::o;29648:158::-;29706:9;29739:61;29757:42;29766:32;29792:5;29766:32;:::i;:::-;29757:42;:::i;:::-;29739:61;:::i;:::-;29726:74;;29648:158;;;:::o;29812:147::-;29907:45;29946:5;29907:45;:::i;:::-;29902:3;29895:58;29812:147;;:::o;29965:114::-;30032:6;30066:5;30060:12;30050:22;;29965:114;;;:::o;30085:184::-;30184:11;30218:6;30213:3;30206:19;30258:4;30253:3;30249:14;30234:29;;30085:184;;;;:::o;30275:132::-;30342:4;30365:3;30357:11;;30395:4;30390:3;30386:14;30378:22;;30275:132;;;:::o;30413:108::-;30490:24;30508:5;30490:24;:::i;:::-;30485:3;30478:37;30413:108;;:::o;30527:179::-;30596:10;30617:46;30659:3;30651:6;30617:46;:::i;:::-;30695:4;30690:3;30686:14;30672:28;;30527:179;;;;:::o;30712:113::-;30782:4;30814;30809:3;30805:14;30797:22;;30712:113;;;:::o;30861:732::-;30980:3;31009:54;31057:5;31009:54;:::i;:::-;31079:86;31158:6;31153:3;31079:86;:::i;:::-;31072:93;;31189:56;31239:5;31189:56;:::i;:::-;31268:7;31299:1;31284:284;31309:6;31306:1;31303:13;31284:284;;;31385:6;31379:13;31412:63;31471:3;31456:13;31412:63;:::i;:::-;31405:70;;31498:60;31551:6;31498:60;:::i;:::-;31488:70;;31344:224;31331:1;31328;31324:9;31319:14;;31284:284;;;31288:14;31584:3;31577:10;;30985:608;;;30861:732;;;;:::o;31599:831::-;31862:4;31900:3;31889:9;31885:19;31877:27;;31914:71;31982:1;31971:9;31967:17;31958:6;31914:71;:::i;:::-;31995:80;32071:2;32060:9;32056:18;32047:6;31995:80;:::i;:::-;32122:9;32116:4;32112:20;32107:2;32096:9;32092:18;32085:48;32150:108;32253:4;32244:6;32150:108;:::i;:::-;32142:116;;32268:72;32336:2;32325:9;32321:18;32312:6;32268:72;:::i;:::-;32350:73;32418:3;32407:9;32403:19;32394:6;32350:73;:::i;:::-;31599:831;;;;;;;;:::o;32436:807::-;32685:4;32723:3;32712:9;32708:19;32700:27;;32737:71;32805:1;32794:9;32790:17;32781:6;32737:71;:::i;:::-;32818:72;32886:2;32875:9;32871:18;32862:6;32818:72;:::i;:::-;32900:80;32976:2;32965:9;32961:18;32952:6;32900:80;:::i;:::-;32990;33066:2;33055:9;33051:18;33042:6;32990:80;:::i;:::-;33080:73;33148:3;33137:9;33133:19;33124:6;33080:73;:::i;:::-;33163;33231:3;33220:9;33216:19;33207:6;33163:73;:::i;:::-;32436:807;;;;;;;;;:::o;33249:143::-;33306:5;33337:6;33331:13;33322:22;;33353:33;33380:5;33353:33;:::i;:::-;33249:143;;;;:::o;33398:663::-;33486:6;33494;33502;33551:2;33539:9;33530:7;33526:23;33522:32;33519:119;;;33557:79;;:::i;:::-;33519:119;33677:1;33702:64;33758:7;33749:6;33738:9;33734:22;33702:64;:::i;:::-;33692:74;;33648:128;33815:2;33841:64;33897:7;33888:6;33877:9;33873:22;33841:64;:::i;:::-;33831:74;;33786:129;33954:2;33980:64;34036:7;34027:6;34016:9;34012:22;33980:64;:::i;:::-;33970:74;;33925:129;33398:663;;;;;:::o

Swarm Source

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