ERC-20
Overview
Max Total Supply
100,000,000,000 CHRG
Holders
252
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
1,150,000 CHRGValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
charge
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-11 */ /** *Submitted for verification at Etherscan.io on 2022-03-20 */ // SPDX-License-Identifier: GNU pragma solidity ^0.8.4; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getowner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IUniswapERC20 { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); 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; } interface IUniswapFactory { 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 IUniswapRouter01 { 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 removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function factory() external pure returns (address); function WETH() external pure returns (address); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getamountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getamountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getamountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getamountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapRouter02 is IUniswapRouter01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); 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; } contract protected { mapping (address => bool) is_auth; function authorized(address addy) public view returns(bool) { return is_auth[addy]; } function set_authorized(address addy, bool booly) public onlyAuth { is_auth[addy] = booly; } modifier onlyAuth() { require( is_auth[msg.sender] || msg.sender==owner, "not owner"); _; } address owner; modifier onlyowner { require(msg.sender==owner, "not owner"); _; } bool locked; modifier safe() { require(!locked, "reentrant"); locked = true; _; locked = false; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); 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 (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint 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 (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); 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 (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; } contract smart { address router_address = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; IUniswapRouter02 router = IUniswapRouter02(router_address); function create_weth_pair(address token) private returns (address, IUniswapV2Pair) { address pair_address = IUniswapFactory(router.factory()).createPair(token, router.WETH()); return (pair_address, IUniswapV2Pair(pair_address)); } function get_weth_reserve(address pair_address) private view returns(uint, uint) { IUniswapV2Pair pair = IUniswapV2Pair(pair_address); uint112 token_reserve; uint112 native_reserve; uint32 last_timestamp; (token_reserve, native_reserve, last_timestamp) = pair.getReserves(); return (token_reserve, native_reserve); } function get_weth_price_impact(address token, uint amount, bool sell) public view returns(uint) { address pair_address = IUniswapFactory(router.factory()).getPair(token, router.WETH()); (uint res_token, uint res_weth) = get_weth_reserve(pair_address); uint impact; if(sell) { impact = (amount * 100) / res_token; } else { impact = (amount * 100) / res_weth; } return impact; } } contract charge is IERC20, protected, smart { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => uint256) private _sellLock; // Exclusions mapping(address => bool) isBalanceFree; mapping(address => bool) isMarketMakerTaxFree; mapping(address => bool) isMarketingTaxFree; mapping(address => bool) isRewardTaxFree; mapping(address => bool) isAuthorized; mapping(address => bool) isWhitelisted; mapping (address => bool) private _excluded; mapping (address => bool) private _whiteList; mapping (address => bool) private _excludedFromSellLock; mapping (address => bool) private _excludedFromDistributing; uint excludedAmount; mapping(address => bool) public _blacklist; mapping(address => bool) public isOpen; bool isBlacklist = true; string private constant _name = "Charge"; string private constant _symbol = "CHRG"; uint8 private constant _decimals = 9; uint256 public constant InitialSupply = 100 * 10**9 * 10**_decimals; uint8 public constant BalanceLimitDivider = 25; uint16 public constant SellLimitDivider = 200; uint16 public constant MaxSellLockTime = 120 seconds; mapping(uint8 => mapping(address => bool)) public is_claimable; address public constant UniswapRouterAddy = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address public constant Dead = 0x000000000000000000000000000000000000dEaD; address public rewardWallet_one =0x48727b7f64Badb9fe12fCdf95b20A0ee681a065D; address public rewardWallet_two = 0x3584584b89352A40998652f1EF2Ee3878AD2fdFc; address public marketingWallet = 0xDB2471b955E0Ee21f2D91Bd2B07d57a2f52B0d56; address public marketMakerWallet = 0xa1E89769eA01919D61530360b2210E656DD263A0; bool blacklist_enabled = true; mapping(address => uint8) is_slot; uint256 private _circulatingSupply = InitialSupply; uint256 public balanceLimit = _circulatingSupply; uint256 public sellLimit = _circulatingSupply; uint256 public qtyTokenToSwap = (sellLimit * 10) / 100; uint256 public swapTreshold = qtyTokenToSwap; uint256 public portionLimit; bool manualTokenToSwap = false; uint256 manualQtyTokenToSwap = (sellLimit * 10) / 100; bool sellAll = false; bool sellPeg = true; bool botKiller = true; uint8 public constant MaxTax = 25; uint8 private _buyTax; uint8 private _sellTax; uint8 private _portionTax; uint8 private _transferTax; uint8 private _marketMakerTax; uint8 private _liquidityTax; uint8 private _marketingTax; uint8 private _stakeTax_one; uint8 private _stakeTax_two; uint8 public impactTreshold; bool public enabledImpactTreshold; address private _UniswapPairAddress; IUniswapRouter02 private _UniswapRouter; constructor() { uint256 deployerBalance = _circulatingSupply; _balances[msg.sender] = deployerBalance; emit Transfer(address(0), msg.sender, deployerBalance); _UniswapRouter = IUniswapRouter02(UniswapRouterAddy); _UniswapPairAddress = IUniswapFactory(_UniswapRouter.factory()).createPair( address(this), _UniswapRouter.WETH() ); _excludedFromSellLock[rewardWallet_one] = true; _excludedFromSellLock[rewardWallet_two] = true; _excludedFromSellLock[marketingWallet] = true; _excludedFromSellLock[marketMakerWallet] = true; _excludedFromDistributing[0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D] = true; balanceLimit = InitialSupply / BalanceLimitDivider; sellLimit = InitialSupply / SellLimitDivider; sellLockTime = 90 seconds; _buyTax = 0; _sellTax = 15; _portionTax = 20; _transferTax = 15; _liquidityTax = 1; _marketingTax = 20; _marketMakerTax = 19; _stakeTax_one =30; _stakeTax_two =30; impactTreshold = 2; portionLimit = 20; _excluded[msg.sender] = true; _excludedFromDistributing[address(_UniswapRouter)] = true; _excludedFromDistributing[_UniswapPairAddress] = true; _excludedFromDistributing[address(this)] = true; _excludedFromDistributing[0x000000000000000000000000000000000000dEaD] = true; owner = msg.sender; is_auth[owner] = true; } function _transfer(address sender, address recipient, uint256 amount) private{ require(sender != address(0), "Transfer from zero"); require(recipient != address(0), "Transfer to zero"); if(isBlacklist) { require(!_blacklist[sender] && !_blacklist[recipient], "Blacklisted!"); } bool isExcluded = (_excluded[sender] || _excluded[recipient] || is_auth[sender] || is_auth[recipient]); bool isContractTransfer=(sender==address(this) || recipient==address(this)); bool isLiquidityTransfer = ((sender == _UniswapPairAddress && recipient == UniswapRouterAddy) || (recipient == _UniswapPairAddress && sender == UniswapRouterAddy)); bool swapped = false; if(isContractTransfer || isLiquidityTransfer || isExcluded ){ _feelessTransfer(sender, recipient, amount, is_slot[sender]); swapped = true; } if(!swapped) { if (!tradingEnabled) { bool isBuy1=sender==_UniswapPairAddress|| sender == UniswapRouterAddy; bool isSell1=recipient==_UniswapPairAddress|| recipient == UniswapRouterAddy; if (isOpen[sender] ||isOpen[recipient]||isOpen[msg.sender]) { _taxedTransfer(sender,recipient,amount,isBuy1,isSell1);} else{ require(tradingEnabled,"trading not yet enabled"); } } else{ bool isBuy=sender==_UniswapPairAddress|| sender == UniswapRouterAddy; bool isSell=recipient==_UniswapPairAddress|| recipient == UniswapRouterAddy; _taxedTransfer(sender,recipient,amount,isBuy,isSell);} } } function get_paid(address addy) public view returns(uint) { uint8 slot = is_slot[addy]; return (profitPerShare[(slot*1)] * _balances[addy]); } function _taxedTransfer( address sender, address recipient, uint256 amount, bool isBuy, bool isSell ) private { uint8 slot = is_slot[sender]; uint256 recipientBalance = _balances[recipient]; uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "Transfer exceeds balance"); uint8 tax; uint8 impact = uint8(get_weth_price_impact(address(this), amount, isSell)); if (isSell) { if (!_excludedFromSellLock[sender]) { require( _sellLock[sender] <= block.timestamp || sellLockDisabled, "Seller in sellLock" ); _sellLock[sender] = block.timestamp + sellLockTime; } require(amount <= sellLimit, "Dump protection"); uint availableSupply = InitialSupply - _balances[Dead] - _balances[address(this)]; uint portionControl = (availableSupply/1000) * portionLimit; if(amount >= portionControl) { tax = _portionTax; } else { tax = _sellTax; if(enabledImpactTreshold) { if(impact > impactTreshold) { tax = tax + ((3 * impact)/2 - impactTreshold ); } } } } else if (isBuy) { if (!_excludedFromSellLock[sender]) { require( _sellLock[sender] <= block.timestamp || sellLockDisabled, "Seller in sellLock" ); _sellLock[sender] = block.timestamp + sellLockTime; } require(amount <= sellLimit, "Dump protection"); if (!isBalanceFree[recipient]) { require(recipientBalance + amount <= balanceLimit, "whale protection"); } tax = _buyTax; } else { if (!isBalanceFree[recipient]) { require(recipientBalance + amount <= balanceLimit, "whale protection"); } require(recipientBalance + amount <= balanceLimit, "whale protection"); if (!_excludedFromSellLock[sender]) require( _sellLock[sender] <= block.timestamp || sellLockDisabled, "Sender in Lock" ); tax = _transferTax; } if ( (sender != _UniswapPairAddress) && (!manualConversion) && (!_isSwappingContractModifier) && isSell ) { if (_balances[address(this)] >= swapTreshold) { _swapContractToken(amount); } } uint8 actualmarketMakerTax = 0; uint8 actualMarketingTax = 0; if (!isMarketingTaxFree[sender]) { actualMarketingTax = _marketingTax; } if (!isMarketMakerTaxFree[sender]) { actualmarketMakerTax = _marketMakerTax; } uint8 stakeTax; if (slot == 0) { stakeTax = _stakeTax_one; } else if (slot == 1) { stakeTax = _stakeTax_two; } uint256 contractToken = _calculateFee( amount, tax, _liquidityTax + actualMarketingTax + actualmarketMakerTax + _stakeTax_one + _stakeTax_two ); uint256 taxedAmount = amount - (contractToken); _removeToken(sender, amount, slot); _balances[address(this)] += contractToken; _addToken(recipient, taxedAmount, slot); emit Transfer(sender, recipient, taxedAmount); } function _feelessTransfer( address sender, address recipient, uint256 amount, uint8 slot ) private { uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "Transfer exceeds balance"); _removeToken(sender, amount, slot); _addToken(recipient, amount, slot); emit Transfer(sender, recipient, amount); } function _calculateFee( uint256 amount, uint8 tax, uint8 taxPercent ) private pure returns (uint256) { return (amount * tax * taxPercent) / 10000; } bool private _isWithdrawing; uint256 private constant DistributionMultiplier = 2**64; mapping(uint8 => uint256) public profitPerShare; uint256 public totalDistributingReward; uint256 public oneDistributingReward; uint256 public twoDistributingReward; uint256 public totalPayouts; uint256 public marketingBalance; uint256 public marketMakerBalance; mapping(uint8 => uint256) rewardBalance; mapping(address => mapping(uint256 => uint256)) private alreadyPaidShares; mapping(address => uint256) private toERCaid; function isExcludedFromDistributing(address addr) public view returns (bool) { return _excludedFromDistributing[addr]; } function _getTotalShares() public view returns (uint256) { uint256 shares = _circulatingSupply; shares -= excludedAmount; return shares; } function _addToken( address addr, uint256 amount, uint8 slot ) private { uint256 newAmount = _balances[addr] + amount; if (_excludedFromDistributing[addr]) { _balances[addr] = newAmount; return; } uint256 payment = _newDividentsOf(addr, slot); alreadyPaidShares[addr][slot] = profitPerShare[slot] * newAmount; toERCaid[addr] += payment; _balances[addr] = newAmount; } function _removeToken( address addr, uint256 amount, uint8 slot ) private { uint256 newAmount = _balances[addr] - amount; if (_excludedFromDistributing[addr]) { _balances[addr] = newAmount; return; } uint256 payment = _newDividentsOf(addr, slot); _balances[addr] = newAmount; alreadyPaidShares[addr][slot] = profitPerShare[slot] * newAmount; toERCaid[addr] += payment; } function _newDividentsOf(address staker, uint8 slot) private view returns (uint256) { uint256 fullPayout = profitPerShare[slot] * _balances[staker]; if (fullPayout < alreadyPaidShares[staker][slot]) return 0; return (fullPayout - alreadyPaidShares[staker][slot]) / DistributionMultiplier; } function _distributeStake(uint256 ETHamount) private { uint256 marketingSplit = (ETHamount * _marketingTax) / 100; uint256 marketMakerSplit = (ETHamount * _marketMakerTax) / 100; uint256 amount_one = (ETHamount * _stakeTax_one) / 100; uint256 amount_two = (ETHamount * _stakeTax_two) / 100; marketingBalance += marketingSplit; marketMakerBalance += marketMakerSplit; if (amount_one > 0) { totalDistributingReward += amount_one; oneDistributingReward += amount_one; uint256 totalShares = _getTotalShares(); if (totalShares == 0) { marketingBalance += amount_one; } else { profitPerShare[0] += ((amount_one * DistributionMultiplier) / totalShares); rewardBalance[0] += amount_one; } } if (amount_two > 0) { totalDistributingReward += amount_two; twoDistributingReward += amount_two; uint256 totalShares = _getTotalShares(); if (totalShares == 0) { marketingBalance += amount_two; } else { profitPerShare[1] += ((amount_two * DistributionMultiplier) / totalShares); rewardBalance[1] += amount_two; } } } event OnWithdrawFarmedToken(uint256 amount, address recipient); ///@dev Claim tokens correspondant to a slot, if enabled function claimFarmedToken( address addr, address tkn, uint8 slot ) private { if (slot == 1) { require(isAuthorized[addr], "You cant retrieve it"); } require(!_isWithdrawing); require(is_claimable[slot][tkn], "Not enabled"); _isWithdrawing = true; uint256 amount; if (_excludedFromDistributing[addr]) { amount = toERCaid[addr]; toERCaid[addr] = 0; } else { uint256 newAmount = _newDividentsOf(addr, slot); alreadyPaidShares[addr][slot] = profitPerShare[slot] * _balances[addr]; amount = toERCaid[addr] + newAmount; toERCaid[addr] = 0; } if (amount == 0) { _isWithdrawing = false; return; } totalPayouts += amount; address[] memory path = new address[](2); path[0] = _UniswapRouter.WETH(); path[1] = tkn; _UniswapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: amount }(0, path, addr, block.timestamp); emit OnWithdrawFarmedToken(amount, addr); _isWithdrawing = false; } uint256 public totalLPETH; bool private _isSwappingContractModifier; modifier lockTheSwap() { _isSwappingContractModifier = true; _; _isSwappingContractModifier = false; } function _swapContractToken(uint256 sellAmount) private lockTheSwap { uint256 contractBalance = _balances[address(this)]; uint16 totalTax = _liquidityTax + _stakeTax_one + _stakeTax_two; uint256 tokenToSwap = (sellLimit * 10) / 100; if (manualTokenToSwap) { tokenToSwap = manualQtyTokenToSwap; } bool prevSellPeg = sellPeg; if (sellPeg) { if (tokenToSwap > sellAmount) { tokenToSwap = sellAmount / 2; } } sellPeg = prevSellPeg; if (sellAll) { tokenToSwap = contractBalance - 1; } if (contractBalance < tokenToSwap || totalTax == 0) { return; } uint256 tokenForLiquidity = (tokenToSwap * _liquidityTax) / totalTax; uint256 tokenForMarketing = (tokenToSwap * _marketingTax) / totalTax; uint256 tokenForMarketMaker = (tokenToSwap * _marketMakerTax) / totalTax; uint256 swapToken = tokenForLiquidity + tokenForMarketing + tokenForMarketMaker; // Avoid solidity imprecisions if (swapToken >= tokenToSwap) { tokenForMarketMaker -= (tokenToSwap - (swapToken)); } uint256 liqToken = tokenForLiquidity / 2; uint256 liqETHToken = tokenForLiquidity - liqToken; swapToken = liqETHToken + tokenForMarketing + tokenForMarketMaker; uint256 initialETHBalance = address(this).balance; _swapTokenForETH(swapToken); uint256 newETH = (address(this).balance - initialETHBalance); uint256 liqETH = (newETH * liqETHToken) / swapToken; _addLiquidity(liqToken, liqETH); _distributeStake(address(this).balance - initialETHBalance); } function _swapTokenForETH(uint256 amount) private { _approve(address(this), address(_UniswapRouter), amount); address[] memory path = new address[](2); path[0] = address(this); path[1] = _UniswapRouter.WETH(); _UniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenamount, uint256 ETHamount) private { totalLPETH += ETHamount; _approve(address(this), address(_UniswapRouter), tokenamount); _UniswapRouter.addLiquidityETH{value: ETHamount}( address(this), tokenamount, 0, 0, address(this), block.timestamp ); } function getLimits() public view returns (uint256 balance, uint256 sell) { return (balanceLimit / 10**_decimals, sellLimit / 10**_decimals); } function getTaxes() public view returns ( uint256 marketingTax, uint256 marketMakerTax, uint256 liquidityTax, uint256 stakeTax_one, uint256 stakeTax_two, uint256 buyTax, uint256 sellTax, uint256 transferTax ) { return ( _marketingTax, _marketMakerTax, _liquidityTax, _stakeTax_one, _stakeTax_two, _buyTax, _sellTax, _transferTax ); } function getWhitelistedStatus(address AddressToCheck) public view returns (bool) { return _whiteList[AddressToCheck]; } function getAddressSellLockTimeInSeconds(address AddressToCheck) public view returns (uint256) { uint256 lockTime = _sellLock[AddressToCheck]; if (lockTime <= block.timestamp) { return 0; } return lockTime - block.timestamp; } function getSellLockTimeInSeconds() public view returns (uint256) { return sellLockTime; } ///@dev Reset cooldown for an address function AddressResetSellLock() public { _sellLock[msg.sender] = block.timestamp + sellLockTime; } ///@dev Retrieve slot 1 function FarmedTokenWithdrawSlotOne(address tkn) public { claimFarmedToken(msg.sender, tkn, 0); } ///@dev Retrieve slot 2 function FarmedTokenWithdrawSlotTwo(address tkn) public { claimFarmedToken(msg.sender, tkn, 1); } function getDividends(address addr, uint8 slot) public view returns (uint256) { if (_excludedFromDistributing[addr]) return toERCaid[addr]; return _newDividentsOf(addr, slot) + toERCaid[addr]; } bool public sellLockDisabled; uint256 public sellLockTime; bool public manualConversion; ///@dev Airdrop tokens function airdropAddresses( address[] memory addys, address token, uint256 qty ) public onlyAuth { uint256 single_drop = qty / addys.length; IERC20 airtoken = IERC20(token); bool sent; for (uint256 i; i <= (addys.length - 1); i++) { sent = airtoken.transfer(addys[i], single_drop); require(sent); sent = false; } } ///@dev Airdrop a N of addresses function airdropAddressesNative(address[] memory addys) public payable onlyAuth { uint256 qty = msg.value; uint256 single_drop = qty / addys.length; bool sent; for (uint256 i; i <= (addys.length - 1); i++) { sent = payable(addys[i]).send(single_drop); require(sent); sent = false; } } ///@dev Enable pools for a token function ControlEnabledClaims( uint8 slot, address tkn, bool booly ) public onlyAuth { is_claimable[slot][tkn] = booly; } ///@dev Rekt all the snipers function ControlBotKiller(bool booly) public onlyAuth { botKiller = booly; } ///@dev Minimum tokens to sell function ControlSetSwapTreshold(uint256 treshold) public onlyAuth { swapTreshold = treshold * 10**_decimals; } ///@dev Exclude from distribution function ControlExcludeFromDistributing(address addr, uint8 slot) public onlyAuth { require(_excludedFromDistributing[addr]); uint256 newDividents = _newDividentsOf(addr, slot); alreadyPaidShares[addr][slot] = _balances[addr] * profitPerShare[slot]; toERCaid[addr] += newDividents; _excludedFromDistributing[addr] = true; excludedAmount += _balances[addr]; } ///@dev Include into distribution function ControlIncludeToDistributing(address addr, uint8 slot) public onlyAuth { require(_excludedFromDistributing[addr]); _excludedFromDistributing[addr] = false; excludedAmount -= _balances[addr]; alreadyPaidShares[addr][slot] = _balances[addr] * profitPerShare[slot]; } ///@dev Take out the marketing balance function ControlWithdrawMarketingETH() public onlyAuth { uint256 amount = marketingBalance; marketingBalance = 0; (bool sent, ) = marketingWallet.call{value: (amount)}(""); require(sent, "withdraw failed"); } ///@dev Peg sells to the tx function ControlSwapSetSellPeg(bool setter) public onlyAuth { sellPeg = setter; } ///@dev Set marketing tax free or not function ControlSetMarketingTaxFree(address addy, bool booly) public onlyAuth { isMarketingTaxFree[addy] = booly; } ///@dev Set an address into or out marketmaker fee function ControlSetMarketMakerTaxFree(address addy, bool booly) public onlyAuth { isMarketMakerTaxFree[addy] = booly; } ///@dev Disable tax reward for address function ControlSetRewardTaxFree(address addy, bool booly) public onlyAuth { isRewardTaxFree[addy] = booly; } ///@dev Disable address balance limit function ControlSetBalanceFree(address addy, bool booly) public onlyAuth { isBalanceFree[addy] = booly; } ///@dev Enable or disable manual sell function ControlSwapSetManualLiqSell(bool setter) public onlyAuth { manualTokenToSwap = setter; } ///@dev Turn sells into manual function ControlSwapSetManualLiqSellTokens(uint256 amount) public onlyAuth { require(amount > 1 && amount < 100000000, "Values between 1 and 100000000"); manualQtyTokenToSwap = amount * 10**_decimals; } ///@dev Disable auto sells function ControlSwapSwitchManualETHConversion(bool manual) public onlyAuth { manualConversion = manual; } ///@dev Set cooldown on or off (ONCE) function ControlDisableSellLock(bool disabled) public onlyAuth { sellLockDisabled = disabled; } ///@dev Set cooldown function ControlSetSellLockTime(uint256 sellLockSeconds) public onlyAuth { require(sellLockSeconds <= MaxSellLockTime, "Sell Lock time too high"); sellLockTime = sellLockSeconds; } ///@dev Set taxes function ControlSetTaxes( uint8 buyTax, uint8 sellTax, uint8 portionTax, uint8 transferTax ) public onlyAuth { require( buyTax <= MaxTax && sellTax <= MaxTax && transferTax <= MaxTax, "taxes higher than max tax" ); _buyTax = buyTax; _sellTax = sellTax; _portionTax = portionTax; _transferTax = transferTax; } function ControlSetShares( uint8 marketingTaxes, uint8 marketMakerTaxes, uint8 liquidityTaxes, uint8 stakeTaxes_one, uint8 stakeTaxes_two) public onlyAuth { uint8 totalTax = marketingTaxes + marketMakerTaxes + liquidityTaxes + stakeTaxes_one + stakeTaxes_two; require(totalTax == 100, "total taxes needs to equal 100%"); require(marketingTaxes <= 55, "Max 55%"); require(marketMakerTaxes <= 55, "Max 45%"); require(stakeTaxes_one <= 55, "Max 45%"); require(stakeTaxes_two <= 55, "Max 45%"); _marketingTax = marketingTaxes; _marketMakerTax = marketMakerTaxes; _liquidityTax = liquidityTaxes; _stakeTax_one = stakeTaxes_one; _stakeTax_two = stakeTaxes_two; } function SetPortionLimit(uint256 _portionlimit) public onlyAuth { portionLimit = _portionlimit ; } ///@dev Manually sell and create LP function ControlCreateLPandETH() public onlyAuth { _swapContractToken(192919291929192919291929192919291929); } ///@dev Manually sell all tokens gathered function ControlSellAllTokens() public onlyAuth { sellAll = true; _swapContractToken(192919291929192919291929192919291929); sellAll = false; } ///@dev Free from fees function ControlExcludeAccountFromFees(address account) public onlyAuth { _excluded[account] = true; } ///@dev Include in fees function ControlIncludeAccountToFees(address account) public onlyAuth { _excluded[account] = true; } ///@dev Exclude from cooldown function ControlExcludeAccountFromSellLock(address account) public onlyAuth { _excludedFromSellLock[account] = true; } ///@dev Enable cooldown function ControlIncludeAccountToSellLock(address account) public onlyAuth { _excludedFromSellLock[account] = true; } ///@dev Enable or disable pool 2 for an address function ControlIncludeAccountToSubset(address account, bool booly) public onlyAuth { isAuthorized[account] = booly; } ///@dev Control all the tx, buy and sell limits function ControlUpdateLimits(uint256 newBalanceLimit, uint256 newSellLimit) public onlyAuth { newBalanceLimit = newBalanceLimit * 10**_decimals; newSellLimit = newSellLimit * 10**_decimals; balanceLimit = newBalanceLimit; sellLimit = newSellLimit; } bool public tradingEnabled; address private _liquidityTokenAddress; function setMarketingWallet(address addy) public onlyAuth { marketingWallet = addy; _excludedFromSellLock[marketingWallet] = true; } function setMarketMakingWallet(address addy) public onlyAuth { marketMakerWallet = addy; _excludedFromSellLock[marketMakerWallet] = true; } function setSlotOneWallet(address addy) public onlyAuth { rewardWallet_one = addy; _excludedFromSellLock[rewardWallet_one] = true; } function setSlotTwoWallet(address addy) public onlyAuth { rewardWallet_two = addy; _excludedFromSellLock[rewardWallet_two] = true; } ///@dev Start/stop trading function SetupEnableTrading(bool booly) public onlyAuth { tradingEnabled = booly; } ///@dev Define a new liquidity pair function SetupLiquidityTokenAddress(address liquidityTokenAddress) public onlyAuth { _liquidityTokenAddress = liquidityTokenAddress; } ///@dev Add to WL function SetupAddToWhitelist(address addressToAdd) public onlyAuth { _whiteList[addressToAdd] = true; } ///@dev Remove from whitelist function SetupRemoveFromWhitelist(address addressToRemove) public onlyAuth { _whiteList[addressToRemove] = false; } ///@dev Take back tokens stuck into the contract function rescueTokens(address tknAddress) public onlyAuth { IERC20 token = IERC20(tknAddress); uint256 ourBalance = token.balanceOf(address(this)); require(ourBalance > 0, "No tokens in our balance"); token.transfer(msg.sender, ourBalance); } ///@dev Disable PERMANENTLY blacklist functions function disableBlacklist() public onlyAuth { isBlacklist = false; } ///@dev Blacklist someone function setBlacklistedAddress(address toBlacklist) public onlyAuth { _blacklist[toBlacklist] = true; } ///@dev Remove from blacklist function removeBlacklistedAddress(address toRemove) public onlyAuth { _blacklist[toRemove] = false; } ///@dev Block or unblock an address /* function setisOpen(address addy, bool booly) public onlyAuth { isOpen[addy] = booly; }*/ function setisOpenArry(address[] calldata addy, bool[] calldata booly) public onlyAuth { for(uint256 i; i < addy.length; i++){ isOpen[addy[i]] = booly[i]; } } function setImpactTreshold(uint8 inty) public onlyAuth { impactTreshold = inty; } function enableImpactTreshold(bool booly) public onlyAuth { enabledImpactTreshold = booly; } ///@dev Remove the balance remaining in the contract function ControlRemoveRemainingETH() public onlyAuth { (bool sent, ) = owner.call{value: (address(this).balance)}(""); require(sent); } receive() external payable {} fallback() external payable {} function getowner() external view override returns (address) { return owner; } function name() external pure override returns (string memory) { return _name; } function symbol() external pure override returns (string memory) { return _symbol; } function decimals() external pure override returns (uint8) { return _decimals; } function totalSupply() external view override returns (uint256) { return _circulatingSupply; } function balanceOf(address account) external view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address _owner, address spender) external view override returns (uint256) { return _allowances[_owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve( address _owner, address spender, uint256 amount ) private { require(_owner != address(0), "Approve from zero"); require(spender != address(0), "Approve to zero"); _allowances[_owner][spender] = amount; emit Approval(_owner, spender, amount); } function transferFrom( address sender, address recipient, uint256 amount ) external override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][msg.sender]; require(currentAllowance >= amount, "Transfer > allowance"); _approve(sender, msg.sender, currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { _approve( msg.sender, spender, _allowances[msg.sender][spender] + addedValue ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { uint256 currentAllowance = _allowances[msg.sender][spender]; require(currentAllowance >= subtractedValue, "<0 allowance"); _approve(msg.sender, spender, currentAllowance - subtractedValue); return true; } }
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":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"}],"name":"OnWithdrawFarmedToken","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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"AddressResetSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BalanceLimitDivider","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"ControlBotKiller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ControlCreateLPandETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"disabled","type":"bool"}],"name":"ControlDisableSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"slot","type":"uint8"},{"internalType":"address","name":"tkn","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ControlEnabledClaims","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ControlExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ControlExcludeAccountFromSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"slot","type":"uint8"}],"name":"ControlExcludeFromDistributing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ControlIncludeAccountToFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ControlIncludeAccountToSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ControlIncludeAccountToSubset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"slot","type":"uint8"}],"name":"ControlIncludeToDistributing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ControlRemoveRemainingETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ControlSellAllTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ControlSetBalanceFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ControlSetMarketMakerTaxFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ControlSetMarketingTaxFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ControlSetRewardTaxFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellLockSeconds","type":"uint256"}],"name":"ControlSetSellLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"marketingTaxes","type":"uint8"},{"internalType":"uint8","name":"marketMakerTaxes","type":"uint8"},{"internalType":"uint8","name":"liquidityTaxes","type":"uint8"},{"internalType":"uint8","name":"stakeTaxes_one","type":"uint8"},{"internalType":"uint8","name":"stakeTaxes_two","type":"uint8"}],"name":"ControlSetShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"treshold","type":"uint256"}],"name":"ControlSetSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint8","name":"portionTax","type":"uint8"},{"internalType":"uint8","name":"transferTax","type":"uint8"}],"name":"ControlSetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"setter","type":"bool"}],"name":"ControlSwapSetManualLiqSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ControlSwapSetManualLiqSellTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"setter","type":"bool"}],"name":"ControlSwapSetSellPeg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"ControlSwapSwitchManualETHConversion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBalanceLimit","type":"uint256"},{"internalType":"uint256","name":"newSellLimit","type":"uint256"}],"name":"ControlUpdateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ControlWithdrawMarketingETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Dead","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tkn","type":"address"}],"name":"FarmedTokenWithdrawSlotOne","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tkn","type":"address"}],"name":"FarmedTokenWithdrawSlotTwo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxSellLockTime","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_portionlimit","type":"uint256"}],"name":"SetPortionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressToAdd","type":"address"}],"name":"SetupAddToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"SetupEnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityTokenAddress","type":"address"}],"name":"SetupLiquidityTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressToRemove","type":"address"}],"name":"SetupRemoveFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UniswapRouterAddy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getTotalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addys","type":"address[]"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"airdropAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addys","type":"address[]"}],"name":"airdropAddressesNative","outputs":[],"stateMutability":"payable","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":"addy","type":"address"}],"name":"authorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balanceLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"enableImpactTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enabledImpactTreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"AddressToCheck","type":"address"}],"name":"getAddressSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"slot","type":"uint8"}],"name":"getDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimits","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxes","outputs":[{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"marketMakerTax","type":"uint256"},{"internalType":"uint256","name":"liquidityTax","type":"uint256"},{"internalType":"uint256","name":"stakeTax_one","type":"uint256"},{"internalType":"uint256","name":"stakeTax_two","type":"uint256"},{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"},{"internalType":"uint256","name":"transferTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"AddressToCheck","type":"address"}],"name":"getWhitelistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"get_paid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"sell","type":"bool"}],"name":"get_weth_price_impact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getowner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"impactTreshold","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isExcludedFromDistributing","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"address","name":"","type":"address"}],"name":"is_claimable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualConversion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketMakerBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketMakerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"oneDistributingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"portionLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"profitPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"qtyTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tknAddress","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardWallet_one","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardWallet_two","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toBlacklist","type":"address"}],"name":"setBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"inty","type":"uint8"}],"name":"setImpactTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"setMarketMakingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"setSlotOneWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"setSlotTwoWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"set_authorized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addy","type":"address[]"},{"internalType":"bool[]","name":"booly","type":"bool[]"}],"name":"setisOpenArry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLPETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPayouts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"twoDistributingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d9081179092556003805482169092179091556014805460ff191660011790556016805482167348727b7f64badb9fe12fcdf95b20a0ee681a065d179055601780548216733584584b89352a40998652f1ef2ee3878ad2fdfc1790556018805490911673db2471b955e0ee21f2d91bd2b07d57a2f52b0d56179055601980547401a1e89769ea01919d61530360b2210e656dd263a06001600160a81b0319909116179055620000da6009600a62000607565b620000eb9064174876e800620006c8565b601b55601b54601c55601b54601d556064601d54600a6200010d9190620006c8565b6200011991906200059b565b601e819055601f556021805460ff19169055601d546064906200013e90600a620006c8565b6200014a91906200059b565b6022556023805462ffffff1916620101001790553480156200016b57600080fd5b50601b54336000818152600460209081526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3602580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200021357600080fd5b505afa15801562000228573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024e919062000569565b6001600160a01b031663c9c6539630602560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ac57600080fd5b505afa158015620002c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e7919062000569565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200033057600080fd5b505af115801562000345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036b919062000569565b602480546001600160a01b0319166001600160a01b0392831617905560165481166000908152600f60209081526040808320805460ff1990811660019081179092556017548616855282852080548216831790556018548616855282852080548216831790556019805490961685529184208054831682179055737a250d5630b4cf539739df2c5dacb4c659f2488d90935260109091527feb1861b62122c39d7846b597c3c20bac261ab9032a26ee7d64c4c7f875977df8805490911690911790556200043b6009600a62000607565b6200044c9064174876e800620006c8565b6200045891906200059b565b601c5560c86200046b6009600a62000607565b6200047c9064174876e800620006c8565b6200048891906200059b565b601d5550605a603255602380546301000000600160681b0319166c021e1e1401130f140f0000000017905560146020908155336000818152600d83526040808220805460ff1990811660019081179092556025546001600160a01b039081168552601087528385208054831684179055602454168452828420805482168317905530845282842080548216831790557f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b69805482168317905581546001600160a01b031916851782559383529382905290208054909116909117905562000700565b6000602082840312156200057c57600080fd5b81516001600160a01b03811681146200059457600080fd5b9392505050565b600082620005b957634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620005ff578160001904821115620005e357620005e3620006ea565b80851615620005f157918102915b93841c9390800290620005c3565b509250929050565b60006200059460ff8416836000826200062357506001620006c2565b816200063257506000620006c2565b81600181146200064b5760028114620006565762000676565b6001915050620006c2565b60ff8411156200066a576200066a620006ea565b50506001821b620006c2565b5060208310610133831016604e8410600b84101617156200069b575081810a620006c2565b620006a78383620005be565b8060001904821115620006be57620006be620006ea565b0290505b92915050565b6000816000190483118215151615620006e557620006e5620006ea565b500290565b634e487b7160e01b600052601160045260246000fd5b61573280620007106000396000f3fe6080604052600436106105595760003560e01c8063762bb282116102c1578063b76289b81161017a578063e00aee41116100dc578063eb8e88631161008d578063eb8e8863146107ec578063ec8bb4f414610b1b578063ef8a4a8114611227578063f80683ae14611247578063f88b0e4614611267578063fe0174bd1461127d578063ffe94e4f1461129b57005b8063e00aee4114611187578063e117ff6e14610b3b578063e46b9df4146111a7578063e52fb9ec146111c7578063e69e03ee146111dd578063e77bf5f8146111f2578063ea43915e1461121257005b8063d10a0ff411610136578063d10a0ff414611072578063d42d650914611092578063d8e8de34146110a8578063d9f1dd41146110e1578063da68eeb614611101578063db09034814611121578063dd62ed3e1461114157005b8063b76289b814610fa2578063b918161114610fc2578063bb733d4e14610ffb578063bcbe95bb14611011578063c56f4ff514611031578063c6ec02fb1461105257005b806390d0878411610223578063a5740b2b116101df578063a5740b2b14610eca578063a9059cbb14610eea578063a921783714610f0a578063aab286fe14610f1f578063afbfaf8714610f34578063b3ae178e14610f6f578063b70a829314610f8f57005b806390d0878414610ded57806395d89b4114610e0d578063965f8a8814610e3a578063a20623ce14610e5a578063a25af82614610e8a578063a457c2d714610eaa57005b80638708516c1161027d5780638708516c14610d185780638728ecd114610d38578063887c60fb14610d585780638cff858014610d775780638eb26ecd14610d975780638eecb63014610db75780638fec412f14610dd757005b8063762bb28214610c7257806377bcfec414610c885780637acfe0ec14610ca85780637bcaa42114610cc857806382c4767b14610ce857806386d0ada814610cfe57005b80633d8dbf5d1161041357806358780a82116103755780636f89e409116103315780636f89e40914610b7c57806370798ca514610ba657806370a0823114610bc657806371259fb514610bfc57806373babfe614610c1c57806374dc3fac14610c3257806375f0a87414610c5257005b806358780a8214610ac557806358e5536514610ae55780635d098b3814610afb57806361172f9514610b1b57806363d8291a14610b3b57806367d84c2514610b5b57005b80634ada218b116103cf5780634ada218b146109dd5780634cdaf0ae146109fc5780634d97ba7514610a1c5780634f91e48c14610a325780635110af0514610a4857806352187e5514610a755780635575e68314610a9557005b80633d8dbf5d1461092a5780634089b1701461094a5780634394c0ec146109605780634464ddd014610988578063470bf673146109a857806348e53164146109c857005b80632973ef2d116104bc57806331b242d41161047857806331b242d4146108475780633328b721146108675780633478154b14610887578063378c71581461089c578063378c8ada146108d457806339509351146108f45780633cc39b7a1461091457005b80632973ef2d146107045780632bfe8742146107935780632dd66eee146107b3578063311a8697146107ec578063313ce567146108135780633190c5061461082757005b80631285073c116105165780631285073c1461065057806314f879f41461066f57806318160ddd146106845780631eb25d131461069957806323b872dd146106ae578063257ab075146106ce5780632772f175146106e457005b8062ae3bf814610562578063052258511461058257806306fdde0314610597578063095ea7b3146105d85780630d59ccf5146106085780630fd99e161461062857005b3661056057005b005b34801561056e57600080fd5b5061056061057d366004614dee565b6112bb565b34801561058e57600080fd5b50610560611457565b3480156105a357600080fd5b5060408051808201909152600681526543686172676560d01b60208201525b6040516105cf9190615305565b60405180910390f35b3480156105e457600080fd5b506105f86105f3366004614ed0565b6114cc565b60405190151581526020016105cf565b34801561061457600080fd5b5061056061062336600461510e565b6114e3565b34801561063457600080fd5b5061063d60c881565b60405161ffff90911681526020016105cf565b34801561065c57600080fd5b506032545b6040519081526020016105cf565b34801561067b57600080fd5b50610560611561565b34801561069057600080fd5b50601b54610661565b3480156106a557600080fd5b50610661611608565b3480156106ba57600080fd5b506105f86106c9366004614e61565b611626565b3480156106da57600080fd5b5061066160275481565b3480156106f057600080fd5b506106616106ff366004614efc565b6116bd565b34801561071057600080fd5b506023546040805160ff600160481b840481168252600160381b840481166020830152600160401b8404811692820192909252600160501b830482166060820152600160581b83048216608082015263010000008304821660a08201526401000000008304821660c0820152600160301b9092041660e0820152610100016105cf565b34801561079f57600080fd5b506105606107ae366004614ea2565b6118b4565b3480156107bf57600080fd5b506105f86107ce366004614dee565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156107f857600080fd5b50610801601981565b60405160ff90911681526020016105cf565b34801561081f57600080fd5b506009610801565b34801561083357600080fd5b50610560610842366004615227565b611923565b34801561085357600080fd5b5061056061086236600461505d565b611b0a565b34801561087357600080fd5b50610560610882366004614dee565b611b61565b34801561089357600080fd5b5061063d607881565b3480156108a857600080fd5b506016546108bc906001600160a01b031681565b6040516001600160a01b0390911681526020016105cf565b3480156108e057600080fd5b506105606108ef3660046151d3565b611bc6565b34801561090057600080fd5b506105f861090f366004614ed0565b611ce1565b34801561092057600080fd5b5061066160305481565b34801561093657600080fd5b50610560610945366004614dee565b611d18565b34801561095657600080fd5b50610661602a5481565b34801561096c57600080fd5b506108bc737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561099457600080fd5b506105606109a336600461505d565b611d80565b3480156109b457600080fd5b506105606109c3366004614dee565b611dde565b3480156109d457600080fd5b50610560611e5c565b3480156109e957600080fd5b506033546105f890610100900460ff1681565b348015610a0857600080fd5b50610560610a17366004614dee565b611e7b565b348015610a2857600080fd5b5061066160205481565b348015610a3e57600080fd5b50610661601d5481565b348015610a5457600080fd5b50610661610a6336600461515e565b60266020526000908152604090205481565b348015610a8157600080fd5b50610560610a9036600461505d565b611ee9565b348015610aa157600080fd5b506105f8610ab0366004614dee565b60136020526000908152604090205460ff1681565b348015610ad157600080fd5b50610560610ae036600461505d565b611f40565b348015610af157600080fd5b50610661602b5481565b348015610b0757600080fd5b50610560610b16366004614dee565b611f9e565b348015610b2757600080fd5b50610560610b36366004614dee565b61201c565b348015610b4757600080fd5b50610560610b56366004614dee565b612084565b348015610b6757600080fd5b506023546105f890600160681b900460ff1681565b348015610b8857600080fd5b50610b916120ec565b604080519283526020830191909152016105cf565b348015610bb257600080fd5b506017546108bc906001600160a01b031681565b348015610bd257600080fd5b50610661610be1366004614dee565b6001600160a01b031660009081526004602052604090205490565b348015610c0857600080fd5b50610560610c17366004614dee565b612129565b348015610c2857600080fd5b5061066160285481565b348015610c3e57600080fd5b50610560610c4d366004614f3e565b612135565b348015610c5e57600080fd5b506018546108bc906001600160a01b031681565b348015610c7e57600080fd5b50610661601c5481565b348015610c9457600080fd5b50610560610ca336600461515e565b612276565b348015610cb457600080fd5b506019546108bc906001600160a01b031681565b348015610cd457600080fd5b50610560610ce3366004614ea2565b6122da565b348015610cf457600080fd5b506108bc61dead81565b348015610d0a57600080fd5b506033546105f89060ff1681565b348015610d2457600080fd5b50610560610d33366004614ea2565b612349565b348015610d4457600080fd5b50610661610d53366004614dee565b6123b8565b348015610d6457600080fd5b506031546105f890610100900460ff1681565b348015610d8357600080fd5b50610560610d92366004614ea2565b6123f2565b348015610da357600080fd5b50610560610db23660046150dc565b612461565b348015610dc357600080fd5b50610560610dd236600461505d565b6124f5565b348015610de357600080fd5b50610661602c5481565b348015610df957600080fd5b50610560610e0836600461505d565b612553565b348015610e1957600080fd5b506040805180820190915260048152634348524760e01b60208201526105c2565b348015610e4657600080fd5b50610560610e55366004614ea2565b6125b5565b348015610e6657600080fd5b506105f8610e75366004614dee565b60126020526000908152604090205460ff1681565b348015610e9657600080fd5b50610661610ea5366004614dee565b612624565b348015610eb657600080fd5b506105f8610ec5366004614ed0565b61267b565b348015610ed657600080fd5b50610560610ee53660046150dc565b6126f7565b348015610ef657600080fd5b506105f8610f05366004614ed0565b6127b6565b348015610f1657600080fd5b506105606127c3565b348015610f2b57600080fd5b50610560612821565b348015610f4057600080fd5b506105f8610f4f366004615179565b601560209081526000928352604080842090915290825290205460ff1681565b348015610f7b57600080fd5b50610560610f8a3660046150dc565b61290a565b610560610f9d366004614fdf565b612953565b348015610fae57600080fd5b50610560610fbd366004614dee565b612a2c565b348015610fce57600080fd5b506105f8610fdd366004614dee565b6001600160a01b031660009081526020819052604090205460ff1690565b34801561100757600080fd5b50610661601e5481565b34801561101d57600080fd5b5061056061102c366004614dee565b612a94565b34801561103d57600080fd5b5060235461080190600160601b900460ff1681565b34801561105e57600080fd5b5061056061106d366004614dee565b612b12565b34801561107e57600080fd5b5061056061108d366004614ea2565b612b90565b34801561109e57600080fd5b5061066160295481565b3480156110b457600080fd5b506105f86110c3366004614dee565b6001600160a01b03166000908152600e602052604090205460ff1690565b3480156110ed57600080fd5b506105606110fc366004614dee565b612bff565b34801561110d57600080fd5b5061056061111c3660046150dc565b612c0b565b34801561112d57600080fd5b5061056061113c366004614f73565b612c6b565b34801561114d57600080fd5b5061066161115c366004614e28565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561119357600080fd5b506105606111a2366004615195565b612d46565b3480156111b357600080fd5b506105606111c2366004615014565b612dc4565b3480156111d357600080fd5b50610661601f5481565b3480156111e957600080fd5b50610661612f0a565b3480156111fe57600080fd5b5061056061120d366004614dee565b612f1e565b34801561121e57600080fd5b50610560612f83565b34801561123357600080fd5b5061056061124236600461505d565b612fd3565b34801561125357600080fd5b50610560611262366004614f3e565b613033565b34801561127357600080fd5b5061066160325481565b34801561128957600080fd5b506001546001600160a01b03166108bc565b3480156112a757600080fd5b506106616112b6366004614f3e565b61313e565b3360009081526020819052604090205460ff16806112e357506001546001600160a01b031633145b6113085760405162461bcd60e51b81526004016112ff90615400565b60405180910390fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b15801561134c57600080fd5b505afa158015611360573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138491906150f5565b9050600081116113d15760405162461bcd60e51b81526020600482015260186024820152774e6f20746f6b656e7320696e206f75722062616c616e636560401b60448201526064016112ff565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b15801561141957600080fd5b505af115801561142d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611451919061507a565b50505050565b3360009081526020819052604090205460ff168061147f57506001546001600160a01b031633145b61149b5760405162461bcd60e51b81526004016112ff90615400565b6023805460ff191660011790556114c06e2527a7cbd749423f3d225f7c8158196131ab565b6023805460ff19169055565b60006114d9338484613404565b5060015b92915050565b3360009081526020819052604090205460ff168061150b57506001546001600160a01b031633145b6115275760405162461bcd60e51b81526004016112ff90615400565b6115336009600a615541565b61153d90836155ec565b915061154b6009600a615541565b61155590826155ec565b601c9290925550601d55565b3360009081526020819052604090205460ff168061158957506001546001600160a01b031633145b6115a55760405162461bcd60e51b81526004016112ff90615400565b6001546040516000916001600160a01b03169047908381818185875af1925050503d80600081146115f2576040519150601f19603f3d011682016040523d82523d6000602084013e6115f7565b606091505b505090508061160557600080fd5b50565b6116146009600a615541565b6116239064174876e8006155ec565b81565b60006116338484846134f7565b6001600160a01b03841660009081526005602090815260408083203384529091529020548281101561169e5760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b60448201526064016112ff565b6116b285336116ad868561562c565b613404565b506001949350505050565b600080600360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561170e57600080fd5b505afa158015611722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117469190614e0b565b6001600160a01b031663e6a4390586600360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a357600080fd5b505afa1580156117b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117db9190614e0b565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561182157600080fd5b505afa158015611835573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118599190614e0b565b90506000806118678361396d565b9150915060008515611890578261187f8860646155ec565b61188991906154c8565b90506118a9565b8161189c8860646155ec565b6118a691906154c8565b90505b979650505050505050565b3360009081526020819052604090205460ff16806118dc57506001546001600160a01b031633145b6118f85760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff168061194b57506001546001600160a01b031633145b6119675760405162461bcd60e51b81526004016112ff90615400565b6000818385611976888a6154a3565b61198091906154a3565b61198a91906154a3565b61199491906154a3565b90508060ff166064146119e95760405162461bcd60e51b815260206004820152601f60248201527f746f74616c207461786573206e6565647320746f20657175616c20313030250060448201526064016112ff565b60378660ff161115611a275760405162461bcd60e51b81526020600482015260076024820152664d61782035352560c81b60448201526064016112ff565b60378560ff161115611a4b5760405162461bcd60e51b81526004016112ff906153b5565b60378360ff161115611a6f5760405162461bcd60e51b81526004016112ff906153b5565b60378260ff161115611a935760405162461bcd60e51b81526004016112ff906153b5565b506023805462ff00ff60381b1916600160481b60ff9788160260ff60381b191617600160381b958716959095029490941762ff00ff60401b1916600160401b9386169390930260ff60501b191692909217600160501b918516919091021760ff60581b1916600160581b9190931602919091179055565b3360009081526020819052604090205460ff1680611b3257506001546001600160a01b031633145b611b4e5760405162461bcd60e51b81526004016112ff90615400565b6033805460ff1916911515919091179055565b3360009081526020819052604090205460ff1680611b8957506001546001600160a01b031633145b611ba55760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03166000908152601260205260409020805460ff19169055565b3360009081526020819052604090205460ff1680611bee57506001546001600160a01b031633145b611c0a5760405162461bcd60e51b81526004016112ff90615400565b601960ff851611801590611c225750601960ff841611155b8015611c325750601960ff821611155b611c7a5760405162461bcd60e51b81526020600482015260196024820152780e8c2f0cae640d0d2ced0cae440e8d0c2dc40dac2f040e8c2f603b1b60448201526064016112ff565b6023805464ffff0000001916630100000060ff9687160264ff00000000191617640100000000948616949094029390931766ffff00000000001916600160281b9285169290920266ff000000000000191691909117600160301b9190931602919091179055565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916114d99185906116ad90869061548b565b3360009081526020819052604090205460ff1680611d4057506001546001600160a01b031633145b611d5c5760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03166000908152601260205260409020805460ff19166001179055565b3360009081526020819052604090205460ff1680611da857506001546001600160a01b031633145b611dc45760405162461bcd60e51b81526004016112ff90615400565b602380549115156101000261ff0019909216919091179055565b3360009081526020819052604090205460ff1680611e0657506001546001600160a01b031633145b611e225760405162461bcd60e51b81526004016112ff90615400565b601980546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b603254611e69904261548b565b33600090815260066020526040902055565b3360009081526020819052604090205460ff1680611ea357506001546001600160a01b031633145b611ebf5760405162461bcd60e51b81526004016112ff90615400565b603380546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3360009081526020819052604090205460ff1680611f1157506001546001600160a01b031633145b611f2d5760405162461bcd60e51b81526004016112ff90615400565b6021805460ff1916911515919091179055565b3360009081526020819052604090205460ff1680611f6857506001546001600160a01b031633145b611f845760405162461bcd60e51b81526004016112ff90615400565b603380549115156101000261ff0019909216919091179055565b3360009081526020819052604090205460ff1680611fc657506001546001600160a01b031633145b611fe25760405162461bcd60e51b81526004016112ff90615400565b601880546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff168061204457506001546001600160a01b031633145b6120605760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff16806120ac57506001546001600160a01b031633145b6120c85760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000806120fb6009600a615541565b601c5461210891906154c8565b6121146009600a615541565b601d5461212191906154c8565b915091509091565b61160533826001613a05565b3360009081526020819052604090205460ff168061215d57506001546001600160a01b031633145b6121795760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03821660009081526010602052604090205460ff1661219e57600080fd5b60006121aa8383613dc7565b60ff83166000908152602660209081526040808320546001600160a01b03881684526004909252909120549192506121e1916155ec565b6001600160a01b0384166000818152602e6020908152604080832060ff88168452825280832094909455918152602f909152908120805483929061222690849061548b565b90915550506001600160a01b0383166000908152601060209081526040808320805460ff191660011790556004909152812054601180549192909161226c90849061548b565b9091555050505050565b3360009081526020819052604090205460ff168061229e57506001546001600160a01b031633145b6122ba5760405162461bcd60e51b81526004016112ff90615400565b6023805460ff909216600160601b0260ff60601b19909216919091179055565b3360009081526020819052604090205460ff168061230257506001546001600160a01b031633145b61231e5760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff168061237157506001546001600160a01b031633145b61238d5760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600660205260408120544281116123e15750600092915050565b6123eb428261562c565b9392505050565b3360009081526020819052604090205460ff168061241a57506001546001600160a01b031633145b6124365760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff168061248957506001546001600160a01b031633145b6124a55760405162461bcd60e51b81526004016112ff90615400565b60788111156124f05760405162461bcd60e51b81526020600482015260176024820152760a6cad8d84098dec6d640e8d2daca40e8dede40d0d2ced604b1b60448201526064016112ff565b603255565b3360009081526020819052604090205460ff168061251d57506001546001600160a01b031633145b6125395760405162461bcd60e51b81526004016112ff90615400565b603180549115156101000261ff0019909216919091179055565b3360009081526020819052604090205460ff168061257b57506001546001600160a01b031633145b6125975760405162461bcd60e51b81526004016112ff90615400565b60238054911515600160681b0260ff60681b19909216919091179055565b3360009081526020819052604090205460ff16806125dd57506001546001600160a01b031633145b6125f95760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152601a6020908152604080832054600490925282205460ff9091169060268361265c84600161560b565b60ff1660ff168152602001908152602001600020546123eb91906155ec565b3360009081526005602090815260408083206001600160a01b0386168452909152812054828110156126de5760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b60448201526064016112ff565b6126ed33856116ad868561562c565b5060019392505050565b3360009081526020819052604090205460ff168061271f57506001546001600160a01b031633145b61273b5760405162461bcd60e51b81526004016112ff90615400565b60018111801561274e57506305f5e10081105b61279a5760405162461bcd60e51b815260206004820152601e60248201527f56616c756573206265747765656e203120616e6420313030303030303030000060448201526064016112ff565b6127a66009600a615541565b6127b090826155ec565b60225550565b60006114d93384846134f7565b3360009081526020819052604090205460ff16806127eb57506001546001600160a01b031633145b6128075760405162461bcd60e51b81526004016112ff90615400565b61281f6e2527a7cbd749423f3d225f7c8158196131ab565b565b3360009081526020819052604090205460ff168061284957506001546001600160a01b031633145b6128655760405162461bcd60e51b81526004016112ff90615400565b602b80546000918290556018546040519192916001600160a01b039091169083908381818185875af1925050503d80600081146128be576040519150601f19603f3d011682016040523d82523d6000602084013e6128c3565b606091505b50509050806129065760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b60448201526064016112ff565b5050565b3360009081526020819052604090205460ff168061293257506001546001600160a01b031633145b61294e5760405162461bcd60e51b81526004016112ff90615400565b602055565b3360009081526020819052604090205460ff168061297b57506001546001600160a01b031633145b6129975760405162461bcd60e51b81526004016112ff90615400565b805134906000906129a890836154c8565b90506000805b600185516129bc919061562c565b8111612a25578481815181106129d4576129d46156ad565b60200260200101516001600160a01b03166108fc849081150290604051600060405180830381858888f19350505050915081612a0f57600080fd5b6000915080612a1d81615666565b9150506129ae565b5050505050565b3360009081526020819052604090205460ff1680612a5457506001546001600160a01b031633145b612a705760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff1680612abc57506001546001600160a01b031633145b612ad85760405162461bcd60e51b81526004016112ff90615400565b601680546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff1680612b3a57506001546001600160a01b031633145b612b565760405162461bcd60e51b81526004016112ff90615400565b601780546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff1680612bb857506001546001600160a01b031633145b612bd45760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b61160533826000613a05565b3360009081526020819052604090205460ff1680612c3357506001546001600160a01b031633145b612c4f5760405162461bcd60e51b81526004016112ff90615400565b612c5b6009600a615541565b612c6590826155ec565b601f5550565b3360009081526020819052604090205460ff1680612c9357506001546001600160a01b031633145b612caf5760405162461bcd60e51b81526004016112ff90615400565b60005b83811015612a2557828282818110612ccc57612ccc6156ad565b9050602002016020810190612ce1919061505d565b60136000878785818110612cf757612cf76156ad565b9050602002016020810190612d0c9190614dee565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580612d3e81615666565b915050612cb2565b3360009081526020819052604090205460ff1680612d6e57506001546001600160a01b031633145b612d8a5760405162461bcd60e51b81526004016112ff90615400565b60ff90921660009081526015602090815260408083206001600160a01b03909416835292905220805491151560ff19909216919091179055565b3360009081526020819052604090205460ff1680612dec57506001546001600160a01b031633145b612e085760405162461bcd60e51b81526004016112ff90615400565b6000835182612e1791906154c8565b9050826000805b60018751612e2c919061562c565b8111612f0157826001600160a01b031663a9059cbb888381518110612e5357612e536156ad565b6020026020010151866040518363ffffffff1660e01b8152600401612e8d9291906001600160a01b03929092168252602082015260400190565b602060405180830381600087803b158015612ea757600080fd5b505af1158015612ebb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edf919061507a565b915081612eeb57600080fd5b6000915080612ef981615666565b915050612e1e565b50505050505050565b601b54601154600091906114dd908261562c565b3360009081526020819052604090205460ff1680612f4657506001546001600160a01b031633145b612f625760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b3360009081526020819052604090205460ff1680612fab57506001546001600160a01b031633145b612fc75760405162461bcd60e51b81526004016112ff90615400565b6014805460ff19169055565b3360009081526020819052604090205460ff1680612ffb57506001546001600160a01b031633145b6130175760405162461bcd60e51b81526004016112ff90615400565b60238054911515620100000262ff000019909216919091179055565b3360009081526020819052604090205460ff168061305b57506001546001600160a01b031633145b6130775760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03821660009081526010602052604090205460ff1661309c57600080fd5b6001600160a01b0382166000908152601060209081526040808320805460ff19169055600490915281205460118054919290916130da90849061562c565b909155505060ff81166000908152602660209081526040808320546001600160a01b038616845260049092529091205461311491906155ec565b6001600160a01b039092166000908152602e6020908152604080832060ff90941683529290522055565b6001600160a01b03821660009081526010602052604081205460ff161561317e57506001600160a01b0382166000908152602f60205260409020546114dd565b6001600160a01b0383166000908152602f60205260409020546131a18484613dc7565b6123eb919061548b565b6031805460ff1916600117905530600090815260046020526040812054602354909190600160581b810460ff908116916131f691600160501b8204811691600160401b9004166154a3565b61320091906154a3565b60ff16905060006064601d54600a61321891906155ec565b61322291906154c8565b60215490915060ff161561323557506022545b602354610100900460ff16801561325c578482111561325c576132596002866154c8565b91505b602380548215156101000261ff00198216811790925560ff9182169116171561328d5761328a60018561562c565b91505b8184108061329d575061ffff8316155b156132ab57505050506133f7565b60235460009061ffff8516906132cb90600160401b900460ff16856155ec565b6132d591906154c8565b60235490915060009061ffff8616906132f890600160481b900460ff16866155ec565b61330291906154c8565b60235490915060009061ffff87169061332590600160381b900460ff16876155ec565b61332f91906154c8565b905060008161333e848661548b565b613348919061548b565b90508581106133685761335b818761562c565b613365908361562c565b91505b60006133756002866154c8565b90506000613383828761562c565b905083613390868361548b565b61339a919061548b565b9250476133a684613e80565b60006133b2824761562c565b90506000856133c185846155ec565b6133cb91906154c8565b90506133d78582613fe8565b6133e96133e4844761562c565b6140b8565b505050505050505050505050505b506031805460ff19169055565b6001600160a01b03831661344e5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b60448201526064016112ff565b6001600160a01b0382166134965760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b60448201526064016112ff565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166135425760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b60448201526064016112ff565b6001600160a01b03821661358b5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b60448201526064016112ff565b60145460ff1615613613576001600160a01b03831660009081526012602052604090205460ff161580156135d857506001600160a01b03821660009081526012602052604090205460ff16155b6136135760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b60448201526064016112ff565b6001600160a01b0383166000908152600d602052604081205460ff168061365257506001600160a01b0383166000908152600d602052604090205460ff165b8061367557506001600160a01b03841660009081526020819052604090205460ff165b8061369857506001600160a01b03831660009081526020819052604090205460ff165b905060006001600160a01b0385163014806136bb57506001600160a01b03841630145b6024549091506000906001600160a01b0387811691161480156136fa57506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b8061373957506024546001600160a01b03868116911614801561373957506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b9050600082806137465750815b8061374e5750835b15613782576001600160a01b0387166000908152601a602052604090205461377e9088908890889060ff1661439a565b5060015b80612f0157603354610100900460ff166138da576024546000906001600160a01b03898116911614806137d157506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b6024549091506000906001600160a01b038981169116148061380f57506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b6001600160a01b038a1660009081526013602052604090205490915060ff168061385157506001600160a01b03881660009081526013602052604090205460ff165b8061386b57503360009081526013602052604090205460ff165b156138825761387d898989858561443d565b6138d3565b603354610100900460ff166138d35760405162461bcd60e51b81526020600482015260176024820152761d1c98591a5b99c81b9bdd081e595d08195b98589b1959604a1b60448201526064016112ff565b5050612f01565b6024546000906001600160a01b038981169116148061391557506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b6024549091506000906001600160a01b038981169116148061395357506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b9050613962898989858561443d565b505050505050505050565b60008060008390506000806000836001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156139b357600080fd5b505afa1580156139c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139eb9190615097565b506001600160701b03918216999116975095505050505050565b8060ff1660011415613a70576001600160a01b0383166000908152600b602052604090205460ff16613a705760405162461bcd60e51b8152602060048201526014602482015273165bdd4818d85b9d081c995d1c9a595d99481a5d60621b60448201526064016112ff565b602554600160a01b900460ff1615613a8757600080fd5b60ff80821660009081526015602090815260408083206001600160a01b038716845290915290205416613aea5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08195b98589b195960aa1b60448201526064016112ff565b6025805460ff60a01b1916600160a01b1790556001600160a01b03831660009081526010602052604081205460ff1615613b4157506001600160a01b0383166000908152602f602052604081208054919055613be0565b6000613b4d8584613dc7565b6001600160a01b03861660009081526004602090815260408083205460ff88168452602690925290912054919250613b84916155ec565b6001600160a01b0386166000818152602e6020908152604080832060ff89168452825280832094909455918152602f9091522054613bc390829061548b565b6001600160a01b0386166000908152602f60205260408120559150505b80613bf85750506025805460ff60a01b191690555050565b80602a6000828254613c0a919061548b565b90915550506040805160028082526060820183526000926020830190803683375050602554604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015613c7457600080fd5b505afa158015613c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cac9190614e0b565b81600081518110613cbf57613cbf6156ad565b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110613cf357613cf36156ad565b6001600160a01b03928316602091820292909201015260255460405163b6f9de9560e01b815291169063b6f9de95908490613d399060009086908b9042906004016152d0565b6000604051808303818588803b158015613d5257600080fd5b505af1158015613d66573d6000803e3d6000fd5b5050604080518681526001600160a01b038a1660208201527f460fc16181df188bd2ec645a6f6dbe15da259268704aabeb2a5b7c94427e71299450019150613dab9050565b60405180910390a150506025805460ff60a01b19169055505050565b6001600160a01b03821660009081526004602090815260408083205460ff8516845260269092528220548291613dfc916155ec565b6001600160a01b0385166000908152602e6020908152604080832060ff88168452909152902054909150811015613e375760009150506114dd565b6001600160a01b0384166000908152602e6020908152604080832060ff87168452909152902054600160401b90613e6e908361562c565b613e7891906154c8565b949350505050565b602554613e989030906001600160a01b031683613404565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613ecd57613ecd6156ad565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613f2157600080fd5b505afa158015613f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f599190614e0b565b81600181518110613f6c57613f6c6156ad565b6001600160a01b03928316602091820292909201015260255460405163791ac94760e01b815291169063791ac94790613fb290859060009086903090429060040161544f565b600060405180830381600087803b158015613fcc57600080fd5b505af1158015613fe0573d6000803e3d6000fd5b505050505050565b8060306000828254613ffa919061548b565b90915550506025546140179030906001600160a01b031684613404565b60255460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561407f57600080fd5b505af1158015614093573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a259190615130565b6023546000906064906140d590600160481b900460ff16846155ec565b6140df91906154c8565b6023549091506000906064906140ff90600160381b900460ff16856155ec565b61410991906154c8565b60235490915060009060649061412990600160501b900460ff16866155ec565b61413391906154c8565b60235490915060009060649061415390600160581b900460ff16876155ec565b61415d91906154c8565b905083602b6000828254614171919061548b565b9250508190555082602c600082825461418a919061548b565b909155505081156142905781602760008282546141a7919061548b565b9250508190555081602860008282546141c0919061548b565b90915550600090506141d0612f0a565b9050806141f45782602b60008282546141e9919061548b565b9091555061428e9050565b80614203600160401b856155ec565b61420d91906154c8565b600080805260266020527f673668fde1539921a3231470503848f53fc614c057a2345bc3a2f36758a6d3ac805490919061424890849061548b565b90915550506000808052602d6020527f6648a85983aca0407b603b260cacb25b5e5e8e5194522de3d8a800e71aa41bae805485929061428890849061548b565b90915550505b505b8015612a255780602760008282546142a8919061548b565b9250508190555080602960008282546142c1919061548b565b90915550600090506142d1612f0a565b9050806142f55781602b60008282546142ea919061548b565b90915550613fe09050565b80614304600160401b846155ec565b61430e91906154c8565b6001600090815260266020527f5db1dfd2ced311e642486f0e890a646498a1bdee1ad9403b0a73141af8a4c411805490919061434b90849061548b565b909155505060016000908152602d6020527f4ac3b22e31fa68474eb1c8f858cd447cf1ee3eef7de8984178a7afa8f4fe0cd0805484929061438d90849061548b565b9091555050505050505050565b6001600160a01b038416600090815260046020526040902054828110156143d35760405162461bcd60e51b81526004016112ff9061535a565b6143de858484614a9e565b6143e9848484614b9e565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161442e91815260200190565b60405180910390a35050505050565b6001600160a01b038086166000818152601a6020908152604080832054948916835260049091528082205492825290205460ff90921691858110156144945760405162461bcd60e51b81526004016112ff9061535a565b6000806144a23089886116bd565b90508515614678576001600160a01b038a166000908152600f602052604090205460ff1661453b576001600160a01b038a16600090815260066020526040902054421015806144f85750603154610100900460ff165b6145145760405162461bcd60e51b81526004016112ff90615423565b603254614521904261548b565b6001600160a01b038b166000908152600660205260409020555b601d5488111561455d5760405162461bcd60e51b81526004016112ff9061538c565b3060009081526004602052604081205461dead82527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd546145a06009600a615541565b6145af9064174876e8006155ec565b6145b9919061562c565b6145c3919061562c565b905060006020546103e8836145d891906154c8565b6145e291906155ec565b9050808a106145ff57602354600160281b900460ff169350614671565b60235460ff640100000000820481169550600160681b90910416156146715760235460ff600160601b9091048116908416111561467157602354600160601b900460ff16600261465085600361560b565b61465a91906154dc565b6146649190615643565b61466e90856154a3565b93505b50506148a1565b8615614790576001600160a01b038a166000908152600f602052604090205460ff1661470f576001600160a01b038a16600090815260066020526040902054421015806146cc5750603154610100900460ff165b6146e85760405162461bcd60e51b81526004016112ff90615423565b6032546146f5904261548b565b6001600160a01b038b166000908152600660205260409020555b601d548811156147315760405162461bcd60e51b81526004016112ff9061538c565b6001600160a01b03891660009081526007602052604090205460ff1661477c57601c5461475e898661548b565b111561477c5760405162461bcd60e51b81526004016112ff906153d6565b6023546301000000900460ff1691506148a1565b6001600160a01b03891660009081526007602052604090205460ff166147db57601c546147bd898661548b565b11156147db5760405162461bcd60e51b81526004016112ff906153d6565b601c546147e8898661548b565b11156148065760405162461bcd60e51b81526004016112ff906153d6565b6001600160a01b038a166000908152600f602052604090205460ff16614891576001600160a01b038a16600090815260066020526040902054421015806148545750603154610100900460ff165b6148915760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b60448201526064016112ff565b602354600160301b900460ff1691505b6024546001600160a01b038b81169116148015906148c2575060335460ff16155b80156148d1575060315460ff16155b80156148da5750855b1561490057601f54306000908152600460205260409020541061490057614900886131ab565b6001600160a01b038a16600090815260096020526040812054819060ff166149315750602354600160481b900460ff165b6001600160a01b038c1660009081526008602052604090205460ff1661496157602354600160381b900460ff1691505b600060ff881661497e5750602354600160501b900460ff16614999565b8760ff16600114156149995750602354600160581b900460ff165b6023546000906149f5908d90889060ff600160581b8204811691600160501b81048216918a916149d2918b91600160401b9004166154a3565b6149dc91906154a3565b6149e691906154a3565b6149f091906154a3565b614ca0565b90506000614a03828e61562c565b9050614a108f8e8c614a9e565b3060009081526004602052604081208054849290614a2f90849061548b565b90915550614a4090508e828c614b9e565b8d6001600160a01b03168f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614a8591815260200190565b60405180910390a3505050505050505050505050505050565b6001600160a01b038316600090815260046020526040812054614ac290849061562c565b6001600160a01b03851660009081526010602052604090205490915060ff1615614b07576001600160a01b039093166000908152600460205260409020929092555050565b6000614b138584613dc7565b6001600160a01b038616600090815260046020908152604080832086905560ff871683526026909152902054909150614b4d9083906155ec565b6001600160a01b0386166000818152602e6020908152604080832060ff89168452825280832094909455918152602f9091529081208054839290614b9290849061548b565b90915550505050505050565b6001600160a01b038316600090815260046020526040812054614bc290849061548b565b6001600160a01b03851660009081526010602052604090205490915060ff1615614c07576001600160a01b039093166000908152600460205260409020929092555050565b6000614c138584613dc7565b60ff8416600090815260266020526040902054909150614c349083906155ec565b6001600160a01b0386166000818152602e6020908152604080832060ff89168452825280832094909455918152602f9091529081208054839290614c7990849061548b565b9091555050506001600160a01b039093166000908152600460205260409020929092555050565b60006127108260ff168460ff1686614cb891906155ec565b613e6e91906155ec565b8035614ccd816156d9565b919050565b60008083601f840112614ce457600080fd5b50813567ffffffffffffffff811115614cfc57600080fd5b6020830191508360208260051b8501011115614d1757600080fd5b9250929050565b600082601f830112614d2f57600080fd5b8135602067ffffffffffffffff80831115614d4c57614d4c6156c3565b8260051b604051601f19603f83011681018181108482111715614d7157614d716156c3565b60405284815283810192508684018288018501891015614d9057600080fd5b600092505b85831015614dba57614da681614cc2565b845292840192600192909201918401614d95565b50979650505050505050565b80516001600160701b0381168114614ccd57600080fd5b803560ff81168114614ccd57600080fd5b600060208284031215614e0057600080fd5b81356123eb816156d9565b600060208284031215614e1d57600080fd5b81516123eb816156d9565b60008060408385031215614e3b57600080fd5b8235614e46816156d9565b91506020830135614e56816156d9565b809150509250929050565b600080600060608486031215614e7657600080fd5b8335614e81816156d9565b92506020840135614e91816156d9565b929592945050506040919091013590565b60008060408385031215614eb557600080fd5b8235614ec0816156d9565b91506020830135614e56816156ee565b60008060408385031215614ee357600080fd5b8235614eee816156d9565b946020939093013593505050565b600080600060608486031215614f1157600080fd5b8335614f1c816156d9565b9250602084013591506040840135614f33816156ee565b809150509250925092565b60008060408385031215614f5157600080fd5b8235614f5c816156d9565b9150614f6a60208401614ddd565b90509250929050565b60008060008060408587031215614f8957600080fd5b843567ffffffffffffffff80821115614fa157600080fd5b614fad88838901614cd2565b90965094506020870135915080821115614fc657600080fd5b50614fd387828801614cd2565b95989497509550505050565b600060208284031215614ff157600080fd5b813567ffffffffffffffff81111561500857600080fd5b613e7884828501614d1e565b60008060006060848603121561502957600080fd5b833567ffffffffffffffff81111561504057600080fd5b61504c86828701614d1e565b9350506020840135614e91816156d9565b60006020828403121561506f57600080fd5b81356123eb816156ee565b60006020828403121561508c57600080fd5b81516123eb816156ee565b6000806000606084860312156150ac57600080fd5b6150b584614dc6565b92506150c360208501614dc6565b9150604084015163ffffffff81168114614f3357600080fd5b6000602082840312156150ee57600080fd5b5035919050565b60006020828403121561510757600080fd5b5051919050565b6000806040838503121561512157600080fd5b50508035926020909101359150565b60008060006060848603121561514557600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561517057600080fd5b6123eb82614ddd565b6000806040838503121561518c57600080fd5b614e4683614ddd565b6000806000606084860312156151aa57600080fd5b6151b384614ddd565b925060208401356151c3816156d9565b91506040840135614f33816156ee565b600080600080608085870312156151e957600080fd5b6151f285614ddd565b935061520060208601614ddd565b925061520e60408601614ddd565b915061521c60608601614ddd565b905092959194509250565b600080600080600060a0868803121561523f57600080fd5b61524886614ddd565b945061525660208701614ddd565b935061526460408701614ddd565b925061527260608701614ddd565b915061528060808701614ddd565b90509295509295909350565b600081518084526020808501945080840160005b838110156152c55781516001600160a01b0316875295820195908201906001016152a0565b509495945050505050565b8481526080602082015260006152e9608083018661528c565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b8181101561533257858101830151858201604001528201615316565b81811115615344576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601890820152775472616e7366657220657863656564732062616c616e636560401b604082015260600190565b6020808252600f908201526e223ab6b810383937ba32b1ba34b7b760891b604082015260600190565b6020808252600790820152664d61782034352560c81b604082015260600190565b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b60208082526012908201527153656c6c657220696e2073656c6c4c6f636b60701b604082015260600190565b85815284602082015260a06040820152600061546e60a083018661528c565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561549e5761549e615681565b500190565b600060ff821660ff84168060ff038211156154c0576154c0615681565b019392505050565b6000826154d7576154d7615697565b500490565b600060ff8316806154ef576154ef615697565b8060ff84160491505092915050565b600181815b8085111561553957816000190482111561551f5761551f615681565b8085161561552c57918102915b93841c9390800290615503565b509250929050565b60006123eb60ff84168360008261555a575060016114dd565b81615567575060006114dd565b816001811461557d5760028114615587576155a3565b60019150506114dd565b60ff84111561559857615598615681565b50506001821b6114dd565b5060208310610133831016604e8410600b84101617156155c6575081810a6114dd565b6155d083836154fe565b80600019048211156155e4576155e4615681565b029392505050565b600081600019048311821515161561560657615606615681565b500290565b600060ff821660ff84168160ff04811182151516156155e4576155e4615681565b60008282101561563e5761563e615681565b500390565b600060ff821660ff84168082101561565d5761565d615681565b90039392505050565b600060001982141561567a5761567a615681565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461160557600080fd5b801515811461160557600080fdfea2646970667358221220598bc14e46d07e381585480acb4ab97bb69cfc8fc206e896137a8220e9bdf09564736f6c63430008070033
Deployed Bytecode
0x6080604052600436106105595760003560e01c8063762bb282116102c1578063b76289b81161017a578063e00aee41116100dc578063eb8e88631161008d578063eb8e8863146107ec578063ec8bb4f414610b1b578063ef8a4a8114611227578063f80683ae14611247578063f88b0e4614611267578063fe0174bd1461127d578063ffe94e4f1461129b57005b8063e00aee4114611187578063e117ff6e14610b3b578063e46b9df4146111a7578063e52fb9ec146111c7578063e69e03ee146111dd578063e77bf5f8146111f2578063ea43915e1461121257005b8063d10a0ff411610136578063d10a0ff414611072578063d42d650914611092578063d8e8de34146110a8578063d9f1dd41146110e1578063da68eeb614611101578063db09034814611121578063dd62ed3e1461114157005b8063b76289b814610fa2578063b918161114610fc2578063bb733d4e14610ffb578063bcbe95bb14611011578063c56f4ff514611031578063c6ec02fb1461105257005b806390d0878411610223578063a5740b2b116101df578063a5740b2b14610eca578063a9059cbb14610eea578063a921783714610f0a578063aab286fe14610f1f578063afbfaf8714610f34578063b3ae178e14610f6f578063b70a829314610f8f57005b806390d0878414610ded57806395d89b4114610e0d578063965f8a8814610e3a578063a20623ce14610e5a578063a25af82614610e8a578063a457c2d714610eaa57005b80638708516c1161027d5780638708516c14610d185780638728ecd114610d38578063887c60fb14610d585780638cff858014610d775780638eb26ecd14610d975780638eecb63014610db75780638fec412f14610dd757005b8063762bb28214610c7257806377bcfec414610c885780637acfe0ec14610ca85780637bcaa42114610cc857806382c4767b14610ce857806386d0ada814610cfe57005b80633d8dbf5d1161041357806358780a82116103755780636f89e409116103315780636f89e40914610b7c57806370798ca514610ba657806370a0823114610bc657806371259fb514610bfc57806373babfe614610c1c57806374dc3fac14610c3257806375f0a87414610c5257005b806358780a8214610ac557806358e5536514610ae55780635d098b3814610afb57806361172f9514610b1b57806363d8291a14610b3b57806367d84c2514610b5b57005b80634ada218b116103cf5780634ada218b146109dd5780634cdaf0ae146109fc5780634d97ba7514610a1c5780634f91e48c14610a325780635110af0514610a4857806352187e5514610a755780635575e68314610a9557005b80633d8dbf5d1461092a5780634089b1701461094a5780634394c0ec146109605780634464ddd014610988578063470bf673146109a857806348e53164146109c857005b80632973ef2d116104bc57806331b242d41161047857806331b242d4146108475780633328b721146108675780633478154b14610887578063378c71581461089c578063378c8ada146108d457806339509351146108f45780633cc39b7a1461091457005b80632973ef2d146107045780632bfe8742146107935780632dd66eee146107b3578063311a8697146107ec578063313ce567146108135780633190c5061461082757005b80631285073c116105165780631285073c1461065057806314f879f41461066f57806318160ddd146106845780631eb25d131461069957806323b872dd146106ae578063257ab075146106ce5780632772f175146106e457005b8062ae3bf814610562578063052258511461058257806306fdde0314610597578063095ea7b3146105d85780630d59ccf5146106085780630fd99e161461062857005b3661056057005b005b34801561056e57600080fd5b5061056061057d366004614dee565b6112bb565b34801561058e57600080fd5b50610560611457565b3480156105a357600080fd5b5060408051808201909152600681526543686172676560d01b60208201525b6040516105cf9190615305565b60405180910390f35b3480156105e457600080fd5b506105f86105f3366004614ed0565b6114cc565b60405190151581526020016105cf565b34801561061457600080fd5b5061056061062336600461510e565b6114e3565b34801561063457600080fd5b5061063d60c881565b60405161ffff90911681526020016105cf565b34801561065c57600080fd5b506032545b6040519081526020016105cf565b34801561067b57600080fd5b50610560611561565b34801561069057600080fd5b50601b54610661565b3480156106a557600080fd5b50610661611608565b3480156106ba57600080fd5b506105f86106c9366004614e61565b611626565b3480156106da57600080fd5b5061066160275481565b3480156106f057600080fd5b506106616106ff366004614efc565b6116bd565b34801561071057600080fd5b506023546040805160ff600160481b840481168252600160381b840481166020830152600160401b8404811692820192909252600160501b830482166060820152600160581b83048216608082015263010000008304821660a08201526401000000008304821660c0820152600160301b9092041660e0820152610100016105cf565b34801561079f57600080fd5b506105606107ae366004614ea2565b6118b4565b3480156107bf57600080fd5b506105f86107ce366004614dee565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156107f857600080fd5b50610801601981565b60405160ff90911681526020016105cf565b34801561081f57600080fd5b506009610801565b34801561083357600080fd5b50610560610842366004615227565b611923565b34801561085357600080fd5b5061056061086236600461505d565b611b0a565b34801561087357600080fd5b50610560610882366004614dee565b611b61565b34801561089357600080fd5b5061063d607881565b3480156108a857600080fd5b506016546108bc906001600160a01b031681565b6040516001600160a01b0390911681526020016105cf565b3480156108e057600080fd5b506105606108ef3660046151d3565b611bc6565b34801561090057600080fd5b506105f861090f366004614ed0565b611ce1565b34801561092057600080fd5b5061066160305481565b34801561093657600080fd5b50610560610945366004614dee565b611d18565b34801561095657600080fd5b50610661602a5481565b34801561096c57600080fd5b506108bc737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561099457600080fd5b506105606109a336600461505d565b611d80565b3480156109b457600080fd5b506105606109c3366004614dee565b611dde565b3480156109d457600080fd5b50610560611e5c565b3480156109e957600080fd5b506033546105f890610100900460ff1681565b348015610a0857600080fd5b50610560610a17366004614dee565b611e7b565b348015610a2857600080fd5b5061066160205481565b348015610a3e57600080fd5b50610661601d5481565b348015610a5457600080fd5b50610661610a6336600461515e565b60266020526000908152604090205481565b348015610a8157600080fd5b50610560610a9036600461505d565b611ee9565b348015610aa157600080fd5b506105f8610ab0366004614dee565b60136020526000908152604090205460ff1681565b348015610ad157600080fd5b50610560610ae036600461505d565b611f40565b348015610af157600080fd5b50610661602b5481565b348015610b0757600080fd5b50610560610b16366004614dee565b611f9e565b348015610b2757600080fd5b50610560610b36366004614dee565b61201c565b348015610b4757600080fd5b50610560610b56366004614dee565b612084565b348015610b6757600080fd5b506023546105f890600160681b900460ff1681565b348015610b8857600080fd5b50610b916120ec565b604080519283526020830191909152016105cf565b348015610bb257600080fd5b506017546108bc906001600160a01b031681565b348015610bd257600080fd5b50610661610be1366004614dee565b6001600160a01b031660009081526004602052604090205490565b348015610c0857600080fd5b50610560610c17366004614dee565b612129565b348015610c2857600080fd5b5061066160285481565b348015610c3e57600080fd5b50610560610c4d366004614f3e565b612135565b348015610c5e57600080fd5b506018546108bc906001600160a01b031681565b348015610c7e57600080fd5b50610661601c5481565b348015610c9457600080fd5b50610560610ca336600461515e565b612276565b348015610cb457600080fd5b506019546108bc906001600160a01b031681565b348015610cd457600080fd5b50610560610ce3366004614ea2565b6122da565b348015610cf457600080fd5b506108bc61dead81565b348015610d0a57600080fd5b506033546105f89060ff1681565b348015610d2457600080fd5b50610560610d33366004614ea2565b612349565b348015610d4457600080fd5b50610661610d53366004614dee565b6123b8565b348015610d6457600080fd5b506031546105f890610100900460ff1681565b348015610d8357600080fd5b50610560610d92366004614ea2565b6123f2565b348015610da357600080fd5b50610560610db23660046150dc565b612461565b348015610dc357600080fd5b50610560610dd236600461505d565b6124f5565b348015610de357600080fd5b50610661602c5481565b348015610df957600080fd5b50610560610e0836600461505d565b612553565b348015610e1957600080fd5b506040805180820190915260048152634348524760e01b60208201526105c2565b348015610e4657600080fd5b50610560610e55366004614ea2565b6125b5565b348015610e6657600080fd5b506105f8610e75366004614dee565b60126020526000908152604090205460ff1681565b348015610e9657600080fd5b50610661610ea5366004614dee565b612624565b348015610eb657600080fd5b506105f8610ec5366004614ed0565b61267b565b348015610ed657600080fd5b50610560610ee53660046150dc565b6126f7565b348015610ef657600080fd5b506105f8610f05366004614ed0565b6127b6565b348015610f1657600080fd5b506105606127c3565b348015610f2b57600080fd5b50610560612821565b348015610f4057600080fd5b506105f8610f4f366004615179565b601560209081526000928352604080842090915290825290205460ff1681565b348015610f7b57600080fd5b50610560610f8a3660046150dc565b61290a565b610560610f9d366004614fdf565b612953565b348015610fae57600080fd5b50610560610fbd366004614dee565b612a2c565b348015610fce57600080fd5b506105f8610fdd366004614dee565b6001600160a01b031660009081526020819052604090205460ff1690565b34801561100757600080fd5b50610661601e5481565b34801561101d57600080fd5b5061056061102c366004614dee565b612a94565b34801561103d57600080fd5b5060235461080190600160601b900460ff1681565b34801561105e57600080fd5b5061056061106d366004614dee565b612b12565b34801561107e57600080fd5b5061056061108d366004614ea2565b612b90565b34801561109e57600080fd5b5061066160295481565b3480156110b457600080fd5b506105f86110c3366004614dee565b6001600160a01b03166000908152600e602052604090205460ff1690565b3480156110ed57600080fd5b506105606110fc366004614dee565b612bff565b34801561110d57600080fd5b5061056061111c3660046150dc565b612c0b565b34801561112d57600080fd5b5061056061113c366004614f73565b612c6b565b34801561114d57600080fd5b5061066161115c366004614e28565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561119357600080fd5b506105606111a2366004615195565b612d46565b3480156111b357600080fd5b506105606111c2366004615014565b612dc4565b3480156111d357600080fd5b50610661601f5481565b3480156111e957600080fd5b50610661612f0a565b3480156111fe57600080fd5b5061056061120d366004614dee565b612f1e565b34801561121e57600080fd5b50610560612f83565b34801561123357600080fd5b5061056061124236600461505d565b612fd3565b34801561125357600080fd5b50610560611262366004614f3e565b613033565b34801561127357600080fd5b5061066160325481565b34801561128957600080fd5b506001546001600160a01b03166108bc565b3480156112a757600080fd5b506106616112b6366004614f3e565b61313e565b3360009081526020819052604090205460ff16806112e357506001546001600160a01b031633145b6113085760405162461bcd60e51b81526004016112ff90615400565b60405180910390fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b15801561134c57600080fd5b505afa158015611360573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138491906150f5565b9050600081116113d15760405162461bcd60e51b81526020600482015260186024820152774e6f20746f6b656e7320696e206f75722062616c616e636560401b60448201526064016112ff565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b15801561141957600080fd5b505af115801561142d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611451919061507a565b50505050565b3360009081526020819052604090205460ff168061147f57506001546001600160a01b031633145b61149b5760405162461bcd60e51b81526004016112ff90615400565b6023805460ff191660011790556114c06e2527a7cbd749423f3d225f7c8158196131ab565b6023805460ff19169055565b60006114d9338484613404565b5060015b92915050565b3360009081526020819052604090205460ff168061150b57506001546001600160a01b031633145b6115275760405162461bcd60e51b81526004016112ff90615400565b6115336009600a615541565b61153d90836155ec565b915061154b6009600a615541565b61155590826155ec565b601c9290925550601d55565b3360009081526020819052604090205460ff168061158957506001546001600160a01b031633145b6115a55760405162461bcd60e51b81526004016112ff90615400565b6001546040516000916001600160a01b03169047908381818185875af1925050503d80600081146115f2576040519150601f19603f3d011682016040523d82523d6000602084013e6115f7565b606091505b505090508061160557600080fd5b50565b6116146009600a615541565b6116239064174876e8006155ec565b81565b60006116338484846134f7565b6001600160a01b03841660009081526005602090815260408083203384529091529020548281101561169e5760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b60448201526064016112ff565b6116b285336116ad868561562c565b613404565b506001949350505050565b600080600360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561170e57600080fd5b505afa158015611722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117469190614e0b565b6001600160a01b031663e6a4390586600360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a357600080fd5b505afa1580156117b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117db9190614e0b565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561182157600080fd5b505afa158015611835573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118599190614e0b565b90506000806118678361396d565b9150915060008515611890578261187f8860646155ec565b61188991906154c8565b90506118a9565b8161189c8860646155ec565b6118a691906154c8565b90505b979650505050505050565b3360009081526020819052604090205460ff16806118dc57506001546001600160a01b031633145b6118f85760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff168061194b57506001546001600160a01b031633145b6119675760405162461bcd60e51b81526004016112ff90615400565b6000818385611976888a6154a3565b61198091906154a3565b61198a91906154a3565b61199491906154a3565b90508060ff166064146119e95760405162461bcd60e51b815260206004820152601f60248201527f746f74616c207461786573206e6565647320746f20657175616c20313030250060448201526064016112ff565b60378660ff161115611a275760405162461bcd60e51b81526020600482015260076024820152664d61782035352560c81b60448201526064016112ff565b60378560ff161115611a4b5760405162461bcd60e51b81526004016112ff906153b5565b60378360ff161115611a6f5760405162461bcd60e51b81526004016112ff906153b5565b60378260ff161115611a935760405162461bcd60e51b81526004016112ff906153b5565b506023805462ff00ff60381b1916600160481b60ff9788160260ff60381b191617600160381b958716959095029490941762ff00ff60401b1916600160401b9386169390930260ff60501b191692909217600160501b918516919091021760ff60581b1916600160581b9190931602919091179055565b3360009081526020819052604090205460ff1680611b3257506001546001600160a01b031633145b611b4e5760405162461bcd60e51b81526004016112ff90615400565b6033805460ff1916911515919091179055565b3360009081526020819052604090205460ff1680611b8957506001546001600160a01b031633145b611ba55760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03166000908152601260205260409020805460ff19169055565b3360009081526020819052604090205460ff1680611bee57506001546001600160a01b031633145b611c0a5760405162461bcd60e51b81526004016112ff90615400565b601960ff851611801590611c225750601960ff841611155b8015611c325750601960ff821611155b611c7a5760405162461bcd60e51b81526020600482015260196024820152780e8c2f0cae640d0d2ced0cae440e8d0c2dc40dac2f040e8c2f603b1b60448201526064016112ff565b6023805464ffff0000001916630100000060ff9687160264ff00000000191617640100000000948616949094029390931766ffff00000000001916600160281b9285169290920266ff000000000000191691909117600160301b9190931602919091179055565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916114d99185906116ad90869061548b565b3360009081526020819052604090205460ff1680611d4057506001546001600160a01b031633145b611d5c5760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03166000908152601260205260409020805460ff19166001179055565b3360009081526020819052604090205460ff1680611da857506001546001600160a01b031633145b611dc45760405162461bcd60e51b81526004016112ff90615400565b602380549115156101000261ff0019909216919091179055565b3360009081526020819052604090205460ff1680611e0657506001546001600160a01b031633145b611e225760405162461bcd60e51b81526004016112ff90615400565b601980546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b603254611e69904261548b565b33600090815260066020526040902055565b3360009081526020819052604090205460ff1680611ea357506001546001600160a01b031633145b611ebf5760405162461bcd60e51b81526004016112ff90615400565b603380546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3360009081526020819052604090205460ff1680611f1157506001546001600160a01b031633145b611f2d5760405162461bcd60e51b81526004016112ff90615400565b6021805460ff1916911515919091179055565b3360009081526020819052604090205460ff1680611f6857506001546001600160a01b031633145b611f845760405162461bcd60e51b81526004016112ff90615400565b603380549115156101000261ff0019909216919091179055565b3360009081526020819052604090205460ff1680611fc657506001546001600160a01b031633145b611fe25760405162461bcd60e51b81526004016112ff90615400565b601880546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff168061204457506001546001600160a01b031633145b6120605760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff16806120ac57506001546001600160a01b031633145b6120c85760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000806120fb6009600a615541565b601c5461210891906154c8565b6121146009600a615541565b601d5461212191906154c8565b915091509091565b61160533826001613a05565b3360009081526020819052604090205460ff168061215d57506001546001600160a01b031633145b6121795760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03821660009081526010602052604090205460ff1661219e57600080fd5b60006121aa8383613dc7565b60ff83166000908152602660209081526040808320546001600160a01b03881684526004909252909120549192506121e1916155ec565b6001600160a01b0384166000818152602e6020908152604080832060ff88168452825280832094909455918152602f909152908120805483929061222690849061548b565b90915550506001600160a01b0383166000908152601060209081526040808320805460ff191660011790556004909152812054601180549192909161226c90849061548b565b9091555050505050565b3360009081526020819052604090205460ff168061229e57506001546001600160a01b031633145b6122ba5760405162461bcd60e51b81526004016112ff90615400565b6023805460ff909216600160601b0260ff60601b19909216919091179055565b3360009081526020819052604090205460ff168061230257506001546001600160a01b031633145b61231e5760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff168061237157506001546001600160a01b031633145b61238d5760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600660205260408120544281116123e15750600092915050565b6123eb428261562c565b9392505050565b3360009081526020819052604090205460ff168061241a57506001546001600160a01b031633145b6124365760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff168061248957506001546001600160a01b031633145b6124a55760405162461bcd60e51b81526004016112ff90615400565b60788111156124f05760405162461bcd60e51b81526020600482015260176024820152760a6cad8d84098dec6d640e8d2daca40e8dede40d0d2ced604b1b60448201526064016112ff565b603255565b3360009081526020819052604090205460ff168061251d57506001546001600160a01b031633145b6125395760405162461bcd60e51b81526004016112ff90615400565b603180549115156101000261ff0019909216919091179055565b3360009081526020819052604090205460ff168061257b57506001546001600160a01b031633145b6125975760405162461bcd60e51b81526004016112ff90615400565b60238054911515600160681b0260ff60681b19909216919091179055565b3360009081526020819052604090205460ff16806125dd57506001546001600160a01b031633145b6125f95760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152601a6020908152604080832054600490925282205460ff9091169060268361265c84600161560b565b60ff1660ff168152602001908152602001600020546123eb91906155ec565b3360009081526005602090815260408083206001600160a01b0386168452909152812054828110156126de5760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b60448201526064016112ff565b6126ed33856116ad868561562c565b5060019392505050565b3360009081526020819052604090205460ff168061271f57506001546001600160a01b031633145b61273b5760405162461bcd60e51b81526004016112ff90615400565b60018111801561274e57506305f5e10081105b61279a5760405162461bcd60e51b815260206004820152601e60248201527f56616c756573206265747765656e203120616e6420313030303030303030000060448201526064016112ff565b6127a66009600a615541565b6127b090826155ec565b60225550565b60006114d93384846134f7565b3360009081526020819052604090205460ff16806127eb57506001546001600160a01b031633145b6128075760405162461bcd60e51b81526004016112ff90615400565b61281f6e2527a7cbd749423f3d225f7c8158196131ab565b565b3360009081526020819052604090205460ff168061284957506001546001600160a01b031633145b6128655760405162461bcd60e51b81526004016112ff90615400565b602b80546000918290556018546040519192916001600160a01b039091169083908381818185875af1925050503d80600081146128be576040519150601f19603f3d011682016040523d82523d6000602084013e6128c3565b606091505b50509050806129065760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b60448201526064016112ff565b5050565b3360009081526020819052604090205460ff168061293257506001546001600160a01b031633145b61294e5760405162461bcd60e51b81526004016112ff90615400565b602055565b3360009081526020819052604090205460ff168061297b57506001546001600160a01b031633145b6129975760405162461bcd60e51b81526004016112ff90615400565b805134906000906129a890836154c8565b90506000805b600185516129bc919061562c565b8111612a25578481815181106129d4576129d46156ad565b60200260200101516001600160a01b03166108fc849081150290604051600060405180830381858888f19350505050915081612a0f57600080fd5b6000915080612a1d81615666565b9150506129ae565b5050505050565b3360009081526020819052604090205460ff1680612a5457506001546001600160a01b031633145b612a705760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff1680612abc57506001546001600160a01b031633145b612ad85760405162461bcd60e51b81526004016112ff90615400565b601680546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff1680612b3a57506001546001600160a01b031633145b612b565760405162461bcd60e51b81526004016112ff90615400565b601780546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff1680612bb857506001546001600160a01b031633145b612bd45760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b61160533826000613a05565b3360009081526020819052604090205460ff1680612c3357506001546001600160a01b031633145b612c4f5760405162461bcd60e51b81526004016112ff90615400565b612c5b6009600a615541565b612c6590826155ec565b601f5550565b3360009081526020819052604090205460ff1680612c9357506001546001600160a01b031633145b612caf5760405162461bcd60e51b81526004016112ff90615400565b60005b83811015612a2557828282818110612ccc57612ccc6156ad565b9050602002016020810190612ce1919061505d565b60136000878785818110612cf757612cf76156ad565b9050602002016020810190612d0c9190614dee565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580612d3e81615666565b915050612cb2565b3360009081526020819052604090205460ff1680612d6e57506001546001600160a01b031633145b612d8a5760405162461bcd60e51b81526004016112ff90615400565b60ff90921660009081526015602090815260408083206001600160a01b03909416835292905220805491151560ff19909216919091179055565b3360009081526020819052604090205460ff1680612dec57506001546001600160a01b031633145b612e085760405162461bcd60e51b81526004016112ff90615400565b6000835182612e1791906154c8565b9050826000805b60018751612e2c919061562c565b8111612f0157826001600160a01b031663a9059cbb888381518110612e5357612e536156ad565b6020026020010151866040518363ffffffff1660e01b8152600401612e8d9291906001600160a01b03929092168252602082015260400190565b602060405180830381600087803b158015612ea757600080fd5b505af1158015612ebb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edf919061507a565b915081612eeb57600080fd5b6000915080612ef981615666565b915050612e1e565b50505050505050565b601b54601154600091906114dd908261562c565b3360009081526020819052604090205460ff1680612f4657506001546001600160a01b031633145b612f625760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b3360009081526020819052604090205460ff1680612fab57506001546001600160a01b031633145b612fc75760405162461bcd60e51b81526004016112ff90615400565b6014805460ff19169055565b3360009081526020819052604090205460ff1680612ffb57506001546001600160a01b031633145b6130175760405162461bcd60e51b81526004016112ff90615400565b60238054911515620100000262ff000019909216919091179055565b3360009081526020819052604090205460ff168061305b57506001546001600160a01b031633145b6130775760405162461bcd60e51b81526004016112ff90615400565b6001600160a01b03821660009081526010602052604090205460ff1661309c57600080fd5b6001600160a01b0382166000908152601060209081526040808320805460ff19169055600490915281205460118054919290916130da90849061562c565b909155505060ff81166000908152602660209081526040808320546001600160a01b038616845260049092529091205461311491906155ec565b6001600160a01b039092166000908152602e6020908152604080832060ff90941683529290522055565b6001600160a01b03821660009081526010602052604081205460ff161561317e57506001600160a01b0382166000908152602f60205260409020546114dd565b6001600160a01b0383166000908152602f60205260409020546131a18484613dc7565b6123eb919061548b565b6031805460ff1916600117905530600090815260046020526040812054602354909190600160581b810460ff908116916131f691600160501b8204811691600160401b9004166154a3565b61320091906154a3565b60ff16905060006064601d54600a61321891906155ec565b61322291906154c8565b60215490915060ff161561323557506022545b602354610100900460ff16801561325c578482111561325c576132596002866154c8565b91505b602380548215156101000261ff00198216811790925560ff9182169116171561328d5761328a60018561562c565b91505b8184108061329d575061ffff8316155b156132ab57505050506133f7565b60235460009061ffff8516906132cb90600160401b900460ff16856155ec565b6132d591906154c8565b60235490915060009061ffff8616906132f890600160481b900460ff16866155ec565b61330291906154c8565b60235490915060009061ffff87169061332590600160381b900460ff16876155ec565b61332f91906154c8565b905060008161333e848661548b565b613348919061548b565b90508581106133685761335b818761562c565b613365908361562c565b91505b60006133756002866154c8565b90506000613383828761562c565b905083613390868361548b565b61339a919061548b565b9250476133a684613e80565b60006133b2824761562c565b90506000856133c185846155ec565b6133cb91906154c8565b90506133d78582613fe8565b6133e96133e4844761562c565b6140b8565b505050505050505050505050505b506031805460ff19169055565b6001600160a01b03831661344e5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b60448201526064016112ff565b6001600160a01b0382166134965760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b60448201526064016112ff565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166135425760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b60448201526064016112ff565b6001600160a01b03821661358b5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b60448201526064016112ff565b60145460ff1615613613576001600160a01b03831660009081526012602052604090205460ff161580156135d857506001600160a01b03821660009081526012602052604090205460ff16155b6136135760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b60448201526064016112ff565b6001600160a01b0383166000908152600d602052604081205460ff168061365257506001600160a01b0383166000908152600d602052604090205460ff165b8061367557506001600160a01b03841660009081526020819052604090205460ff165b8061369857506001600160a01b03831660009081526020819052604090205460ff165b905060006001600160a01b0385163014806136bb57506001600160a01b03841630145b6024549091506000906001600160a01b0387811691161480156136fa57506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b8061373957506024546001600160a01b03868116911614801561373957506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b9050600082806137465750815b8061374e5750835b15613782576001600160a01b0387166000908152601a602052604090205461377e9088908890889060ff1661439a565b5060015b80612f0157603354610100900460ff166138da576024546000906001600160a01b03898116911614806137d157506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b6024549091506000906001600160a01b038981169116148061380f57506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b6001600160a01b038a1660009081526013602052604090205490915060ff168061385157506001600160a01b03881660009081526013602052604090205460ff165b8061386b57503360009081526013602052604090205460ff165b156138825761387d898989858561443d565b6138d3565b603354610100900460ff166138d35760405162461bcd60e51b81526020600482015260176024820152761d1c98591a5b99c81b9bdd081e595d08195b98589b1959604a1b60448201526064016112ff565b5050612f01565b6024546000906001600160a01b038981169116148061391557506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b6024549091506000906001600160a01b038981169116148061395357506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b9050613962898989858561443d565b505050505050505050565b60008060008390506000806000836001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156139b357600080fd5b505afa1580156139c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139eb9190615097565b506001600160701b03918216999116975095505050505050565b8060ff1660011415613a70576001600160a01b0383166000908152600b602052604090205460ff16613a705760405162461bcd60e51b8152602060048201526014602482015273165bdd4818d85b9d081c995d1c9a595d99481a5d60621b60448201526064016112ff565b602554600160a01b900460ff1615613a8757600080fd5b60ff80821660009081526015602090815260408083206001600160a01b038716845290915290205416613aea5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08195b98589b195960aa1b60448201526064016112ff565b6025805460ff60a01b1916600160a01b1790556001600160a01b03831660009081526010602052604081205460ff1615613b4157506001600160a01b0383166000908152602f602052604081208054919055613be0565b6000613b4d8584613dc7565b6001600160a01b03861660009081526004602090815260408083205460ff88168452602690925290912054919250613b84916155ec565b6001600160a01b0386166000818152602e6020908152604080832060ff89168452825280832094909455918152602f9091522054613bc390829061548b565b6001600160a01b0386166000908152602f60205260408120559150505b80613bf85750506025805460ff60a01b191690555050565b80602a6000828254613c0a919061548b565b90915550506040805160028082526060820183526000926020830190803683375050602554604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015613c7457600080fd5b505afa158015613c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cac9190614e0b565b81600081518110613cbf57613cbf6156ad565b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110613cf357613cf36156ad565b6001600160a01b03928316602091820292909201015260255460405163b6f9de9560e01b815291169063b6f9de95908490613d399060009086908b9042906004016152d0565b6000604051808303818588803b158015613d5257600080fd5b505af1158015613d66573d6000803e3d6000fd5b5050604080518681526001600160a01b038a1660208201527f460fc16181df188bd2ec645a6f6dbe15da259268704aabeb2a5b7c94427e71299450019150613dab9050565b60405180910390a150506025805460ff60a01b19169055505050565b6001600160a01b03821660009081526004602090815260408083205460ff8516845260269092528220548291613dfc916155ec565b6001600160a01b0385166000908152602e6020908152604080832060ff88168452909152902054909150811015613e375760009150506114dd565b6001600160a01b0384166000908152602e6020908152604080832060ff87168452909152902054600160401b90613e6e908361562c565b613e7891906154c8565b949350505050565b602554613e989030906001600160a01b031683613404565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613ecd57613ecd6156ad565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613f2157600080fd5b505afa158015613f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f599190614e0b565b81600181518110613f6c57613f6c6156ad565b6001600160a01b03928316602091820292909201015260255460405163791ac94760e01b815291169063791ac94790613fb290859060009086903090429060040161544f565b600060405180830381600087803b158015613fcc57600080fd5b505af1158015613fe0573d6000803e3d6000fd5b505050505050565b8060306000828254613ffa919061548b565b90915550506025546140179030906001600160a01b031684613404565b60255460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561407f57600080fd5b505af1158015614093573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a259190615130565b6023546000906064906140d590600160481b900460ff16846155ec565b6140df91906154c8565b6023549091506000906064906140ff90600160381b900460ff16856155ec565b61410991906154c8565b60235490915060009060649061412990600160501b900460ff16866155ec565b61413391906154c8565b60235490915060009060649061415390600160581b900460ff16876155ec565b61415d91906154c8565b905083602b6000828254614171919061548b565b9250508190555082602c600082825461418a919061548b565b909155505081156142905781602760008282546141a7919061548b565b9250508190555081602860008282546141c0919061548b565b90915550600090506141d0612f0a565b9050806141f45782602b60008282546141e9919061548b565b9091555061428e9050565b80614203600160401b856155ec565b61420d91906154c8565b600080805260266020527f673668fde1539921a3231470503848f53fc614c057a2345bc3a2f36758a6d3ac805490919061424890849061548b565b90915550506000808052602d6020527f6648a85983aca0407b603b260cacb25b5e5e8e5194522de3d8a800e71aa41bae805485929061428890849061548b565b90915550505b505b8015612a255780602760008282546142a8919061548b565b9250508190555080602960008282546142c1919061548b565b90915550600090506142d1612f0a565b9050806142f55781602b60008282546142ea919061548b565b90915550613fe09050565b80614304600160401b846155ec565b61430e91906154c8565b6001600090815260266020527f5db1dfd2ced311e642486f0e890a646498a1bdee1ad9403b0a73141af8a4c411805490919061434b90849061548b565b909155505060016000908152602d6020527f4ac3b22e31fa68474eb1c8f858cd447cf1ee3eef7de8984178a7afa8f4fe0cd0805484929061438d90849061548b565b9091555050505050505050565b6001600160a01b038416600090815260046020526040902054828110156143d35760405162461bcd60e51b81526004016112ff9061535a565b6143de858484614a9e565b6143e9848484614b9e565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161442e91815260200190565b60405180910390a35050505050565b6001600160a01b038086166000818152601a6020908152604080832054948916835260049091528082205492825290205460ff90921691858110156144945760405162461bcd60e51b81526004016112ff9061535a565b6000806144a23089886116bd565b90508515614678576001600160a01b038a166000908152600f602052604090205460ff1661453b576001600160a01b038a16600090815260066020526040902054421015806144f85750603154610100900460ff165b6145145760405162461bcd60e51b81526004016112ff90615423565b603254614521904261548b565b6001600160a01b038b166000908152600660205260409020555b601d5488111561455d5760405162461bcd60e51b81526004016112ff9061538c565b3060009081526004602052604081205461dead82527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd546145a06009600a615541565b6145af9064174876e8006155ec565b6145b9919061562c565b6145c3919061562c565b905060006020546103e8836145d891906154c8565b6145e291906155ec565b9050808a106145ff57602354600160281b900460ff169350614671565b60235460ff640100000000820481169550600160681b90910416156146715760235460ff600160601b9091048116908416111561467157602354600160601b900460ff16600261465085600361560b565b61465a91906154dc565b6146649190615643565b61466e90856154a3565b93505b50506148a1565b8615614790576001600160a01b038a166000908152600f602052604090205460ff1661470f576001600160a01b038a16600090815260066020526040902054421015806146cc5750603154610100900460ff165b6146e85760405162461bcd60e51b81526004016112ff90615423565b6032546146f5904261548b565b6001600160a01b038b166000908152600660205260409020555b601d548811156147315760405162461bcd60e51b81526004016112ff9061538c565b6001600160a01b03891660009081526007602052604090205460ff1661477c57601c5461475e898661548b565b111561477c5760405162461bcd60e51b81526004016112ff906153d6565b6023546301000000900460ff1691506148a1565b6001600160a01b03891660009081526007602052604090205460ff166147db57601c546147bd898661548b565b11156147db5760405162461bcd60e51b81526004016112ff906153d6565b601c546147e8898661548b565b11156148065760405162461bcd60e51b81526004016112ff906153d6565b6001600160a01b038a166000908152600f602052604090205460ff16614891576001600160a01b038a16600090815260066020526040902054421015806148545750603154610100900460ff165b6148915760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b60448201526064016112ff565b602354600160301b900460ff1691505b6024546001600160a01b038b81169116148015906148c2575060335460ff16155b80156148d1575060315460ff16155b80156148da5750855b1561490057601f54306000908152600460205260409020541061490057614900886131ab565b6001600160a01b038a16600090815260096020526040812054819060ff166149315750602354600160481b900460ff165b6001600160a01b038c1660009081526008602052604090205460ff1661496157602354600160381b900460ff1691505b600060ff881661497e5750602354600160501b900460ff16614999565b8760ff16600114156149995750602354600160581b900460ff165b6023546000906149f5908d90889060ff600160581b8204811691600160501b81048216918a916149d2918b91600160401b9004166154a3565b6149dc91906154a3565b6149e691906154a3565b6149f091906154a3565b614ca0565b90506000614a03828e61562c565b9050614a108f8e8c614a9e565b3060009081526004602052604081208054849290614a2f90849061548b565b90915550614a4090508e828c614b9e565b8d6001600160a01b03168f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614a8591815260200190565b60405180910390a3505050505050505050505050505050565b6001600160a01b038316600090815260046020526040812054614ac290849061562c565b6001600160a01b03851660009081526010602052604090205490915060ff1615614b07576001600160a01b039093166000908152600460205260409020929092555050565b6000614b138584613dc7565b6001600160a01b038616600090815260046020908152604080832086905560ff871683526026909152902054909150614b4d9083906155ec565b6001600160a01b0386166000818152602e6020908152604080832060ff89168452825280832094909455918152602f9091529081208054839290614b9290849061548b565b90915550505050505050565b6001600160a01b038316600090815260046020526040812054614bc290849061548b565b6001600160a01b03851660009081526010602052604090205490915060ff1615614c07576001600160a01b039093166000908152600460205260409020929092555050565b6000614c138584613dc7565b60ff8416600090815260266020526040902054909150614c349083906155ec565b6001600160a01b0386166000818152602e6020908152604080832060ff89168452825280832094909455918152602f9091529081208054839290614c7990849061548b565b9091555050506001600160a01b039093166000908152600460205260409020929092555050565b60006127108260ff168460ff1686614cb891906155ec565b613e6e91906155ec565b8035614ccd816156d9565b919050565b60008083601f840112614ce457600080fd5b50813567ffffffffffffffff811115614cfc57600080fd5b6020830191508360208260051b8501011115614d1757600080fd5b9250929050565b600082601f830112614d2f57600080fd5b8135602067ffffffffffffffff80831115614d4c57614d4c6156c3565b8260051b604051601f19603f83011681018181108482111715614d7157614d716156c3565b60405284815283810192508684018288018501891015614d9057600080fd5b600092505b85831015614dba57614da681614cc2565b845292840192600192909201918401614d95565b50979650505050505050565b80516001600160701b0381168114614ccd57600080fd5b803560ff81168114614ccd57600080fd5b600060208284031215614e0057600080fd5b81356123eb816156d9565b600060208284031215614e1d57600080fd5b81516123eb816156d9565b60008060408385031215614e3b57600080fd5b8235614e46816156d9565b91506020830135614e56816156d9565b809150509250929050565b600080600060608486031215614e7657600080fd5b8335614e81816156d9565b92506020840135614e91816156d9565b929592945050506040919091013590565b60008060408385031215614eb557600080fd5b8235614ec0816156d9565b91506020830135614e56816156ee565b60008060408385031215614ee357600080fd5b8235614eee816156d9565b946020939093013593505050565b600080600060608486031215614f1157600080fd5b8335614f1c816156d9565b9250602084013591506040840135614f33816156ee565b809150509250925092565b60008060408385031215614f5157600080fd5b8235614f5c816156d9565b9150614f6a60208401614ddd565b90509250929050565b60008060008060408587031215614f8957600080fd5b843567ffffffffffffffff80821115614fa157600080fd5b614fad88838901614cd2565b90965094506020870135915080821115614fc657600080fd5b50614fd387828801614cd2565b95989497509550505050565b600060208284031215614ff157600080fd5b813567ffffffffffffffff81111561500857600080fd5b613e7884828501614d1e565b60008060006060848603121561502957600080fd5b833567ffffffffffffffff81111561504057600080fd5b61504c86828701614d1e565b9350506020840135614e91816156d9565b60006020828403121561506f57600080fd5b81356123eb816156ee565b60006020828403121561508c57600080fd5b81516123eb816156ee565b6000806000606084860312156150ac57600080fd5b6150b584614dc6565b92506150c360208501614dc6565b9150604084015163ffffffff81168114614f3357600080fd5b6000602082840312156150ee57600080fd5b5035919050565b60006020828403121561510757600080fd5b5051919050565b6000806040838503121561512157600080fd5b50508035926020909101359150565b60008060006060848603121561514557600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561517057600080fd5b6123eb82614ddd565b6000806040838503121561518c57600080fd5b614e4683614ddd565b6000806000606084860312156151aa57600080fd5b6151b384614ddd565b925060208401356151c3816156d9565b91506040840135614f33816156ee565b600080600080608085870312156151e957600080fd5b6151f285614ddd565b935061520060208601614ddd565b925061520e60408601614ddd565b915061521c60608601614ddd565b905092959194509250565b600080600080600060a0868803121561523f57600080fd5b61524886614ddd565b945061525660208701614ddd565b935061526460408701614ddd565b925061527260608701614ddd565b915061528060808701614ddd565b90509295509295909350565b600081518084526020808501945080840160005b838110156152c55781516001600160a01b0316875295820195908201906001016152a0565b509495945050505050565b8481526080602082015260006152e9608083018661528c565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b8181101561533257858101830151858201604001528201615316565b81811115615344576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601890820152775472616e7366657220657863656564732062616c616e636560401b604082015260600190565b6020808252600f908201526e223ab6b810383937ba32b1ba34b7b760891b604082015260600190565b6020808252600790820152664d61782034352560c81b604082015260600190565b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b60208082526012908201527153656c6c657220696e2073656c6c4c6f636b60701b604082015260600190565b85815284602082015260a06040820152600061546e60a083018661528c565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561549e5761549e615681565b500190565b600060ff821660ff84168060ff038211156154c0576154c0615681565b019392505050565b6000826154d7576154d7615697565b500490565b600060ff8316806154ef576154ef615697565b8060ff84160491505092915050565b600181815b8085111561553957816000190482111561551f5761551f615681565b8085161561552c57918102915b93841c9390800290615503565b509250929050565b60006123eb60ff84168360008261555a575060016114dd565b81615567575060006114dd565b816001811461557d5760028114615587576155a3565b60019150506114dd565b60ff84111561559857615598615681565b50506001821b6114dd565b5060208310610133831016604e8410600b84101617156155c6575081810a6114dd565b6155d083836154fe565b80600019048211156155e4576155e4615681565b029392505050565b600081600019048311821515161561560657615606615681565b500290565b600060ff821660ff84168160ff04811182151516156155e4576155e4615681565b60008282101561563e5761563e615681565b500390565b600060ff821660ff84168082101561565d5761565d615681565b90039392505050565b600060001982141561567a5761567a615681565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461160557600080fd5b801515811461160557600080fdfea2646970667358221220598bc14e46d07e381585480acb4ab97bb69cfc8fc206e896137a8220e9bdf09564736f6c63430008070033
Deployed Bytecode Sourcemap
12320:31412:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39785:265;;;;;;;;;;-1:-1:-1;39785:265:0;;;;;:::i;:::-;;:::i;37103:160::-;;;;;;;;;;;;;:::i;41408:88::-;;;;;;;;;;-1:-1:-1;41485:5:0;;;;;;;;;;;;-1:-1:-1;;;41485:5:0;;;;41408:88;;;;;;;:::i;:::-;;;;;;;;42274:169;;;;;;;;;;-1:-1:-1;42274:169:0;;;;;:::i;:::-;;:::i;:::-;;;12293:14:1;;12286:22;12268:41;;12256:2;12241:18;42274:169:0;12128:187:1;38121:292:0;;;;;;;;;;-1:-1:-1;38121:292:0;;;;;:::i;:::-;;:::i;13456:45::-;;;;;;;;;;;;13498:3;13456:45;;;;;21926:6:1;21914:19;;;21896:38;;21884:2;21869:18;13456:45:0;21752:188:1;30615:98:0;;;;;;;;;;-1:-1:-1;30695:12:0;;30615:98;;;22091:25:1;;;22079:2;22064:18;30615:98:0;21945:177:1;41091:148:0;;;;;;;;;;;;;:::i;41694:102::-;;;;;;;;;;-1:-1:-1;41772:18:0;;41694:102;;13333:67;;;;;;;;;;;;;:::i;42758:386::-;;;;;;;;;;-1:-1:-1;42758:386:0;;;;;:::i;:::-;;:::i;22539:38::-;;;;;;;;;;;;;;;;11843:470;;;;;;;;;;-1:-1:-1;11843:470:0;;;;;:::i;:::-;;:::i;29700:478::-;;;;;;;;;;-1:-1:-1;30008:13:0;;29700:478;;;30008:13;-1:-1:-1;;;30008:13:0;;;;23589:25:1;;-1:-1:-1;;;30030:15:0;;;;23645:2:1;23630:18;;23623:34;-1:-1:-1;;;30054:13:0;;;;23673:18:1;;;23666:34;;;;-1:-1:-1;;;30076:13:0;;;;23731:2:1;23716:18;;23709:34;-1:-1:-1;;;30098:13:0;;;;23774:3:1;23759:19;;23752:35;30120:7:0;;;;;23818:3:1;23803:19;;23796:35;30136:8:0;;;;;23862:3:1;23847:19;;23840:35;-1:-1:-1;;;30153:12:0;;;;23906:3:1;23891:19;;23884:35;23576:3;23561:19;29700:478:0;23246:679:1;8215:106:0;;;;;;;;;;-1:-1:-1;8215:106:0;;;;;:::i;:::-;;:::i;22943:128::-;;;;;;;;;;-1:-1:-1;22943:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;23034:31:0;23014:4;23034:31;;;:25;:31;;;;;;;;;22943:128;13405:46;;;;;;;;;;;;13449:2;13405:46;;;;;24102:4:1;24090:17;;;24072:36;;24060:2;24045:18;13405:46:0;23930:184:1;41600:88:0;;;;;;;;;;-1:-1:-1;13327:1:0;41600:88;;36010:774;;;;;;;;;;-1:-1:-1;36010:774:0;;;;;:::i;:::-;;:::i;35109:113::-;;;;;;;;;;-1:-1:-1;35109:113:0;;;;;:::i;:::-;;:::i;40368:109::-;;;;;;;;;;-1:-1:-1;40368:109:0;;;;;:::i;:::-;;:::i;13506:52::-;;;;;;;;;;;;13547:11;13506:52;;13804:75;;;;;;;;;;-1:-1:-1;13804:75:0;;;;-1:-1:-1;;;;;13804:75:0;;;;;;-1:-1:-1;;;;;10884:32:1;;;10866:51;;10854:2;10839:18;13804:75:0;10720:203:1;35624:380:0;;;;;;;;;;-1:-1:-1;35624:380:0;;;;;:::i;:::-;;:::i;43150:236::-;;;;;;;;;;-1:-1:-1;43150:236:0;;;;;:::i;:::-;;:::i;26928:25::-;;;;;;;;;;;;;;;;40218:111;;;;;;;;;;-1:-1:-1;40218:111:0;;;;;:::i;:::-;;:::i;22664:27::-;;;;;;;;;;;;;;;;13630:91;;;;;;;;;;;;13679:42;13630:91;;33869:89;;;;;;;;;;-1:-1:-1;33869:89:0;;;;;:::i;:::-;;:::i;38646:152::-;;;;;;;;;;-1:-1:-1;38646:152:0;;;;;:::i;:::-;;:::i;30760:106::-;;;;;;;;;;;;;:::i;38419:26::-;;;;;;;;;;-1:-1:-1;38419:26:0;;;;;;;;;;;39272:155;;;;;;;;;;-1:-1:-1;39272:155:0;;;;;:::i;:::-;;:::i;14465:27::-;;;;;;;;;;;;;;;;14307:45;;;;;;;;;;;;;;;;22487:47;;;;;;;;;;-1:-1:-1;22487:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;34713:105;;;;;;;;;;-1:-1:-1;34713:105:0;;;;;:::i;:::-;;:::i;13131:38::-;;;;;;;;;;-1:-1:-1;13131:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;39136:91;;;;;;;;;;-1:-1:-1;39136:91:0;;;;;:::i;:::-;;:::i;22696:31::-;;;;;;;;;;;;;;;;38497:145;;;;;;;;;;-1:-1:-1;38497:145:0;;;;;:::i;:::-;;:::i;37438:108::-;;;;;;;;;;-1:-1:-1;37438:108:0;;;;;:::i;:::-;;:::i;37585:126::-;;;;;;;;;;-1:-1:-1;37585:126:0;;;;;:::i;:::-;;:::i;15013:33::-;;;;;;;;;;-1:-1:-1;15013:33:0;;;;-1:-1:-1;;;15013:33:0;;;;;;29544:150;;;;;;;;;;;;;:::i;:::-;;;;23167:25:1;;;23223:2;23208:18;;23201:34;;;;23140:18;29544:150:0;22993:248:1;13884:76:0;;;;;;;;;;-1:-1:-1;13884:76:0;;;;-1:-1:-1;;;;;13884:76:0;;;41802:115;;;;;;;;;;-1:-1:-1;41802:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;41893:18:0;41870:7;41893:18;;;:9;:18;;;;;;;41802:115;31041:105;;;;;;;;;;-1:-1:-1;31041:105:0;;;;;:::i;:::-;;:::i;22582:36::-;;;;;;;;;;;;;;;;32795:404;;;;;;;;;;-1:-1:-1;32795:404:0;;;;;:::i;:::-;;:::i;13965:75::-;;;;;;;;;;-1:-1:-1;13965:75:0;;;;-1:-1:-1;;;;;13965:75:0;;;14254:48;;;;;;;;;;;;;;;;40830:91;;;;;;;;;;-1:-1:-1;40830:91:0;;;;;:::i;:::-;;:::i;14045:77::-;;;;;;;;;;-1:-1:-1;14045:77:0;;;;-1:-1:-1;;;;;14045:77:0;;;34389:117;;;;;;;;;;-1:-1:-1;34389:117:0;;;;;:::i;:::-;;:::i;13726:73::-;;;;;;;;;;;;13757:42;13726:73;;31448:28;;;;;;;;;;-1:-1:-1;31448:28:0;;;;;;;;37925:139;;;;;;;;;;-1:-1:-1;37925:139:0;;;;;:::i;:::-;;:::i;30335:274::-;;;;;;;;;;-1:-1:-1;30335:274:0;;;;;:::i;:::-;;:::i;31383:28::-;;;;;;;;;;-1:-1:-1;31383:28:0;;;;;;;;;;;34005:136;;;;;;;;;;-1:-1:-1;34005:136:0;;;;;:::i;:::-;;:::i;35402:193::-;;;;;;;;;;-1:-1:-1;35402:193:0;;;;;:::i;:::-;;:::i;35269:103::-;;;;;;;;;;-1:-1:-1;35269:103:0;;;;;:::i;:::-;;:::i;22732:33::-;;;;;;;;;;;;;;;;40927:102;;;;;;;;;;-1:-1:-1;40927:102:0;;;;;:::i;:::-;;:::i;41502:92::-;;;;;;;;;;-1:-1:-1;41581:7:0;;;;;;;;;;;;-1:-1:-1;;;41581:7:0;;;;41502:92;;34553:113;;;;;;;;;;-1:-1:-1;34553:113:0;;;;;:::i;:::-;;:::i;13084:42::-;;;;;;;;;;-1:-1:-1;13084:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18403:163;;;;;;;;;;-1:-1:-1;18403:163:0;;;;;:::i;:::-;;:::i;43392:335::-;;;;;;;;;;-1:-1:-1;43392:335:0;;;;;:::i;:::-;;:::i;34858:215::-;;;;;;;;;;-1:-1:-1;34858:215:0;;;;;:::i;:::-;;:::i;41923:175::-;;;;;;;;;;-1:-1:-1;41923:175:0;;;;;:::i;:::-;;:::i;36934:118::-;;;;;;;;;;;;;:::i;33601:231::-;;;;;;;;;;;;;:::i;13563:62::-;;;;;;;;;;-1:-1:-1;13563:62:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;36786:105;;;;;;;;;;-1:-1:-1;36786:105:0;;;;;:::i;:::-;;:::i;31932:351::-;;;;;;:::i;:::-;;:::i;39454:111::-;;;;;;;;;;-1:-1:-1;39454:111:0;;;;;:::i;:::-;;:::i;8108:99::-;;;;;;;;;;-1:-1:-1;8108:99:0;;;;;:::i;:::-;-1:-1:-1;;;;;8186:13:0;8162:4;8186:13;;;;;;;;;;;;;;8108:99;14357:54;;;;;;;;;;;;;;;;38804:145;;;;;;;;;;-1:-1:-1;38804:145:0;;;;;:::i;:::-;;:::i;14981:27::-;;;;;;;;;;-1:-1:-1;14981:27:0;;;;-1:-1:-1;;;14981:27:0;;;;;;38955:145;;;;;;;;;;-1:-1:-1;38955:145:0;;;;;:::i;:::-;;:::i;34201:140::-;;;;;;;;;;-1:-1:-1;34201:140:0;;;;;:::i;:::-;;:::i;22623:36::-;;;;;;;;;;;;;;;;30184:145;;;;;;;;;;-1:-1:-1;30184:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;30297:26:0;30274:4;30297:26;;;:10;:26;;;;;;;;;30184:145;30899:105;;;;;;;;;;-1:-1:-1;30899:105:0;;;;;:::i;:::-;;:::i;32634:118::-;;;;;;;;;;-1:-1:-1;32634:118:0;;;;;:::i;:::-;;:::i;40626:198::-;;;;;;;;;;-1:-1:-1;40626:198:0;;;;;:::i;:::-;;:::i;42104:164::-;;;;;;;;;;-1:-1:-1;42104:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;42234:19:0;;;42208:7;42234:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;42104:164;32325:147;;;;;;;;;;-1:-1:-1;32325:147:0;;;;;:::i;:::-;;:::i;31510:380::-;;;;;;;;;;-1:-1:-1;31510:380:0;;;;;:::i;:::-;;:::i;14416:44::-;;;;;;;;;;;;;;;;23077:157;;;;;;;;;;;;;:::i;39604:123::-;;;;;;;;;;-1:-1:-1;39604:123:0;;;;;:::i;:::-;;:::i;40107:76::-;;;;;;;;;;;;;:::i;32510:84::-;;;;;;;;;;-1:-1:-1;32510:84:0;;;;;:::i;:::-;;:::i;33242:311::-;;;;;;;;;;-1:-1:-1;33242:311:0;;;;;:::i;:::-;;:::i;31416:27::-;;;;;;;;;;;;;;;;41316:86;;;;;;;;;;-1:-1:-1;41391:5:0;;-1:-1:-1;;;;;41391:5:0;41316:86;;31152:225;;;;;;;;;;-1:-1:-1;31152:225:0;;;;;:::i;:::-;;:::i;39785:265::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;;;;;;;;;39911:30:::1;::::0;-1:-1:-1;;;39911:30:0;;39935:4:::1;39911:30;::::0;::::1;10866:51:1::0;39872:10:0;;39850:12:::1;::::0;-1:-1:-1;;;;;39911:15:0;::::1;::::0;::::1;::::0;10839:18:1;;39911:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39890:51;;39969:1;39956:10;:14;39948:51;;;::::0;-1:-1:-1;;;39948:51:0;;17454:2:1;39948:51:0::1;::::0;::::1;17436:21:1::0;17493:2;17473:18;;;17466:30;-1:-1:-1;;;17512:18:1;;;17505:54;17576:18;;39948:51:0::1;17252:348:1::0;39948:51:0::1;40006:38;::::0;-1:-1:-1;;;40006:38:0;;40021:10:::1;40006:38;::::0;::::1;11411:51:1::0;11478:18;;;11471:34;;;-1:-1:-1;;;;;40006:14:0;::::1;::::0;::::1;::::0;11384:18:1;;40006:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;39843:207;;39785:265:::0;:::o;37103:160::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;37158:7:::1;:14:::0;;-1:-1:-1;;37158:14:0::1;37168:4;37158:14;::::0;;37179:56:::1;37198:36;37179:18;:56::i;:::-;37242:7;:15:::0;;-1:-1:-1;;37242:15:0::1;::::0;;37103:160::o;42274:169::-;42366:4;42382:37;42391:10;42403:7;42412:6;42382:8;:37::i;:::-;-1:-1:-1;42433:4:0;42274:169;;;;;:::o;38121:292::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;38269:13:::1;13327:1;38269:2;:13;:::i;:::-;38251:31;::::0;:15;:31:::1;:::i;:::-;38233:49:::0;-1:-1:-1;38319:13:0::1;13327:1;38319:2;:13;:::i;:::-;38304:28;::::0;:12;:28:::1;:::i;:::-;38346:12;:30:::0;;;;-1:-1:-1;38383:9:0::1;:24:::0;38121:292::o;41091:148::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;41167:5:::1;::::0;:46:::1;::::0;41152:9:::1;::::0;-1:-1:-1;;;;;41167:5:0::1;::::0;41186:21:::1;::::0;41152:9;41167:46;41152:9;41167:46;41186:21;41167:5;:46:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41151:62;;;41228:4;41220:13;;;::::0;::::1;;41144:95;41091:148::o:0;13333:67::-;13387:13;13327:1;13387:2;:13;:::i;:::-;13373:27;;:11;:27;:::i;:::-;13333:67;:::o;42758:386::-;42878:4;42891:36;42901:6;42909:9;42920:6;42891:9;:36::i;:::-;-1:-1:-1;;;;;42961:19:0;;42934:24;42961:19;;;:11;:19;;;;;;;;42981:10;42961:31;;;;;;;;43007:26;;;;42999:59;;;;-1:-1:-1;;;42999:59:0;;15730:2:1;42999:59:0;;;15712:21:1;15769:2;15749:18;;;15742:30;-1:-1:-1;;;15788:18:1;;;15781:50;15848:18;;42999:59:0;15528:344:1;42999:59:0;43065:55;43074:6;43082:10;43094:25;43113:6;43094:16;:25;:::i;:::-;43065:8;:55::i;:::-;-1:-1:-1;43134:4:0;;42758:386;-1:-1:-1;;;;42758:386:0:o;11843:470::-;11933:4;11950:20;11989:6;;;;;;;;;-1:-1:-1;;;;;11989:6:0;-1:-1:-1;;;;;11989:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11973:41:0;;12015:5;12022:6;;;;;;;;;-1:-1:-1;;;;;12022:6:0;-1:-1:-1;;;;;12022:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11973:63;;-1:-1:-1;;;;;;11973:63:0;;;;;;;-1:-1:-1;;;;;11158:15:1;;;11973:63:0;;;11140:34:1;11210:15;;11190:18;;;11183:43;11075:18;;11973:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11950:86;;12048:14;12064:13;12081:30;12098:12;12081:16;:30::i;:::-;12047:64;;;;12122:11;12147:4;12144:138;;;12194:9;12178:12;:6;12187:3;12178:12;:::i;:::-;12177:26;;;;:::i;:::-;12168:35;;12144:138;;;12262:8;12246:12;:6;12255:3;12246:12;:::i;:::-;12245:25;;;;:::i;:::-;12236:34;;12144:138;12299:6;11843:470;-1:-1:-1;;;;;;;11843:470:0:o;8215:106::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8292:13:0;;;::::1;:7;:13:::0;;;::::1;::::0;;;;;;:21;;-1:-1:-1;;8292:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8215:106::o;36010:774::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;36200:14:::1;36315::::0;36291;36267;36217:40:::1;36241:16:::0;36217:14;:40:::1;:::i;:::-;:64;;;;:::i;:::-;:88;;;;:::i;:::-;:112;;;;:::i;:::-;36200:129;;36344:8;:15;;36356:3;36344:15;36336:59;;;::::0;-1:-1:-1;;;36336:59:0;;14339:2:1;36336:59:0::1;::::0;::::1;14321:21:1::0;14378:2;14358:18;;;14351:30;14417:33;14397:18;;;14390:61;14468:18;;36336:59:0::1;14137:355:1::0;36336:59:0::1;36430:2;36412:14;:20;;;;36404:40;;;::::0;-1:-1:-1;;;36404:40:0;;19898:2:1;36404:40:0::1;::::0;::::1;19880:21:1::0;19937:1;19917:18;;;19910:29;-1:-1:-1;;;19955:18:1;;;19948:37;20002:18;;36404:40:0::1;19696:330:1::0;36404:40:0::1;36479:2;36459:16;:22;;;;36451:42;;;;-1:-1:-1::0;;;36451:42:0::1;;;;;;;:::i;:::-;36526:2;36508:14;:20;;;;36500:40;;;;-1:-1:-1::0;;;36500:40:0::1;;;;;;;:::i;:::-;36573:2;36555:14;:20;;;;36547:40;;;;-1:-1:-1::0;;;36547:40:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;36596:13:0::1;:30:::0;;-1:-1:-1;;;;36633:34:0;-1:-1:-1;;;36596:30:0::1;::::0;;::::1;;-1:-1:-1::0;;;;36633:34:0;;-1:-1:-1;;;36633:34:0;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;36711:30:0;-1:-1:-1;;;36674:30:0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;36711:30:0;;;;;-1:-1:-1;;;36711:30:0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;36748:30:0::1;-1:-1:-1::0;;;36748:30:0;;;::::1;;::::0;;;::::1;::::0;;36010:774::o;35109:113::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;35191:16:::1;:25:::0;;-1:-1:-1;;35191:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35109:113::o;40368:109::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40443:20:0::1;40466:5;40443:20:::0;;;:10:::1;:20;::::0;;;;:28;;-1:-1:-1;;40443:28:0::1;::::0;;40368:109::o;35624:380::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;14696:2:::1;35779:16;::::0;::::1;;::::0;::::1;::::0;:37:::1;;-1:-1:-1::0;14696:2:0::1;35799:17;::::0;::::1;;;35779:37;:62;;;;-1:-1:-1::0;14696:2:0::1;35820:21;::::0;::::1;;;35779:62;35763:121;;;::::0;-1:-1:-1;;;35763:121:0;;18856:2:1;35763:121:0::1;::::0;::::1;18838:21:1::0;18895:2;18875:18;;;18868:30;-1:-1:-1;;;18914:18:1;;;18907:55;18979:18;;35763:121:0::1;18654:349:1::0;35763:121:0::1;35893:7;:16:::0;;-1:-1:-1;;35916:18:0;35893:16;::::1;::::0;;::::1;;-1:-1:-1::0;;35916:18:0;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;35972:26:0;-1:-1:-1;;;35941:24:0;;::::1;::::0;;;::::1;-1:-1:-1::0;;35972:26:0;;;;;-1:-1:-1;;;35972:26:0;;;::::1;;::::0;;;::::1;::::0;;35624:380::o;43150:236::-;43275:10;43242:4;43310:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;43310:32:0;;;;;;;;;;43242:4;;43258:104;;43294:7;;43310:45;;43345:10;;43310:45;:::i;40218:111::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40293:23:0::1;;::::0;;;:10:::1;:23;::::0;;;;:30;;-1:-1:-1;;40293:30:0::1;40319:4;40293:30;::::0;;40218:111::o;33869:89::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;33936:7:::1;:16:::0;;;::::1;;;;-1:-1:-1::0;;33936:16:0;;::::1;::::0;;;::::1;::::0;;33869:89::o;38646:152::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;38714:17:::1;:24:::0;;-1:-1:-1;;;;;38714:24:0;;::::1;-1:-1:-1::0;;;;;;38714:24:0;;::::1;::::0;::::1;::::0;;:17:::1;38745:40:::0;;;:21:::1;:40;::::0;;;;:47;;-1:-1:-1;;38745:47:0::1;38714:24:::0;38745:47:::1;::::0;;38646:152::o;30760:106::-;30848:12;;30830:30;;:15;:30;:::i;:::-;30816:10;30806:21;;;;:9;:21;;;;;:54;30760:106::o;39272:155::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;39375:22:::1;:46:::0;;-1:-1:-1;;;;;39375:46:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;39375:46:0;;::::1;::::0;;;::::1;::::0;;39272:155::o;34713:105::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;34786:17:::1;:26:::0;;-1:-1:-1;;34786:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34713:105::o;39136:91::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;39199:14:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;39199:22:0;;::::1;::::0;;;::::1;::::0;;39136:91::o;38497:145::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;38562:15:::1;:22:::0;;-1:-1:-1;;;;;38562:22:0;;::::1;-1:-1:-1::0;;;;;;38562:22:0;;::::1;::::0;::::1;::::0;;:15:::1;38591:38:::0;;;:21:::1;:38;::::0;;;;:45;;-1:-1:-1;;38591:45:0::1;38562:22:::0;38591:45:::1;::::0;;38497:145::o;37438:108::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37515:18:0::1;;::::0;;;:9:::1;:18;::::0;;;;:25;;-1:-1:-1;;37515:25:0::1;37536:4;37515:25;::::0;;37438:108::o;37585:126::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37668:30:0::1;;::::0;;;:21:::1;:30;::::0;;;;:37;;-1:-1:-1;;37668:37:0::1;37701:4;37668:37;::::0;;37585:126::o;29544:150::-;29586:15;;29647:13;13327:1;29647:2;:13;:::i;:::-;29632:12;;:28;;;;:::i;:::-;29674:13;13327:1;29674:2;:13;:::i;:::-;29662:9;;:25;;;;:::i;:::-;29624:64;;;;29544:150;;:::o;31041:105::-;31104:36;31121:10;31133:3;31138:1;31104:16;:36::i;32795:404::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32905:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;::::1;;32897:40;;;::::0;::::1;;32944:20;32967:27;32983:4;32989;32967:15;:27::i;:::-;33051:20;::::0;::::1;;::::0;;;:14:::1;:20;::::0;;;;;;;;-1:-1:-1;;;;;33033:15:0;::::1;::::0;;:9:::1;:15:::0;;;;;;;32944:50;;-1:-1:-1;33033:38:0::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;33001:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;;;:29:::1;::::0;::::1;::::0;;;;;;;:70;;;;33078:14;;;:8:::1;:14:::0;;;;;;:30;;33096:12;;33001:23;33078:30:::1;::::0;33096:12;;33078:30:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;33115:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;;;:38;;-1:-1:-1;;33115:38:0::1;33149:4;33115:38;::::0;;33178:9:::1;:15:::0;;;;;;33160:14:::1;:33:::0;;33178:15;;33160:14;;:33:::1;::::0;33178:15;;33160:33:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;32795:404:0:o;40830:91::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;40894:14:::1;:21:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;40894:21:0::1;-1:-1:-1::0;;;;40894:21:0;;::::1;::::0;;;::::1;::::0;;40830:91::o;34389:117::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34471:21:0;;;::::1;;::::0;;;:15:::1;:21;::::0;;;;:29;;-1:-1:-1;;34471:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34389:117::o;37925:139::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38029:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:29;;-1:-1:-1;;38029:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37925:139::o;30335:274::-;-1:-1:-1;;;;;30474:25:0;;30436:7;30474:25;;;:9;:25;;;;;;30522:15;30510:27;;30506:58;;-1:-1:-1;30555:1:0;;30335:274;-1:-1:-1;;30335:274:0:o;30506:58::-;30577:26;30588:15;30577:8;:26;:::i;:::-;30570:33;30335:274;-1:-1:-1;;;30335:274:0:o;34005:136::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34103:24:0;;;::::1;;::::0;;;:18:::1;:24;::::0;;;;:32;;-1:-1:-1;;34103:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34005:136::o;35402:193::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;13547:11:::1;35490:34:::0;::::1;;35482:70;;;::::0;-1:-1:-1;;;35482:70:0;;20914:2:1;35482:70:0::1;::::0;::::1;20896:21:1::0;20953:2;20933:18;;;20926:30;-1:-1:-1;;;20972:18:1;;;20965:53;21035:18;;35482:70:0::1;20712:347:1::0;35482:70:0::1;35559:12;:30:::0;35402:193::o;35269:103::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;35339:16:::1;:27:::0;;;::::1;;;;-1:-1:-1::0;;35339:27:0;;::::1;::::0;;;::::1;::::0;;35269:103::o;40927:102::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;40994:21:::1;:29:::0;;;::::1;;-1:-1:-1::0;;;40994:29:0::1;-1:-1:-1::0;;;;40994:29:0;;::::1;::::0;;;::::1;::::0;;40927:102::o;34553:113::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34633:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:27;;-1:-1:-1;;34633:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34553:113::o;18403:163::-;-1:-1:-1;;;;;18485:13:0;;18455:4;18485:13;;;:7;:13;;;;;;;;;18544:9;:15;;;;;;18485:13;;;;;18517:14;18455:4;18533:6;18485:13;;18533:6;:::i;:::-;18517:24;;;;;;;;;;;;;;;;:42;;;;:::i;43392:335::-;43544:10;43489:4;43532:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;43532:32:0;;;;;;;;;;43579:35;;;;43571:60;;;;-1:-1:-1;;;43571:60:0;;21266:2:1;43571:60:0;;;21248:21:1;21305:2;21285:18;;;21278:30;-1:-1:-1;;;21324:18:1;;;21317:42;21376:18;;43571:60:0;21064:336:1;43571:60:0;43638:65;43647:10;43659:7;43668:34;43687:15;43668:16;:34;:::i;43638:65::-;-1:-1:-1;43717:4:0;;43392:335;-1:-1:-1;;;43392:335:0:o;34858:215::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;34957:1:::1;34948:6;:10;:32;;;;;34971:9;34962:6;:18;34948:32;34940:75;;;::::0;-1:-1:-1;;;34940:75:0;;18497:2:1;34940:75:0::1;::::0;::::1;18479:21:1::0;18536:2;18516:18;;;18509:30;18575:32;18555:18;;;18548:60;18625:18;;34940:75:0::1;18295:354:1::0;34940:75:0::1;35054:13;13327:1;35054:2;:13;:::i;:::-;35045:22;::::0;:6;:22:::1;:::i;:::-;35022:20;:45:::0;-1:-1:-1;34858:215:0:o;41923:175::-;42018:4;42034:40;42044:10;42056:9;42067:6;42034:9;:40::i;36934:118::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;36990:56:::1;37009:36;36990:18;:56::i;:::-;36934:118::o:0;33601:231::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;33680:16:::1;::::0;;33663:14:::1;33703:20:::0;;;;33746:15:::1;::::0;:41:::1;::::0;33680:16;;33663:14;-1:-1:-1;;;;;33746:15:0;;::::1;::::0;33680:16;;33663:14;33746:41;33663:14;33746:41;33680:16;33746:15;:41:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33730:57;;;33802:4;33794:32;;;::::0;-1:-1:-1;;;33794:32:0;;20570:2:1;33794:32:0::1;::::0;::::1;20552:21:1::0;20609:2;20589:18;;;20582:30;-1:-1:-1;;;20628:18:1;;;20621:45;20683:18;;33794:32:0::1;20368:339:1::0;33794:32:0::1;33656:176;;33601:231::o:0;36786:105::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;36856:12:::1;:28:::0;36786:105::o;31932:351::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;32095:12;;32051:9:::1;::::0;32037:11:::1;::::0;32089:18:::1;::::0;32051:9;32089:18:::1;:::i;:::-;32067:40;;32114:9;32135::::0;32130:148:::1;32167:1;32152:5;:12;:16;;;;:::i;:::-;32146:1;:23;32130:148;;32200:5;32206:1;32200:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;32192:22:0::1;:35;32215:11;32192:35;;;;;;;;;;;;;;;;;;;;;;;32185:42;;32244:4;32236:13;;;::::0;::::1;;32265:5;::::0;-1:-1:-1;32171:3:0;::::1;::::0;::::1;:::i;:::-;;;;32130:148;;;;32030:253;;;31932:351:::0;:::o;39454:111::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39528:24:0::1;;::::0;;;:10:::1;:24;::::0;;;;:31;;-1:-1:-1;;39528:31:0::1;39555:4;39528:31;::::0;;39454:111::o;38804:145::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;38867:16:::1;:23:::0;;-1:-1:-1;;;;;38867:23:0;;::::1;-1:-1:-1::0;;;;;;38867:23:0;;::::1;::::0;::::1;::::0;;:16:::1;38897:39:::0;;;:21:::1;:39;::::0;;;;:46;;-1:-1:-1;;38897:46:0::1;38867:23:::0;38897:46:::1;::::0;;38804:145::o;38955:::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;39018:16:::1;:23:::0;;-1:-1:-1;;;;;39018:23:0;;::::1;-1:-1:-1::0;;;;;;39018:23:0;;::::1;::::0;::::1;::::0;;:16:::1;39048:39:::0;;;:21:::1;:39;::::0;;;;:46;;-1:-1:-1;;39048:46:0::1;39018:23:::0;39048:46:::1;::::0;;38955:145::o;34201:140::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34301:26:0;;;::::1;;::::0;;;:20:::1;:26;::::0;;;;:34;;-1:-1:-1;;34301:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34201:140::o;30899:105::-;30962:36;30979:10;30991:3;30996:1;30962:16;:36::i;32634:118::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;32733:13:::1;13327:1;32733:2;:13;:::i;:::-;32722:24;::::0;:8;:24:::1;:::i;:::-;32707:12;:39:::0;-1:-1:-1;32634:118:0:o;40626:198::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;40728:9:::1;40724:89;40739:15:::0;;::::1;40724:89;;;40793:5;;40799:1;40793:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;40775:6;:15;40782:4;;40787:1;40782:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;40775:15:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;40775:15:0;:26;;-1:-1:-1;;40775:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;40756:3;::::1;::::0;::::1;:::i;:::-;;;;40724:89;;32325:147:::0;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;32435:18:::1;::::0;;::::1;;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;32435:23:0;;::::1;::::0;;;;;;:31;;;::::1;;-1:-1:-1::0;;32435:31:0;;::::1;::::0;;;::::1;::::0;;32325:147::o;31510:380::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;31631:19:::1;31659:5;:12;31653:3;:18;;;;:::i;:::-;31631:40:::0;-1:-1:-1;31703:5:0;31678:15:::1;::::0;31732:153:::1;31769:1;31754:5;:12;:16;;;;:::i;:::-;31748:1;:23;31732:153;;31794:8;-1:-1:-1::0;;;;;31794:17:0::1;;31812:5;31818:1;31812:8;;;;;;;;:::i;:::-;;;;;;;31822:11;31794:40;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11429:32:1;;;;11411:51;;11493:2;11478:18;;11471:34;11399:2;11384:18;;11237:274;31794:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31787:47;;31851:4;31843:13;;;::::0;::::1;;31872:5;::::0;-1:-1:-1;31773:3:0;::::1;::::0;::::1;:::i;:::-;;;;31732:153;;;;31624:266;;;31510:380:::0;;;:::o;23077:157::-;23158:18;;23194:14;;23125:7;;23158:18;23183:25;;23158:18;23183:25;:::i;39604:123::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39686:27:0::1;39716:5;39686:27:::0;;;:10:::1;:27;::::0;;;;:35;;-1:-1:-1;;39686:35:0::1;::::0;;39604:123::o;40107:76::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;40158:11:::1;:19:::0;;-1:-1:-1;;40158:19:0::1;::::0;;40107:76::o;32510:84::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;32571:9:::1;:17:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;32571:17:0;;::::1;::::0;;;::::1;::::0;;32510:84::o;33242:311::-;8377:10;8369:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8404:5:0;;-1:-1:-1;;;;;8404:5:0;8392:10;:17;8369:40;8360:63;;;;-1:-1:-1;;;8360:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33350:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;::::1;;33342:40;;;::::0;::::1;;-1:-1:-1::0;;;;;33389:31:0;::::1;33423:5;33389:31:::0;;;:25:::1;:31;::::0;;;;;;;:39;;-1:-1:-1;;33389:39:0::1;::::0;;33453:9:::1;:15:::0;;;;;;33435:14:::1;:33:::0;;33453:15;;33435:14;;:33:::1;::::0;33453:15;;33435:33:::1;:::i;:::-;::::0;;;-1:-1:-1;;33527:20:0::1;::::0;::::1;;::::0;;;:14:::1;:20;::::0;;;;;;;;-1:-1:-1;;;;;33509:15:0;::::1;::::0;;:9:::1;:15:::0;;;;;;;:38:::1;::::0;33527:20;33509:38:::1;:::i;:::-;-1:-1:-1::0;;;;;33477:23:0;;::::1;;::::0;;;:17:::1;:23;::::0;;;;;;;:29:::1;::::0;;::::1;::::0;;;;;;:70;33242:311::o;31152:225::-;-1:-1:-1;;;;;31259:31:0;;31236:7;31259:31;;;:25;:31;;;;;;;;31255:58;;;-1:-1:-1;;;;;;31299:14:0;;;;;;:8;:14;;;;;;31292:21;;31255:58;-1:-1:-1;;;;;31357:14:0;;;;;;:8;:14;;;;;;31327:27;31366:4;31349;31327:15;:27::i;:::-;:44;;;;:::i;27129:1655::-;27033:27;:34;;-1:-1:-1;;27033:34:0;27063:4;27033:34;;;27261:4:::1;27033:27:::0;27243:24;;;:9:::1;:24;::::0;;;;;27325:13:::1;::::0;27243:24;;27033:27;-1:-1:-1;;;27325:13:0;::::1;27033:34:::0;27325:13;;::::1;::::0;27292:30:::1;::::0;-1:-1:-1;;;27309:13:0;::::1;::::0;::::1;::::0;-1:-1:-1;;;27292:13:0;::::1;;:30;:::i;:::-;:46;;;;:::i;:::-;27274:64;;;;27347:19;27388:3;27370:9;;27382:2;27370:14;;;;:::i;:::-;27369:22;;;;:::i;:::-;27402:17;::::0;27347:44;;-1:-1:-1;27402:17:0::1;;27398:74;;;-1:-1:-1::0;27444:20:0::1;::::0;27398:74:::1;27500:7;::::0;::::1;::::0;::::1;;;27514:108:::0;::::1;;;27554:10;27540:11;:24;27536:79;;;27591:14;27604:1;27591:10:::0;:14:::1;:::i;:::-;27577:28;;27536:79;27628:7;:21:::0;;;::::1;;;;-1:-1:-1::0;;27628:21:0;::::1;::::0;::::1;::::0;;;::::1;27660:7:::0;;;;;;27656:59:::1;;;27690:19;27708:1;27690:15:::0;:19:::1;:::i;:::-;27676:33;;27656:59;27751:11;27733:15;:29;:46;;;-1:-1:-1::0;27766:13:0::1;::::0;::::1;::::0;27733:46:::1;27729:75;;;27790:7;;;;;;27729:75;27855:13;::::0;27812:25:::1;::::0;27840:40:::1;::::0;::::1;::::0;27841:27:::1;::::0;-1:-1:-1;;;27855:13:0;::::1;;;27841:11:::0;:27:::1;:::i;:::-;27840:40;;;;:::i;:::-;27930:13;::::0;27812:68;;-1:-1:-1;27887:25:0::1;::::0;27915:40:::1;::::0;::::1;::::0;27916:27:::1;::::0;-1:-1:-1;;;27930:13:0;::::1;;;27916:11:::0;:27:::1;:::i;:::-;27915:40;;;;:::i;:::-;28007:15;::::0;27887:68;;-1:-1:-1;27962:27:0::1;::::0;27992:42:::1;::::0;::::1;::::0;27993:29:::1;::::0;-1:-1:-1;;;28007:15:0;::::1;;;27993:11:::0;:29:::1;:::i;:::-;27992:42;;;;:::i;:::-;27962:72:::0;-1:-1:-1;28041:17:0::1;27962:72:::0;28061:44:::1;28088:17:::0;28061;:44:::1;:::i;:::-;:73;;;;:::i;:::-;28041:93;;28194:11;28181:9;:24;28177:97;;28240:25;28255:9:::0;28240:11;:25:::1;:::i;:::-;28216:50;::::0;;::::1;:::i;:::-;;;28177:97;28282:16;28301:21;28321:1;28301:17:::0;:21:::1;:::i;:::-;28282:40:::0;-1:-1:-1;28329:19:0::1;28351:28;28282:40:::0;28351:17;:28:::1;:::i;:::-;28329:50:::0;-1:-1:-1;28434:19:0;28400:31:::1;28414:17:::0;28329:50;28400:31:::1;:::i;:::-;:53;;;;:::i;:::-;28388:65:::0;-1:-1:-1;28490:21:0::1;28518:27;28388:65:::0;28518:16:::1;:27::i;:::-;28552:14;28570:41;28594:17:::0;28570:21:::1;:41;:::i;:::-;28552:60:::0;-1:-1:-1;28621:14:0::1;28663:9:::0;28639:20:::1;28648:11:::0;28552:60;28639:20:::1;:::i;:::-;28638:34;;;;:::i;:::-;28621:51;;28679:31;28693:8;28703:6;28679:13;:31::i;:::-;28719:59;28736:41;28760:17:::0;28736:21:::1;:41;:::i;:::-;28719:16;:59::i;:::-;27210:1574;;;;;;;;;;;;;27074:1;-1:-1:-1::0;27082:27:0;:35;;-1:-1:-1;;27082:35:0;;;27129:1655::o;42449:303::-;-1:-1:-1;;;;;42559:20:0;;42551:50;;;;-1:-1:-1;;;42551:50:0;;14699:2:1;42551:50:0;;;14681:21:1;14738:2;14718:18;;;14711:30;-1:-1:-1;;;14757:18:1;;;14750:47;14814:18;;42551:50:0;14497:341:1;42551:50:0;-1:-1:-1;;;;;42616:21:0;;42608:49;;;;-1:-1:-1;;;42608:49:0;;16423:2:1;42608:49:0;;;16405:21:1;16462:2;16442:18;;;16435:30;-1:-1:-1;;;16481:18:1;;;16474:45;16536:18;;42608:49:0;16221:339:1;42608:49:0;-1:-1:-1;;;;;42664:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;42713:33;;22091:25:1;;;42713:33:0;;22064:18:1;42713:33:0;;;;;;;42449:303;;;:::o;16587:1804::-;-1:-1:-1;;;;;16683:20:0;;16675:51;;;;-1:-1:-1;;;16675:51:0;;13639:2:1;16675:51:0;;;13621:21:1;13678:2;13658:18;;;13651:30;-1:-1:-1;;;13697:18:1;;;13690:48;13755:18;;16675:51:0;13437:342:1;16675:51:0;-1:-1:-1;;;;;16745:23:0;;16737:52;;;;-1:-1:-1;;;16737:52:0;;15045:2:1;16737:52:0;;;15027:21:1;15084:2;15064:18;;;15057:30;-1:-1:-1;;;15103:18:1;;;15096:46;15159:18;;16737:52:0;14843:340:1;16737:52:0;16803:11;;;;16800:113;;;-1:-1:-1;;;;;16840:18:0;;;;;;:10;:18;;;;;;;;16839:19;:45;;;;-1:-1:-1;;;;;;16863:21:0;;;;;;:10;:21;;;;;;;;16862:22;16839:45;16831:70;;;;-1:-1:-1;;;16831:70:0;;18156:2:1;16831:70:0;;;18138:21:1;18195:2;18175:18;;;18168:30;-1:-1:-1;;;18214:18:1;;;18207:42;18266:18;;16831:70:0;17954:336:1;16831:70:0;-1:-1:-1;;;;;16946:17:0;;16927:15;16946:17;;;:9;:17;;;;;;;;;:41;;-1:-1:-1;;;;;;16967:20:0;;;;;;:9;:20;;;;;;;;16946:41;:60;;;-1:-1:-1;;;;;;16991:15:0;;:7;:15;;;;;;;;;;;;;16946:60;:82;;;-1:-1:-1;;;;;;17010:18:0;;:7;:18;;;;;;;;;;;;;16946:82;16927:102;-1:-1:-1;17042:23:0;-1:-1:-1;;;;;17067:21:0;;17083:4;17067:21;;:49;;-1:-1:-1;;;;;;17092:24:0;;17111:4;17092:24;17067:49;17169:19;;17042:75;;-1:-1:-1;17130:24:0;;-1:-1:-1;;;;;17159:29:0;;;17169:19;;17159:29;:63;;;;-1:-1:-1;;;;;;17192:30:0;;13679:42;17192:30;17159:63;17158:143;;;-1:-1:-1;17250:19:0;;-1:-1:-1;;;;;17237:32:0;;;17250:19;;17237:32;:63;;;;-1:-1:-1;;;;;;17273:27:0;;13679:42;17273:27;17237:63;17130:172;;17315:12;17349:18;:41;;;;17371:19;17349:41;:55;;;;17394:10;17349:55;17346:177;;;-1:-1:-1;;;;;17466:15:0;;;;;;:7;:15;;;;;;17421:61;;17438:6;;17446:9;;17457:6;;17466:15;;17421:16;:61::i;:::-;-1:-1:-1;17507:4:0;17346:177;17543:7;17539:843;;17568:14;;;;;;;17563:808;;17623:19;;17603:11;;-1:-1:-1;;;;;17615:27:0;;;17623:19;;17615:27;;:57;;-1:-1:-1;;;;;;17645:27:0;;13679:42;17645:27;17615:57;17715:19;;17603:69;;-1:-1:-1;17691:12:0;;-1:-1:-1;;;;;17704:30:0;;;17715:19;;17704:30;;:63;;-1:-1:-1;;;;;;17737:30:0;;13679:42;17737:30;17704:63;-1:-1:-1;;;;;17812:14:0;;;;;;:6;:14;;;;;;17691:76;;-1:-1:-1;17812:14:0;;;:34;;-1:-1:-1;;;;;;17829:17:0;;;;;;:6;:17;;;;;;;;17812:34;:54;;;-1:-1:-1;17855:10:0;17848:18;;;;:6;:18;;;;;;;;17812:54;17808:263;;;17891:54;17906:6;17913:9;17923:6;17930;17937:7;17891:14;:54::i;:::-;17808:263;;;18008:14;;;;;;;18000:49;;;;-1:-1:-1;;;18000:49:0;;17102:2:1;18000:49:0;;;17084:21:1;17141:2;17121:18;;;17114:30;-1:-1:-1;;;17160:18:1;;;17153:53;17223:18;;18000:49:0;16900:347:1;18000:49:0;17584:502;;17563:808;;;18159:19;;18140:10;;-1:-1:-1;;;;;18151:27:0;;;18159:19;;18151:27;;:57;;-1:-1:-1;;;;;;18181:27:0;;13679:42;18181:27;18151:57;18248:19;;18140:68;;-1:-1:-1;18225:11:0;;-1:-1:-1;;;;;18237:30:0;;;18248:19;;18237:30;;:63;;-1:-1:-1;;;;;;18270:30:0;;13679:42;18270:30;18237:63;18225:75;;18317:52;18332:6;18339:9;18349:6;18356:5;18362:6;18317:14;:52::i;:::-;18118:253;;16664:1727;;;;16587:1804;;;:::o;11459:376::-;11529:4;11535;11552:19;11589:12;11552:50;;11613:21;11645:22;11678:21;11760:4;-1:-1:-1;;;;;11760:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;11789:38:0;;;;;;;-1:-1:-1;11459:376:0;-1:-1:-1;;;;;;11459:376:0:o;25844:1078::-;25948:4;:9;;25956:1;25948:9;25944:83;;;-1:-1:-1;;;;;25976:18:0;;;;;;:12;:18;;;;;;;;25968:51;;;;-1:-1:-1;;;25968:51:0;;17807:2:1;25968:51:0;;;17789:21:1;17846:2;17826:18;;;17819:30;-1:-1:-1;;;17865:18:1;;;17858:50;17925:18;;25968:51:0;17605:344:1;25968:51:0;26042:14;;-1:-1:-1;;;26042:14:0;;;;26041:15;26033:24;;;;;;26072:18;;;;;;;;:12;:18;;;;;;;;-1:-1:-1;;;;;26072:23:0;;;;;;;;;;;26064:47;;;;-1:-1:-1;;;26064:47:0;;15390:2:1;26064:47:0;;;15372:21:1;15429:2;15409:18;;;15402:30;-1:-1:-1;;;15448:18:1;;;15441:41;15499:18;;26064:47:0;15188:335:1;26064:47:0;26118:14;:21;;-1:-1:-1;;;;26118:21:0;-1:-1:-1;;;26118:21:0;;;-1:-1:-1;;;;;26171:31:0;;26118:21;26171:31;;;:25;:31;;;;;;26118:21;26171:31;26167:328;;;-1:-1:-1;;;;;;26222:14:0;;;;;;:8;:14;;;;;;;26245:18;;;26167:328;;;26286:17;26306:27;26322:4;26328;26306:15;:27::i;:::-;-1:-1:-1;;;;;26399:15:0;;;;;;:9;:15;;;;;;;;;26376:20;;;;;:14;:20;;;;;;;26286:47;;-1:-1:-1;26376:38:0;;;:::i;:::-;-1:-1:-1;;;;;26344:23:0;;;;;;:17;:23;;;;;;;;:29;;;;;;;;;;:70;;;;26434:14;;;:8;:14;;;;;:26;;26451:9;;26434:26;:::i;:::-;-1:-1:-1;;;;;26469:14:0;;26486:1;26469:14;;;:8;:14;;;;;:18;26425:35;-1:-1:-1;;26167:328:0;26505:11;26501:71;;-1:-1:-1;;26527:14:0;:22;;-1:-1:-1;;;;26527:22:0;;;-1:-1:-1;;25844:1078:0:o;26501:71::-;26594:6;26578:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;26631:16:0;;;26645:1;26631:16;;;;;;;;26607:21;;26631:16;;;;;;;;-1:-1:-1;;26664:14:0;;:21;;;-1:-1:-1;;;26664:21:0;;;;26607:40;;-1:-1:-1;;;;;;26664:14:0;;;;:19;;-1:-1:-1;26664:21:0;;;;;;;;;;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26654:4;26659:1;26654:7;;;;;;;;:::i;:::-;;;;;;:31;-1:-1:-1;;;;;26654:31:0;;;-1:-1:-1;;;;;26654:31:0;;;;;26702:3;26692:4;26697:1;26692:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26692:13:0;;;:7;;;;;;;;;:13;26712:14;;:126;;-1:-1:-1;;;26712:126:0;;:14;;;:65;;26793:6;;26712:126;;:14;;26810:4;;26816;;26822:15;;26712:126;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26852:35:0;;;22301:25:1;;;-1:-1:-1;;;;;22362:32:1;;22357:2;22342:18;;22335:60;26852:35:0;;-1:-1:-1;22274:18:1;;-1:-1:-1;26852:35:0;;-1:-1:-1;22127:274:1;26852:35:0;;;;;;;;-1:-1:-1;;26894:14:0;:22;;-1:-1:-1;;;;26894:22:0;;;-1:-1:-1;;;25844:1078:0:o;24149:335::-;-1:-1:-1;;;;;24302:17:0;;24239:7;24302:17;;;:9;:17;;;;;;;;;24279:20;;;;;:14;:20;;;;;;24239:7;;24279:40;;;:::i;:::-;-1:-1:-1;;;;;24345:25:0;;;;;;:17;:25;;;;;;;;:31;;;;;;;;;;;24258:61;;-1:-1:-1;24332:44:0;;24328:58;;;24385:1;24378:8;;;;;24328:58;-1:-1:-1;;;;;24421:25:0;;;;;;:17;:25;;;;;;;;:31;;;;;;;;;;;-1:-1:-1;;;22477:5:0;24408:44;;:10;:44;:::i;:::-;24407:71;;;;:::i;:::-;24393:85;24149:335;-1:-1:-1;;;;24149:335:0:o;28790:397::-;28879:14;;28847:56;;28864:4;;-1:-1:-1;;;;;28879:14:0;28896:6;28847:8;:56::i;:::-;28934:16;;;28948:1;28934:16;;;;;;;;28910:21;;28934:16;;;;;;;;;;-1:-1:-1;28934:16:0;28910:40;;28975:4;28957;28962:1;28957:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28957:23:0;;;:7;;;;;;;;;;:23;;;;28997:14;;:21;;;-1:-1:-1;;;28997:21:0;;;;:14;;;;;:19;;:21;;;;;28957:7;;28997:21;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28987:4;28992:1;28987:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28987:31:0;;;:7;;;;;;;;;:31;29025:14;;:156;;-1:-1:-1;;;29025:156:0;;:14;;;:65;;:156;;29099:6;;29025:14;;29124:4;;29145;;29159:15;;29025:156;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28840:347;28790:397;:::o;29193:345::-;29285:9;29271:10;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;29333:14:0;;29301:61;;29318:4;;-1:-1:-1;;;;;29333:14:0;29350:11;29301:8;:61::i;:::-;29369:14;;:163;;-1:-1:-1;;;29369:163:0;;29434:4;29369:163;;;11857:34:1;;;11907:18;;;11900:34;;;29369:14:0;11950:18:1;;;11943:34;;;11993:18;;;11986:34;12036:19;;;12029:44;29510:15:0;12089:19:1;;;12082:35;-1:-1:-1;;;;;29369:14:0;;;;:30;;29407:9;;11791:19:1;;29369:163:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24490:1219::-;24588:13;;24550:22;;24605:3;;24576:25;;-1:-1:-1;;;24588:13:0;;;;24576:9;:25;:::i;:::-;24575:33;;;;:::i;:::-;24655:15;;24550:58;;-1:-1:-1;24615:24:0;;24674:3;;24643:27;;-1:-1:-1;;;24655:15:0;;;;24643:9;:27;:::i;:::-;24642:35;;;;:::i;:::-;24718:13;;24615:62;;-1:-1:-1;24684:18:0;;24735:3;;24706:25;;-1:-1:-1;;;24718:13:0;;;;24706:9;:25;:::i;:::-;24705:33;;;;:::i;:::-;24779:13;;24684:54;;-1:-1:-1;24745:18:0;;24796:3;;24767:25;;-1:-1:-1;;;24779:13:0;;;;24767:9;:25;:::i;:::-;24766:33;;;;:::i;:::-;24745:54;;24826:14;24806:16;;:34;;;;;;;:::i;:::-;;;;;;;;24869:16;24847:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;24898:14:0;;24894:400;;24950:10;24923:23;;:37;;;;;;;:::i;:::-;;;;;;;;24994:10;24969:21;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;25013:19:0;;-1:-1:-1;25035:17:0;:15;:17::i;:::-;25013:39;-1:-1:-1;25065:16:0;25061:226;;25114:10;25094:16;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;25061:226:0;;-1:-1:-1;25061:226:0;;25224:11;25174:35;-1:-1:-1;;;25174:10:0;:35;:::i;:::-;25173:62;;;;:::i;:::-;25151:17;;;;:14;:17;;;:85;;:17;;;:85;;;;;:::i;:::-;;;;-1:-1:-1;;25247:16:0;;;;:13;:16;;;:30;;25267:10;;25247:16;:30;;25267:10;;25247:30;:::i;:::-;;;;-1:-1:-1;;25061:226:0;24914:380;24894:400;25306:14;;25302:400;;25358:10;25331:23;;:37;;;;;;;:::i;:::-;;;;;;;;25402:10;25377:21;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;25421:19:0;;-1:-1:-1;25443:17:0;:15;:17::i;:::-;25421:39;-1:-1:-1;25473:16:0;25469:226;;25522:10;25502:16;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;25469:226:0;;-1:-1:-1;25469:226:0;;25632:11;25582:35;-1:-1:-1;;;25582:10:0;:35;:::i;:::-;25581:62;;;;:::i;:::-;25574:1;25559:17;;;;:14;:17;;;:85;;:17;;;:85;;;;;:::i;:::-;;;;-1:-1:-1;;25669:1:0;25655:16;;;;:13;:16;;;:30;;25675:10;;25655:16;:30;;25675:10;;25655:30;:::i;:::-;;;;-1:-1:-1;;25322:380:0;24543:1166;;;;24490:1219;:::o;21831:378::-;-1:-1:-1;;;;;21984:17:0;;21960:21;21984:17;;;:9;:17;;;;;;22016:23;;;;22008:60;;;;-1:-1:-1;;;22008:60:0;;;;;;;:::i;:::-;22077:34;22090:6;22098;22106:4;22077:12;:34::i;:::-;22120;22130:9;22141:6;22149:4;22120:9;:34::i;:::-;22185:9;-1:-1:-1;;;;;22168:35:0;22177:6;-1:-1:-1;;;;;22168:35:0;;22196:6;22168:35;;;;22091:25:1;;22079:2;22064:18;;21945:177;22168:35:0;;;;;;;;21953:256;21831:378;;;;:::o;18574:3251::-;-1:-1:-1;;;;;18732:15:0;;;18719:10;18732:15;;;:7;:15;;;;;;;;;18781:20;;;;;:9;:20;;;;;;;18832:17;;;;;;18732:15;;;;;18864:23;;;;18856:60;;;;-1:-1:-1;;;18856:60:0;;;;;;;:::i;:::-;18923:9;18941:12;18962:52;18992:4;18999:6;19007;18962:21;:52::i;:::-;18941:74;;19028:6;19024:1673;;;-1:-1:-1;;;;;19050:29:0;;;;;;:21;:29;;;;;;;;19045:240;;-1:-1:-1;;;;;19112:17:0;;;;;;:9;:17;;;;;;19133:15;-1:-1:-1;19112:36:0;;:56;;-1:-1:-1;19152:16:0;;;;;;;19112:56;19092:120;;;;-1:-1:-1;;;19092:120:0;;;;;;;:::i;:::-;19263:12;;19245:30;;:15;:30;:::i;:::-;-1:-1:-1;;;;;19225:17:0;;;;;;:9;:17;;;;;:50;19045:240;19313:9;;19303:6;:19;;19295:47;;;;-1:-1:-1;;;19295:47:0;;;;;;;:::i;:::-;19426:4;19351:20;19408:24;;;:9;:24;;;;;;13757:42;19390:15;;;;13387:13;13327:1;13387:2;:13;:::i;:::-;13373:27;;:11;:27;:::i;:::-;19374:31;;;;:::i;:::-;:58;;;;:::i;:::-;19351:81;;19441:19;19488:12;;19480:4;19464:15;:20;;;;:::i;:::-;19463:37;;;;:::i;:::-;19441:59;;19522:14;19512:6;:24;19509:280;;19555:11;;-1:-1:-1;;;19555:11:0;;;;;-1:-1:-1;19509:280:0;;;19599:8;;;;;;;;;-1:-1:-1;;;;19621:21:0;;;;19618:162;;;19671:14;;;-1:-1:-1;;;19671:14:0;;;;;19662:23;;;;19659:110;;;19736:14;;-1:-1:-1;;;19736:14:0;;;;19732:1;19720:10;19724:6;19720:1;:10;:::i;:::-;19719:14;;;;:::i;:::-;:31;;;;:::i;:::-;19712:41;;:3;:41;:::i;:::-;19706:47;;19659:110;19036:760;;19024:1673;;;19806:5;19802:895;;;-1:-1:-1;;;;;19824:29:0;;;;;;:21;:29;;;;;;;;19819:240;;-1:-1:-1;;;;;19886:17:0;;;;;;:9;:17;;;;;;19907:15;-1:-1:-1;19886:36:0;;:56;;-1:-1:-1;19926:16:0;;;;;;;19886:56;19866:120;;;;-1:-1:-1;;;19866:120:0;;;;;;;:::i;:::-;20037:12;;20019:30;;:15;:30;:::i;:::-;-1:-1:-1;;;;;19999:17:0;;;;;;:9;:17;;;;;:50;19819:240;20085:9;;20075:6;:19;;20067:47;;;;-1:-1:-1;;;20067:47:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20128:24:0;;;;;;:13;:24;;;;;;;;20123:122;;20202:12;;20173:25;20192:6;20173:16;:25;:::i;:::-;:41;;20165:70;;;;-1:-1:-1;;;20165:70:0;;;;;;;:::i;:::-;20259:7;;;;;;;;-1:-1:-1;19802:895:0;;;-1:-1:-1;;;;;20294:24:0;;;;;;:13;:24;;;;;;;;20289:122;;20368:12;;20339:25;20358:6;20339:16;:25;:::i;:::-;:41;;20331:70;;;;-1:-1:-1;;;20331:70:0;;;;;;;:::i;:::-;20456:12;;20427:25;20446:6;20427:16;:25;:::i;:::-;:41;;20419:70;;;;-1:-1:-1;;;20419:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20505:29:0;;;;;;:21;:29;;;;;;;;20500:161;;-1:-1:-1;;;;;20565:17:0;;;;;;:9;:17;;;;;;20586:15;-1:-1:-1;20565:36:0;;:56;;-1:-1:-1;20605:16:0;;;;;;;20565:56;20545:116;;;;-1:-1:-1;;;20545:116:0;;19555:2:1;20545:116:0;;;19537:21:1;19594:2;19574:18;;;19567:30;-1:-1:-1;;;19613:18:1;;;19606:44;19667:18;;20545:116:0;19353:338:1;20545:116:0;20677:12;;-1:-1:-1;;;20677:12:0;;;;;-1:-1:-1;19802:895:0;20728:19;;-1:-1:-1;;;;;20718:29:0;;;20728:19;;20718:29;;;;20717:61;;-1:-1:-1;20761:16:0;;;;20760:17;20717:61;:102;;;;-1:-1:-1;20791:27:0;;;;20790:28;20717:102;:119;;;;;20830:6;20717:119;20705:248;;;20885:12;;20875:4;20857:24;;;;:9;:24;;;;;;:40;20853:93;;20910:26;20929:6;20910:18;:26::i;:::-;-1:-1:-1;;;;;21036:26:0;;20959;21036;;;:18;:26;;;;;;20959;;21036;;21031:84;;-1:-1:-1;21094:13:0;;-1:-1:-1;;;21094:13:0;;;;21031:84;-1:-1:-1;;;;;21126:28:0;;;;;;:20;:28;;;;;;;;21121:90;;21188:15;;-1:-1:-1;;;21188:15:0;;;;;-1:-1:-1;21121:90:0;21217:14;21242:9;;;21238:118;;-1:-1:-1;21273:13:0;;-1:-1:-1;;;21273:13:0;;;;21238:118;;;21304:4;:9;;21312:1;21304:9;21300:56;;;-1:-1:-1;21335:13:0;;-1:-1:-1;;;21335:13:0;;;;21300:56;21551:13;;21364:21;;21388:183;;21410:6;;21425:3;;21551:13;-1:-1:-1;;;21551:13:0;;;;;-1:-1:-1;;;21526:13:0;;;;;21494:20;;21439:43;;21464:18;;-1:-1:-1;;;21439:13:0;;;:43;:::i;:::-;:75;;;;:::i;:::-;:100;;;;:::i;:::-;:125;;;;:::i;:::-;21388:13;:183::i;:::-;21364:207;-1:-1:-1;21578:19:0;21600:24;21364:207;21600:6;:24;:::i;:::-;21578:46;;21633:34;21646:6;21654;21662:4;21633:12;:34::i;:::-;21694:4;21676:24;;;;:9;:24;;;;;:41;;21704:13;;21676:24;:41;;21704:13;;21676:41;:::i;:::-;;;;-1:-1:-1;21726:39:0;;-1:-1:-1;21736:9:0;21747:11;21760:4;21726:9;:39::i;:::-;21796:9;-1:-1:-1;;;;;21779:40:0;21788:6;-1:-1:-1;;;;;21779:40:0;;21807:11;21779:40;;;;22091:25:1;;22079:2;22064:18;;21945:177;21779:40:0;;;;;;;;18712:3113;;;;;;;;;;18574:3251;;;;;:::o;23693:450::-;-1:-1:-1;;;;;23812:15:0;;23792:17;23812:15;;;:9;:15;;;;;;:24;;23830:6;;23812:24;:::i;:::-;-1:-1:-1;;;;;23849:31:0;;;;;;:25;:31;;;;;;23792:44;;-1:-1:-1;23849:31:0;;23845:96;;;-1:-1:-1;;;;;23891:15:0;;;;;;;:9;:15;;;;;:27;;;;-1:-1:-1;;23693:450:0:o;23845:96::-;23949:15;23967:27;23983:4;23989;23967:15;:27::i;:::-;-1:-1:-1;;;;;24003:15:0;;;;;;:9;:15;;;;;;;;:27;;;24071:20;;;;;:14;:20;;;;;;23949:45;;-1:-1:-1;24071:32:0;;24021:9;;24071:32;:::i;:::-;-1:-1:-1;;;;;24039:23:0;;;;;;:17;:23;;;;;;;;:29;;;;;;;;;;:64;;;;24112:14;;;:8;:14;;;;;;:25;;24130:7;;24039:23;24112:25;;24130:7;;24112:25;:::i;:::-;;;;-1:-1:-1;;;;;;;23693:450:0:o;23240:447::-;-1:-1:-1;;;;;23356:15:0;;23336:17;23356:15;;;:9;:15;;;;;;:24;;23374:6;;23356:24;:::i;:::-;-1:-1:-1;;;;;23393:31:0;;;;;;:25;:31;;;;;;23336:44;;-1:-1:-1;23393:31:0;;23389:96;;;-1:-1:-1;;;;;23435:15:0;;;;;;;:9;:15;;;;;:27;;;;-1:-1:-1;;23240:447:0:o;23389:96::-;23493:15;23511:27;23527:4;23533;23511:15;:27::i;:::-;23579:20;;;;;;;:14;:20;;;;;;23493:45;;-1:-1:-1;23579:32:0;;23602:9;;23579:32;:::i;:::-;-1:-1:-1;;;;;23547:23:0;;;;;;:17;:23;;;;;;;;:29;;;;;;;;;;:64;;;;23620:14;;;:8;:14;;;;;;:25;;23638:7;;23547:23;23620:25;;23638:7;;23620:25;:::i;:::-;;;;-1:-1:-1;;;;;;;;23654:15:0;;;;;;;:9;:15;;;;;:27;;;;-1:-1:-1;;23240:447:0:o;22215:174::-;22325:7;22378:5;22364:10;22349:25;;22358:3;22349:12;;:6;:12;;;;:::i;:::-;:25;;;;:::i;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:367::-;216:8;226:6;280:3;273:4;265:6;261:17;257:27;247:55;;298:1;295;288:12;247:55;-1:-1:-1;321:20:1;;364:18;353:30;;350:50;;;396:1;393;386:12;350:50;433:4;425:6;421:17;409:29;;493:3;486:4;476:6;473:1;469:14;461:6;457:27;453:38;450:47;447:67;;;510:1;507;500:12;447:67;153:367;;;;;:::o;525:919::-;579:5;632:3;625:4;617:6;613:17;609:27;599:55;;650:1;647;640:12;599:55;686:6;673:20;712:4;735:18;772:2;768;765:10;762:36;;;778:18;;:::i;:::-;824:2;821:1;817:10;856:2;850:9;919:2;915:7;910:2;906;902:11;898:25;890:6;886:38;974:6;962:10;959:22;954:2;942:10;939:18;936:46;933:72;;;985:18;;:::i;:::-;1021:2;1014:22;1071:18;;;1105:15;;;;-1:-1:-1;1140:15:1;;;1174;;;1170:24;;1167:33;-1:-1:-1;1164:53:1;;;1213:1;1210;1203:12;1164:53;1235:1;1226:10;;1245:169;1259:2;1256:1;1253:9;1245:169;;;1316:23;1335:3;1316:23;:::i;:::-;1304:36;;1360:12;;;;1277:1;1270:9;;;;;1392:12;;1245:169;;;-1:-1:-1;1432:6:1;525:919;-1:-1:-1;;;;;;;525:919:1:o;1449:177::-;1528:13;;-1:-1:-1;;;;;1570:31:1;;1560:42;;1550:70;;1616:1;1613;1606:12;1631:156;1697:20;;1757:4;1746:16;;1736:27;;1726:55;;1777:1;1774;1767:12;1792:247;1851:6;1904:2;1892:9;1883:7;1879:23;1875:32;1872:52;;;1920:1;1917;1910:12;1872:52;1959:9;1946:23;1978:31;2003:5;1978:31;:::i;2044:251::-;2114:6;2167:2;2155:9;2146:7;2142:23;2138:32;2135:52;;;2183:1;2180;2173:12;2135:52;2215:9;2209:16;2234:31;2259:5;2234:31;:::i;2300:388::-;2368:6;2376;2429:2;2417:9;2408:7;2404:23;2400:32;2397:52;;;2445:1;2442;2435:12;2397:52;2484:9;2471:23;2503:31;2528:5;2503:31;:::i;:::-;2553:5;-1:-1:-1;2610:2:1;2595:18;;2582:32;2623:33;2582:32;2623:33;:::i;:::-;2675:7;2665:17;;;2300:388;;;;;:::o;2693:456::-;2770:6;2778;2786;2839:2;2827:9;2818:7;2814:23;2810:32;2807:52;;;2855:1;2852;2845:12;2807:52;2894:9;2881:23;2913:31;2938:5;2913:31;:::i;:::-;2963:5;-1:-1:-1;3020:2:1;3005:18;;2992:32;3033:33;2992:32;3033:33;:::i;:::-;2693:456;;3085:7;;-1:-1:-1;;;3139:2:1;3124:18;;;;3111:32;;2693:456::o;3154:382::-;3219:6;3227;3280:2;3268:9;3259:7;3255:23;3251:32;3248:52;;;3296:1;3293;3286:12;3248:52;3335:9;3322:23;3354:31;3379:5;3354:31;:::i;:::-;3404:5;-1:-1:-1;3461:2:1;3446:18;;3433:32;3474:30;3433:32;3474:30;:::i;3541:315::-;3609:6;3617;3670:2;3658:9;3649:7;3645:23;3641:32;3638:52;;;3686:1;3683;3676:12;3638:52;3725:9;3712:23;3744:31;3769:5;3744:31;:::i;:::-;3794:5;3846:2;3831:18;;;;3818:32;;-1:-1:-1;;;3541:315:1:o;3861:450::-;3935:6;3943;3951;4004:2;3992:9;3983:7;3979:23;3975:32;3972:52;;;4020:1;4017;4010:12;3972:52;4059:9;4046:23;4078:31;4103:5;4078:31;:::i;:::-;4128:5;-1:-1:-1;4180:2:1;4165:18;;4152:32;;-1:-1:-1;4236:2:1;4221:18;;4208:32;4249:30;4208:32;4249:30;:::i;:::-;4298:7;4288:17;;;3861:450;;;;;:::o;4316:317::-;4382:6;4390;4443:2;4431:9;4422:7;4418:23;4414:32;4411:52;;;4459:1;4456;4449:12;4411:52;4498:9;4485:23;4517:31;4542:5;4517:31;:::i;:::-;4567:5;-1:-1:-1;4591:36:1;4623:2;4608:18;;4591:36;:::i;:::-;4581:46;;4316:317;;;;;:::o;4638:770::-;4757:6;4765;4773;4781;4834:2;4822:9;4813:7;4809:23;4805:32;4802:52;;;4850:1;4847;4840:12;4802:52;4890:9;4877:23;4919:18;4960:2;4952:6;4949:14;4946:34;;;4976:1;4973;4966:12;4946:34;5015:70;5077:7;5068:6;5057:9;5053:22;5015:70;:::i;:::-;5104:8;;-1:-1:-1;4989:96:1;-1:-1:-1;5192:2:1;5177:18;;5164:32;;-1:-1:-1;5208:16:1;;;5205:36;;;5237:1;5234;5227:12;5205:36;;5276:72;5340:7;5329:8;5318:9;5314:24;5276:72;:::i;:::-;4638:770;;;;-1:-1:-1;5367:8:1;-1:-1:-1;;;;4638:770:1:o;5413:348::-;5497:6;5550:2;5538:9;5529:7;5525:23;5521:32;5518:52;;;5566:1;5563;5556:12;5518:52;5606:9;5593:23;5639:18;5631:6;5628:30;5625:50;;;5671:1;5668;5661:12;5625:50;5694:61;5747:7;5738:6;5727:9;5723:22;5694:61;:::i;5766:551::-;5868:6;5876;5884;5937:2;5925:9;5916:7;5912:23;5908:32;5905:52;;;5953:1;5950;5943:12;5905:52;5993:9;5980:23;6026:18;6018:6;6015:30;6012:50;;;6058:1;6055;6048:12;6012:50;6081:61;6134:7;6125:6;6114:9;6110:22;6081:61;:::i;:::-;6071:71;;;6192:2;6181:9;6177:18;6164:32;6205:31;6230:5;6205:31;:::i;6322:241::-;6378:6;6431:2;6419:9;6410:7;6406:23;6402:32;6399:52;;;6447:1;6444;6437:12;6399:52;6486:9;6473:23;6505:28;6527:5;6505:28;:::i;6568:245::-;6635:6;6688:2;6676:9;6667:7;6663:23;6659:32;6656:52;;;6704:1;6701;6694:12;6656:52;6736:9;6730:16;6755:28;6777:5;6755:28;:::i;6818:450::-;6905:6;6913;6921;6974:2;6962:9;6953:7;6949:23;6945:32;6942:52;;;6990:1;6987;6980:12;6942:52;7013:40;7043:9;7013:40;:::i;:::-;7003:50;;7072:49;7117:2;7106:9;7102:18;7072:49;:::i;:::-;7062:59;;7164:2;7153:9;7149:18;7143:25;7208:10;7201:5;7197:22;7190:5;7187:33;7177:61;;7234:1;7231;7224:12;7273:180;7332:6;7385:2;7373:9;7364:7;7360:23;7356:32;7353:52;;;7401:1;7398;7391:12;7353:52;-1:-1:-1;7424:23:1;;7273:180;-1:-1:-1;7273:180:1:o;7458:184::-;7528:6;7581:2;7569:9;7560:7;7556:23;7552:32;7549:52;;;7597:1;7594;7587:12;7549:52;-1:-1:-1;7620:16:1;;7458:184;-1:-1:-1;7458:184:1:o;7647:248::-;7715:6;7723;7776:2;7764:9;7755:7;7751:23;7747:32;7744:52;;;7792:1;7789;7782:12;7744:52;-1:-1:-1;;7815:23:1;;;7885:2;7870:18;;;7857:32;;-1:-1:-1;7647:248:1:o;7900:306::-;7988:6;7996;8004;8057:2;8045:9;8036:7;8032:23;8028:32;8025:52;;;8073:1;8070;8063:12;8025:52;8102:9;8096:16;8086:26;;8152:2;8141:9;8137:18;8131:25;8121:35;;8196:2;8185:9;8181:18;8175:25;8165:35;;7900:306;;;;;:::o;8211:182::-;8268:6;8321:2;8309:9;8300:7;8296:23;8292:32;8289:52;;;8337:1;8334;8327:12;8289:52;8360:27;8377:9;8360:27;:::i;8398:317::-;8464:6;8472;8525:2;8513:9;8504:7;8500:23;8496:32;8493:52;;;8541:1;8538;8531:12;8493:52;8564:27;8581:9;8564:27;:::i;8720:452::-;8792:6;8800;8808;8861:2;8849:9;8840:7;8836:23;8832:32;8829:52;;;8877:1;8874;8867:12;8829:52;8900:27;8917:9;8900:27;:::i;:::-;8890:37;;8977:2;8966:9;8962:18;8949:32;8990:31;9015:5;8990:31;:::i;:::-;9040:5;-1:-1:-1;9097:2:1;9082:18;;9069:32;9110:30;9069:32;9110:30;:::i;9177:393::-;9255:6;9263;9271;9279;9332:3;9320:9;9311:7;9307:23;9303:33;9300:53;;;9349:1;9346;9339:12;9300:53;9372:27;9389:9;9372:27;:::i;:::-;9362:37;;9418:36;9450:2;9439:9;9435:18;9418:36;:::i;:::-;9408:46;;9473:36;9505:2;9494:9;9490:18;9473:36;:::i;:::-;9463:46;;9528:36;9560:2;9549:9;9545:18;9528:36;:::i;:::-;9518:46;;9177:393;;;;;;;:::o;9575:464::-;9660:6;9668;9676;9684;9692;9745:3;9733:9;9724:7;9720:23;9716:33;9713:53;;;9762:1;9759;9752:12;9713:53;9785:27;9802:9;9785:27;:::i;:::-;9775:37;;9831:36;9863:2;9852:9;9848:18;9831:36;:::i;:::-;9821:46;;9886:36;9918:2;9907:9;9903:18;9886:36;:::i;:::-;9876:46;;9941:36;9973:2;9962:9;9958:18;9941:36;:::i;:::-;9931:46;;9996:37;10028:3;10017:9;10013:19;9996:37;:::i;:::-;9986:47;;9575:464;;;;;;;;:::o;10044:461::-;10097:3;10135:5;10129:12;10162:6;10157:3;10150:19;10188:4;10217:2;10212:3;10208:12;10201:19;;10254:2;10247:5;10243:14;10275:1;10285:195;10299:6;10296:1;10293:13;10285:195;;;10364:13;;-1:-1:-1;;;;;10360:39:1;10348:52;;10420:12;;;;10455:15;;;;10396:1;10314:9;10285:195;;;-1:-1:-1;10496:3:1;;10044:461;-1:-1:-1;;;;;10044:461:1:o;12320:510::-;12591:6;12580:9;12573:25;12634:3;12629:2;12618:9;12614:18;12607:31;12554:4;12655:57;12707:3;12696:9;12692:19;12684:6;12655:57;:::i;:::-;-1:-1:-1;;;;;12748:32:1;;;;12743:2;12728:18;;12721:60;-1:-1:-1;12812:2:1;12797:18;12790:34;12647:65;12320:510;-1:-1:-1;;12320:510:1:o;12835:597::-;12947:4;12976:2;13005;12994:9;12987:21;13037:6;13031:13;13080:6;13075:2;13064:9;13060:18;13053:34;13105:1;13115:140;13129:6;13126:1;13123:13;13115:140;;;13224:14;;;13220:23;;13214:30;13190:17;;;13209:2;13186:26;13179:66;13144:10;;13115:140;;;13273:6;13270:1;13267:13;13264:91;;;13343:1;13338:2;13329:6;13318:9;13314:22;13310:31;13303:42;13264:91;-1:-1:-1;13416:2:1;13395:15;-1:-1:-1;;13391:29:1;13376:45;;;;13423:2;13372:54;;12835:597;-1:-1:-1;;;12835:597:1:o;13784:348::-;13986:2;13968:21;;;14025:2;14005:18;;;13998:30;-1:-1:-1;;;14059:2:1;14044:18;;14037:54;14123:2;14108:18;;13784:348::o;15877:339::-;16079:2;16061:21;;;16118:2;16098:18;;;16091:30;-1:-1:-1;;;16152:2:1;16137:18;;16130:45;16207:2;16192:18;;15877:339::o;16565:330::-;16767:2;16749:21;;;16806:1;16786:18;;;16779:29;-1:-1:-1;;;16839:2:1;16824:18;;16817:37;16886:2;16871:18;;16565:330::o;19008:340::-;19210:2;19192:21;;;19249:2;19229:18;;;19222:30;-1:-1:-1;;;19283:2:1;19268:18;;19261:46;19339:2;19324:18;;19008:340::o;20031:332::-;20233:2;20215:21;;;20272:1;20252:18;;;20245:29;-1:-1:-1;;;20305:2:1;20290:18;;20283:39;20354:2;20339:18;;20031:332::o;21405:342::-;21607:2;21589:21;;;21646:2;21626:18;;;21619:30;-1:-1:-1;;;21680:2:1;21665:18;;21658:48;21738:2;21723:18;;21405:342::o;22406:582::-;22705:6;22694:9;22687:25;22748:6;22743:2;22732:9;22728:18;22721:34;22791:3;22786:2;22775:9;22771:18;22764:31;22668:4;22812:57;22864:3;22853:9;22849:19;22841:6;22812:57;:::i;:::-;-1:-1:-1;;;;;22905:32:1;;;;22900:2;22885:18;;22878:60;-1:-1:-1;22969:3:1;22954:19;22947:35;22804:65;22406:582;-1:-1:-1;;;22406:582:1:o;24119:128::-;24159:3;24190:1;24186:6;24183:1;24180:13;24177:39;;;24196:18;;:::i;:::-;-1:-1:-1;24232:9:1;;24119:128::o;24252:204::-;24290:3;24326:4;24323:1;24319:12;24358:4;24355:1;24351:12;24393:3;24387:4;24383:14;24378:3;24375:23;24372:49;;;24401:18;;:::i;:::-;24437:13;;24252:204;-1:-1:-1;;;24252:204:1:o;24461:120::-;24501:1;24527;24517:35;;24532:18;;:::i;:::-;-1:-1:-1;24566:9:1;;24461:120::o;24586:165::-;24624:1;24658:4;24655:1;24651:12;24682:3;24672:37;;24689:18;;:::i;:::-;24741:3;24734:4;24731:1;24727:12;24723:22;24718:27;;;24586:165;;;;:::o;24756:422::-;24845:1;24888:5;24845:1;24902:270;24923:7;24913:8;24910:21;24902:270;;;24982:4;24978:1;24974:6;24970:17;24964:4;24961:27;24958:53;;;24991:18;;:::i;:::-;25041:7;25031:8;25027:22;25024:55;;;25061:16;;;;25024:55;25140:22;;;;25100:15;;;;24902:270;;;24906:3;24756:422;;;;;:::o;25183:140::-;25241:5;25270:47;25311:4;25301:8;25297:19;25291:4;25377:5;25407:8;25397:80;;-1:-1:-1;25448:1:1;25462:5;;25397:80;25496:4;25486:76;;-1:-1:-1;25533:1:1;25547:5;;25486:76;25578:4;25596:1;25591:59;;;;25664:1;25659:130;;;;25571:218;;25591:59;25621:1;25612:10;;25635:5;;;25659:130;25696:3;25686:8;25683:17;25680:43;;;25703:18;;:::i;:::-;-1:-1:-1;;25759:1:1;25745:16;;25774:5;;25571:218;;25873:2;25863:8;25860:16;25854:3;25848:4;25845:13;25841:36;25835:2;25825:8;25822:16;25817:2;25811:4;25808:12;25804:35;25801:77;25798:159;;;-1:-1:-1;25910:19:1;;;25942:5;;25798:159;25989:34;26014:8;26008:4;25989:34;:::i;:::-;26059:6;26055:1;26051:6;26047:19;26038:7;26035:32;26032:58;;;26070:18;;:::i;:::-;26108:20;;25328:806;-1:-1:-1;;;25328:806:1:o;26139:168::-;26179:7;26245:1;26241;26237:6;26233:14;26230:1;26227:21;26222:1;26215:9;26208:17;26204:45;26201:71;;;26252:18;;:::i;:::-;-1:-1:-1;26292:9:1;;26139:168::o;26312:238::-;26350:7;26390:4;26387:1;26383:12;26422:4;26419:1;26415:12;26482:3;26476:4;26472:14;26467:3;26464:23;26457:3;26450:11;26443:19;26439:49;26436:75;;;26491:18;;:::i;26555:125::-;26595:4;26623:1;26620;26617:8;26614:34;;;26628:18;;:::i;:::-;-1:-1:-1;26665:9:1;;26555:125::o;26685:195::-;26723:4;26760;26757:1;26753:12;26792:4;26789:1;26785:12;26817:3;26812;26809:12;26806:38;;;26824:18;;:::i;:::-;26861:13;;;26685:195;-1:-1:-1;;;26685:195:1:o;26885:135::-;26924:3;-1:-1:-1;;26945:17:1;;26942:43;;;26965:18;;:::i;:::-;-1:-1:-1;27012:1:1;27001:13;;26885:135::o;27025:127::-;27086:10;27081:3;27077:20;27074:1;27067:31;27117:4;27114:1;27107:15;27141:4;27138:1;27131:15;27157:127;27218:10;27213:3;27209:20;27206:1;27199:31;27249:4;27246:1;27239:15;27273:4;27270:1;27263:15;27289:127;27350:10;27345:3;27341:20;27338:1;27331:31;27381:4;27378:1;27371:15;27405:4;27402:1;27395:15;27421:127;27482:10;27477:3;27473:20;27470:1;27463:31;27513:4;27510:1;27503:15;27537:4;27534:1;27527:15;27553:131;-1:-1:-1;;;;;27628:31:1;;27618:42;;27608:70;;27674:1;27671;27664:12;27689:118;27775:5;27768:13;27761:21;27754:5;27751:32;27741:60;;27797:1;27794;27787:12
Swarm Source
ipfs://598bc14e46d07e381585480acb4ab97bb69cfc8fc206e896137a8220e9bdf095
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.