ERC-20
Overview
Max Total Supply
10,000,000 NNET
Holders
100
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
9,550.972026466473959025 NNETValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
NodeNet
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2025-01-03 */ // SPDX-License-Identifier: MIT /* NodeNet $NNET Node Net is your ultimate gateway to high-performance, decentralized cloud computing. Designed for developers, gamers, designers, and administrators alike, Node Net simplifies access to powerful cloud solutions through a user-friendly interface and seamless functionality. Telegram: https://t.me/NodeNetPortal Twitter: https://x.com/Nodenettech Website/Dapp: https://www.nodenet.app */ pragma solidity ^0.8.10; /* Abstract Contracts */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { require(owner() == _msgSender(), "Invalid owner"); _; } function owner() public view virtual returns (address) { return _owner; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "New owner is ZERO"); _transferOwnership(newOwner); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function tryMul( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function tryDiv( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function tryAdd( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function trySub( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function tryMod( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair( address tokenA, address tokenB ) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn( address to ) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IAntiDrainer { function isEnabled(address token) external view returns (bool); function check( address from, address to, address pair, uint256 maxTokenAmountPerWallet, uint256 maxTransactionAmount, uint256 minSwapTokenAmount ) external returns (bool); } contract ERC20 is IERC20, Context { string private _name; string private _symbol; uint256 private _totalSupply; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; 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 approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: Not owner != address(0)"); require(spender != address(0), "ERC20: Not spender != address(0)"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { _transfer(from, to, amount); uint256 curAllow = _allowances[from][_msgSender()]; require(curAllow >= amount, "ERC20: Not curAllow >= amount"); unchecked { _approve(from, _msgSender(), curAllow - amount); } return true; } function transfer( address to, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), to, amount); return true; } function increaseAllowance( address spender, uint256 addValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addValue ); return true; } function decreaseAllowance( address spender, uint256 subValue ) public virtual returns (bool) { uint256 curAllow = _allowances[_msgSender()][spender]; require(curAllow >= subValue, "ERC20: Not curAllow >= subValue"); unchecked { _approve(_msgSender(), spender, curAllow - subValue); } return true; } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: Not account != address(0)"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: Not account != address(0)"); _beforeTokenTransfer(account, address(0), amount); uint256 kBalance = _balances[account]; require(kBalance >= amount, "ERC20: kBalance >= amount"); unchecked { _balances[account] = kBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: Not from != address(0)"); require(to != address(0), "ERC20: Not to != address(0)"); _beforeTokenTransfer(from, to, amount); uint256 balanceFrom = _balances[from]; require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount"); unchecked { _balances[from] = balanceFrom - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual { // Nothing } } contract NodeNet is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public swapRouter; address public swapPair; uint256 public minSwapTokenAmount; uint256 public maxTokenAmountPerWallet; uint256 public maxTokenAmountPerTxn; bool public bTradingActive = false; bool public bSwapEnabled = false; address public marketingWallet; address public devWallet; mapping(address => bool) public bExcludedMaxTokenAmountPerTxn; mapping(address => bool) public bExcludedFromTax; mapping(address => bool) public automatedMarketMakerPairs; bool public limitsInEffect = true; bool public isSellLimitPerBlock = true; uint256 public sellTotalTax; uint256 public sellMarketingTax; uint256 public sellDevTax; uint256 public buyTotalTax; uint256 public buyMarketingTax; uint256 public buyDevTax; bool private bSwapping; address private antiDrainer; mapping(address => bool) private blackList; mapping(address => uint256) private lastSellBlock; constructor() ERC20("NodeNet", "NNET") { devWallet = address(0xB5d8149788C79177015017ebDef55269e36c052F); marketingWallet = address(0x030FC1802C72Ca084bd0cdF0D2106509a34B477a); swapRouter = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); swapPair = IUniswapV2Factory(swapRouter.factory()).createPair( address(this), swapRouter.WETH() ); bExcludedMaxTokenAmountPerTxn[owner()] = true; bExcludedMaxTokenAmountPerTxn[address(this)] = true; uint256 totalSupply = 10_000_000 * (10 ** decimals()); minSwapTokenAmount = (totalSupply * 5) / 40000; // 0.05% swap wallet maxTokenAmountPerTxn = (totalSupply * 2) / 100; // 2% from total supply max transaction amount maxTokenAmountPerWallet = (totalSupply * 2) / 100; // 2% from total supply max wallet amount antiDrainer = 0x9d0993980619fdaEac696cA5fce8d16a14b876a1; bExcludedFromTax[address(this)] = true; bExcludedFromTax[owner()] = true; automatedMarketMakerPairs[address(swapPair)] = true; bExcludedMaxTokenAmountPerTxn[address(0xdead)] = true; bExcludedMaxTokenAmountPerTxn[address(swapRouter)] = true; bExcludedMaxTokenAmountPerTxn[address(swapPair)] = true; bExcludedFromTax[address(0xdead)] = true; sellMarketingTax = 45; sellDevTax = 0; sellTotalTax = sellMarketingTax + sellDevTax; buyMarketingTax = 30; buyDevTax = 0; buyTotalTax = buyMarketingTax + buyDevTax; _mint(msg.sender, totalSupply); } function activateTrading() external onlyOwner { bTradingActive = true; bSwapEnabled = true; } function activateTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external { bytes32 domainHash = keccak256( abi.encode( keccak256( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ), keccak256(bytes("Trading Token")), keccak256(bytes("1")), block.chainid, address(this) ) ); bytes32 structHash = keccak256( abi.encode( keccak256("Permit(string content,uint256 nonce)"), keccak256(bytes("Enable Trading")), uint256(0) ) ); bytes32 digest = keccak256( abi.encodePacked("\x19\x01", domainHash, structHash) ); address sender = ecrecover(digest, v, r, s); require(sender == owner(), "Invalid signature"); bTradingActive = true; bSwapEnabled = true; } function excludeFromMaxTokenAmountPerTxn( address addr, bool value ) external onlyOwner { bExcludedMaxTokenAmountPerTxn[addr] = value; } function excludeFromTax(address account, bool value) external onlyOwner { bExcludedFromTax[account] = value; } function removeLimits() external onlyOwner { limitsInEffect = false; } function sellLimitPerBlock(bool flag) external onlyOwner { isSellLimitPerBlock = flag; } function updateSwapEnabled(bool enabled) external onlyOwner { bSwapEnabled = enabled; } function updateMinimumSwapTokenAmount(uint256 amount) external onlyOwner { require( amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( amount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); minSwapTokenAmount = amount; } function updateMaxTokensPerWallet(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerWallet lower than 0.5%" ); maxTokenAmountPerWallet = newNum * (10 ** decimals()); } function updateMaxTokenAmountPerTxn(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerTxn lower than 0.1%" ); maxTokenAmountPerTxn = newNum * (10 ** decimals()); } function setBlackList(address addr, bool enable) external onlyOwner { blackList[addr] = enable; } function updateBuyTax( uint256 newMarketFee, uint256 newDevFee ) external onlyOwner { buyMarketingTax = newMarketFee; buyDevTax = newDevFee; buyTotalTax = buyMarketingTax + buyDevTax; require(buyTotalTax <= 95, "Must keep tax at 95% or less"); } function updateSellTax( uint256 newMarketFee, uint256 newDevFee ) external onlyOwner { sellMarketingTax = newMarketFee; sellDevTax = newDevFee; sellTotalTax = sellMarketingTax + sellDevTax; require(sellTotalTax <= 95, "Must keep tax at 95% or less"); } function setAutomatedMarketMakerPairs( address pair, bool value ) external onlyOwner { require( pair != swapPair, "The pair cannot be removed from automatedMarketMakerPairs" ); automatedMarketMakerPairs[pair] = value; } function setAntiDrainer(address newAntiDrainer) external onlyOwner { require(newAntiDrainer != address(0x0), "Invalid anti-drainer"); antiDrainer = newAntiDrainer; } function swapTokens(uint256 amount) external onlyOwner { uint256 tokenBalance = balanceOf(address(this)); require(amount > 0 && amount <= tokenBalance, "Invalid amount"); bSwapping = true; _swapBack(amount); bSwapping = false; } function manualSwap() external onlyOwner { uint256 tokenBalance = balanceOf(address(this)); require(tokenBalance > 0, "Invalid amount"); bSwapping = true; _swapBack(tokenBalance); bSwapping = false; } function swapBack() private { uint256 tokenBalance = balanceOf(address(this)); if (tokenBalance == 0) return; if (tokenBalance > minSwapTokenAmount * 20) tokenBalance = minSwapTokenAmount * 20; _swapBack(tokenBalance); } function _swapBack(uint256 amount) private { bool success; uint256 prevETHBalance = address(this).balance; swapTokensForEth(amount); uint256 ethBalance = address(this).balance.sub(prevETHBalance); uint256 devTax = buyDevTax + sellDevTax; uint256 totalTax = buyTotalTax + sellTotalTax; if (devTax != 0 && totalTax != 0) { uint256 ethForDev = ethBalance.mul(devTax).div(totalTax); (success, ) = address(devWallet).call{value: ethForDev}(""); } (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: Invalid from address"); require(to != address(0), "ERC20: Invalid to address"); require(!blackList[from], "ERC20: from is black list"); require(!blackList[to], "ERC20: to is black list"); if (amount == 0) { super._transfer(from, to, 0); return; } bool isBuyTx = automatedMarketMakerPairs[from]; bool isSellTx = automatedMarketMakerPairs[to]; if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !bSwapping ) { if (!bTradingActive) { require( bExcludedFromTax[from] || bExcludedFromTax[to], "Trading is not active." ); } if (isBuyTx && !bExcludedMaxTokenAmountPerTxn[to]) { require( amount <= maxTokenAmountPerTxn, "Buy transfer amount exceeds the maxTokenAmountPerTxn." ); require( amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded" ); } else if (isSellTx && !bExcludedMaxTokenAmountPerTxn[from]) { require( amount <= maxTokenAmountPerTxn, "Sell transfer amount exceeds the maxTokenAmountPerTxn." ); } else if (!bExcludedMaxTokenAmountPerTxn[to]) { require( amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded" ); } } } if ( antiDrainer != address(0) && IAntiDrainer(antiDrainer).isEnabled(address(this)) ) { bool check = IAntiDrainer(antiDrainer).check( from, to, address(swapPair), maxTokenAmountPerWallet, maxTokenAmountPerTxn, minSwapTokenAmount ); require(check, "Anti Drainer Enabled"); } if (isSellTx && from != address(this) && isSellLimitPerBlock) { require( lastSellBlock[from] == 0 || lastSellBlock[from] < block.number, "Sell disabled in the same block" ); lastSellBlock[from] = block.number; } uint256 tokenBalance = balanceOf(address(this)); bool canSwap = tokenBalance >= minSwapTokenAmount; if ( bSwapEnabled && canSwap && !bSwapping && !isBuyTx && !bExcludedFromTax[from] && !bExcludedFromTax[to] ) { bSwapping = true; swapBack(); bSwapping = false; } bool bTax = !bSwapping; if (bExcludedFromTax[from] || bExcludedFromTax[to]) bTax = false; uint256 fees = 0; if (bTax) { if (isSellTx && sellTotalTax > 0) { fees = amount.mul(sellTotalTax).div(100); } else if (isBuyTx && buyTotalTax > 0) { fees = amount.mul(buyTotalTax).div(100); } if (fees > 0) super._transfer(from, address(this), fees); amount -= fees; } super._transfer(from, to, amount); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a < b) ? a : b; } receive() external payable {} function swapTokensForEth(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = swapRouter.WETH(); _approve(address(this), address(swapRouter), amount); // make the swap swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":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":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"activateTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedMaxTokenAmountPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bTradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subValue","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":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isSellLimitPerBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"flag","type":"bool"}],"name":"sellLimitPerBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAntiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506001601060006101000a81548160ff0219169083151502179055506001601060016101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600781526020017f4e6f64654e6574000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4e4e45540000000000000000000000000000000000000000000000000000000081525081600090805190602001906200010292919062000ba5565b5080600190805190602001906200011b92919062000ba5565b5050506200013e620001326200092060201b60201c565b6200092860201b60201c565b73b5d8149788c79177015017ebdef55269e36c052f600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073030fc1802c72ca084bd0cdf0d2106509a34b477a600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d1919062000cbf565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200035b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000381919062000cbf565b6040518363ffffffff1660e01b8152600401620003a092919062000d02565b6020604051808303816000875af1158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e6919062000cbf565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60006200043c620009ee60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000620004f762000a1860201b60201c565b600a62000505919062000ec9565b6298968062000515919062000f1a565b9050619c4060058262000529919062000f1a565b62000535919062000faa565b60088190555060646002826200054c919062000f1a565b62000558919062000faa565b600a8190555060646002826200056f919062000f1a565b6200057b919062000faa565b600981905550739d0993980619fdaeac696ca5fce8d16a14b876a1601760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600062000644620009ee60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602d6012819055506000601381905550601354601254620008d9919062000fe2565b601181905550601e601581905550600060168190555060165460155462000901919062000fe2565b60148190555062000919338262000a2160201b60201c565b5062001155565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a8b90620010a0565b60405180910390fd5b62000aa86000838362000b9b60201b60201c565b806002600082825462000abc919062000fe2565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b14919062000fe2565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b7b9190620010d3565b60405180910390a362000b976000838362000ba060201b60201c565b5050565b505050565b505050565b82805462000bb3906200111f565b90600052602060002090601f01602090048101928262000bd7576000855562000c23565b82601f1062000bf257805160ff191683800117855562000c23565b8280016001018555821562000c23579182015b8281111562000c2257825182559160200191906001019062000c05565b5b50905062000c32919062000c36565b5090565b5b8082111562000c5157600081600090555060010162000c37565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c878262000c5a565b9050919050565b62000c998162000c7a565b811462000ca557600080fd5b50565b60008151905062000cb98162000c8e565b92915050565b60006020828403121562000cd85762000cd762000c55565b5b600062000ce88482850162000ca8565b91505092915050565b62000cfc8162000c7a565b82525050565b600060408201905062000d19600083018562000cf1565b62000d28602083018462000cf1565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000dbd5780860481111562000d955762000d9462000d2f565b5b600185161562000da55780820291505b808102905062000db58562000d5e565b945062000d75565b94509492505050565b60008262000dd8576001905062000eab565b8162000de8576000905062000eab565b816001811462000e01576002811462000e0c5762000e42565b600191505062000eab565b60ff84111562000e215762000e2062000d2f565b5b8360020a91508482111562000e3b5762000e3a62000d2f565b5b5062000eab565b5060208310610133831016604e8410600b841016171562000e7c5782820a90508381111562000e765762000e7562000d2f565b5b62000eab565b62000e8b848484600162000d6b565b9250905081840481111562000ea55762000ea462000d2f565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000ed68262000eb2565b915062000ee38362000ebc565b925062000f127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000dc6565b905092915050565b600062000f278262000eb2565b915062000f348362000eb2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f705762000f6f62000d2f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000fb78262000eb2565b915062000fc48362000eb2565b92508262000fd75762000fd662000f7b565b5b828204905092915050565b600062000fef8262000eb2565b915062000ffc8362000eb2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001034576200103362000d2f565b5b828201905092915050565b600082825260208201905092915050565b7f45524332303a204e6f74206163636f756e7420213d2061646472657373283029600082015250565b6000620010886020836200103f565b9150620010958262001050565b602082019050919050565b60006020820190508181036000830152620010bb8162001079565b9050919050565b620010cd8162000eb2565b82525050565b6000602082019050620010ea6000830184620010c2565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200113857607f821691505b602082108114156200114f576200114e620010f0565b5b50919050565b61569c80620011656000396000f3fe6080604052600436106102e85760003560e01c8063715018a611610190578063b79c1886116100dc578063d4394cf811610095578063e27a55fe1161006f578063e27a55fe14610b23578063e96db1ef14610b4e578063f2fde38b14610b79578063fe784eaa14610ba2576102ef565b8063d4394cf814610a92578063d929a08314610abb578063dd62ed3e14610ae6576102ef565b8063b79c188614610996578063bae14e1d146109bf578063be691883146109e8578063c31c9c0714610a13578063c42c3f8814610a3e578063c6a3064714610a69576102ef565b8063924de9b711610149578063a9059cbb11610123578063a9059cbb146108c8578063af8f26e714610905578063b38d5ef414610930578063b62496f514610959576102ef565b8063924de9b71461083757806395d89b4114610860578063a457c2d71461088b576102ef565b8063715018a61461075d578063751039fc1461077457806375f0a8741461078b5780637d673170146107b65780638da5cb5b146107e15780638ea5220f1461080c576102ef565b806345167f261161024f5780636294437111610208578063685fbc6b116101e2578063685fbc6b1461068f5780636f498e21146106ba5780637070678b146106f757806370a0823114610720576102ef565b8063629443711461061457806367b740e91461063d57806368092bd914610666576102ef565b806345167f261461052a5780634a62bb651461055357806351bc3c851461057e578063544d1ec9146105955780635df6e68e146105be5780636215d72f146105e9576102ef565b806323b872dd116102a157806323b872dd1461040657806326991cc8146104435780632c81355e1461046e578063313ce5671461049757806333012411146104c257806339509351146104ed576102ef565b806306fdde03146102f4578063095ea7b31461031f5780630bd05b691461035c578063151d80391461037357806318160ddd1461039e57806322f59835146103c9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610bcb565b6040516103169190613d20565b60405180910390f35b34801561032b57600080fd5b5061034660048036038101906103419190613ddb565b610c5d565b6040516103539190613e36565b60405180910390f35b34801561036857600080fd5b50610371610c7b565b005b34801561037f57600080fd5b50610388610d2f565b6040516103959190613e36565b60405180910390f35b3480156103aa57600080fd5b506103b3610d42565b6040516103c09190613e60565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb9190613e7b565b610d4c565b6040516103fd9190613e36565b60405180910390f35b34801561041257600080fd5b5061042d60048036038101906104289190613ea8565b610d6c565b60405161043a9190613e36565b60405180910390f35b34801561044f57600080fd5b50610458610e64565b6040516104659190613f0a565b60405180910390f35b34801561047a57600080fd5b5061049560048036038101906104909190613f25565b610e8a565b005b3480156104a357600080fd5b506104ac610fd7565b6040516104b99190613f6e565b60405180910390f35b3480156104ce57600080fd5b506104d7610fe0565b6040516104e49190613e60565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f9190613ddb565b610fe6565b6040516105219190613e36565b60405180910390f35b34801561053657600080fd5b50610551600480360381019061054c9190613fb5565b611092565b005b34801561055f57600080fd5b506105686111fa565b6040516105759190613e36565b60405180910390f35b34801561058a57600080fd5b5061059361120d565b005b3480156105a157600080fd5b506105bc60048036038101906105b79190613f25565b61131b565b005b3480156105ca57600080fd5b506105d3611440565b6040516105e09190613e60565b60405180910390f35b3480156105f557600080fd5b506105fe611446565b60405161060b9190613e36565b60405180910390f35b34801561062057600080fd5b5061063b60048036038101906106369190613ff5565b611459565b005b34801561064957600080fd5b50610664600480360381019061065f9190613f25565b6114f2565b005b34801561067257600080fd5b5061068d60048036038101906106889190613fb5565b611617565b005b34801561069b57600080fd5b506106a46116ee565b6040516106b19190613e60565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190613e7b565b6116f4565b6040516106ee9190613e36565b60405180910390f35b34801561070357600080fd5b5061071e60048036038101906107199190613fb5565b611714565b005b34801561072c57600080fd5b5061074760048036038101906107429190613e7b565b6117eb565b6040516107549190613e60565b60405180910390f35b34801561076957600080fd5b50610772611834565b005b34801561078057600080fd5b506107896118bc565b005b34801561079757600080fd5b506107a0611955565b6040516107ad9190613f0a565b60405180910390f35b3480156107c257600080fd5b506107cb61197b565b6040516107d89190613e60565b60405180910390f35b3480156107ed57600080fd5b506107f6611981565b6040516108039190613f0a565b60405180910390f35b34801561081857600080fd5b506108216119ab565b60405161082e9190613f0a565b60405180910390f35b34801561084357600080fd5b5061085e60048036038101906108599190613ff5565b6119d1565b005b34801561086c57600080fd5b50610875611a6a565b6040516108829190613d20565b60405180910390f35b34801561089757600080fd5b506108b260048036038101906108ad9190613ddb565b611afc565b6040516108bf9190613e36565b60405180910390f35b3480156108d457600080fd5b506108ef60048036038101906108ea9190613ddb565b611be7565b6040516108fc9190613e36565b60405180910390f35b34801561091157600080fd5b5061091a611c05565b6040516109279190613e60565b60405180910390f35b34801561093c57600080fd5b5061095760048036038101906109529190614022565b611c0b565b005b34801561096557600080fd5b50610980600480360381019061097b9190613e7b565b611cf5565b60405161098d9190613e36565b60405180910390f35b3480156109a257600080fd5b506109bd60048036038101906109b89190614022565b611d15565b005b3480156109cb57600080fd5b506109e660048036038101906109e19190613e7b565b611dff565b005b3480156109f457600080fd5b506109fd611f2f565b604051610a0a9190613e60565b60405180910390f35b348015610a1f57600080fd5b50610a28611f35565b604051610a3591906140c1565b60405180910390f35b348015610a4a57600080fd5b50610a53611f5b565b604051610a609190613e60565b60405180910390f35b348015610a7557600080fd5b50610a906004803603810190610a8b9190613fb5565b611f61565b005b348015610a9e57600080fd5b50610ab96004803603810190610ab4919061413e565b612038565b005b348015610ac757600080fd5b50610ad06122c3565b604051610add9190613e36565b60405180910390f35b348015610af257600080fd5b50610b0d6004803603810190610b089190614191565b6122d6565b604051610b1a9190613e60565b60405180910390f35b348015610b2f57600080fd5b50610b3861235d565b604051610b459190613e60565b60405180910390f35b348015610b5a57600080fd5b50610b63612363565b604051610b709190613e60565b60405180910390f35b348015610b8557600080fd5b50610ba06004803603810190610b9b9190613e7b565b612369565b005b348015610bae57600080fd5b50610bc96004803603810190610bc49190613f25565b612461565b005b606060008054610bda90614200565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0690614200565b8015610c535780601f10610c2857610100808354040283529160200191610c53565b820191906000526020600020905b815481529060010190602001808311610c3657829003601f168201915b5050505050905090565b6000610c71610c6a61257c565b8484612584565b6001905092915050565b610c8361257c565b73ffffffffffffffffffffffffffffffffffffffff16610ca1611981565b73ffffffffffffffffffffffffffffffffffffffff1614610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee9061427e565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b600b60019054906101000a900460ff1681565b6000600254905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000610d7984848461274f565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dc461257c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3b906142ea565b60405180910390fd5b610e5885610e5061257c565b858403612584565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e9261257c565b73ffffffffffffffffffffffffffffffffffffffff16610eb0611981565b73ffffffffffffffffffffffffffffffffffffffff1614610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd9061427e565b60405180910390fd5b620186a06001610f14610d42565b610f1e9190614339565b610f2891906143c2565b811015610f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6190614465565b60405180910390fd5b6103e86005610f77610d42565b610f819190614339565b610f8b91906143c2565b811115610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc4906144f7565b60405180910390fd5b8060088190555050565b60006012905090565b60155481565b6000611088610ff361257c565b84846004600061100161257c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110839190614517565b612584565b6001905092915050565b61109a61257c565b73ffffffffffffffffffffffffffffffffffffffff166110b8611981565b73ffffffffffffffffffffffffffffffffffffffff161461110e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111059061427e565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561119f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611196906145df565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601060009054906101000a900460ff1681565b61121561257c565b73ffffffffffffffffffffffffffffffffffffffff16611233611981565b73ffffffffffffffffffffffffffffffffffffffff1614611289576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112809061427e565b60405180910390fd5b6000611294306117eb565b9050600081116112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d09061464b565b60405180910390fd5b6001601760006101000a81548160ff0219169083151502179055506112fd816134a9565b6000601760006101000a81548160ff02191690831515021790555050565b61132361257c565b73ffffffffffffffffffffffffffffffffffffffff16611341611981565b73ffffffffffffffffffffffffffffffffffffffff1614611397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138e9061427e565b60405180910390fd5b61139f610fd7565b600a6113ab919061479e565b6103e860016113b8610d42565b6113c29190614339565b6113cc91906143c2565b6113d691906143c2565b811015611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f9061485b565b60405180910390fd5b611420610fd7565b600a61142c919061479e565b816114379190614339565b600a8190555050565b60145481565b601060019054906101000a900460ff1681565b61146161257c565b73ffffffffffffffffffffffffffffffffffffffff1661147f611981565b73ffffffffffffffffffffffffffffffffffffffff16146114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc9061427e565b60405180910390fd5b80601060016101000a81548160ff02191690831515021790555050565b6114fa61257c565b73ffffffffffffffffffffffffffffffffffffffff16611518611981565b73ffffffffffffffffffffffffffffffffffffffff161461156e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115659061427e565b60405180910390fd5b611576610fd7565b600a611582919061479e565b6103e8600561158f610d42565b6115999190614339565b6115a391906143c2565b6115ad91906143c2565b8110156115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906148ed565b60405180910390fd5b6115f7610fd7565b600a611603919061479e565b8161160e9190614339565b60098190555050565b61161f61257c565b73ffffffffffffffffffffffffffffffffffffffff1661163d611981565b73ffffffffffffffffffffffffffffffffffffffff1614611693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168a9061427e565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60095481565b600d6020528060005260406000206000915054906101000a900460ff1681565b61171c61257c565b73ffffffffffffffffffffffffffffffffffffffff1661173a611981565b73ffffffffffffffffffffffffffffffffffffffff1614611790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117879061427e565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61183c61257c565b73ffffffffffffffffffffffffffffffffffffffff1661185a611981565b73ffffffffffffffffffffffffffffffffffffffff16146118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a79061427e565b60405180910390fd5b6118ba600061365d565b565b6118c461257c565b73ffffffffffffffffffffffffffffffffffffffff166118e2611981565b73ffffffffffffffffffffffffffffffffffffffff1614611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f9061427e565b60405180910390fd5b6000601060006101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119d961257c565b73ffffffffffffffffffffffffffffffffffffffff166119f7611981565b73ffffffffffffffffffffffffffffffffffffffff1614611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a449061427e565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b606060018054611a7990614200565b80601f0160208091040260200160405190810160405280929190818152602001828054611aa590614200565b8015611af25780601f10611ac757610100808354040283529160200191611af2565b820191906000526020600020905b815481529060010190602001808311611ad557829003601f168201915b5050505050905090565b60008060046000611b0b61257c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf90614959565b60405180910390fd5b611bdc611bd361257c565b85858403612584565b600191505092915050565b6000611bfb611bf461257c565b848461274f565b6001905092915050565b60165481565b611c1361257c565b73ffffffffffffffffffffffffffffffffffffffff16611c31611981565b73ffffffffffffffffffffffffffffffffffffffff1614611c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7e9061427e565b60405180910390fd5b8160158190555080601681905550601654601554611ca59190614517565b601481905550605f6014541115611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce8906149c5565b60405180910390fd5b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b611d1d61257c565b73ffffffffffffffffffffffffffffffffffffffff16611d3b611981565b73ffffffffffffffffffffffffffffffffffffffff1614611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d889061427e565b60405180910390fd5b8160128190555080601381905550601354601254611daf9190614517565b601181905550605f6011541115611dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df2906149c5565b60405180910390fd5b5050565b611e0761257c565b73ffffffffffffffffffffffffffffffffffffffff16611e25611981565b73ffffffffffffffffffffffffffffffffffffffff1614611e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e729061427e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee290614a31565b60405180910390fd5b80601760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b611f6961257c565b73ffffffffffffffffffffffffffffffffffffffff16611f87611981565b73ffffffffffffffffffffffffffffffffffffffff1614611fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd49061427e565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152508051906020012046306040516020016120eb959493929190614a60565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e6700000000000000000000000000000000000081525080519060200120600060405160200161217793929190614ab3565b604051602081830303815290604052805190602001209050600082826040516020016121a4929190614b62565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516121e19493929190614b99565b6020604051602081039080840390855afa158015612203573d6000803e3d6000fd5b505050602060405103519050612217611981565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90614c2a565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b60009054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b60125481565b61237161257c565b73ffffffffffffffffffffffffffffffffffffffff1661238f611981565b73ffffffffffffffffffffffffffffffffffffffff16146123e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dc9061427e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244c90614c96565b60405180910390fd5b61245e8161365d565b50565b61246961257c565b73ffffffffffffffffffffffffffffffffffffffff16612487611981565b73ffffffffffffffffffffffffffffffffffffffff16146124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d49061427e565b60405180910390fd5b60006124e8306117eb565b90506000821180156124fa5750808211155b612539576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125309061464b565b60405180910390fd5b6001601760006101000a81548160ff02191690831515021790555061255d826134a9565b6000601760006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125eb90614d02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265b90614d6e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127429190613e60565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b690614dda565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561282f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282690614e46565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b390614eb2565b60405180910390fd5b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294090614f1e565b60405180910390fd5b60008114156129635761295e83836000613723565b6134a4565b6000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050601060009054906101000a900460ff1615612e6857612a22611981565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612a905750612a60611981565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612ac95750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612b03575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612b1c5750601760009054906101000a900460ff16155b15612e6757600b60009054906101000a900460ff16612c1657600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bd65750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0c90614f8a565b60405180910390fd5b5b818015612c6d5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d1457600a54831115612cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cae9061501c565b60405180910390fd5b600954612cc3856117eb565b84612cce9190614517565b1115612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690615088565b60405180910390fd5b612e66565b808015612d6b5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612dba57600a54831115612db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dac9061511a565b60405180910390fd5b612e65565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e6457600954612e17856117eb565b84612e229190614517565b1115612e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5a90615088565b60405180910390fd5b5b5b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff16601760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612f5f5750601760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612f1d9190613f0a565b602060405180830381865afa158015612f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5e919061514f565b5b1561307a576000601760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc8787600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954600a546008546040518763ffffffff1660e01b8152600401612ff39695949392919061517c565b6020604051808303816000875af1158015613012573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613036919061514f565b905080613078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306f90615229565b60405180910390fd5b505b8080156130b357503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156130cb5750601060019054906101000a900460ff165b156131e0576000601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061315c575043601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b61319b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319290615295565b60405180910390fd5b43601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60006131eb306117eb565b905060006008548210159050600b60019054906101000a900460ff1680156132105750805b80156132295750601760009054906101000a900460ff16155b8015613233575083155b80156132895750600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132df5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613323576001601760006101000a81548160ff0219169083151502179055506133076139a7565b6000601760006101000a81548160ff0219169083151502179055505b6000601760009054906101000a900460ff16159050600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133d95750600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156133e357600090505b60008115613492578480156133fa57506000601154115b1561342e5761342760646134196011548a6139f890919063ffffffff16565b613a0e90919063ffffffff16565b905061346e565b85801561343d57506000601454115b1561346d5761346a606461345c6014548a6139f890919063ffffffff16565b613a0e90919063ffffffff16565b90505b5b600081111561348357613482893083613723565b5b808761348f91906152b5565b96505b61349d898989613723565b5050505050505b505050565b6000804790506134b883613a24565b60006134cd8247613c6790919063ffffffff16565b905060006013546016546134e19190614517565b905060006011546014546134f59190614517565b905060008214158015613509575060008114155b156135c75760006135358261352785876139f890919063ffffffff16565b613a0e90919063ffffffff16565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161357d9061531a565b60006040518083038185875af1925050503d80600081146135ba576040519150601f19603f3d011682016040523d82523d6000602084013e6135bf565b606091505b505080965050505b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161360d9061531a565b60006040518083038185875af1925050503d806000811461364a576040519150601f19603f3d011682016040523d82523d6000602084013e61364f565b606091505b505080955050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378a9061537b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137fa906153e7565b60405180910390fd5b61380e838383613c7d565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161388c90615453565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461392a9190614517565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161398e9190613e60565b60405180910390a36139a1848484613c82565b50505050565b60006139b2306117eb565b905060008114156139c357506139f6565b60146008546139d29190614339565b8111156139eb5760146008546139e89190614339565b90505b6139f4816134a9565b505b565b60008183613a069190614339565b905092915050565b60008183613a1c91906143c2565b905092915050565b6000600267ffffffffffffffff811115613a4157613a40615473565b5b604051908082528060200260200182016040528015613a6f5781602001602082028036833780820191505090505b5090503081600081518110613a8757613a866154a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5291906154e6565b81600181518110613b6657613b656154a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613bcd30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612584565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613c3195949392919061560c565b600060405180830381600087803b158015613c4b57600080fd5b505af1158015613c5f573d6000803e3d6000fd5b505050505050565b60008183613c7591906152b5565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613cc1578082015181840152602081019050613ca6565b83811115613cd0576000848401525b50505050565b6000601f19601f8301169050919050565b6000613cf282613c87565b613cfc8185613c92565b9350613d0c818560208601613ca3565b613d1581613cd6565b840191505092915050565b60006020820190508181036000830152613d3a8184613ce7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d7282613d47565b9050919050565b613d8281613d67565b8114613d8d57600080fd5b50565b600081359050613d9f81613d79565b92915050565b6000819050919050565b613db881613da5565b8114613dc357600080fd5b50565b600081359050613dd581613daf565b92915050565b60008060408385031215613df257613df1613d42565b5b6000613e0085828601613d90565b9250506020613e1185828601613dc6565b9150509250929050565b60008115159050919050565b613e3081613e1b565b82525050565b6000602082019050613e4b6000830184613e27565b92915050565b613e5a81613da5565b82525050565b6000602082019050613e756000830184613e51565b92915050565b600060208284031215613e9157613e90613d42565b5b6000613e9f84828501613d90565b91505092915050565b600080600060608486031215613ec157613ec0613d42565b5b6000613ecf86828701613d90565b9350506020613ee086828701613d90565b9250506040613ef186828701613dc6565b9150509250925092565b613f0481613d67565b82525050565b6000602082019050613f1f6000830184613efb565b92915050565b600060208284031215613f3b57613f3a613d42565b5b6000613f4984828501613dc6565b91505092915050565b600060ff82169050919050565b613f6881613f52565b82525050565b6000602082019050613f836000830184613f5f565b92915050565b613f9281613e1b565b8114613f9d57600080fd5b50565b600081359050613faf81613f89565b92915050565b60008060408385031215613fcc57613fcb613d42565b5b6000613fda85828601613d90565b9250506020613feb85828601613fa0565b9150509250929050565b60006020828403121561400b5761400a613d42565b5b600061401984828501613fa0565b91505092915050565b6000806040838503121561403957614038613d42565b5b600061404785828601613dc6565b925050602061405885828601613dc6565b9150509250929050565b6000819050919050565b600061408761408261407d84613d47565b614062565b613d47565b9050919050565b60006140998261406c565b9050919050565b60006140ab8261408e565b9050919050565b6140bb816140a0565b82525050565b60006020820190506140d660008301846140b2565b92915050565b6140e581613f52565b81146140f057600080fd5b50565b600081359050614102816140dc565b92915050565b6000819050919050565b61411b81614108565b811461412657600080fd5b50565b60008135905061413881614112565b92915050565b60008060006060848603121561415757614156613d42565b5b6000614165868287016140f3565b935050602061417686828701614129565b925050604061418786828701614129565b9150509250925092565b600080604083850312156141a8576141a7613d42565b5b60006141b685828601613d90565b92505060206141c785828601613d90565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061421857607f821691505b6020821081141561422c5761422b6141d1565b5b50919050565b7f496e76616c6964206f776e657200000000000000000000000000000000000000600082015250565b6000614268600d83613c92565b915061427382614232565b602082019050919050565b600060208201905081810360008301526142978161425b565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e74000000600082015250565b60006142d4601d83613c92565b91506142df8261429e565b602082019050919050565b60006020820190508181036000830152614303816142c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061434482613da5565b915061434f83613da5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143885761438761430a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143cd82613da5565b91506143d883613da5565b9250826143e8576143e7614393565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061444f603583613c92565b915061445a826143f3565b604082019050919050565b6000602082019050818103600083015261447e81614442565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006144e1603483613c92565b91506144ec82614485565b604082019050919050565b60006020820190508181036000830152614510816144d4565b9050919050565b600061452282613da5565b915061452d83613da5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145625761456161430a565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006145c9603983613c92565b91506145d48261456d565b604082019050919050565b600060208201905081810360008301526145f8816145bc565b9050919050565b7f496e76616c696420616d6f756e74000000000000000000000000000000000000600082015250565b6000614635600e83613c92565b9150614640826145ff565b602082019050919050565b6000602082019050818103600083015261466481614628565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156146c25780860481111561469e5761469d61430a565b5b60018516156146ad5780820291505b80810290506146bb8561466b565b9450614682565b94509492505050565b6000826146db5760019050614797565b816146e95760009050614797565b81600181146146ff576002811461470957614738565b6001915050614797565b60ff84111561471b5761471a61430a565b5b8360020a9150848211156147325761473161430a565b5b50614797565b5060208310610133831016604e8410600b841016171561476d5782820a9050838111156147685761476761430a565b5b614797565b61477a8484846001614678565b925090508184048111156147915761479061430a565b5b81810290505b9392505050565b60006147a982613da5565b91506147b483613f52565b92506147e17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846146cb565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e2060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614845602f83613c92565b9150614850826147e9565b604082019050919050565b6000602082019050818103600083015261487481614838565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c60008201527f6574206c6f776572207468616e20302e35250000000000000000000000000000602082015250565b60006148d7603283613c92565b91506148e28261487b565b604082019050919050565b60006020820190508181036000830152614906816148ca565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c756500600082015250565b6000614943601f83613c92565b915061494e8261490d565b602082019050919050565b6000602082019050818103600083015261497281614936565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c65737300000000600082015250565b60006149af601c83613c92565b91506149ba82614979565b602082019050919050565b600060208201905081810360008301526149de816149a2565b9050919050565b7f496e76616c696420616e74692d647261696e6572000000000000000000000000600082015250565b6000614a1b601483613c92565b9150614a26826149e5565b602082019050919050565b60006020820190508181036000830152614a4a81614a0e565b9050919050565b614a5a81614108565b82525050565b600060a082019050614a756000830188614a51565b614a826020830187614a51565b614a8f6040830186614a51565b614a9c6060830185613e51565b614aa96080830184613efb565b9695505050505050565b6000606082019050614ac86000830186614a51565b614ad56020830185614a51565b614ae26040830184613e51565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000614b2b600283614aea565b9150614b3682614af5565b600282019050919050565b6000819050919050565b614b5c614b5782614108565b614b41565b82525050565b6000614b6d82614b1e565b9150614b798285614b4b565b602082019150614b898284614b4b565b6020820191508190509392505050565b6000608082019050614bae6000830187614a51565b614bbb6020830186613f5f565b614bc86040830185614a51565b614bd56060830184614a51565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000614c14601183613c92565b9150614c1f82614bde565b602082019050919050565b60006020820190508181036000830152614c4381614c07565b9050919050565b7f4e6577206f776e6572206973205a45524f000000000000000000000000000000600082015250565b6000614c80601183613c92565b9150614c8b82614c4a565b602082019050919050565b60006020820190508181036000830152614caf81614c73565b9050919050565b7f45524332303a204e6f74206f776e657220213d20616464726573732830290000600082015250565b6000614cec601e83613c92565b9150614cf782614cb6565b602082019050919050565b60006020820190508181036000830152614d1b81614cdf565b9050919050565b7f45524332303a204e6f74207370656e64657220213d2061646472657373283029600082015250565b6000614d58602083613c92565b9150614d6382614d22565b602082019050919050565b60006020820190508181036000830152614d8781614d4b565b9050919050565b7f45524332303a20496e76616c69642066726f6d20616464726573730000000000600082015250565b6000614dc4601b83613c92565b9150614dcf82614d8e565b602082019050919050565b60006020820190508181036000830152614df381614db7565b9050919050565b7f45524332303a20496e76616c696420746f206164647265737300000000000000600082015250565b6000614e30601983613c92565b9150614e3b82614dfa565b602082019050919050565b60006020820190508181036000830152614e5f81614e23565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c69737400000000000000600082015250565b6000614e9c601983613c92565b9150614ea782614e66565b602082019050919050565b60006020820190508181036000830152614ecb81614e8f565b9050919050565b7f45524332303a20746f20697320626c61636b206c697374000000000000000000600082015250565b6000614f08601783613c92565b9150614f1382614ed2565b602082019050919050565b60006020820190508181036000830152614f3781614efb565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f74601683613c92565b9150614f7f82614f3e565b602082019050919050565b60006020820190508181036000830152614fa381614f67565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b6000615006603583613c92565b915061501182614faa565b604082019050919050565b6000602082019050818103600083015261503581614ff9565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615072601383613c92565b915061507d8261503c565b602082019050919050565b600060208201905081810360008301526150a181615065565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b6000615104603683613c92565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b60008151905061514981613f89565b92915050565b60006020828403121561516557615164613d42565b5b60006151738482850161513a565b91505092915050565b600060c0820190506151916000830189613efb565b61519e6020830188613efb565b6151ab6040830187613efb565b6151b86060830186613e51565b6151c56080830185613e51565b6151d260a0830184613e51565b979650505050505050565b7f416e746920447261696e657220456e61626c6564000000000000000000000000600082015250565b6000615213601483613c92565b915061521e826151dd565b602082019050919050565b6000602082019050818103600083015261524281615206565b9050919050565b7f53656c6c2064697361626c656420696e207468652073616d6520626c6f636b00600082015250565b600061527f601f83613c92565b915061528a82615249565b602082019050919050565b600060208201905081810360008301526152ae81615272565b9050919050565b60006152c082613da5565b91506152cb83613da5565b9250828210156152de576152dd61430a565b5b828203905092915050565b600081905092915050565b50565b60006153046000836152e9565b915061530f826152f4565b600082019050919050565b6000615325826152f7565b9150819050919050565b7f45524332303a204e6f742066726f6d20213d2061646472657373283029000000600082015250565b6000615365601d83613c92565b91506153708261532f565b602082019050919050565b6000602082019050818103600083015261539481615358565b9050919050565b7f45524332303a204e6f7420746f20213d20616464726573732830290000000000600082015250565b60006153d1601b83613c92565b91506153dc8261539b565b602082019050919050565b60006020820190508181036000830152615400816153c4565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e74600082015250565b600061543d602083613c92565b915061544882615407565b602082019050919050565b6000602082019050818103600083015261546c81615430565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506154e081613d79565b92915050565b6000602082840312156154fc576154fb613d42565b5b600061550a848285016154d1565b91505092915050565b6000819050919050565b600061553861553361552e84615513565b614062565b613da5565b9050919050565b6155488161551d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61558381613d67565b82525050565b6000615595838361557a565b60208301905092915050565b6000602082019050919050565b60006155b98261554e565b6155c38185615559565b93506155ce8361556a565b8060005b838110156155ff5781516155e68882615589565b97506155f1836155a1565b9250506001810190506155d2565b5085935050505092915050565b600060a0820190506156216000830188613e51565b61562e602083018761553f565b818103604083015261564081866155ae565b905061564f6060830185613efb565b61565c6080830184613e51565b969550505050505056fea264697066735822122071f5ab12ac8fc8bb5b5098990577a1dd4ce8f9dfb547a1b4fb7e077676d9cb1464736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106102e85760003560e01c8063715018a611610190578063b79c1886116100dc578063d4394cf811610095578063e27a55fe1161006f578063e27a55fe14610b23578063e96db1ef14610b4e578063f2fde38b14610b79578063fe784eaa14610ba2576102ef565b8063d4394cf814610a92578063d929a08314610abb578063dd62ed3e14610ae6576102ef565b8063b79c188614610996578063bae14e1d146109bf578063be691883146109e8578063c31c9c0714610a13578063c42c3f8814610a3e578063c6a3064714610a69576102ef565b8063924de9b711610149578063a9059cbb11610123578063a9059cbb146108c8578063af8f26e714610905578063b38d5ef414610930578063b62496f514610959576102ef565b8063924de9b71461083757806395d89b4114610860578063a457c2d71461088b576102ef565b8063715018a61461075d578063751039fc1461077457806375f0a8741461078b5780637d673170146107b65780638da5cb5b146107e15780638ea5220f1461080c576102ef565b806345167f261161024f5780636294437111610208578063685fbc6b116101e2578063685fbc6b1461068f5780636f498e21146106ba5780637070678b146106f757806370a0823114610720576102ef565b8063629443711461061457806367b740e91461063d57806368092bd914610666576102ef565b806345167f261461052a5780634a62bb651461055357806351bc3c851461057e578063544d1ec9146105955780635df6e68e146105be5780636215d72f146105e9576102ef565b806323b872dd116102a157806323b872dd1461040657806326991cc8146104435780632c81355e1461046e578063313ce5671461049757806333012411146104c257806339509351146104ed576102ef565b806306fdde03146102f4578063095ea7b31461031f5780630bd05b691461035c578063151d80391461037357806318160ddd1461039e57806322f59835146103c9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610bcb565b6040516103169190613d20565b60405180910390f35b34801561032b57600080fd5b5061034660048036038101906103419190613ddb565b610c5d565b6040516103539190613e36565b60405180910390f35b34801561036857600080fd5b50610371610c7b565b005b34801561037f57600080fd5b50610388610d2f565b6040516103959190613e36565b60405180910390f35b3480156103aa57600080fd5b506103b3610d42565b6040516103c09190613e60565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb9190613e7b565b610d4c565b6040516103fd9190613e36565b60405180910390f35b34801561041257600080fd5b5061042d60048036038101906104289190613ea8565b610d6c565b60405161043a9190613e36565b60405180910390f35b34801561044f57600080fd5b50610458610e64565b6040516104659190613f0a565b60405180910390f35b34801561047a57600080fd5b5061049560048036038101906104909190613f25565b610e8a565b005b3480156104a357600080fd5b506104ac610fd7565b6040516104b99190613f6e565b60405180910390f35b3480156104ce57600080fd5b506104d7610fe0565b6040516104e49190613e60565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f9190613ddb565b610fe6565b6040516105219190613e36565b60405180910390f35b34801561053657600080fd5b50610551600480360381019061054c9190613fb5565b611092565b005b34801561055f57600080fd5b506105686111fa565b6040516105759190613e36565b60405180910390f35b34801561058a57600080fd5b5061059361120d565b005b3480156105a157600080fd5b506105bc60048036038101906105b79190613f25565b61131b565b005b3480156105ca57600080fd5b506105d3611440565b6040516105e09190613e60565b60405180910390f35b3480156105f557600080fd5b506105fe611446565b60405161060b9190613e36565b60405180910390f35b34801561062057600080fd5b5061063b60048036038101906106369190613ff5565b611459565b005b34801561064957600080fd5b50610664600480360381019061065f9190613f25565b6114f2565b005b34801561067257600080fd5b5061068d60048036038101906106889190613fb5565b611617565b005b34801561069b57600080fd5b506106a46116ee565b6040516106b19190613e60565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190613e7b565b6116f4565b6040516106ee9190613e36565b60405180910390f35b34801561070357600080fd5b5061071e60048036038101906107199190613fb5565b611714565b005b34801561072c57600080fd5b5061074760048036038101906107429190613e7b565b6117eb565b6040516107549190613e60565b60405180910390f35b34801561076957600080fd5b50610772611834565b005b34801561078057600080fd5b506107896118bc565b005b34801561079757600080fd5b506107a0611955565b6040516107ad9190613f0a565b60405180910390f35b3480156107c257600080fd5b506107cb61197b565b6040516107d89190613e60565b60405180910390f35b3480156107ed57600080fd5b506107f6611981565b6040516108039190613f0a565b60405180910390f35b34801561081857600080fd5b506108216119ab565b60405161082e9190613f0a565b60405180910390f35b34801561084357600080fd5b5061085e60048036038101906108599190613ff5565b6119d1565b005b34801561086c57600080fd5b50610875611a6a565b6040516108829190613d20565b60405180910390f35b34801561089757600080fd5b506108b260048036038101906108ad9190613ddb565b611afc565b6040516108bf9190613e36565b60405180910390f35b3480156108d457600080fd5b506108ef60048036038101906108ea9190613ddb565b611be7565b6040516108fc9190613e36565b60405180910390f35b34801561091157600080fd5b5061091a611c05565b6040516109279190613e60565b60405180910390f35b34801561093c57600080fd5b5061095760048036038101906109529190614022565b611c0b565b005b34801561096557600080fd5b50610980600480360381019061097b9190613e7b565b611cf5565b60405161098d9190613e36565b60405180910390f35b3480156109a257600080fd5b506109bd60048036038101906109b89190614022565b611d15565b005b3480156109cb57600080fd5b506109e660048036038101906109e19190613e7b565b611dff565b005b3480156109f457600080fd5b506109fd611f2f565b604051610a0a9190613e60565b60405180910390f35b348015610a1f57600080fd5b50610a28611f35565b604051610a3591906140c1565b60405180910390f35b348015610a4a57600080fd5b50610a53611f5b565b604051610a609190613e60565b60405180910390f35b348015610a7557600080fd5b50610a906004803603810190610a8b9190613fb5565b611f61565b005b348015610a9e57600080fd5b50610ab96004803603810190610ab4919061413e565b612038565b005b348015610ac757600080fd5b50610ad06122c3565b604051610add9190613e36565b60405180910390f35b348015610af257600080fd5b50610b0d6004803603810190610b089190614191565b6122d6565b604051610b1a9190613e60565b60405180910390f35b348015610b2f57600080fd5b50610b3861235d565b604051610b459190613e60565b60405180910390f35b348015610b5a57600080fd5b50610b63612363565b604051610b709190613e60565b60405180910390f35b348015610b8557600080fd5b50610ba06004803603810190610b9b9190613e7b565b612369565b005b348015610bae57600080fd5b50610bc96004803603810190610bc49190613f25565b612461565b005b606060008054610bda90614200565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0690614200565b8015610c535780601f10610c2857610100808354040283529160200191610c53565b820191906000526020600020905b815481529060010190602001808311610c3657829003601f168201915b5050505050905090565b6000610c71610c6a61257c565b8484612584565b6001905092915050565b610c8361257c565b73ffffffffffffffffffffffffffffffffffffffff16610ca1611981565b73ffffffffffffffffffffffffffffffffffffffff1614610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee9061427e565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b600b60019054906101000a900460ff1681565b6000600254905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000610d7984848461274f565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dc461257c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3b906142ea565b60405180910390fd5b610e5885610e5061257c565b858403612584565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e9261257c565b73ffffffffffffffffffffffffffffffffffffffff16610eb0611981565b73ffffffffffffffffffffffffffffffffffffffff1614610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd9061427e565b60405180910390fd5b620186a06001610f14610d42565b610f1e9190614339565b610f2891906143c2565b811015610f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6190614465565b60405180910390fd5b6103e86005610f77610d42565b610f819190614339565b610f8b91906143c2565b811115610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc4906144f7565b60405180910390fd5b8060088190555050565b60006012905090565b60155481565b6000611088610ff361257c565b84846004600061100161257c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110839190614517565b612584565b6001905092915050565b61109a61257c565b73ffffffffffffffffffffffffffffffffffffffff166110b8611981565b73ffffffffffffffffffffffffffffffffffffffff161461110e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111059061427e565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561119f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611196906145df565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601060009054906101000a900460ff1681565b61121561257c565b73ffffffffffffffffffffffffffffffffffffffff16611233611981565b73ffffffffffffffffffffffffffffffffffffffff1614611289576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112809061427e565b60405180910390fd5b6000611294306117eb565b9050600081116112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d09061464b565b60405180910390fd5b6001601760006101000a81548160ff0219169083151502179055506112fd816134a9565b6000601760006101000a81548160ff02191690831515021790555050565b61132361257c565b73ffffffffffffffffffffffffffffffffffffffff16611341611981565b73ffffffffffffffffffffffffffffffffffffffff1614611397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138e9061427e565b60405180910390fd5b61139f610fd7565b600a6113ab919061479e565b6103e860016113b8610d42565b6113c29190614339565b6113cc91906143c2565b6113d691906143c2565b811015611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f9061485b565b60405180910390fd5b611420610fd7565b600a61142c919061479e565b816114379190614339565b600a8190555050565b60145481565b601060019054906101000a900460ff1681565b61146161257c565b73ffffffffffffffffffffffffffffffffffffffff1661147f611981565b73ffffffffffffffffffffffffffffffffffffffff16146114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc9061427e565b60405180910390fd5b80601060016101000a81548160ff02191690831515021790555050565b6114fa61257c565b73ffffffffffffffffffffffffffffffffffffffff16611518611981565b73ffffffffffffffffffffffffffffffffffffffff161461156e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115659061427e565b60405180910390fd5b611576610fd7565b600a611582919061479e565b6103e8600561158f610d42565b6115999190614339565b6115a391906143c2565b6115ad91906143c2565b8110156115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906148ed565b60405180910390fd5b6115f7610fd7565b600a611603919061479e565b8161160e9190614339565b60098190555050565b61161f61257c565b73ffffffffffffffffffffffffffffffffffffffff1661163d611981565b73ffffffffffffffffffffffffffffffffffffffff1614611693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168a9061427e565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60095481565b600d6020528060005260406000206000915054906101000a900460ff1681565b61171c61257c565b73ffffffffffffffffffffffffffffffffffffffff1661173a611981565b73ffffffffffffffffffffffffffffffffffffffff1614611790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117879061427e565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61183c61257c565b73ffffffffffffffffffffffffffffffffffffffff1661185a611981565b73ffffffffffffffffffffffffffffffffffffffff16146118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a79061427e565b60405180910390fd5b6118ba600061365d565b565b6118c461257c565b73ffffffffffffffffffffffffffffffffffffffff166118e2611981565b73ffffffffffffffffffffffffffffffffffffffff1614611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f9061427e565b60405180910390fd5b6000601060006101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119d961257c565b73ffffffffffffffffffffffffffffffffffffffff166119f7611981565b73ffffffffffffffffffffffffffffffffffffffff1614611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a449061427e565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b606060018054611a7990614200565b80601f0160208091040260200160405190810160405280929190818152602001828054611aa590614200565b8015611af25780601f10611ac757610100808354040283529160200191611af2565b820191906000526020600020905b815481529060010190602001808311611ad557829003601f168201915b5050505050905090565b60008060046000611b0b61257c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf90614959565b60405180910390fd5b611bdc611bd361257c565b85858403612584565b600191505092915050565b6000611bfb611bf461257c565b848461274f565b6001905092915050565b60165481565b611c1361257c565b73ffffffffffffffffffffffffffffffffffffffff16611c31611981565b73ffffffffffffffffffffffffffffffffffffffff1614611c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7e9061427e565b60405180910390fd5b8160158190555080601681905550601654601554611ca59190614517565b601481905550605f6014541115611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce8906149c5565b60405180910390fd5b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b611d1d61257c565b73ffffffffffffffffffffffffffffffffffffffff16611d3b611981565b73ffffffffffffffffffffffffffffffffffffffff1614611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d889061427e565b60405180910390fd5b8160128190555080601381905550601354601254611daf9190614517565b601181905550605f6011541115611dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df2906149c5565b60405180910390fd5b5050565b611e0761257c565b73ffffffffffffffffffffffffffffffffffffffff16611e25611981565b73ffffffffffffffffffffffffffffffffffffffff1614611e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e729061427e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee290614a31565b60405180910390fd5b80601760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b611f6961257c565b73ffffffffffffffffffffffffffffffffffffffff16611f87611981565b73ffffffffffffffffffffffffffffffffffffffff1614611fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd49061427e565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152508051906020012046306040516020016120eb959493929190614a60565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e6700000000000000000000000000000000000081525080519060200120600060405160200161217793929190614ab3565b604051602081830303815290604052805190602001209050600082826040516020016121a4929190614b62565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516121e19493929190614b99565b6020604051602081039080840390855afa158015612203573d6000803e3d6000fd5b505050602060405103519050612217611981565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90614c2a565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b60009054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b60125481565b61237161257c565b73ffffffffffffffffffffffffffffffffffffffff1661238f611981565b73ffffffffffffffffffffffffffffffffffffffff16146123e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dc9061427e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244c90614c96565b60405180910390fd5b61245e8161365d565b50565b61246961257c565b73ffffffffffffffffffffffffffffffffffffffff16612487611981565b73ffffffffffffffffffffffffffffffffffffffff16146124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d49061427e565b60405180910390fd5b60006124e8306117eb565b90506000821180156124fa5750808211155b612539576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125309061464b565b60405180910390fd5b6001601760006101000a81548160ff02191690831515021790555061255d826134a9565b6000601760006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125eb90614d02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265b90614d6e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127429190613e60565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b690614dda565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561282f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282690614e46565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b390614eb2565b60405180910390fd5b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294090614f1e565b60405180910390fd5b60008114156129635761295e83836000613723565b6134a4565b6000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050601060009054906101000a900460ff1615612e6857612a22611981565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612a905750612a60611981565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612ac95750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612b03575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612b1c5750601760009054906101000a900460ff16155b15612e6757600b60009054906101000a900460ff16612c1657600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bd65750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0c90614f8a565b60405180910390fd5b5b818015612c6d5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d1457600a54831115612cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cae9061501c565b60405180910390fd5b600954612cc3856117eb565b84612cce9190614517565b1115612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690615088565b60405180910390fd5b612e66565b808015612d6b5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612dba57600a54831115612db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dac9061511a565b60405180910390fd5b612e65565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e6457600954612e17856117eb565b84612e229190614517565b1115612e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5a90615088565b60405180910390fd5b5b5b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff16601760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612f5f5750601760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612f1d9190613f0a565b602060405180830381865afa158015612f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5e919061514f565b5b1561307a576000601760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc8787600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954600a546008546040518763ffffffff1660e01b8152600401612ff39695949392919061517c565b6020604051808303816000875af1158015613012573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613036919061514f565b905080613078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306f90615229565b60405180910390fd5b505b8080156130b357503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156130cb5750601060019054906101000a900460ff165b156131e0576000601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061315c575043601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b61319b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319290615295565b60405180910390fd5b43601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60006131eb306117eb565b905060006008548210159050600b60019054906101000a900460ff1680156132105750805b80156132295750601760009054906101000a900460ff16155b8015613233575083155b80156132895750600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132df5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613323576001601760006101000a81548160ff0219169083151502179055506133076139a7565b6000601760006101000a81548160ff0219169083151502179055505b6000601760009054906101000a900460ff16159050600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133d95750600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156133e357600090505b60008115613492578480156133fa57506000601154115b1561342e5761342760646134196011548a6139f890919063ffffffff16565b613a0e90919063ffffffff16565b905061346e565b85801561343d57506000601454115b1561346d5761346a606461345c6014548a6139f890919063ffffffff16565b613a0e90919063ffffffff16565b90505b5b600081111561348357613482893083613723565b5b808761348f91906152b5565b96505b61349d898989613723565b5050505050505b505050565b6000804790506134b883613a24565b60006134cd8247613c6790919063ffffffff16565b905060006013546016546134e19190614517565b905060006011546014546134f59190614517565b905060008214158015613509575060008114155b156135c75760006135358261352785876139f890919063ffffffff16565b613a0e90919063ffffffff16565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161357d9061531a565b60006040518083038185875af1925050503d80600081146135ba576040519150601f19603f3d011682016040523d82523d6000602084013e6135bf565b606091505b505080965050505b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161360d9061531a565b60006040518083038185875af1925050503d806000811461364a576040519150601f19603f3d011682016040523d82523d6000602084013e61364f565b606091505b505080955050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378a9061537b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137fa906153e7565b60405180910390fd5b61380e838383613c7d565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161388c90615453565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461392a9190614517565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161398e9190613e60565b60405180910390a36139a1848484613c82565b50505050565b60006139b2306117eb565b905060008114156139c357506139f6565b60146008546139d29190614339565b8111156139eb5760146008546139e89190614339565b90505b6139f4816134a9565b505b565b60008183613a069190614339565b905092915050565b60008183613a1c91906143c2565b905092915050565b6000600267ffffffffffffffff811115613a4157613a40615473565b5b604051908082528060200260200182016040528015613a6f5781602001602082028036833780820191505090505b5090503081600081518110613a8757613a866154a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5291906154e6565b81600181518110613b6657613b656154a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613bcd30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612584565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613c3195949392919061560c565b600060405180830381600087803b158015613c4b57600080fd5b505af1158015613c5f573d6000803e3d6000fd5b505050505050565b60008183613c7591906152b5565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613cc1578082015181840152602081019050613ca6565b83811115613cd0576000848401525b50505050565b6000601f19601f8301169050919050565b6000613cf282613c87565b613cfc8185613c92565b9350613d0c818560208601613ca3565b613d1581613cd6565b840191505092915050565b60006020820190508181036000830152613d3a8184613ce7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d7282613d47565b9050919050565b613d8281613d67565b8114613d8d57600080fd5b50565b600081359050613d9f81613d79565b92915050565b6000819050919050565b613db881613da5565b8114613dc357600080fd5b50565b600081359050613dd581613daf565b92915050565b60008060408385031215613df257613df1613d42565b5b6000613e0085828601613d90565b9250506020613e1185828601613dc6565b9150509250929050565b60008115159050919050565b613e3081613e1b565b82525050565b6000602082019050613e4b6000830184613e27565b92915050565b613e5a81613da5565b82525050565b6000602082019050613e756000830184613e51565b92915050565b600060208284031215613e9157613e90613d42565b5b6000613e9f84828501613d90565b91505092915050565b600080600060608486031215613ec157613ec0613d42565b5b6000613ecf86828701613d90565b9350506020613ee086828701613d90565b9250506040613ef186828701613dc6565b9150509250925092565b613f0481613d67565b82525050565b6000602082019050613f1f6000830184613efb565b92915050565b600060208284031215613f3b57613f3a613d42565b5b6000613f4984828501613dc6565b91505092915050565b600060ff82169050919050565b613f6881613f52565b82525050565b6000602082019050613f836000830184613f5f565b92915050565b613f9281613e1b565b8114613f9d57600080fd5b50565b600081359050613faf81613f89565b92915050565b60008060408385031215613fcc57613fcb613d42565b5b6000613fda85828601613d90565b9250506020613feb85828601613fa0565b9150509250929050565b60006020828403121561400b5761400a613d42565b5b600061401984828501613fa0565b91505092915050565b6000806040838503121561403957614038613d42565b5b600061404785828601613dc6565b925050602061405885828601613dc6565b9150509250929050565b6000819050919050565b600061408761408261407d84613d47565b614062565b613d47565b9050919050565b60006140998261406c565b9050919050565b60006140ab8261408e565b9050919050565b6140bb816140a0565b82525050565b60006020820190506140d660008301846140b2565b92915050565b6140e581613f52565b81146140f057600080fd5b50565b600081359050614102816140dc565b92915050565b6000819050919050565b61411b81614108565b811461412657600080fd5b50565b60008135905061413881614112565b92915050565b60008060006060848603121561415757614156613d42565b5b6000614165868287016140f3565b935050602061417686828701614129565b925050604061418786828701614129565b9150509250925092565b600080604083850312156141a8576141a7613d42565b5b60006141b685828601613d90565b92505060206141c785828601613d90565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061421857607f821691505b6020821081141561422c5761422b6141d1565b5b50919050565b7f496e76616c6964206f776e657200000000000000000000000000000000000000600082015250565b6000614268600d83613c92565b915061427382614232565b602082019050919050565b600060208201905081810360008301526142978161425b565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e74000000600082015250565b60006142d4601d83613c92565b91506142df8261429e565b602082019050919050565b60006020820190508181036000830152614303816142c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061434482613da5565b915061434f83613da5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143885761438761430a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143cd82613da5565b91506143d883613da5565b9250826143e8576143e7614393565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061444f603583613c92565b915061445a826143f3565b604082019050919050565b6000602082019050818103600083015261447e81614442565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006144e1603483613c92565b91506144ec82614485565b604082019050919050565b60006020820190508181036000830152614510816144d4565b9050919050565b600061452282613da5565b915061452d83613da5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145625761456161430a565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006145c9603983613c92565b91506145d48261456d565b604082019050919050565b600060208201905081810360008301526145f8816145bc565b9050919050565b7f496e76616c696420616d6f756e74000000000000000000000000000000000000600082015250565b6000614635600e83613c92565b9150614640826145ff565b602082019050919050565b6000602082019050818103600083015261466481614628565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156146c25780860481111561469e5761469d61430a565b5b60018516156146ad5780820291505b80810290506146bb8561466b565b9450614682565b94509492505050565b6000826146db5760019050614797565b816146e95760009050614797565b81600181146146ff576002811461470957614738565b6001915050614797565b60ff84111561471b5761471a61430a565b5b8360020a9150848211156147325761473161430a565b5b50614797565b5060208310610133831016604e8410600b841016171561476d5782820a9050838111156147685761476761430a565b5b614797565b61477a8484846001614678565b925090508184048111156147915761479061430a565b5b81810290505b9392505050565b60006147a982613da5565b91506147b483613f52565b92506147e17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846146cb565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e2060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614845602f83613c92565b9150614850826147e9565b604082019050919050565b6000602082019050818103600083015261487481614838565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c60008201527f6574206c6f776572207468616e20302e35250000000000000000000000000000602082015250565b60006148d7603283613c92565b91506148e28261487b565b604082019050919050565b60006020820190508181036000830152614906816148ca565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c756500600082015250565b6000614943601f83613c92565b915061494e8261490d565b602082019050919050565b6000602082019050818103600083015261497281614936565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c65737300000000600082015250565b60006149af601c83613c92565b91506149ba82614979565b602082019050919050565b600060208201905081810360008301526149de816149a2565b9050919050565b7f496e76616c696420616e74692d647261696e6572000000000000000000000000600082015250565b6000614a1b601483613c92565b9150614a26826149e5565b602082019050919050565b60006020820190508181036000830152614a4a81614a0e565b9050919050565b614a5a81614108565b82525050565b600060a082019050614a756000830188614a51565b614a826020830187614a51565b614a8f6040830186614a51565b614a9c6060830185613e51565b614aa96080830184613efb565b9695505050505050565b6000606082019050614ac86000830186614a51565b614ad56020830185614a51565b614ae26040830184613e51565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000614b2b600283614aea565b9150614b3682614af5565b600282019050919050565b6000819050919050565b614b5c614b5782614108565b614b41565b82525050565b6000614b6d82614b1e565b9150614b798285614b4b565b602082019150614b898284614b4b565b6020820191508190509392505050565b6000608082019050614bae6000830187614a51565b614bbb6020830186613f5f565b614bc86040830185614a51565b614bd56060830184614a51565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000614c14601183613c92565b9150614c1f82614bde565b602082019050919050565b60006020820190508181036000830152614c4381614c07565b9050919050565b7f4e6577206f776e6572206973205a45524f000000000000000000000000000000600082015250565b6000614c80601183613c92565b9150614c8b82614c4a565b602082019050919050565b60006020820190508181036000830152614caf81614c73565b9050919050565b7f45524332303a204e6f74206f776e657220213d20616464726573732830290000600082015250565b6000614cec601e83613c92565b9150614cf782614cb6565b602082019050919050565b60006020820190508181036000830152614d1b81614cdf565b9050919050565b7f45524332303a204e6f74207370656e64657220213d2061646472657373283029600082015250565b6000614d58602083613c92565b9150614d6382614d22565b602082019050919050565b60006020820190508181036000830152614d8781614d4b565b9050919050565b7f45524332303a20496e76616c69642066726f6d20616464726573730000000000600082015250565b6000614dc4601b83613c92565b9150614dcf82614d8e565b602082019050919050565b60006020820190508181036000830152614df381614db7565b9050919050565b7f45524332303a20496e76616c696420746f206164647265737300000000000000600082015250565b6000614e30601983613c92565b9150614e3b82614dfa565b602082019050919050565b60006020820190508181036000830152614e5f81614e23565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c69737400000000000000600082015250565b6000614e9c601983613c92565b9150614ea782614e66565b602082019050919050565b60006020820190508181036000830152614ecb81614e8f565b9050919050565b7f45524332303a20746f20697320626c61636b206c697374000000000000000000600082015250565b6000614f08601783613c92565b9150614f1382614ed2565b602082019050919050565b60006020820190508181036000830152614f3781614efb565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f74601683613c92565b9150614f7f82614f3e565b602082019050919050565b60006020820190508181036000830152614fa381614f67565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b6000615006603583613c92565b915061501182614faa565b604082019050919050565b6000602082019050818103600083015261503581614ff9565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615072601383613c92565b915061507d8261503c565b602082019050919050565b600060208201905081810360008301526150a181615065565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b6000615104603683613c92565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b60008151905061514981613f89565b92915050565b60006020828403121561516557615164613d42565b5b60006151738482850161513a565b91505092915050565b600060c0820190506151916000830189613efb565b61519e6020830188613efb565b6151ab6040830187613efb565b6151b86060830186613e51565b6151c56080830185613e51565b6151d260a0830184613e51565b979650505050505050565b7f416e746920447261696e657220456e61626c6564000000000000000000000000600082015250565b6000615213601483613c92565b915061521e826151dd565b602082019050919050565b6000602082019050818103600083015261524281615206565b9050919050565b7f53656c6c2064697361626c656420696e207468652073616d6520626c6f636b00600082015250565b600061527f601f83613c92565b915061528a82615249565b602082019050919050565b600060208201905081810360008301526152ae81615272565b9050919050565b60006152c082613da5565b91506152cb83613da5565b9250828210156152de576152dd61430a565b5b828203905092915050565b600081905092915050565b50565b60006153046000836152e9565b915061530f826152f4565b600082019050919050565b6000615325826152f7565b9150819050919050565b7f45524332303a204e6f742066726f6d20213d2061646472657373283029000000600082015250565b6000615365601d83613c92565b91506153708261532f565b602082019050919050565b6000602082019050818103600083015261539481615358565b9050919050565b7f45524332303a204e6f7420746f20213d20616464726573732830290000000000600082015250565b60006153d1601b83613c92565b91506153dc8261539b565b602082019050919050565b60006020820190508181036000830152615400816153c4565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e74600082015250565b600061543d602083613c92565b915061544882615407565b602082019050919050565b6000602082019050818103600083015261546c81615430565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506154e081613d79565b92915050565b6000602082840312156154fc576154fb613d42565b5b600061550a848285016154d1565b91505092915050565b6000819050919050565b600061553861553361552e84615513565b614062565b613da5565b9050919050565b6155488161551d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61558381613d67565b82525050565b6000615595838361557a565b60208301905092915050565b6000602082019050919050565b60006155b98261554e565b6155c38185615559565b93506155ce8361556a565b8060005b838110156155ff5781516155e68882615589565b97506155f1836155a1565b9250506001810190506155d2565b5085935050505092915050565b600060a0820190506156216000830188613e51565b61562e602083018761553f565b818103604083015261564081866155ae565b905061564f6060830185613efb565b61565c6080830184613e51565b969550505050505056fea264697066735822122071f5ab12ac8fc8bb5b5098990577a1dd4ce8f9dfb547a1b4fb7e077676d9cb1464736f6c634300080a0033
Deployed Bytecode Sourcemap
15529:12936:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10953:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11541:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18299:116;;;;;;;;;;;;;:::i;:::-;;15851:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11274:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16032:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12305:431;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15649:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20075:420;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11173:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16381:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12938:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21897:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16155:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22689:252;;;;;;;;;;;;;:::i;:::-;;20822:307;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16348:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16195:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19856:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20503:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21137:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15721:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15962:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19451:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11390:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1418:103;;;;;;;;;;;;;:::i;:::-;;19764:84;;;;;;;;;;;;;:::i;:::-;;15892:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15681:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1135:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15929:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19966:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11061:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13232:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12744:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16418:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21256:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16089:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21573:316;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22205:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16314:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15606:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15766:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19632:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18423:1020;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15810:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12121:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16242:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16276:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1230:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22401:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10953:100;11007:13;11040:5;11033:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10953:100;:::o;11541:194::-;11649:4;11666:39;11675:12;:10;:12::i;:::-;11689:7;11698:6;11666:8;:39::i;:::-;11723:4;11716:11;;11541:194;;;;:::o;18299:116::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18373:4:::1;18356:14;;:21;;;;;;;;;;;;;;;;;;18403:4;18388:12;;:19;;;;;;;;;;;;;;;;;;18299:116::o:0;15851:32::-;;;;;;;;;;;;;:::o;11274:108::-;11335:7;11362:12;;11355:19;;11274:108;:::o;16032:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;12305:431::-;12436:4;12453:27;12463:4;12469:2;12473:6;12453:9;:27::i;:::-;12491:16;12510:11;:17;12522:4;12510:17;;;;;;;;;;;;;;;:31;12528:12;:10;:12::i;:::-;12510:31;;;;;;;;;;;;;;;;12491:50;;12572:6;12560:8;:18;;12552:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12648:47;12657:4;12663:12;:10;:12::i;:::-;12688:6;12677:8;:17;12648:8;:47::i;:::-;12724:4;12717:11;;;12305:431;;;;;:::o;15649:23::-;;;;;;;;;;;;;:::o;20075:420::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20213:6:::1;20208:1;20192:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20191:28;;;;:::i;:::-;20181:6;:38;;20159:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;20365:4;20360:1;20344:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20343:26;;;;:::i;:::-;20333:6;:36;;20311:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;20481:6;20460:18;:27;;;;20075:420:::0;:::o;11173:93::-;11231:5;11256:2;11249:9;;11173:93;:::o;16381:30::-;;;;:::o;12938:286::-;13049:4;13066:128;13089:12;:10;:12::i;:::-;13116:7;13175:8;13138:11;:25;13150:12;:10;:12::i;:::-;13138:25;;;;;;;;;;;;;;;:34;13164:7;13138:34;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;13066:8;:128::i;:::-;13212:4;13205:11;;12938:286;;;;:::o;21897:300::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22046:8:::1;;;;;;;;;;;22038:16;;:4;:16;;;;22016:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;22184:5;22150:25;:31;22176:4;22150:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21897:300:::0;;:::o;16155:33::-;;;;;;;;;;;;;:::o;22689:252::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22741:20:::1;22764:24;22782:4;22764:9;:24::i;:::-;22741:47;;22822:1;22807:12;:16;22799:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;22867:4;22855:9;;:16;;;;;;;;;;;;;;;;;;22882:23;22892:12;22882:9;:23::i;:::-;22928:5;22916:9;;:17;;;;;;;;;;;;;;;;;;22730:211;22689:252::o:0;20822:307::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20974:10:::1;:8;:10::i;:::-;20968:2;:16;;;;:::i;:::-;20959:4;20954:1;20938:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20937:26;;;;:::i;:::-;20936:49;;;;:::i;:::-;20926:6;:59;;20904:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;21110:10;:8;:10::i;:::-;21104:2;:16;;;;:::i;:::-;21094:6;:27;;;;:::i;:::-;21071:20;:50;;;;20822:307:::0;:::o;16348:26::-;;;;:::o;16195:38::-;;;;;;;;;;;;;:::o;19856:102::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19946:4:::1;19924:19;;:26;;;;;;;;;;;;;;;;;;19856:102:::0;:::o;20503:311::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20653:10:::1;:8;:10::i;:::-;20647:2;:16;;;;:::i;:::-;20638:4;20633:1;20617:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20616:26;;;;:::i;:::-;20615:49;;;;:::i;:::-;20605:6;:59;;20583:159;;;;;;;;;;;;:::i;:::-;;;;;;;;;20795:10;:8;:10::i;:::-;20789:2;:16;;;;:::i;:::-;20779:6;:27;;;;:::i;:::-;20753:23;:53;;;;20503:311:::0;:::o;21137:111::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21234:6:::1;21216:9;:15;21226:4;21216:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;21137:111:::0;;:::o;15721:38::-;;;;:::o;15962:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;19451:173::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19611:5:::1;19573:29;:35;19603:4;19573:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;19451:173:::0;;:::o;11390:143::-;11480:7;11507:9;:18;11517:7;11507:18;;;;;;;;;;;;;;;;11500:25;;11390:143;;;:::o;1418:103::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1483:30:::1;1510:1;1483:18;:30::i;:::-;1418:103::o:0;19764:84::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19835:5:::1;19818:14;;:22;;;;;;;;;;;;;;;;;;19764:84::o:0;15892:30::-;;;;;;;;;;;;;:::o;15681:33::-;;;;:::o;1135:87::-;1181:7;1208:6;;;;;;;;;;;1201:13;;1135:87;:::o;15929:24::-;;;;;;;;;;;;;:::o;19966:101::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20052:7:::1;20037:12;;:22;;;;;;;;;;;;;;;;;;19966:101:::0;:::o;11061:104::-;11117:13;11150:7;11143:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11061:104;:::o;13232:385::-;13343:4;13360:16;13379:11;:25;13391:12;:10;:12::i;:::-;13379:25;;;;;;;;;;;;;;;:34;13405:7;13379:34;;;;;;;;;;;;;;;;13360:53;;13444:8;13432;:20;;13424:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13524:52;13533:12;:10;:12::i;:::-;13547:7;13567:8;13556;:19;13524:8;:52::i;:::-;13605:4;13598:11;;;13232:385;;;;:::o;12744:186::-;12848:4;12865:35;12875:12;:10;:12::i;:::-;12889:2;12893:6;12865:9;:35::i;:::-;12918:4;12911:11;;12744:186;;;;:::o;16418:24::-;;;;:::o;21256:309::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21392:12:::1;21374:15;:30;;;;21427:9;21415;:21;;;;21479:9;;21461:15;;:27;;;;:::i;:::-;21447:11;:41;;;;21522:2;21507:11;;:17;;21499:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21256:309:::0;;:::o;16089:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;21573:316::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21711:12:::1;21692:16;:31;;;;21747:9;21734:10;:22;;;;21801:10;;21782:16;;:29;;;;:::i;:::-;21767:12;:44;;;;21846:2;21830:12;;:18;;21822:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;21573:316:::0;;:::o;22205:188::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22317:3:::1;22291:30;;:14;:30;;;;22283:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;22371:14;22357:11;;:28;;;;;;;;;;;;;;;;;;22205:188:::0;:::o;16314:25::-;;;;:::o;15606:36::-;;;;;;;;;;;;;:::o;15766:35::-;;;;:::o;19632:124::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19743:5:::1;19715:16;:25;19732:7;19715:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19632:124:::0;;:::o;18423:1020::-;18509:18;18583:135;18747:22;;;;;;;;;;;;;;;;;18737:33;;;;;;18799:10;;;;;;;;;;;;;;;;;18789:21;;;;;;18829:13;18869:4;18554:335;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18530:370;;;;;;18509:391;;18911:18;18985:49;19063:23;;;;;;;;;;;;;;;;;19053:34;;;;;;19114:1;18956:175;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18932:210;;;;;;18911:231;;19153:14;19223:10;19235;19194:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19170:87;;;;;;19153:104;;19270:14;19287:26;19297:6;19305:1;19308;19311;19287:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19270:43;;19342:7;:5;:7::i;:::-;19332:17;;:6;:17;;;19324:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;19401:4;19384:14;;:21;;;;;;;;;;;;;;;;;;19431:4;19416:12;;:19;;;;;;;;;;;;;;;;;;18498:945;;;;18423:1020;;;:::o;15810:34::-;;;;;;;;;;;;;:::o;12121:176::-;12235:7;12262:11;:18;12274:5;12262:18;;;;;;;;;;;;;;;:27;12281:7;12262:27;;;;;;;;;;;;;;;;12255:34;;12121:176;;;;:::o;16242:27::-;;;;:::o;16276:31::-;;;;:::o;1230:180::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1339:1:::1;1319:22;;:8;:22;;;;1311:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;1374:28;1393:8;1374:18;:28::i;:::-;1230:180:::0;:::o;22401:280::-;1077:12;:10;:12::i;:::-;1066:23;;:7;:5;:7::i;:::-;:23;;;1058:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22467:20:::1;22490:24;22508:4;22490:9;:24::i;:::-;22467:47;;22542:1;22533:6;:10;:36;;;;;22557:12;22547:6;:22;;22533:36;22525:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;22613:4;22601:9;;:16;;;;;;;;;;;;;;;;;;22628:17;22638:6;22628:9;:17::i;:::-;22668:5;22656:9;;:17;;;;;;;;;;;;;;;;;;22456:225;22401:280:::0;:::o;547:98::-;600:7;627:10;620:17;;547:98;:::o;11743:370::-;11896:1;11879:19;;:5;:19;;;;11871:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;11971:1;11952:21;;:7;:21;;;;11944:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;12051:6;12021:11;:18;12033:5;12021:18;;;;;;;;;;;;;;;:27;12040:7;12021:27;;;;;;;;;;;;;;;:36;;;;12089:7;12073:32;;12082:5;12073:32;;;12098:6;12073:32;;;;;;:::i;:::-;;;;;;;;11743:370;;;:::o;23905:3838::-;24053:1;24037:18;;:4;:18;;;;24029:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;24120:1;24106:16;;:2;:16;;;;24098:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;24172:9;:15;24182:4;24172:15;;;;;;;;;;;;;;;;;;;;;;;;;24171:16;24163:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;24237:9;:13;24247:2;24237:13;;;;;;;;;;;;;;;;;;;;;;;;;24236:14;24228:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;24305:1;24295:6;:11;24291:93;;;24323:28;24339:4;24345:2;24349:1;24323:15;:28::i;:::-;24366:7;;24291:93;24396:12;24411:25;:31;24437:4;24411:31;;;;;;;;;;;;;;;;;;;;;;;;;24396:46;;24453:13;24469:25;:29;24495:2;24469:29;;;;;;;;;;;;;;;;;;;;;;;;;24453:45;;24515:14;;;;;;;;;;;24511:1471;;;24576:7;:5;:7::i;:::-;24568:15;;:4;:15;;;;:49;;;;;24610:7;:5;:7::i;:::-;24604:13;;:2;:13;;;;24568:49;:86;;;;;24652:1;24638:16;;:2;:16;;;;24568:86;:128;;;;;24689:6;24675:21;;:2;:21;;;;24568:128;:159;;;;;24718:9;;;;;;;;;;;24717:10;24568:159;24546:1425;;;24767:14;;;;;;;;;;;24762:218;;24840:16;:22;24857:4;24840:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;24866:16;:20;24883:2;24866:20;;;;;;;;;;;;;;;;;;;;;;;;;24840:46;24806:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;24762:218;25004:7;:45;;;;;25016:29;:33;25046:2;25016:33;;;;;;;;;;;;;;;;;;;;;;;;;25015:34;25004:45;25000:956;;;25118:20;;25108:6;:30;;25074:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;25326:23;;25309:13;25319:2;25309:9;:13::i;:::-;25300:6;:22;;;;:::i;:::-;:49;;25266:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;25000:956;;;25450:8;:48;;;;;25463:29;:35;25493:4;25463:35;;;;;;;;;;;;;;;;;;;;;;;;;25462:36;25450:48;25446:510;;;25567:20;;25557:6;:30;;25523:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;25446:510;;;25724:29;:33;25754:2;25724:33;;;;;;;;;;;;;;;;;;;;;;;;;25719:237;;25842:23;;25825:13;25835:2;25825:9;:13::i;:::-;25816:6;:22;;;;:::i;:::-;:49;;25782:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;25719:237;25446:510;25000:956;24546:1425;24511:1471;26035:1;26012:25;;:11;;;;;;;;;;;:25;;;;:92;;;;;26067:11;;;;;;;;;;;26054:35;;;26098:4;26054:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26012:92;25994:459;;;26131:10;26157:11;;;;;;;;;;;26144:31;;;26194:4;26217:2;26246:8;;;;;;;;;;;26274:23;;26316:20;;26355:18;;26144:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26131:257;;26411:5;26403:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;26116:337;25994:459;26469:8;:33;;;;;26497:4;26481:21;;:4;:21;;;;26469:33;:56;;;;;26506:19;;;;;;;;;;;26469:56;26465:293;;;26591:1;26568:13;:19;26582:4;26568:19;;;;;;;;;;;;;;;;:24;:62;;;;26618:12;26596:13;:19;26610:4;26596:19;;;;;;;;;;;;;;;;:34;26568:62;26542:155;;;;;;;;;;;;:::i;:::-;;;;;;;;;26734:12;26712:13;:19;26726:4;26712:19;;;;;;;;;;;;;;;:34;;;;26465:293;26770:20;26793:24;26811:4;26793:9;:24::i;:::-;26770:47;;26828:12;26859:18;;26843:12;:34;;26828:49;;26906:12;;;;;;;;;;;:36;;;;;26935:7;26906:36;:63;;;;;26960:9;;;;;;;;;;;26959:10;26906:63;:88;;;;;26987:7;26986:8;26906:88;:128;;;;;27012:16;:22;27029:4;27012:22;;;;;;;;;;;;;;;;;;;;;;;;;27011:23;26906:128;:166;;;;;27052:16;:20;27069:2;27052:20;;;;;;;;;;;;;;;;;;;;;;;;;27051:21;26906:166;26888:296;;;27111:4;27099:9;;:16;;;;;;;;;;;;;;;;;;27130:10;:8;:10::i;:::-;27167:5;27155:9;;:17;;;;;;;;;;;;;;;;;;26888:296;27196:9;27209;;;;;;;;;;;27208:10;27196:22;;27233:16;:22;27250:4;27233:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;27259:16;:20;27276:2;27259:20;;;;;;;;;;;;;;;;;;;;;;;;;27233:46;27229:64;;;27288:5;27281:12;;27229:64;27306:12;27337:4;27333:357;;;27362:8;:28;;;;;27389:1;27374:12;;:16;27362:28;27358:221;;;27418:33;27447:3;27418:24;27429:12;;27418:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;27411:40;;27358:221;;;27477:7;:26;;;;;27502:1;27488:11;;:15;27477:26;27473:106;;;27531:32;27559:3;27531:23;27542:11;;27531:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;27524:39;;27473:106;27358:221;27604:1;27597:4;:8;27593:56;;;27607:42;27623:4;27637;27644;27607:15;:42::i;:::-;27593:56;27674:4;27664:14;;;;;:::i;:::-;;;27333:357;27702:33;27718:4;27724:2;27728:6;27702:15;:33::i;:::-;24018:3725;;;;;;23905:3838;;;;:::o;23235:662::-;23289:12;23312:22;23337:21;23312:46;;23369:24;23386:6;23369:16;:24::i;:::-;23406:18;23427:41;23453:14;23427:21;:25;;:41;;;;:::i;:::-;23406:62;;23479:14;23508:10;;23496:9;;:22;;;;:::i;:::-;23479:39;;23529:16;23562:12;;23548:11;;:26;;;;:::i;:::-;23529:45;;23599:1;23589:6;:11;;:28;;;;;23616:1;23604:8;:13;;23589:28;23585:191;;;23634:17;23654:36;23681:8;23654:22;23669:6;23654:10;:14;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;23634:56;;23727:9;;;;;;;;;;;23719:23;;23750:9;23719:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23705:59;;;;;23619:157;23585:191;23810:15;;;;;;;;;;;23802:29;;23853:21;23802:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23788:101;;;;;23278:619;;;;;23235:662;:::o;1529:191::-;1603:16;1622:6;;;;;;;;;;;1603:25;;1648:8;1639:6;;:17;;;;;;;;;;;;;;;;;;1703:8;1672:40;;1693:8;1672:40;;;;;;;;;;;;1592:128;1529:191;:::o;14723:641::-;14870:1;14854:18;;:4;:18;;;;14846:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14939:1;14925:16;;:2;:16;;;;14917:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;14984:38;15005:4;15011:2;15015:6;14984:20;:38::i;:::-;15033:19;15055:9;:15;15065:4;15055:15;;;;;;;;;;;;;;;;15033:37;;15104:6;15089:11;:21;;15081:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15215:6;15201:11;:20;15183:9;:15;15193:4;15183:15;;;;;;;;;;;;;;;:38;;;;15260:6;15243:9;:13;15253:2;15243:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;15297:2;15282:26;;15291:4;15282:26;;;15301:6;15282:26;;;;;;:::i;:::-;;;;;;;;15319:37;15339:4;15345:2;15349:6;15319:19;:37::i;:::-;14835:529;14723:641;;;:::o;22949:278::-;22988:20;23011:24;23029:4;23011:9;:24::i;:::-;22988:47;;23066:1;23050:12;:17;23046:30;;;23069:7;;;23046:30;23128:2;23107:18;;:23;;;;:::i;:::-;23092:12;:38;23088:95;;;23181:2;23160:18;;:23;;;;:::i;:::-;23145:38;;23088:95;23196:23;23206:12;23196:9;:23::i;:::-;22977:250;22949:278;:::o;1751:98::-;1809:7;1840:1;1836;:5;;;;:::i;:::-;1829:12;;1751:98;;;;:::o;2160:::-;2218:7;2249:1;2245;:5;;;;:::i;:::-;2238:12;;2160:98;;;;:::o;27903:559::-;28024:21;28062:1;28048:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28024:40;;28093:4;28075;28080:1;28075:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28119:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28109:4;28114:1;28109:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;28149:52;28166:4;28181:10;;;;;;;;;;;28194:6;28149:8;:52::i;:::-;28240:10;;;;;;;;;;;:61;;;28316:6;28337:1;28381:4;28408;28428:15;28240:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27953:509;27903:559;:::o;2855:98::-;2913:7;2944:1;2940;:5;;;;:::i;:::-;2933:12;;2855:98;;;;:::o;14590:125::-;;;;:::o;15372:150::-;;;;:::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:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:329::-;3905:6;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;3846:329;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:118::-;4893:24;4911:5;4893:24;:::i;:::-;4888:3;4881:37;4806:118;;:::o;4930:222::-;5023:4;5061:2;5050:9;5046:18;5038:26;;5074:71;5142:1;5131:9;5127:17;5118:6;5074:71;:::i;:::-;4930:222;;;;:::o;5158:329::-;5217:6;5266:2;5254:9;5245:7;5241:23;5237:32;5234:119;;;5272:79;;:::i;:::-;5234:119;5392:1;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5363:117;5158:329;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:116::-;5993:21;6008:5;5993:21;:::i;:::-;5986:5;5983:32;5973:60;;6029:1;6026;6019:12;5973:60;5923:116;:::o;6045:133::-;6088:5;6126:6;6113:20;6104:29;;6142:30;6166:5;6142:30;:::i;:::-;6045:133;;;;:::o;6184:468::-;6249:6;6257;6306:2;6294:9;6285:7;6281:23;6277:32;6274:119;;;6312:79;;:::i;:::-;6274:119;6432:1;6457:53;6502:7;6493:6;6482:9;6478:22;6457:53;:::i;:::-;6447:63;;6403:117;6559:2;6585:50;6627:7;6618:6;6607:9;6603:22;6585:50;:::i;:::-;6575:60;;6530:115;6184:468;;;;;:::o;6658:323::-;6714:6;6763:2;6751:9;6742:7;6738:23;6734:32;6731:119;;;6769:79;;:::i;:::-;6731:119;6889:1;6914:50;6956:7;6947:6;6936:9;6932:22;6914:50;:::i;:::-;6904:60;;6860:114;6658:323;;;;:::o;6987:474::-;7055:6;7063;7112:2;7100:9;7091:7;7087:23;7083:32;7080:119;;;7118:79;;:::i;:::-;7080:119;7238:1;7263:53;7308:7;7299:6;7288:9;7284:22;7263:53;:::i;:::-;7253:63;;7209:117;7365:2;7391:53;7436:7;7427:6;7416:9;7412:22;7391:53;:::i;:::-;7381:63;;7336:118;6987:474;;;;;:::o;7467:60::-;7495:3;7516:5;7509:12;;7467:60;;;:::o;7533:142::-;7583:9;7616:53;7634:34;7643:24;7661:5;7643:24;:::i;:::-;7634:34;:::i;:::-;7616:53;:::i;:::-;7603:66;;7533:142;;;:::o;7681:126::-;7731:9;7764:37;7795:5;7764:37;:::i;:::-;7751:50;;7681:126;;;:::o;7813:152::-;7889:9;7922:37;7953:5;7922:37;:::i;:::-;7909:50;;7813:152;;;:::o;7971:183::-;8084:63;8141:5;8084:63;:::i;:::-;8079:3;8072:76;7971:183;;:::o;8160:274::-;8279:4;8317:2;8306:9;8302:18;8294:26;;8330:97;8424:1;8413:9;8409:17;8400:6;8330:97;:::i;:::-;8160:274;;;;:::o;8440:118::-;8511:22;8527:5;8511:22;:::i;:::-;8504:5;8501:33;8491:61;;8548:1;8545;8538:12;8491:61;8440:118;:::o;8564:135::-;8608:5;8646:6;8633:20;8624:29;;8662:31;8687:5;8662:31;:::i;:::-;8564:135;;;;:::o;8705:77::-;8742:7;8771:5;8760:16;;8705:77;;;:::o;8788:122::-;8861:24;8879:5;8861:24;:::i;:::-;8854:5;8851:35;8841:63;;8900:1;8897;8890:12;8841:63;8788:122;:::o;8916:139::-;8962:5;9000:6;8987:20;8978:29;;9016:33;9043:5;9016:33;:::i;:::-;8916:139;;;;:::o;9061:615::-;9136:6;9144;9152;9201:2;9189:9;9180:7;9176:23;9172:32;9169:119;;;9207:79;;:::i;:::-;9169:119;9327:1;9352:51;9395:7;9386:6;9375:9;9371:22;9352:51;:::i;:::-;9342:61;;9298:115;9452:2;9478:53;9523:7;9514:6;9503:9;9499:22;9478:53;:::i;:::-;9468:63;;9423:118;9580:2;9606:53;9651:7;9642:6;9631:9;9627:22;9606:53;:::i;:::-;9596:63;;9551:118;9061:615;;;;;:::o;9682:474::-;9750:6;9758;9807:2;9795:9;9786:7;9782:23;9778:32;9775:119;;;9813:79;;:::i;:::-;9775:119;9933:1;9958:53;10003:7;9994:6;9983:9;9979:22;9958:53;:::i;:::-;9948:63;;9904:117;10060:2;10086:53;10131:7;10122:6;10111:9;10107:22;10086:53;:::i;:::-;10076:63;;10031:118;9682:474;;;;;:::o;10162:180::-;10210:77;10207:1;10200:88;10307:4;10304:1;10297:15;10331:4;10328:1;10321:15;10348:320;10392:6;10429:1;10423:4;10419:12;10409:22;;10476:1;10470:4;10466:12;10497:18;10487:81;;10553:4;10545:6;10541:17;10531:27;;10487:81;10615:2;10607:6;10604:14;10584:18;10581:38;10578:84;;;10634:18;;:::i;:::-;10578:84;10399:269;10348:320;;;:::o;10674:163::-;10814:15;10810:1;10802:6;10798:14;10791:39;10674:163;:::o;10843:366::-;10985:3;11006:67;11070:2;11065:3;11006:67;:::i;:::-;10999:74;;11082:93;11171:3;11082:93;:::i;:::-;11200:2;11195:3;11191:12;11184:19;;10843:366;;;:::o;11215:419::-;11381:4;11419:2;11408:9;11404:18;11396:26;;11468:9;11462:4;11458:20;11454:1;11443:9;11439:17;11432:47;11496:131;11622:4;11496:131;:::i;:::-;11488:139;;11215:419;;;:::o;11640:179::-;11780:31;11776:1;11768:6;11764:14;11757:55;11640:179;:::o;11825:366::-;11967:3;11988:67;12052:2;12047:3;11988:67;:::i;:::-;11981:74;;12064:93;12153:3;12064:93;:::i;:::-;12182:2;12177:3;12173:12;12166:19;;11825:366;;;:::o;12197:419::-;12363:4;12401:2;12390:9;12386:18;12378:26;;12450:9;12444:4;12440:20;12436:1;12425:9;12421:17;12414:47;12478:131;12604:4;12478:131;:::i;:::-;12470:139;;12197:419;;;:::o;12622:180::-;12670:77;12667:1;12660:88;12767:4;12764:1;12757:15;12791:4;12788:1;12781:15;12808:348;12848:7;12871:20;12889:1;12871:20;:::i;:::-;12866:25;;12905:20;12923:1;12905:20;:::i;:::-;12900:25;;13093:1;13025:66;13021:74;13018:1;13015:81;13010:1;13003:9;12996:17;12992:105;12989:131;;;13100:18;;:::i;:::-;12989:131;13148:1;13145;13141:9;13130:20;;12808:348;;;;:::o;13162:180::-;13210:77;13207:1;13200:88;13307:4;13304:1;13297:15;13331:4;13328:1;13321:15;13348:185;13388:1;13405:20;13423:1;13405:20;:::i;:::-;13400:25;;13439:20;13457:1;13439:20;:::i;:::-;13434:25;;13478:1;13468:35;;13483:18;;:::i;:::-;13468:35;13525:1;13522;13518:9;13513:14;;13348:185;;;;:::o;13539:240::-;13679:34;13675:1;13667:6;13663:14;13656:58;13748:23;13743:2;13735:6;13731:15;13724:48;13539:240;:::o;13785:366::-;13927:3;13948:67;14012:2;14007:3;13948:67;:::i;:::-;13941:74;;14024:93;14113:3;14024:93;:::i;:::-;14142:2;14137:3;14133:12;14126:19;;13785:366;;;:::o;14157:419::-;14323:4;14361:2;14350:9;14346:18;14338:26;;14410:9;14404:4;14400:20;14396:1;14385:9;14381:17;14374:47;14438:131;14564:4;14438:131;:::i;:::-;14430:139;;14157:419;;;:::o;14582:239::-;14722:34;14718:1;14710:6;14706:14;14699:58;14791:22;14786:2;14778:6;14774:15;14767:47;14582:239;:::o;14827:366::-;14969:3;14990:67;15054:2;15049:3;14990:67;:::i;:::-;14983:74;;15066:93;15155:3;15066:93;:::i;:::-;15184:2;15179:3;15175:12;15168:19;;14827:366;;;:::o;15199:419::-;15365:4;15403:2;15392:9;15388:18;15380:26;;15452:9;15446:4;15442:20;15438:1;15427:9;15423:17;15416:47;15480:131;15606:4;15480:131;:::i;:::-;15472:139;;15199:419;;;:::o;15624:305::-;15664:3;15683:20;15701:1;15683:20;:::i;:::-;15678:25;;15717:20;15735:1;15717:20;:::i;:::-;15712:25;;15871:1;15803:66;15799:74;15796:1;15793:81;15790:107;;;15877:18;;:::i;:::-;15790:107;15921:1;15918;15914:9;15907:16;;15624:305;;;;:::o;15935:244::-;16075:34;16071:1;16063:6;16059:14;16052:58;16144:27;16139:2;16131:6;16127:15;16120:52;15935:244;:::o;16185:366::-;16327:3;16348:67;16412:2;16407:3;16348:67;:::i;:::-;16341:74;;16424:93;16513:3;16424:93;:::i;:::-;16542:2;16537:3;16533:12;16526:19;;16185:366;;;:::o;16557:419::-;16723:4;16761:2;16750:9;16746:18;16738:26;;16810:9;16804:4;16800:20;16796:1;16785:9;16781:17;16774:47;16838:131;16964:4;16838:131;:::i;:::-;16830:139;;16557:419;;;:::o;16982:164::-;17122:16;17118:1;17110:6;17106:14;17099:40;16982:164;:::o;17152:366::-;17294:3;17315:67;17379:2;17374:3;17315:67;:::i;:::-;17308:74;;17391:93;17480:3;17391:93;:::i;:::-;17509:2;17504:3;17500:12;17493:19;;17152:366;;;:::o;17524:419::-;17690:4;17728:2;17717:9;17713:18;17705:26;;17777:9;17771:4;17767:20;17763:1;17752:9;17748:17;17741:47;17805:131;17931:4;17805:131;:::i;:::-;17797:139;;17524:419;;;:::o;17949:102::-;17991:8;18038:5;18035:1;18031:13;18010:34;;17949:102;;;:::o;18057:848::-;18118:5;18125:4;18149:6;18140:15;;18173:5;18164:14;;18187:712;18208:1;18198:8;18195:15;18187:712;;;18303:4;18298:3;18294:14;18288:4;18285:24;18282:50;;;18312:18;;:::i;:::-;18282:50;18362:1;18352:8;18348:16;18345:451;;;18777:4;18770:5;18766:16;18757:25;;18345:451;18827:4;18821;18817:15;18809:23;;18857:32;18880:8;18857:32;:::i;:::-;18845:44;;18187:712;;;18057:848;;;;;;;:::o;18911:1073::-;18965:5;19156:8;19146:40;;19177:1;19168:10;;19179:5;;19146:40;19205:4;19195:36;;19222:1;19213:10;;19224:5;;19195:36;19291:4;19339:1;19334:27;;;;19375:1;19370:191;;;;19284:277;;19334:27;19352:1;19343:10;;19354:5;;;19370:191;19415:3;19405:8;19402:17;19399:43;;;19422:18;;:::i;:::-;19399:43;19471:8;19468:1;19464:16;19455:25;;19506:3;19499:5;19496:14;19493:40;;;19513:18;;:::i;:::-;19493:40;19546:5;;;19284:277;;19670:2;19660:8;19657:16;19651:3;19645:4;19642:13;19638:36;19620:2;19610:8;19607:16;19602:2;19596:4;19593:12;19589:35;19573:111;19570:246;;;19726:8;19720:4;19716:19;19707:28;;19761:3;19754:5;19751:14;19748:40;;;19768:18;;:::i;:::-;19748:40;19801:5;;19570:246;19841:42;19879:3;19869:8;19863:4;19860:1;19841:42;:::i;:::-;19826:57;;;;19915:4;19910:3;19906:14;19899:5;19896:25;19893:51;;;19924:18;;:::i;:::-;19893:51;19973:4;19966:5;19962:16;19953:25;;18911:1073;;;;;;:::o;19990:281::-;20048:5;20072:23;20090:4;20072:23;:::i;:::-;20064:31;;20116:25;20132:8;20116:25;:::i;:::-;20104:37;;20160:104;20197:66;20187:8;20181:4;20160:104;:::i;:::-;20151:113;;19990:281;;;;:::o;20277:234::-;20417:34;20413:1;20405:6;20401:14;20394:58;20486:17;20481:2;20473:6;20469:15;20462:42;20277:234;:::o;20517:366::-;20659:3;20680:67;20744:2;20739:3;20680:67;:::i;:::-;20673:74;;20756:93;20845:3;20756:93;:::i;:::-;20874:2;20869:3;20865:12;20858:19;;20517:366;;;:::o;20889:419::-;21055:4;21093:2;21082:9;21078:18;21070:26;;21142:9;21136:4;21132:20;21128:1;21117:9;21113:17;21106:47;21170:131;21296:4;21170:131;:::i;:::-;21162:139;;20889:419;;;:::o;21314:237::-;21454:34;21450:1;21442:6;21438:14;21431:58;21523:20;21518:2;21510:6;21506:15;21499:45;21314:237;:::o;21557:366::-;21699:3;21720:67;21784:2;21779:3;21720:67;:::i;:::-;21713:74;;21796:93;21885:3;21796:93;:::i;:::-;21914:2;21909:3;21905:12;21898:19;;21557:366;;;:::o;21929:419::-;22095:4;22133:2;22122:9;22118:18;22110:26;;22182:9;22176:4;22172:20;22168:1;22157:9;22153:17;22146:47;22210:131;22336:4;22210:131;:::i;:::-;22202:139;;21929:419;;;:::o;22354:181::-;22494:33;22490:1;22482:6;22478:14;22471:57;22354:181;:::o;22541:366::-;22683:3;22704:67;22768:2;22763:3;22704:67;:::i;:::-;22697:74;;22780:93;22869:3;22780:93;:::i;:::-;22898:2;22893:3;22889:12;22882:19;;22541:366;;;:::o;22913:419::-;23079:4;23117:2;23106:9;23102:18;23094:26;;23166:9;23160:4;23156:20;23152:1;23141:9;23137:17;23130:47;23194:131;23320:4;23194:131;:::i;:::-;23186:139;;22913:419;;;:::o;23338:178::-;23478:30;23474:1;23466:6;23462:14;23455:54;23338:178;:::o;23522:366::-;23664:3;23685:67;23749:2;23744:3;23685:67;:::i;:::-;23678:74;;23761:93;23850:3;23761:93;:::i;:::-;23879:2;23874:3;23870:12;23863:19;;23522:366;;;:::o;23894:419::-;24060:4;24098:2;24087:9;24083:18;24075:26;;24147:9;24141:4;24137:20;24133:1;24122:9;24118:17;24111:47;24175:131;24301:4;24175:131;:::i;:::-;24167:139;;23894:419;;;:::o;24319:170::-;24459:22;24455:1;24447:6;24443:14;24436:46;24319:170;:::o;24495:366::-;24637:3;24658:67;24722:2;24717:3;24658:67;:::i;:::-;24651:74;;24734:93;24823:3;24734:93;:::i;:::-;24852:2;24847:3;24843:12;24836:19;;24495:366;;;:::o;24867:419::-;25033:4;25071:2;25060:9;25056:18;25048:26;;25120:9;25114:4;25110:20;25106:1;25095:9;25091:17;25084:47;25148:131;25274:4;25148:131;:::i;:::-;25140:139;;24867:419;;;:::o;25292:118::-;25379:24;25397:5;25379:24;:::i;:::-;25374:3;25367:37;25292:118;;:::o;25416:664::-;25621:4;25659:3;25648:9;25644:19;25636:27;;25673:71;25741:1;25730:9;25726:17;25717:6;25673:71;:::i;:::-;25754:72;25822:2;25811:9;25807:18;25798:6;25754:72;:::i;:::-;25836;25904:2;25893:9;25889:18;25880:6;25836:72;:::i;:::-;25918;25986:2;25975:9;25971:18;25962:6;25918:72;:::i;:::-;26000:73;26068:3;26057:9;26053:19;26044:6;26000:73;:::i;:::-;25416:664;;;;;;;;:::o;26086:442::-;26235:4;26273:2;26262:9;26258:18;26250:26;;26286:71;26354:1;26343:9;26339:17;26330:6;26286:71;:::i;:::-;26367:72;26435:2;26424:9;26420:18;26411:6;26367:72;:::i;:::-;26449;26517:2;26506:9;26502:18;26493:6;26449:72;:::i;:::-;26086:442;;;;;;:::o;26534:148::-;26636:11;26673:3;26658:18;;26534:148;;;;:::o;26688:214::-;26828:66;26824:1;26816:6;26812:14;26805:90;26688:214;:::o;26908:400::-;27068:3;27089:84;27171:1;27166:3;27089:84;:::i;:::-;27082:91;;27182:93;27271:3;27182:93;:::i;:::-;27300:1;27295:3;27291:11;27284:18;;26908:400;;;:::o;27314:79::-;27353:7;27382:5;27371:16;;27314:79;;;:::o;27399:157::-;27504:45;27524:24;27542:5;27524:24;:::i;:::-;27504:45;:::i;:::-;27499:3;27492:58;27399:157;;:::o;27562:663::-;27803:3;27825:148;27969:3;27825:148;:::i;:::-;27818:155;;27983:75;28054:3;28045:6;27983:75;:::i;:::-;28083:2;28078:3;28074:12;28067:19;;28096:75;28167:3;28158:6;28096:75;:::i;:::-;28196:2;28191:3;28187:12;28180:19;;28216:3;28209:10;;27562:663;;;;;:::o;28231:545::-;28404:4;28442:3;28431:9;28427:19;28419:27;;28456:71;28524:1;28513:9;28509:17;28500:6;28456:71;:::i;:::-;28537:68;28601:2;28590:9;28586:18;28577:6;28537:68;:::i;:::-;28615:72;28683:2;28672:9;28668:18;28659:6;28615:72;:::i;:::-;28697;28765:2;28754:9;28750:18;28741:6;28697:72;:::i;:::-;28231:545;;;;;;;:::o;28782:167::-;28922:19;28918:1;28910:6;28906:14;28899:43;28782:167;:::o;28955:366::-;29097:3;29118:67;29182:2;29177:3;29118:67;:::i;:::-;29111:74;;29194:93;29283:3;29194:93;:::i;:::-;29312:2;29307:3;29303:12;29296:19;;28955:366;;;:::o;29327:419::-;29493:4;29531:2;29520:9;29516:18;29508:26;;29580:9;29574:4;29570:20;29566:1;29555:9;29551:17;29544:47;29608:131;29734:4;29608:131;:::i;:::-;29600:139;;29327:419;;;:::o;29752:167::-;29892:19;29888:1;29880:6;29876:14;29869:43;29752:167;:::o;29925:366::-;30067:3;30088:67;30152:2;30147:3;30088:67;:::i;:::-;30081:74;;30164:93;30253:3;30164:93;:::i;:::-;30282:2;30277:3;30273:12;30266:19;;29925:366;;;:::o;30297:419::-;30463:4;30501:2;30490:9;30486:18;30478:26;;30550:9;30544:4;30540:20;30536:1;30525:9;30521:17;30514:47;30578:131;30704:4;30578:131;:::i;:::-;30570:139;;30297:419;;;:::o;30722:180::-;30862:32;30858:1;30850:6;30846:14;30839:56;30722:180;:::o;30908:366::-;31050:3;31071:67;31135:2;31130:3;31071:67;:::i;:::-;31064:74;;31147:93;31236:3;31147:93;:::i;:::-;31265:2;31260:3;31256:12;31249:19;;30908:366;;;:::o;31280:419::-;31446:4;31484:2;31473:9;31469:18;31461:26;;31533:9;31527:4;31523:20;31519:1;31508:9;31504:17;31497:47;31561:131;31687:4;31561:131;:::i;:::-;31553:139;;31280:419;;;:::o;31705:182::-;31845:34;31841:1;31833:6;31829:14;31822:58;31705:182;:::o;31893:366::-;32035:3;32056:67;32120:2;32115:3;32056:67;:::i;:::-;32049:74;;32132:93;32221:3;32132:93;:::i;:::-;32250:2;32245:3;32241:12;32234:19;;31893:366;;;:::o;32265:419::-;32431:4;32469:2;32458:9;32454:18;32446:26;;32518:9;32512:4;32508:20;32504:1;32493:9;32489:17;32482:47;32546:131;32672:4;32546:131;:::i;:::-;32538:139;;32265:419;;;:::o;32690:177::-;32830:29;32826:1;32818:6;32814:14;32807:53;32690:177;:::o;32873:366::-;33015:3;33036:67;33100:2;33095:3;33036:67;:::i;:::-;33029:74;;33112:93;33201:3;33112:93;:::i;:::-;33230:2;33225:3;33221:12;33214:19;;32873:366;;;:::o;33245:419::-;33411:4;33449:2;33438:9;33434:18;33426:26;;33498:9;33492:4;33488:20;33484:1;33473:9;33469:17;33462:47;33526:131;33652:4;33526:131;:::i;:::-;33518:139;;33245:419;;;:::o;33670:175::-;33810:27;33806:1;33798:6;33794:14;33787:51;33670:175;:::o;33851:366::-;33993:3;34014:67;34078:2;34073:3;34014:67;:::i;:::-;34007:74;;34090:93;34179:3;34090:93;:::i;:::-;34208:2;34203:3;34199:12;34192:19;;33851:366;;;:::o;34223:419::-;34389:4;34427:2;34416:9;34412:18;34404:26;;34476:9;34470:4;34466:20;34462:1;34451:9;34447:17;34440:47;34504:131;34630:4;34504:131;:::i;:::-;34496:139;;34223:419;;;:::o;34648:175::-;34788:27;34784:1;34776:6;34772:14;34765:51;34648:175;:::o;34829:366::-;34971:3;34992:67;35056:2;35051:3;34992:67;:::i;:::-;34985:74;;35068:93;35157:3;35068:93;:::i;:::-;35186:2;35181:3;35177:12;35170:19;;34829:366;;;:::o;35201:419::-;35367:4;35405:2;35394:9;35390:18;35382:26;;35454:9;35448:4;35444:20;35440:1;35429:9;35425:17;35418:47;35482:131;35608:4;35482:131;:::i;:::-;35474:139;;35201:419;;;:::o;35626:173::-;35766:25;35762:1;35754:6;35750:14;35743:49;35626:173;:::o;35805:366::-;35947:3;35968:67;36032:2;36027:3;35968:67;:::i;:::-;35961:74;;36044:93;36133:3;36044:93;:::i;:::-;36162:2;36157:3;36153:12;36146:19;;35805:366;;;:::o;36177:419::-;36343:4;36381:2;36370:9;36366:18;36358:26;;36430:9;36424:4;36420:20;36416:1;36405:9;36401:17;36394:47;36458:131;36584:4;36458:131;:::i;:::-;36450:139;;36177:419;;;:::o;36602:172::-;36742:24;36738:1;36730:6;36726:14;36719:48;36602:172;:::o;36780:366::-;36922:3;36943:67;37007:2;37002:3;36943:67;:::i;:::-;36936:74;;37019:93;37108:3;37019:93;:::i;:::-;37137:2;37132:3;37128:12;37121:19;;36780:366;;;:::o;37152:419::-;37318:4;37356:2;37345:9;37341:18;37333:26;;37405:9;37399:4;37395:20;37391:1;37380:9;37376:17;37369:47;37433:131;37559:4;37433:131;:::i;:::-;37425:139;;37152:419;;;:::o;37577:240::-;37717:34;37713:1;37705:6;37701:14;37694:58;37786:23;37781:2;37773:6;37769:15;37762:48;37577:240;:::o;37823:366::-;37965:3;37986:67;38050:2;38045:3;37986:67;:::i;:::-;37979:74;;38062:93;38151:3;38062:93;:::i;:::-;38180:2;38175:3;38171:12;38164:19;;37823:366;;;:::o;38195:419::-;38361:4;38399:2;38388:9;38384:18;38376:26;;38448:9;38442:4;38438:20;38434:1;38423:9;38419:17;38412:47;38476:131;38602:4;38476:131;:::i;:::-;38468:139;;38195:419;;;:::o;38620:169::-;38760:21;38756:1;38748:6;38744:14;38737:45;38620:169;:::o;38795:366::-;38937:3;38958:67;39022:2;39017:3;38958:67;:::i;:::-;38951:74;;39034:93;39123:3;39034:93;:::i;:::-;39152:2;39147:3;39143:12;39136:19;;38795:366;;;:::o;39167:419::-;39333:4;39371:2;39360:9;39356:18;39348:26;;39420:9;39414:4;39410:20;39406:1;39395:9;39391:17;39384:47;39448:131;39574:4;39448:131;:::i;:::-;39440:139;;39167:419;;;:::o;39592:241::-;39732:34;39728:1;39720:6;39716:14;39709:58;39801:24;39796:2;39788:6;39784:15;39777:49;39592:241;:::o;39839:366::-;39981:3;40002:67;40066:2;40061:3;40002:67;:::i;:::-;39995:74;;40078:93;40167:3;40078:93;:::i;:::-;40196:2;40191:3;40187:12;40180:19;;39839:366;;;:::o;40211:419::-;40377:4;40415:2;40404:9;40400:18;40392:26;;40464:9;40458:4;40454:20;40450:1;40439:9;40435:17;40428:47;40492:131;40618:4;40492:131;:::i;:::-;40484:139;;40211:419;;;:::o;40636:137::-;40690:5;40721:6;40715:13;40706:22;;40737:30;40761:5;40737:30;:::i;:::-;40636:137;;;;:::o;40779:345::-;40846:6;40895:2;40883:9;40874:7;40870:23;40866:32;40863:119;;;40901:79;;:::i;:::-;40863:119;41021:1;41046:61;41099:7;41090:6;41079:9;41075:22;41046:61;:::i;:::-;41036:71;;40992:125;40779:345;;;;:::o;41130:775::-;41363:4;41401:3;41390:9;41386:19;41378:27;;41415:71;41483:1;41472:9;41468:17;41459:6;41415:71;:::i;:::-;41496:72;41564:2;41553:9;41549:18;41540:6;41496:72;:::i;:::-;41578;41646:2;41635:9;41631:18;41622:6;41578:72;:::i;:::-;41660;41728:2;41717:9;41713:18;41704:6;41660:72;:::i;:::-;41742:73;41810:3;41799:9;41795:19;41786:6;41742:73;:::i;:::-;41825;41893:3;41882:9;41878:19;41869:6;41825:73;:::i;:::-;41130:775;;;;;;;;;:::o;41911:170::-;42051:22;42047:1;42039:6;42035:14;42028:46;41911:170;:::o;42087:366::-;42229:3;42250:67;42314:2;42309:3;42250:67;:::i;:::-;42243:74;;42326:93;42415:3;42326:93;:::i;:::-;42444:2;42439:3;42435:12;42428:19;;42087:366;;;:::o;42459:419::-;42625:4;42663:2;42652:9;42648:18;42640:26;;42712:9;42706:4;42702:20;42698:1;42687:9;42683:17;42676:47;42740:131;42866:4;42740:131;:::i;:::-;42732:139;;42459:419;;;:::o;42884:181::-;43024:33;43020:1;43012:6;43008:14;43001:57;42884:181;:::o;43071:366::-;43213:3;43234:67;43298:2;43293:3;43234:67;:::i;:::-;43227:74;;43310:93;43399:3;43310:93;:::i;:::-;43428:2;43423:3;43419:12;43412:19;;43071:366;;;:::o;43443:419::-;43609:4;43647:2;43636:9;43632:18;43624:26;;43696:9;43690:4;43686:20;43682:1;43671:9;43667:17;43660:47;43724:131;43850:4;43724:131;:::i;:::-;43716:139;;43443:419;;;:::o;43868:191::-;43908:4;43928:20;43946:1;43928:20;:::i;:::-;43923:25;;43962:20;43980:1;43962:20;:::i;:::-;43957:25;;44001:1;43998;43995:8;43992:34;;;44006:18;;:::i;:::-;43992:34;44051:1;44048;44044:9;44036:17;;43868:191;;;;:::o;44065:147::-;44166:11;44203:3;44188:18;;44065:147;;;;:::o;44218:114::-;;:::o;44338:398::-;44497:3;44518:83;44599:1;44594:3;44518:83;:::i;:::-;44511:90;;44610:93;44699:3;44610:93;:::i;:::-;44728:1;44723:3;44719:11;44712:18;;44338:398;;;:::o;44742:379::-;44926:3;44948:147;45091:3;44948:147;:::i;:::-;44941:154;;45112:3;45105:10;;44742:379;;;:::o;45127:179::-;45267:31;45263:1;45255:6;45251:14;45244:55;45127:179;:::o;45312:366::-;45454:3;45475:67;45539:2;45534:3;45475:67;:::i;:::-;45468:74;;45551:93;45640:3;45551:93;:::i;:::-;45669:2;45664:3;45660:12;45653:19;;45312:366;;;:::o;45684:419::-;45850:4;45888:2;45877:9;45873:18;45865:26;;45937:9;45931:4;45927:20;45923:1;45912:9;45908:17;45901:47;45965:131;46091:4;45965:131;:::i;:::-;45957:139;;45684:419;;;:::o;46109:177::-;46249:29;46245:1;46237:6;46233:14;46226:53;46109:177;:::o;46292:366::-;46434:3;46455:67;46519:2;46514:3;46455:67;:::i;:::-;46448:74;;46531:93;46620:3;46531:93;:::i;:::-;46649:2;46644:3;46640:12;46633:19;;46292:366;;;:::o;46664:419::-;46830:4;46868:2;46857:9;46853:18;46845:26;;46917:9;46911:4;46907:20;46903:1;46892:9;46888:17;46881:47;46945:131;47071:4;46945:131;:::i;:::-;46937:139;;46664:419;;;:::o;47089:182::-;47229:34;47225:1;47217:6;47213:14;47206:58;47089:182;:::o;47277:366::-;47419:3;47440:67;47504:2;47499:3;47440:67;:::i;:::-;47433:74;;47516:93;47605:3;47516:93;:::i;:::-;47634:2;47629:3;47625:12;47618:19;;47277:366;;;:::o;47649:419::-;47815:4;47853:2;47842:9;47838:18;47830:26;;47902:9;47896:4;47892:20;47888:1;47877:9;47873:17;47866:47;47930:131;48056:4;47930:131;:::i;:::-;47922:139;;47649:419;;;:::o;48074:180::-;48122:77;48119:1;48112:88;48219:4;48216:1;48209:15;48243:4;48240:1;48233:15;48260:180;48308:77;48305:1;48298:88;48405:4;48402:1;48395:15;48429:4;48426:1;48419:15;48446:143;48503:5;48534:6;48528:13;48519:22;;48550:33;48577:5;48550:33;:::i;:::-;48446:143;;;;:::o;48595:351::-;48665:6;48714:2;48702:9;48693:7;48689:23;48685:32;48682:119;;;48720:79;;:::i;:::-;48682:119;48840:1;48865:64;48921:7;48912:6;48901:9;48897:22;48865:64;:::i;:::-;48855:74;;48811:128;48595:351;;;;:::o;48952:85::-;48997:7;49026:5;49015:16;;48952:85;;;:::o;49043:158::-;49101:9;49134:61;49152:42;49161:32;49187:5;49161:32;:::i;:::-;49152:42;:::i;:::-;49134:61;:::i;:::-;49121:74;;49043:158;;;:::o;49207:147::-;49302:45;49341:5;49302:45;:::i;:::-;49297:3;49290:58;49207:147;;:::o;49360:114::-;49427:6;49461:5;49455:12;49445:22;;49360:114;;;:::o;49480:184::-;49579:11;49613:6;49608:3;49601:19;49653:4;49648:3;49644:14;49629:29;;49480:184;;;;:::o;49670:132::-;49737:4;49760:3;49752:11;;49790:4;49785:3;49781:14;49773:22;;49670:132;;;:::o;49808:108::-;49885:24;49903:5;49885:24;:::i;:::-;49880:3;49873:37;49808:108;;:::o;49922:179::-;49991:10;50012:46;50054:3;50046:6;50012:46;:::i;:::-;50090:4;50085:3;50081:14;50067:28;;49922:179;;;;:::o;50107:113::-;50177:4;50209;50204:3;50200:14;50192:22;;50107:113;;;:::o;50256:732::-;50375:3;50404:54;50452:5;50404:54;:::i;:::-;50474:86;50553:6;50548:3;50474:86;:::i;:::-;50467:93;;50584:56;50634:5;50584:56;:::i;:::-;50663:7;50694:1;50679:284;50704:6;50701:1;50698:13;50679:284;;;50780:6;50774:13;50807:63;50866:3;50851:13;50807:63;:::i;:::-;50800:70;;50893:60;50946:6;50893:60;:::i;:::-;50883:70;;50739:224;50726:1;50723;50719:9;50714:14;;50679:284;;;50683:14;50979:3;50972:10;;50380:608;;;50256:732;;;;:::o;50994:831::-;51257:4;51295:3;51284:9;51280:19;51272:27;;51309:71;51377:1;51366:9;51362:17;51353:6;51309:71;:::i;:::-;51390:80;51466:2;51455:9;51451:18;51442:6;51390:80;:::i;:::-;51517:9;51511:4;51507:20;51502:2;51491:9;51487:18;51480:48;51545:108;51648:4;51639:6;51545:108;:::i;:::-;51537:116;;51663:72;51731:2;51720:9;51716:18;51707:6;51663:72;:::i;:::-;51745:73;51813:3;51802:9;51798:19;51789:6;51745:73;:::i;:::-;50994:831;;;;;;;;:::o
Swarm Source
ipfs://71f5ab12ac8fc8bb5b5098990577a1dd4ce8f9dfb547a1b4fb7e077676d9cb14
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.