ERC-20
Overview
Max Total Supply
79,718,067.25176666279224293 $TDAO
Holders
184
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
27,165.435485280912305993 $TDAOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
TheDAO
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-08 */ // SPDX-License-Identifier: MIT 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, 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; } interface IUniswapFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); 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(uint) external view returns (address pair); function allPairsLength() external view returns (uint); 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, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function factory() external pure returns (address); function WETH() external pure returns (address); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getamountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getamountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getamountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getamountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapRouter02 is IUniswapRouter01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } abstract contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = msg.sender; _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library EnumerableSet { struct Set { bytes32[] _values; mapping (bytes32 => uint256) _indexes; } function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); set._indexes[value] = set._values.length; return true; } else { return false; } } function _remove(Set storage set, bytes32 value) private returns (bool) { uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; bytes32 lastvalue = set._values[lastIndex]; set._values[toDeleteIndex] = lastvalue; set._indexes[lastvalue] = valueIndex; set._values.pop(); delete set._indexes[value]; return true; } else { return false; } } function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } function _length(Set storage set) private view returns (uint256) { return set._values.length; } function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } struct Bytes32Set { Set _inner; } function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _add(set._inner, value); } function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _remove(set._inner, value); } function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { return _contains(set._inner, value); } function length(Bytes32Set storage set) internal view returns (uint256) { return _length(set._inner); } function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { return _at(set._inner, index); } struct AddressSet { Set _inner; } function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(uint160(value)))); } function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(uint160(value)))); } function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(uint160(value)))); } function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint160(uint256(_at(set._inner, index)))); } struct UintSet { Set _inner; } function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } } contract TheDAO is IERC20, Ownable { using Address for address; using EnumerableSet for EnumerableSet.AddressSet; mapping (address => uint256) public _balances; mapping (address => mapping (address => uint256)) public _allowances; mapping (address => uint256) public _sellLock; EnumerableSet.AddressSet private _excluded; EnumerableSet.AddressSet private _excludedFromSellLock; mapping (address => bool) public _blacklist; bool isBlacklist = true; string public constant _name = 'The DAO'; string public constant _symbol = '$TDAO'; uint8 public constant _decimals = 18; uint256 public constant InitialSupply= 100 * 10**6 * 10**_decimals; uint256 swapLimit = 5 * 10**5 * 10**_decimals; bool isSwapPegged = true; uint16 public BuyLimitDivider=50; // 2% uint8 public BalanceLimitDivider=50; // 2% uint16 public SellLimitDivider=125; // 0.75% uint16 public MaxSellLockTime= 10 seconds; mapping (address => bool) isAuth; address public constant UniswapRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address public constant Dead = 0x000000000000000000000000000000000000dEaD; uint256 public _circulatingSupply =InitialSupply; uint256 public balanceLimit = _circulatingSupply; uint256 public sellLimit = _circulatingSupply; uint256 public buyLimit = _circulatingSupply; uint8 public _buyTax; uint8 public _sellTax; uint8 public _transferTax; uint8 public _liquidityTax; uint8 public _buyburnTax; bool isTokenSwapManual = false; bool public bot_killer = true; bool public gasSaver = true; address public claimAddress; address public target_token; address public community_token; bool public community_enabled; address public _UniswapPairAddress; IUniswapRouter02 public _UniswapRouter; modifier onlyAuth() { require(_isAuth(msg.sender), "Caller not in Auth"); _; } function _isAuth(address addr) private view returns (bool){ return addr==owner()||isAuth[addr]; } constructor () { uint256 deployerBalance=_circulatingSupply*95/100; _balances[msg.sender] = deployerBalance; emit Transfer(address(0), msg.sender, deployerBalance); uint256 injectBalance=_circulatingSupply-deployerBalance; _balances[address(this)]=injectBalance; emit Transfer(address(0), address(this),injectBalance); _UniswapRouter = IUniswapRouter02(UniswapRouter); _UniswapPairAddress = IUniswapFactory(_UniswapRouter.factory()).createPair(address(this), _UniswapRouter.WETH()); balanceLimit=InitialSupply/BalanceLimitDivider; sellLimit=InitialSupply/SellLimitDivider; buyLimit=InitialSupply/BuyLimitDivider; sellLockTime=2 seconds; _buyTax=8; _sellTax=8; _transferTax=8; _liquidityTax=35; _buyburnTax=65; _excluded.add(msg.sender); _excludedFromSellLock.add(UniswapRouter); _excludedFromSellLock.add(_UniswapPairAddress); _excludedFromSellLock.add(address(this)); } 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 isClaim = sender==claimAddress; bool isExcluded = (_excluded.contains(sender) || _excluded.contains(recipient) || isAuth[sender] || isAuth[recipient]); bool isContractTransfer=(sender==address(this) || recipient==address(this)); bool isLiquidityTransfer = ((sender == _UniswapPairAddress && recipient == UniswapRouter) || (recipient == _UniswapPairAddress && sender == UniswapRouter)); if(isContractTransfer || isLiquidityTransfer || isExcluded || isClaim){ _feelessTransfer(sender, recipient, amount); } else{ if (!tradingEnabled) { if (sender != owner() && recipient != owner()) { if (bot_killer) { emit Transfer(sender,recipient,0); return; } else { require(tradingEnabled,"trading not yet enabled"); } } } bool isBuy=sender==_UniswapPairAddress|| sender == UniswapRouter; bool isSell=recipient==_UniswapPairAddress|| recipient == UniswapRouter; _taxedTransfer(sender,recipient,amount,isBuy,isSell); if(gasSaver) { delete isBuy; delete isSell; delete isClaim; delete isContractTransfer; delete isExcluded; delete isLiquidityTransfer; } } } function _taxedTransfer(address sender, address recipient, uint256 amount,bool isBuy,bool isSell) private{ uint256 recipientBalance = _balances[recipient]; uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "Transfer exceeds balance"); swapLimit = sellLimit/2; uint8 tax; if(isSell){ if(!_excludedFromSellLock.contains(sender)){ require(_sellLock[sender]<=block.timestamp||sellLockDisabled,"Seller in sellLock"); _sellLock[sender]=block.timestamp+sellLockTime; } require(amount<=sellLimit,"Dump protection"); tax=_sellTax; } else if(isBuy){ require(recipientBalance+amount<=balanceLimit,"whale protection"); require(amount<=buyLimit, "whale protection"); tax=_buyTax; } else { require(recipientBalance+amount<=balanceLimit,"whale protection"); if(!_excludedFromSellLock.contains(sender)) require(_sellLock[sender]<=block.timestamp||sellLockDisabled,"Sender in Lock"); tax=_transferTax; } if((sender!=_UniswapPairAddress)&&(!manualConversion)&&(!_isSwappingContractModifier)) _swapContractToken(amount); uint256 contractToken=_calculateFee(amount, tax, _liquidityTax+_buyburnTax); uint256 taxedAmount=amount-(contractToken); _removeToken(sender,amount); _balances[address(this)] += contractToken; _addToken(recipient, taxedAmount); emit Transfer(sender,recipient,taxedAmount); } function _feelessTransfer(address sender, address recipient, uint256 amount) private{ uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "Transfer exceeds balance"); _removeToken(sender,amount); _addToken(recipient, amount); emit Transfer(sender,recipient,amount); } function _calculateFee(uint256 amount, uint8 tax, uint8 taxPercent) private pure returns (uint256) { return (amount*tax*taxPercent) / 10000; } function _addToken(address addr, uint256 amount) private { uint256 newAmount=_balances[addr]+amount; _balances[addr]=newAmount; } function _removeToken(address addr, uint256 amount) private { uint256 newAmount=_balances[addr]-amount; _balances[addr]=newAmount; } bool private _isTokenSwaping; uint256 public totalTokenSwapGenerated; uint256 public totalPayouts; uint8 public buyburnShare=100; uint256 public buyburnBalance; function _distributeFeesETH(uint256 ETHamount) private { uint256 buyburnSplit = (ETHamount * buyburnShare)/100; buyburnBalance+=buyburnSplit; if(buyburnBalance > 100000000000000000) { swapForChoosenToken(); } } function swapForChoosenToken() private { uint toswap; toswap = buyburnBalance; uint toswap_token_1; uint toswap_token_2; if(community_enabled) { toswap_token_1 = toswap / 2; toswap_token_2 = toswap - toswap_token_1; } else { toswap_token_1 = toswap; } address[] memory path = new address[](2); path[0] = _UniswapRouter.WETH(); path[1] = target_token; _UniswapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens {value: toswap_token_1}( 0, path, Dead, block.timestamp ); buyburnBalance -= toswap_token_1; if(community_enabled) { address[] memory path_2 = new address[](2); path[0] = _UniswapRouter.WETH(); path[1] = community_token; _UniswapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens {value: toswap_token_2}( 0, path_2, Dead, block.timestamp ); buyburnBalance -= toswap_token_2; } } uint256 public totalLPETH; bool private _isSwappingContractModifier; modifier lockTheSwap { _isSwappingContractModifier = true; _; _isSwappingContractModifier = false; } function _swapContractToken(uint256 totalMax) private lockTheSwap{ uint256 contractBalance=_balances[address(this)]; uint16 totalTax=_liquidityTax; uint256 tokenToSwap=swapLimit; if(tokenToSwap > totalMax) { if(isSwapPegged) { tokenToSwap = totalMax; } } if(contractBalance<tokenToSwap||totalTax==0){ return; } uint256 tokenForLiquidity=(tokenToSwap*_liquidityTax)/totalTax; uint256 tokenForbuyburn= (tokenToSwap*_buyburnTax)/totalTax; uint256 liqToken=tokenForLiquidity/2; uint256 liqETHToken=tokenForLiquidity-liqToken; uint256 swapToken=liqETHToken+tokenForbuyburn; uint256 initialETHBalance = address(this).balance; _swapTokenForETH(swapToken); uint256 newETH=(address(this).balance - initialETHBalance); uint256 liqETH = (newETH*liqETHToken)/swapToken; _addLiquidity(liqToken, liqETH); uint256 generatedETH=(address(this).balance - initialETHBalance); _distributeFeesETH(generatedETH); } 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 ); } /// @notice Utilities function UTILITY_destroy(uint256 amount) public onlyAuth { require(_balances[address(this)] >= amount); _balances[address(this)] -= amount; _circulatingSupply -= amount; emit Transfer(address(this), Dead, amount); } function UTILITY_getLimits() public view returns(uint256 balance, uint256 sell){ return(balanceLimit/10**_decimals, sellLimit/10**_decimals); } function UTILITY_getTaxes() public view returns(uint256 buyburnTax,uint256 liquidityTax, uint256 buyTax, uint256 sellTax, uint256 transferTax){ return (_buyburnTax,_liquidityTax,_buyTax,_sellTax,_transferTax); } function UTILITY_getAddressSellLockTimeInSeconds(address AddressToCheck) public view returns (uint256){ uint256 lockTime=_sellLock[AddressToCheck]; if(lockTime<=block.timestamp) { return 0; } return lockTime-block.timestamp; } function UTILITY_getSellLockTimeInSeconds() public view returns(uint256){ return sellLockTime; } bool public sellLockDisabled; uint256 public sellLockTime; bool public manualConversion; function UTILITY_SetPeggedSwap(bool isPegged) public onlyAuth { isSwapPegged = isPegged; } function UTILITY_SetMaxSwap(uint256 max) public onlyAuth { swapLimit = max; } function UTILITY_SetMaxLockTime(uint16 max) public onlyAuth { MaxSellLockTime = max; } function UTILITY_set_Target_one(address addy) public onlyAuth { target_token = addy; } function UTILITY_set_Target_two(address addy) public onlyAuth { community_token = addy; } function UTILITY_enable_target_two(bool booly) public onlyAuth { community_enabled = booly; } /// @notice ACL Functions function ACL_SetClaimer(address addy) public onlyAuth { claimAddress = addy; } function ACL_BlackListAddress(address addy, bool booly) public onlyAuth { _blacklist[addy] = booly; } function ACL_SetAuth(address addy, bool booly) public onlyAuth { isAuth[addy] = booly; } function ACL_ExcludeAccountFromFees(address account) public onlyAuth { _excluded.add(account); } function ACL_IncludeAccountToFees(address account) public onlyAuth { _excluded.remove(account); } function ACL_ExcludeAccountFromSellLock(address account) public onlyAuth { _excludedFromSellLock.add(account); } function ACL_IncludeAccountToSellLock(address account) public onlyAuth { _excludedFromSellLock.remove(account); } function Auth_WithdrawExcess() public onlyAuth{ uint256 amount=(address(this).balance-buyburnBalance-10000000); address sender = msg.sender; (bool sent,) =sender.call{value: (amount)}(""); require(sent,"withdraw failed"); } function Auth_WithdrawbuyburnETH() public onlyAuth{ uint256 amount=buyburnBalance; buyburnBalance=0; address sender = msg.sender; (bool sent,) =sender.call{value: (amount)}(""); require(sent,"withdraw failed"); } function UTILITY_ActivateGasSaver(bool booly) public onlyAuth { gasSaver = booly; } function UTILITY_SwitchManualETHConversion(bool manual) public onlyAuth{ manualConversion=manual; } function UTILITY_DisableSellLock(bool disabled) public onlyAuth{ sellLockDisabled=disabled; } function UTILIY_SetSellLockTime(uint256 sellLockSeconds)public onlyAuth{ sellLockTime=sellLockSeconds; } function UTILITY_SetTaxes(uint8 buyburnTaxes, uint8 liquidityTaxes, uint8 buyTax, uint8 sellTax, uint8 transferTax) public onlyAuth{ uint8 totalTax=buyburnTaxes +liquidityTaxes; require(totalTax==100, "burn+liq needs to equal 100%"); _buyburnTax = buyburnTaxes; _liquidityTax=liquidityTaxes; _buyTax=buyTax; _sellTax=sellTax; _transferTax=transferTax; } function UTILITY_ChangebuyburnShare(uint8 newShare) public onlyAuth{ buyburnShare=newShare; } function UTILITY_ManualGenerateTokenSwapBalance(uint256 _qty) public onlyAuth{ _swapContractToken(_qty * 10**9); } function UTILITY_UpdateLimits(uint256 newBalanceLimit, uint256 newSellLimit) public onlyAuth{ newBalanceLimit=newBalanceLimit*10**_decimals; newSellLimit=newSellLimit*10**_decimals; balanceLimit = newBalanceLimit; sellLimit = newSellLimit; } function UTILITY_manualBuyBack() public onlyAuth { swapForChoosenToken(); } bool public tradingEnabled; address private _liquidityTokenAddress; function SETTINGS_EnableTrading(bool booly) public onlyAuth{ tradingEnabled = booly; } function SETTINGS_LiquidityTokenAddress(address liquidityTokenAddress) public onlyAuth{ _liquidityTokenAddress=liquidityTokenAddress; } function UTILITY_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); } function UTILITY_setBlacklistEnabled(bool isBlacklistEnabled) public onlyAuth { isBlacklist = isBlacklistEnabled; } function UTILITY_setContractTokenSwapManual(bool manual) public onlyAuth { isTokenSwapManual = manual; } function UTILITY_setBlacklistedAddress(address toBlacklist) public onlyAuth { _blacklist[toBlacklist] = true; } function UTILITY_removeBlacklistedAddress(address toRemove) public onlyAuth { _blacklist[toRemove] = false; } function UTILITY_AvoidLocks() public onlyAuth{ (bool sent,) =msg.sender.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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ACL_BlackListAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_ExcludeAccountFromSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_IncludeAccountToFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_IncludeAccountToSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ACL_SetAuth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"ACL_SetClaimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Auth_WithdrawExcess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Auth_WithdrawbuyburnETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BalanceLimitDivider","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Dead","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"SETTINGS_EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityTokenAddress","type":"address"}],"name":"SETTINGS_LiquidityTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SellLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"UTILITY_ActivateGasSaver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UTILITY_AvoidLocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"UTILITY_ChangebuyburnShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"disabled","type":"bool"}],"name":"UTILITY_DisableSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_qty","type":"uint256"}],"name":"UTILITY_ManualGenerateTokenSwapBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tknAddress","type":"address"}],"name":"UTILITY_RescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"max","type":"uint16"}],"name":"UTILITY_SetMaxLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"UTILITY_SetMaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isPegged","type":"bool"}],"name":"UTILITY_SetPeggedSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyburnTaxes","type":"uint8"},{"internalType":"uint8","name":"liquidityTaxes","type":"uint8"},{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint8","name":"transferTax","type":"uint8"}],"name":"UTILITY_SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"UTILITY_SwitchManualETHConversion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBalanceLimit","type":"uint256"},{"internalType":"uint256","name":"newSellLimit","type":"uint256"}],"name":"UTILITY_UpdateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UTILITY_destroy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"UTILITY_enable_target_two","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AddressToCheck","type":"address"}],"name":"UTILITY_getAddressSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILITY_getLimits","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILITY_getSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILITY_getTaxes","outputs":[{"internalType":"uint256","name":"buyburnTax","type":"uint256"},{"internalType":"uint256","name":"liquidityTax","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":[],"name":"UTILITY_manualBuyBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"UTILITY_removeBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isBlacklistEnabled","type":"bool"}],"name":"UTILITY_setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toBlacklist","type":"address"}],"name":"UTILITY_setBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"UTILITY_setContractTokenSwapManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"UTILITY_set_Target_one","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"UTILITY_set_Target_two","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellLockSeconds","type":"uint256"}],"name":"UTILIY_SetSellLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_UniswapPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_UniswapRouter","outputs":[{"internalType":"contract IUniswapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyburnTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_sellLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"bot_killer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyburnBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyburnShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"community_enabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"community_token","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"gasSaver","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualConversion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"target_token","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"totalTokenSwapGenerated","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526009805460ff191660011790556200001f6012600a620005ec565b6200002e906207a120620006ab565b600a908155600b80546001600160401b031916660a007d320032011790556200005a90601290620005ec565b6200006a906305f5e100620006ab565b600d819055600e819055600f8190556010556011805467010100000000000062ffffff60281b199091161790556018805460ff19166064179055348015620000b157600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060006064600d54605f620001089190620006ab565b62000114919062000580565b3360008181526001602052604080822084905551929350909160008051602062004027833981519152906200014c9085815260200190565b60405180910390a3600081600d54620001669190620006cd565b3060008181526001602052604080822084905551929350909160008051602062004027833981519152906200019e9085815260200190565b60405180910390a3601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200020657600080fd5b505afa1580156200021b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024191906200054e565b6001600160a01b031663c9c6539630601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029f57600080fd5b505afa158015620002b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002da91906200054e565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200032357600080fd5b505af115801562000338573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035e91906200054e565b601480546001600160a01b0319166001600160a01b0392909216919091179055600b546301000000900460ff16620003996012600a620005ec565b620003a9906305f5e100620006ab565b620003b5919062000580565b600e55600b54640100000000900461ffff16620003d56012600a620005ec565b620003e5906305f5e100620006ab565b620003f1919062000580565b600f55600b54610100900461ffff166200040e6012600a620005ec565b6200041e906305f5e100620006ab565b6200042a919062000580565b6010556002601c556011805464ffffffffff191664412308080817905562000460600433620004dc602090811b6200202b17901c565b5062000490737a250d5630b4cf539739df2c5dacb4c659f2488d6006620004dc60201b6200202b1790919060201c565b50601454620004b7906006906001600160a01b0316620004dc602090811b6200202b17901c565b50620004d3306006620004dc60201b6200202b1790919060201c565b505050620006fd565b6000620004f3836001600160a01b038416620004fc565b90505b92915050565b60008181526001830160205260408120546200054557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620004f6565b506000620004f6565b6000602082840312156200056157600080fd5b81516001600160a01b03811681146200057957600080fd5b9392505050565b6000826200059e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620005e4578160001904821115620005c857620005c8620006e7565b80851615620005d657918102915b93841c9390800290620005a8565b509250929050565b6000620004f360ff8416836000826200060857506001620004f6565b816200061757506000620004f6565b81600181146200063057600281146200063b576200065b565b6001915050620004f6565b60ff8411156200064f576200064f620006e7565b50506001821b620004f6565b5060208310610133831016604e8410600b841016171562000680575081810a620004f6565b6200068c8383620005a3565b8060001904821115620006a357620006a3620006e7565b029392505050565b6000816000190483118215151615620006c857620006c8620006e7565b500290565b600082821015620006e257620006e2620006e7565b500390565b634e487b7160e01b600052601160045260246000fd5b61391a806200070d6000396000f3fe6080604052600436106104cb5760003560e01c80637a4325f911610274578063b19a08191161014e578063d65af4f2116100c6578063f2e0fcbb11610082578063f2e0fcbb14611010578063f2fde38b14611030578063f51f749614611050578063f88b0e4614611070578063f918eb5314611086578063fb272987146110a657005b8063d65af4f214610f1f578063dd62ed3e14610f40578063e134efbb14610f86578063e1d21a5b14610fa6578063e9addd9b14610fc6578063ead3caf414610ff057005b8063c7639d8011610115578063c7639d8014610e45578063ca9ec19914610e6d578063d05f132414610e8c578063d28d885214610eac578063d2aaceda14610edf578063d34a9f3c14610eff57005b8063b19a081914610da5578063b41ea98d14610dc5578063b792161714610de5578063b89bfd6514610e05578063b9f4207d14610e2557005b806395d89b41116101ec578063a568016f116101a8578063a568016f14610cd3578063a9059cbb14610cf3578063a9aab6b914610d13578063ab0b364c14610d33578063ad463f3d14610d54578063b09f126614610d7457005b806395d89b4114610c15578063a1481b7e14610c43578063a20623ce14610c58578063a253c06e14610c88578063a42650ab14610c9e578063a457c2d714610cb357005b806386d0ada81161023b57806386d0ada814610b89578063887c60fb14610ba3578063893d20e814610bc25780638ccb06a514610be05780638da5cb5b14610bc2578063954ea66514610bf557005b80637a4325f914610afd5780637b614de614610b1d5780638116984d14610b3d57806382c4767b14610b5d57806386271f2e14610b7357005b8063382e329a116103a5578063518c7cc01161031d5780636ebcf607116102d95780636ebcf60714610a3a5780636f890a2f14610a6757806370a0823114610a87578063715018a614610abd57806372e166f614610ad2578063762bb28214610ae757005b8063518c7cc01461098f57806356cf0111146109af578063589210d9146109cf5780635aa18057146109e55780635e1050e5146109fa57806365001c6614610a1a57005b806342a110951161036c57806342a11095146108ea57806344832cc61461090457806348e907b7146109245780634ada218b1461093a5780634eca70f5146109595780634f91e48c1461097957005b8063382e329a1461085c578063385abc691461087d578063395093511461089e5780633cc39b7a146108be5780634089b170146108d457005b80631eb25d1311610443578063311a8697116103ff578063311a8697146107b0578063313ce567146107d157806332424aa3146107e5578063325ea1aa146107fa5780633478154b1461081a57806337ac7f081461083c57005b80631eb25d13146107015780631f8b845e1461071657806323b872dd146107365780632514a197146107565780632a24e064146107705780632e6bc3b41461079057005b80630fd99e16116104925780630fd99e1614610622578063141235321461065857806314ca24ed1461067857806315d77f03146106ac57806317391e49146106cc57806318160ddd146106ec57005b806301b8dc2e146104d4578063024c2ddd1461053457806305691ec81461057a57806306fdde03146105b9578063095ea7b3146105f257005b366104d257005b005b3480156104e057600080fd5b506011546040805160ff6401000000008404811682526301000000840481166020830152808416928201929092526101008304821660608201526201000090920416608082015260a0015b60405180910390f35b34801561054057600080fd5b5061056c61054f366004613348565b600260209081526000928352604080842090915290825290205481565b60405190815260200161052b565b34801561058657600080fd5b506011546105a190600160401b90046001600160a01b031681565b6040516001600160a01b03909116815260200161052b565b3480156105c557600080fd5b506040805180820190915260078152665468652044414f60c81b60208201525b60405161052b91906135f5565b3480156105fe57600080fd5b5061061261060d3660046133f0565b6110d3565b604051901515815260200161052b565b34801561062e57600080fd5b50600b5461064590640100000000900461ffff1681565b60405161ffff909116815260200161052b565b34801561066457600080fd5b506104d261067336600461330e565b6110ea565b34801561068457600080fd5b5060115461069a90640100000000900460ff1681565b60405160ff909116815260200161052b565b3480156106b857600080fd5b506104d26106c73660046134fc565b611127565b3480156106d857600080fd5b5060115461069a9062010000900460ff1681565b3480156106f857600080fd5b50600d5461056c565b34801561070d57600080fd5b5061056c611162565b34801561072257600080fd5b50600b5461064590610100900461ffff1681565b34801561074257600080fd5b50610612610751366004613381565b61117f565b34801561076257600080fd5b5060185461069a9060ff1681565b34801561077c57600080fd5b506014546105a1906001600160a01b031681565b34801561079c57600080fd5b506104d26107ab36600461330e565b611216565b3480156107bc57600080fd5b50600b5461069a906301000000900460ff1681565b3480156107dd57600080fd5b50601261069a565b3480156107f157600080fd5b5061069a601281565b34801561080657600080fd5b506104d261081536600461347a565b61125d565b34801561082657600080fd5b50600b5461064590600160301b900461ffff1681565b34801561084857600080fd5b506104d261085736600461341c565b611287565b34801561086857600080fd5b5060115461069a906301000000900460ff1681565b34801561088957600080fd5b5060135461061290600160a01b900460ff1681565b3480156108aa57600080fd5b506106126108b93660046133f0565b6112ce565b3480156108ca57600080fd5b5061056c601a5481565b3480156108e057600080fd5b5061056c60175481565b3480156108f657600080fd5b5060115461069a9060ff1681565b34801561091057600080fd5b5061056c61091f36600461330e565b611305565b34801561093057600080fd5b5061056c60165481565b34801561094657600080fd5b50601d5461061290610100900460ff1681565b34801561096557600080fd5b506104d261097436600461330e565b61133f565b34801561098557600080fd5b5061056c600f5481565b34801561099b57600080fd5b506104d26109aa36600461330e565b61138e565b3480156109bb57600080fd5b506104d26109ca366004613517565b6113e4565b3480156109db57600080fd5b5061056c60105481565b3480156109f157600080fd5b50601c5461056c565b348015610a0657600080fd5b506104d2610a1536600461330e565b6114d4565b348015610a2657600080fd5b506104d2610a3536600461330e565b61151a565b348015610a4657600080fd5b5061056c610a5536600461330e565b60016020526000908152604090205481565b348015610a7357600080fd5b506104d2610a8236600461347a565b611693565b348015610a9357600080fd5b5061056c610aa236600461330e565b6001600160a01b031660009081526001602052604090205490565b348015610ac957600080fd5b506104d261173b565b348015610ade57600080fd5b506104d26117ee565b348015610af357600080fd5b5061056c600e5481565b348015610b0957600080fd5b506104d2610b183660046133c2565b6118d3565b348015610b2957600080fd5b506104d2610b3836600461347a565b611923565b348015610b4957600080fd5b506104d2610b5836600461341c565b611961565b348015610b6957600080fd5b506105a161dead81565b348015610b7f57600080fd5b5061056c60195481565b348015610b9557600080fd5b50601d546106129060ff1681565b348015610baf57600080fd5b50601b5461061290610100900460ff1681565b348015610bce57600080fd5b506000546001600160a01b03166105a1565b348015610bec57600080fd5b506104d26119a0565b348015610c0157600080fd5b506015546105a1906001600160a01b031681565b348015610c2157600080fd5b50604080518082019091526005815264245444414f60d81b60208201526105e5565b348015610c4f57600080fd5b506104d26119df565b348015610c6457600080fd5b50610612610c7336600461330e565b60086020526000908152604090205460ff1681565b348015610c9457600080fd5b5061056c600d5481565b348015610caa57600080fd5b506104d2611a59565b348015610cbf57600080fd5b50610612610cce3660046133f0565b611a88565b348015610cdf57600080fd5b506104d2610cee36600461341c565b611b04565b348015610cff57600080fd5b50610612610d0e3660046133f0565b611b3c565b348015610d1f57600080fd5b506104d2610d2e36600461347a565b611b49565b348015610d3f57600080fd5b5060115461061290600160381b900460ff1681565b348015610d6057600080fd5b506104d2610d6f36600461341c565b611b73565b348015610d8057600080fd5b506105e560405180604001604052806005815260200164245444414f60d81b81525081565b348015610db157600080fd5b506104d2610dc036600461330e565b611bba565b348015610dd157600080fd5b506104d2610de036600461341c565b611c03565b348015610df157600080fd5b506104d2610e0036600461341c565b611c3b565b348015610e1157600080fd5b506104d2610e2036600461341c565b611c73565b348015610e3157600080fd5b506104d2610e4036600461341c565b611cb2565b348015610e5157600080fd5b506105a1737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610e7957600080fd5b5060115461069a90610100900460ff1681565b348015610e9857600080fd5b506104d2610ea736600461330e565b611cf5565b348015610eb857600080fd5b506105e5604051806040016040528060078152602001665468652044414f60c81b81525081565b348015610eeb57600080fd5b506104d2610efa36600461330e565b611d3c565b348015610f0b57600080fd5b506104d2610f1a36600461330e565b611d6c565b348015610f2b57600080fd5b5060115461061290600160301b900460ff1681565b348015610f4c57600080fd5b5061056c610f5b366004613348565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610f9257600080fd5b506104d2610fa13660046134ac565b611d9c565b348015610fb257600080fd5b506104d2610fc1366004613456565b611dfb565b348015610fd257600080fd5b50610fdb611e45565b6040805192835260208301919091520161052b565b348015610ffc57600080fd5b506104d261100b3660046133c2565b611e82565b34801561101c57600080fd5b506104d261102b36600461330e565b611ed2565b34801561103c57600080fd5b506104d261104b36600461330e565b611f02565b34801561105c57600080fd5b506012546105a1906001600160a01b031681565b34801561107c57600080fd5b5061056c601c5481565b34801561109257600080fd5b506013546105a1906001600160a01b031681565b3480156110b257600080fd5b5061056c6110c136600461330e565b60036020526000908152604090205481565b60006110e0338484612040565b5060015b92915050565b6110f333612133565b6111185760405162461bcd60e51b815260040161110f9061364a565b60405180910390fd5b61112360048261202b565b5050565b61113033612133565b61114c5760405162461bcd60e51b815260040161110f9061364a565b6018805460ff191660ff92909216919091179055565b61116e6012600a61377e565b61117c906305f5e100613829565b81565b600061118c84848461216a565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156111f75760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b604482015260640161110f565b61120b85336112068685613848565b612040565b506001949350505050565b61121f33612133565b61123b5760405162461bcd60e51b815260040161110f9061364a565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b61126633612133565b6112825760405162461bcd60e51b815260040161110f9061364a565b600a55565b61129033612133565b6112ac5760405162461bcd60e51b815260040161110f9061364a565b60118054911515600160381b0267ff0000000000000019909216919091179055565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916110e09185906112069086906136dc565b6001600160a01b03811660009081526003602052604081205442811161132e5750600092915050565b6113384282613848565b9392505050565b61134833612133565b6113645760405162461bcd60e51b815260040161110f9061364a565b601d80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b61139733612133565b6113b35760405162461bcd60e51b815260040161110f9061364a565b601180546001600160a01b03909216600160401b0268010000000000000000600160e01b0319909216919091179055565b6113ed33612133565b6114095760405162461bcd60e51b815260040161110f9061364a565b600061141585876136f4565b90508060ff1660641461146a5760405162461bcd60e51b815260206004820152601c60248201527f6275726e2b6c6971206e6565647320746f20657175616c203130302500000000604482015260640161110f565b506011805460ff928316620100000262ff0000199484166101000261ffff1997851663010000000263ff00000019998616640100000000029990991664ffff0000001990931692909217979097179590951693909116929092179290921791909116919091179055565b6114dd33612133565b6114f95760405162461bcd60e51b815260040161110f9061364a565b6001600160a01b03166000908152600860205260409020805460ff19169055565b61152333612133565b61153f5760405162461bcd60e51b815260040161110f9061364a565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b15801561158357600080fd5b505afa158015611597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bb9190613493565b90506000811161160d5760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e63650000000000000000604482015260640161110f565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b15801561165557600080fd5b505af1158015611669573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168d9190613439565b50505050565b61169c33612133565b6116b85760405162461bcd60e51b815260040161110f9061364a565b306000908152600160205260409020548111156116d457600080fd5b30600090815260016020526040812080548392906116f3908490613848565b9250508190555080600d600082825461170c9190613848565b909155505060405181815261dead9030906000805160206138c58339815191529060200160405180910390a350565b3361174e6000546001600160a01b031690565b6001600160a01b0316146117a45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161110f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6117f733612133565b6118135760405162461bcd60e51b815260040161110f9061364a565b600062989680601954476118279190613848565b6118319190613848565b905060003390506000816001600160a01b0316836040515b60006040518083038185875af1925050503d8060008114611886576040519150601f19603f3d011682016040523d82523d6000602084013e61188b565b606091505b50509050806118ce5760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b604482015260640161110f565b505050565b6118dc33612133565b6118f85760405162461bcd60e51b815260040161110f9061364a565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b61192c33612133565b6119485760405162461bcd60e51b815260040161110f9061364a565b61195e61195982633b9aca00613829565b61257a565b50565b61196a33612133565b6119865760405162461bcd60e51b815260040161110f9061364a565b601b80549115156101000261ff0019909216919091179055565b6119a933612133565b6119c55760405162461bcd60e51b815260040161110f9061364a565b601980546000918290556040519091339182908490611849565b6119e833612133565b611a045760405162461bcd60e51b815260040161110f9061364a565b604051600090339047908381818185875af1925050503d8060008114611a46576040519150601f19603f3d011682016040523d82523d6000602084013e611a4b565b606091505b505090508061195e57600080fd5b611a6233612133565b611a7e5760405162461bcd60e51b815260040161110f9061364a565b611a866126d1565b565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611aeb5760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b604482015260640161110f565b611afa33856112068685613848565b5060019392505050565b611b0d33612133565b611b295760405162461bcd60e51b815260040161110f9061364a565b6009805460ff1916911515919091179055565b60006110e033848461216a565b611b5233612133565b611b6e5760405162461bcd60e51b815260040161110f9061364a565b601c55565b611b7c33612133565b611b985760405162461bcd60e51b815260040161110f9061364a565b60118054911515650100000000000265ff000000000019909216919091179055565b611bc333612133565b611bdf5760405162461bcd60e51b815260040161110f9061364a565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b611c0c33612133565b611c285760405162461bcd60e51b815260040161110f9061364a565b600b805460ff1916911515919091179055565b611c4433612133565b611c605760405162461bcd60e51b815260040161110f9061364a565b601d805460ff1916911515919091179055565b611c7c33612133565b611c985760405162461bcd60e51b815260040161110f9061364a565b601d80549115156101000261ff0019909216919091179055565b611cbb33612133565b611cd75760405162461bcd60e51b815260040161110f9061364a565b60138054911515600160a01b0260ff60a01b19909216919091179055565b611cfe33612133565b611d1a5760405162461bcd60e51b815260040161110f9061364a565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b611d4533612133565b611d615760405162461bcd60e51b815260040161110f9061364a565b61112360068261202b565b611d7533612133565b611d915760405162461bcd60e51b815260040161110f9061364a565b611123600682612a0a565b611da533612133565b611dc15760405162461bcd60e51b815260040161110f9061364a565b611dcd6012600a61377e565b611dd79083613829565b9150611de56012600a61377e565b611def9082613829565b600e9290925550600f55565b611e0433612133565b611e205760405162461bcd60e51b815260040161110f9061364a565b600b805461ffff909216600160301b0267ffff00000000000019909216919091179055565b600080611e546012600a61377e565b600e54611e619190613719565b611e6d6012600a61377e565b600f54611e7a9190613719565b915091509091565b611e8b33612133565b611ea75760405162461bcd60e51b815260040161110f9061364a565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b611edb33612133565b611ef75760405162461bcd60e51b815260040161110f9061364a565b611123600482612a0a565b33611f156000546001600160a01b031690565b6001600160a01b031614611f6b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161110f565b6001600160a01b038116611fd05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161110f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000611338836001600160a01b038416612a1f565b6001600160a01b03831661208a5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b604482015260640161110f565b6001600160a01b0382166120d25760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b604482015260640161110f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080546001600160a01b03838116911614806110e45750506001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b0383166121b55760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b604482015260640161110f565b6001600160a01b0382166121fe5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b604482015260640161110f565b60095460ff1615612286576001600160a01b03831660009081526008602052604090205460ff1615801561224b57506001600160a01b03821660009081526008602052604090205460ff16155b6122865760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b604482015260640161110f565b6011546001600160a01b03848116600160401b909204161460006122ab600486612a6e565b806122bc57506122bc600485612a6e565b806122df57506001600160a01b0385166000908152600c602052604090205460ff165b8061230257506001600160a01b0384166000908152600c602052604090205460ff165b905060006001600160a01b03861630148061232557506001600160a01b03851630145b6014549091506000906001600160a01b03888116911614801561236457506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b806123a357506014546001600160a01b0387811691161480156123a357506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b905081806123ae5750805b806123b65750825b806123be5750835b156123d3576123ce878787612a90565b612571565b601d54610100900460ff166124c1576000546001600160a01b0388811691161480159061240e57506000546001600160a01b03878116911614155b156124c157601154600160301b900460ff161561246a57856001600160a01b0316876001600160a01b03166000805160206138c5833981519152600060405161245991815260200190565b60405180910390a350505050505050565b601d54610100900460ff166124c15760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c6564000000000000000000604482015260640161110f565b6014546000906001600160a01b03898116911614806124fc57506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b6014549091506000906001600160a01b038981169116148061253a57506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b90506125498989898585612b49565b601154600160381b900460ff161561256e575060009450849350839250829150819050805b50505b50505050505050565b601b805460ff191660019081179091553060009081526020919091526040902054601154600a54630100000090910460ff1690838111156125c357600b5460ff16156125c35750825b808310806125d3575061ffff8216155b156125e0575050506126c4565b60115460009061ffff841690612600906301000000900460ff1684613829565b61260a9190613719565b60115490915060009061ffff85169061262e90640100000000900460ff1685613829565b6126389190613719565b90506000612647600284613719565b905060006126558285613848565b9050600061266384836136dc565b90504761266f82612edc565b600061267b8247613848565b905060008361268a8684613829565b6126949190613719565b90506126a08682613044565b60006126ac8447613848565b90506126b78161311b565b5050505050505050505050505b50601b805460ff19169055565b6019546013546000908190600160a01b900460ff1615612709576126f6600284613719565b91506127028284613848565b905061270d565b8291505b6040805160028082526060820183526000926020830190803683375050601554604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561277257600080fd5b505afa158015612786573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127aa919061332b565b816000815181106127bd576127bd61388b565b6001600160a01b0392831660209182029290920101526012548251911690829060019081106127ee576127ee61388b565b6001600160a01b03928316602091820292909201015260155460405163b6f9de9560e01b815291169063b6f9de9590859061283690600090869061dead9042906004016135c0565b6000604051808303818588803b15801561284f57600080fd5b505af1158015612863573d6000803e3d6000fd5b5050505050826019600082825461287a9190613848565b9091555050601354600160a01b900460ff161561168d576040805160028082526060820183526000926020830190803683375050601554604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156128f657600080fd5b505afa15801561290a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292e919061332b565b826000815181106129415761294161388b565b6001600160a01b0392831660209182029290920101526013548351911690839060019081106129725761297261388b565b6001600160a01b03928316602091820292909201015260155460405163b6f9de9560e01b815291169063b6f9de959085906129ba90600090869061dead9042906004016135c0565b6000604051808303818588803b1580156129d357600080fd5b505af11580156129e7573d6000803e3d6000fd5b505050505082601960008282546129fe9190613848565b90915550505050505050565b6000611338836001600160a01b03841661316e565b6000818152600183016020526040812054612a66575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556110e4565b5060006110e4565b6001600160a01b03811660009081526001830160205260408120541515611338565b6001600160a01b03831660009081526001602052604090205481811015612af45760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161110f565b612afe848361325b565b612b0883836132a0565b826001600160a01b0316846001600160a01b03166000805160206138c583398151915284604051612b3b91815260200190565b60405180910390a350505050565b6001600160a01b0380851660009081526001602052604080822054928816825290205484811015612bb75760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161110f565b6002600f54612bc69190613719565b600a5560008315612ccb57612bdc600689612a6e565b612c76576001600160a01b03881660009081526003602052604090205442101580612c0e5750601b54610100900460ff165b612c4f5760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b604482015260640161110f565b601c54612c5c90426136dc565b6001600160a01b0389166000908152600360205260409020555b600f54861115612cba5760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b604482015260640161110f565b50601154610100900460ff16612ddd565b8415612d2a57600e54612cde87856136dc565b1115612cfc5760405162461bcd60e51b815260040161110f90613676565b601054861115612d1e5760405162461bcd60e51b815260040161110f90613676565b5060115460ff16612ddd565b600e54612d3787856136dc565b1115612d555760405162461bcd60e51b815260040161110f90613676565b612d60600689612a6e565b612dcf576001600160a01b03881660009081526003602052604090205442101580612d925750601b54610100900460ff165b612dcf5760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b604482015260640161110f565b5060115462010000900460ff165b6014546001600160a01b03898116911614801590612dfe5750601d5460ff16155b8015612e0d5750601b5460ff16155b15612e1b57612e1b8661257a565b601154600090612e4c9088908490612e479060ff640100000000820481169163010000009004166136f4565b6132c4565b90506000612e5a8289613848565b9050612e668a8961325b565b3060009081526001602052604081208054849290612e859084906136dc565b90915550612e95905089826132a0565b886001600160a01b03168a6001600160a01b03166000805160206138c583398151915283604051612ec891815260200190565b60405180910390a350505050505050505050565b601554612ef49030906001600160a01b031683612040565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612f2957612f2961388b565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612f7d57600080fd5b505afa158015612f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb5919061332b565b81600181518110612fc857612fc861388b565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac9479061300e9085906000908690309042906004016136a0565b600060405180830381600087803b15801561302857600080fd5b505af115801561303c573d6000803e3d6000fd5b505050505050565b80601a600082825461305691906136dc565b90915550506015546130739030906001600160a01b031684612040565b60155460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b1580156130db57600080fd5b505af11580156130ef573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061311491906134ce565b5050505050565b6018546000906064906131319060ff1684613829565b61313b9190613719565b9050806019600082825461314f91906136dc565b909155505060195467016345785d8a00001015611123576111236126d1565b60008181526001830160205260408120548015613251576000613192600183613848565b85549091506000906131a690600190613848565b905060008660000182815481106131bf576131bf61388b565b90600052602060002001549050808760000184815481106131e2576131e261388b565b60009182526020808320909101929092558281526001890190915260409020849055865487908061321557613215613875565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506110e4565b60009150506110e4565b6001600160a01b03821660009081526001602052604081205461327f908390613848565b6001600160a01b039093166000908152600160205260409020929092555050565b6001600160a01b03821660009081526001602052604081205461327f9083906136dc565b60006127108260ff168460ff16866132dc9190613829565b6132e69190613829565b6132f09190613719565b949350505050565b803560ff8116811461330957600080fd5b919050565b60006020828403121561332057600080fd5b8135611338816138a1565b60006020828403121561333d57600080fd5b8151611338816138a1565b6000806040838503121561335b57600080fd5b8235613366816138a1565b91506020830135613376816138a1565b809150509250929050565b60008060006060848603121561339657600080fd5b83356133a1816138a1565b925060208401356133b1816138a1565b929592945050506040919091013590565b600080604083850312156133d557600080fd5b82356133e0816138a1565b91506020830135613376816138b6565b6000806040838503121561340357600080fd5b823561340e816138a1565b946020939093013593505050565b60006020828403121561342e57600080fd5b8135611338816138b6565b60006020828403121561344b57600080fd5b8151611338816138b6565b60006020828403121561346857600080fd5b813561ffff8116811461133857600080fd5b60006020828403121561348c57600080fd5b5035919050565b6000602082840312156134a557600080fd5b5051919050565b600080604083850312156134bf57600080fd5b50508035926020909101359150565b6000806000606084860312156134e357600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561350e57600080fd5b611338826132f8565b600080600080600060a0868803121561352f57600080fd5b613538866132f8565b9450613546602087016132f8565b9350613554604087016132f8565b9250613562606087016132f8565b9150613570608087016132f8565b90509295509295909350565b600081518084526020808501945080840160005b838110156135b55781516001600160a01b031687529582019590820190600101613590565b509495945050505050565b8481526080602082015260006135d9608083018661357c565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b8181101561362257858101830151858201604001528201613606565b81811115613634576000604083870101525b50601f01601f1916929092016040019392505050565b602080825260129082015271086c2d8d8cae440dcdee840d2dc4082eae8d60731b604082015260600190565b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b85815284602082015260a0604082015260006136bf60a083018661357c565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156136ef576136ef61385f565b500190565b600060ff821660ff84168060ff038211156137115761371161385f565b019392505050565b60008261373657634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561377657816000190482111561375c5761375c61385f565b8085161561376957918102915b93841c9390800290613740565b509250929050565b600061133860ff841683600082613797575060016110e4565b816137a4575060006110e4565b81600181146137ba57600281146137c4576137e0565b60019150506110e4565b60ff8411156137d5576137d561385f565b50506001821b6110e4565b5060208310610133831016604e8410600b8410161715613803575081810a6110e4565b61380d838361373b565b80600019048211156138215761382161385f565b029392505050565b60008160001904831182151516156138435761384361385f565b500290565b60008282101561385a5761385a61385f565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461195e57600080fd5b801515811461195e57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204910a3d3a5ac7030e0f87d2345a4a027049d75557a658a24e01385b12ca7f5b064736f6c63430008070033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
Deployed Bytecode
0x6080604052600436106104cb5760003560e01c80637a4325f911610274578063b19a08191161014e578063d65af4f2116100c6578063f2e0fcbb11610082578063f2e0fcbb14611010578063f2fde38b14611030578063f51f749614611050578063f88b0e4614611070578063f918eb5314611086578063fb272987146110a657005b8063d65af4f214610f1f578063dd62ed3e14610f40578063e134efbb14610f86578063e1d21a5b14610fa6578063e9addd9b14610fc6578063ead3caf414610ff057005b8063c7639d8011610115578063c7639d8014610e45578063ca9ec19914610e6d578063d05f132414610e8c578063d28d885214610eac578063d2aaceda14610edf578063d34a9f3c14610eff57005b8063b19a081914610da5578063b41ea98d14610dc5578063b792161714610de5578063b89bfd6514610e05578063b9f4207d14610e2557005b806395d89b41116101ec578063a568016f116101a8578063a568016f14610cd3578063a9059cbb14610cf3578063a9aab6b914610d13578063ab0b364c14610d33578063ad463f3d14610d54578063b09f126614610d7457005b806395d89b4114610c15578063a1481b7e14610c43578063a20623ce14610c58578063a253c06e14610c88578063a42650ab14610c9e578063a457c2d714610cb357005b806386d0ada81161023b57806386d0ada814610b89578063887c60fb14610ba3578063893d20e814610bc25780638ccb06a514610be05780638da5cb5b14610bc2578063954ea66514610bf557005b80637a4325f914610afd5780637b614de614610b1d5780638116984d14610b3d57806382c4767b14610b5d57806386271f2e14610b7357005b8063382e329a116103a5578063518c7cc01161031d5780636ebcf607116102d95780636ebcf60714610a3a5780636f890a2f14610a6757806370a0823114610a87578063715018a614610abd57806372e166f614610ad2578063762bb28214610ae757005b8063518c7cc01461098f57806356cf0111146109af578063589210d9146109cf5780635aa18057146109e55780635e1050e5146109fa57806365001c6614610a1a57005b806342a110951161036c57806342a11095146108ea57806344832cc61461090457806348e907b7146109245780634ada218b1461093a5780634eca70f5146109595780634f91e48c1461097957005b8063382e329a1461085c578063385abc691461087d578063395093511461089e5780633cc39b7a146108be5780634089b170146108d457005b80631eb25d1311610443578063311a8697116103ff578063311a8697146107b0578063313ce567146107d157806332424aa3146107e5578063325ea1aa146107fa5780633478154b1461081a57806337ac7f081461083c57005b80631eb25d13146107015780631f8b845e1461071657806323b872dd146107365780632514a197146107565780632a24e064146107705780632e6bc3b41461079057005b80630fd99e16116104925780630fd99e1614610622578063141235321461065857806314ca24ed1461067857806315d77f03146106ac57806317391e49146106cc57806318160ddd146106ec57005b806301b8dc2e146104d4578063024c2ddd1461053457806305691ec81461057a57806306fdde03146105b9578063095ea7b3146105f257005b366104d257005b005b3480156104e057600080fd5b506011546040805160ff6401000000008404811682526301000000840481166020830152808416928201929092526101008304821660608201526201000090920416608082015260a0015b60405180910390f35b34801561054057600080fd5b5061056c61054f366004613348565b600260209081526000928352604080842090915290825290205481565b60405190815260200161052b565b34801561058657600080fd5b506011546105a190600160401b90046001600160a01b031681565b6040516001600160a01b03909116815260200161052b565b3480156105c557600080fd5b506040805180820190915260078152665468652044414f60c81b60208201525b60405161052b91906135f5565b3480156105fe57600080fd5b5061061261060d3660046133f0565b6110d3565b604051901515815260200161052b565b34801561062e57600080fd5b50600b5461064590640100000000900461ffff1681565b60405161ffff909116815260200161052b565b34801561066457600080fd5b506104d261067336600461330e565b6110ea565b34801561068457600080fd5b5060115461069a90640100000000900460ff1681565b60405160ff909116815260200161052b565b3480156106b857600080fd5b506104d26106c73660046134fc565b611127565b3480156106d857600080fd5b5060115461069a9062010000900460ff1681565b3480156106f857600080fd5b50600d5461056c565b34801561070d57600080fd5b5061056c611162565b34801561072257600080fd5b50600b5461064590610100900461ffff1681565b34801561074257600080fd5b50610612610751366004613381565b61117f565b34801561076257600080fd5b5060185461069a9060ff1681565b34801561077c57600080fd5b506014546105a1906001600160a01b031681565b34801561079c57600080fd5b506104d26107ab36600461330e565b611216565b3480156107bc57600080fd5b50600b5461069a906301000000900460ff1681565b3480156107dd57600080fd5b50601261069a565b3480156107f157600080fd5b5061069a601281565b34801561080657600080fd5b506104d261081536600461347a565b61125d565b34801561082657600080fd5b50600b5461064590600160301b900461ffff1681565b34801561084857600080fd5b506104d261085736600461341c565b611287565b34801561086857600080fd5b5060115461069a906301000000900460ff1681565b34801561088957600080fd5b5060135461061290600160a01b900460ff1681565b3480156108aa57600080fd5b506106126108b93660046133f0565b6112ce565b3480156108ca57600080fd5b5061056c601a5481565b3480156108e057600080fd5b5061056c60175481565b3480156108f657600080fd5b5060115461069a9060ff1681565b34801561091057600080fd5b5061056c61091f36600461330e565b611305565b34801561093057600080fd5b5061056c60165481565b34801561094657600080fd5b50601d5461061290610100900460ff1681565b34801561096557600080fd5b506104d261097436600461330e565b61133f565b34801561098557600080fd5b5061056c600f5481565b34801561099b57600080fd5b506104d26109aa36600461330e565b61138e565b3480156109bb57600080fd5b506104d26109ca366004613517565b6113e4565b3480156109db57600080fd5b5061056c60105481565b3480156109f157600080fd5b50601c5461056c565b348015610a0657600080fd5b506104d2610a1536600461330e565b6114d4565b348015610a2657600080fd5b506104d2610a3536600461330e565b61151a565b348015610a4657600080fd5b5061056c610a5536600461330e565b60016020526000908152604090205481565b348015610a7357600080fd5b506104d2610a8236600461347a565b611693565b348015610a9357600080fd5b5061056c610aa236600461330e565b6001600160a01b031660009081526001602052604090205490565b348015610ac957600080fd5b506104d261173b565b348015610ade57600080fd5b506104d26117ee565b348015610af357600080fd5b5061056c600e5481565b348015610b0957600080fd5b506104d2610b183660046133c2565b6118d3565b348015610b2957600080fd5b506104d2610b3836600461347a565b611923565b348015610b4957600080fd5b506104d2610b5836600461341c565b611961565b348015610b6957600080fd5b506105a161dead81565b348015610b7f57600080fd5b5061056c60195481565b348015610b9557600080fd5b50601d546106129060ff1681565b348015610baf57600080fd5b50601b5461061290610100900460ff1681565b348015610bce57600080fd5b506000546001600160a01b03166105a1565b348015610bec57600080fd5b506104d26119a0565b348015610c0157600080fd5b506015546105a1906001600160a01b031681565b348015610c2157600080fd5b50604080518082019091526005815264245444414f60d81b60208201526105e5565b348015610c4f57600080fd5b506104d26119df565b348015610c6457600080fd5b50610612610c7336600461330e565b60086020526000908152604090205460ff1681565b348015610c9457600080fd5b5061056c600d5481565b348015610caa57600080fd5b506104d2611a59565b348015610cbf57600080fd5b50610612610cce3660046133f0565b611a88565b348015610cdf57600080fd5b506104d2610cee36600461341c565b611b04565b348015610cff57600080fd5b50610612610d0e3660046133f0565b611b3c565b348015610d1f57600080fd5b506104d2610d2e36600461347a565b611b49565b348015610d3f57600080fd5b5060115461061290600160381b900460ff1681565b348015610d6057600080fd5b506104d2610d6f36600461341c565b611b73565b348015610d8057600080fd5b506105e560405180604001604052806005815260200164245444414f60d81b81525081565b348015610db157600080fd5b506104d2610dc036600461330e565b611bba565b348015610dd157600080fd5b506104d2610de036600461341c565b611c03565b348015610df157600080fd5b506104d2610e0036600461341c565b611c3b565b348015610e1157600080fd5b506104d2610e2036600461341c565b611c73565b348015610e3157600080fd5b506104d2610e4036600461341c565b611cb2565b348015610e5157600080fd5b506105a1737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610e7957600080fd5b5060115461069a90610100900460ff1681565b348015610e9857600080fd5b506104d2610ea736600461330e565b611cf5565b348015610eb857600080fd5b506105e5604051806040016040528060078152602001665468652044414f60c81b81525081565b348015610eeb57600080fd5b506104d2610efa36600461330e565b611d3c565b348015610f0b57600080fd5b506104d2610f1a36600461330e565b611d6c565b348015610f2b57600080fd5b5060115461061290600160301b900460ff1681565b348015610f4c57600080fd5b5061056c610f5b366004613348565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610f9257600080fd5b506104d2610fa13660046134ac565b611d9c565b348015610fb257600080fd5b506104d2610fc1366004613456565b611dfb565b348015610fd257600080fd5b50610fdb611e45565b6040805192835260208301919091520161052b565b348015610ffc57600080fd5b506104d261100b3660046133c2565b611e82565b34801561101c57600080fd5b506104d261102b36600461330e565b611ed2565b34801561103c57600080fd5b506104d261104b36600461330e565b611f02565b34801561105c57600080fd5b506012546105a1906001600160a01b031681565b34801561107c57600080fd5b5061056c601c5481565b34801561109257600080fd5b506013546105a1906001600160a01b031681565b3480156110b257600080fd5b5061056c6110c136600461330e565b60036020526000908152604090205481565b60006110e0338484612040565b5060015b92915050565b6110f333612133565b6111185760405162461bcd60e51b815260040161110f9061364a565b60405180910390fd5b61112360048261202b565b5050565b61113033612133565b61114c5760405162461bcd60e51b815260040161110f9061364a565b6018805460ff191660ff92909216919091179055565b61116e6012600a61377e565b61117c906305f5e100613829565b81565b600061118c84848461216a565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156111f75760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b604482015260640161110f565b61120b85336112068685613848565b612040565b506001949350505050565b61121f33612133565b61123b5760405162461bcd60e51b815260040161110f9061364a565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b61126633612133565b6112825760405162461bcd60e51b815260040161110f9061364a565b600a55565b61129033612133565b6112ac5760405162461bcd60e51b815260040161110f9061364a565b60118054911515600160381b0267ff0000000000000019909216919091179055565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916110e09185906112069086906136dc565b6001600160a01b03811660009081526003602052604081205442811161132e5750600092915050565b6113384282613848565b9392505050565b61134833612133565b6113645760405162461bcd60e51b815260040161110f9061364a565b601d80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b61139733612133565b6113b35760405162461bcd60e51b815260040161110f9061364a565b601180546001600160a01b03909216600160401b0268010000000000000000600160e01b0319909216919091179055565b6113ed33612133565b6114095760405162461bcd60e51b815260040161110f9061364a565b600061141585876136f4565b90508060ff1660641461146a5760405162461bcd60e51b815260206004820152601c60248201527f6275726e2b6c6971206e6565647320746f20657175616c203130302500000000604482015260640161110f565b506011805460ff928316620100000262ff0000199484166101000261ffff1997851663010000000263ff00000019998616640100000000029990991664ffff0000001990931692909217979097179590951693909116929092179290921791909116919091179055565b6114dd33612133565b6114f95760405162461bcd60e51b815260040161110f9061364a565b6001600160a01b03166000908152600860205260409020805460ff19169055565b61152333612133565b61153f5760405162461bcd60e51b815260040161110f9061364a565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b15801561158357600080fd5b505afa158015611597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bb9190613493565b90506000811161160d5760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e63650000000000000000604482015260640161110f565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b15801561165557600080fd5b505af1158015611669573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168d9190613439565b50505050565b61169c33612133565b6116b85760405162461bcd60e51b815260040161110f9061364a565b306000908152600160205260409020548111156116d457600080fd5b30600090815260016020526040812080548392906116f3908490613848565b9250508190555080600d600082825461170c9190613848565b909155505060405181815261dead9030906000805160206138c58339815191529060200160405180910390a350565b3361174e6000546001600160a01b031690565b6001600160a01b0316146117a45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161110f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6117f733612133565b6118135760405162461bcd60e51b815260040161110f9061364a565b600062989680601954476118279190613848565b6118319190613848565b905060003390506000816001600160a01b0316836040515b60006040518083038185875af1925050503d8060008114611886576040519150601f19603f3d011682016040523d82523d6000602084013e61188b565b606091505b50509050806118ce5760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b604482015260640161110f565b505050565b6118dc33612133565b6118f85760405162461bcd60e51b815260040161110f9061364a565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b61192c33612133565b6119485760405162461bcd60e51b815260040161110f9061364a565b61195e61195982633b9aca00613829565b61257a565b50565b61196a33612133565b6119865760405162461bcd60e51b815260040161110f9061364a565b601b80549115156101000261ff0019909216919091179055565b6119a933612133565b6119c55760405162461bcd60e51b815260040161110f9061364a565b601980546000918290556040519091339182908490611849565b6119e833612133565b611a045760405162461bcd60e51b815260040161110f9061364a565b604051600090339047908381818185875af1925050503d8060008114611a46576040519150601f19603f3d011682016040523d82523d6000602084013e611a4b565b606091505b505090508061195e57600080fd5b611a6233612133565b611a7e5760405162461bcd60e51b815260040161110f9061364a565b611a866126d1565b565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611aeb5760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b604482015260640161110f565b611afa33856112068685613848565b5060019392505050565b611b0d33612133565b611b295760405162461bcd60e51b815260040161110f9061364a565b6009805460ff1916911515919091179055565b60006110e033848461216a565b611b5233612133565b611b6e5760405162461bcd60e51b815260040161110f9061364a565b601c55565b611b7c33612133565b611b985760405162461bcd60e51b815260040161110f9061364a565b60118054911515650100000000000265ff000000000019909216919091179055565b611bc333612133565b611bdf5760405162461bcd60e51b815260040161110f9061364a565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b611c0c33612133565b611c285760405162461bcd60e51b815260040161110f9061364a565b600b805460ff1916911515919091179055565b611c4433612133565b611c605760405162461bcd60e51b815260040161110f9061364a565b601d805460ff1916911515919091179055565b611c7c33612133565b611c985760405162461bcd60e51b815260040161110f9061364a565b601d80549115156101000261ff0019909216919091179055565b611cbb33612133565b611cd75760405162461bcd60e51b815260040161110f9061364a565b60138054911515600160a01b0260ff60a01b19909216919091179055565b611cfe33612133565b611d1a5760405162461bcd60e51b815260040161110f9061364a565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b611d4533612133565b611d615760405162461bcd60e51b815260040161110f9061364a565b61112360068261202b565b611d7533612133565b611d915760405162461bcd60e51b815260040161110f9061364a565b611123600682612a0a565b611da533612133565b611dc15760405162461bcd60e51b815260040161110f9061364a565b611dcd6012600a61377e565b611dd79083613829565b9150611de56012600a61377e565b611def9082613829565b600e9290925550600f55565b611e0433612133565b611e205760405162461bcd60e51b815260040161110f9061364a565b600b805461ffff909216600160301b0267ffff00000000000019909216919091179055565b600080611e546012600a61377e565b600e54611e619190613719565b611e6d6012600a61377e565b600f54611e7a9190613719565b915091509091565b611e8b33612133565b611ea75760405162461bcd60e51b815260040161110f9061364a565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b611edb33612133565b611ef75760405162461bcd60e51b815260040161110f9061364a565b611123600482612a0a565b33611f156000546001600160a01b031690565b6001600160a01b031614611f6b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161110f565b6001600160a01b038116611fd05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161110f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000611338836001600160a01b038416612a1f565b6001600160a01b03831661208a5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b604482015260640161110f565b6001600160a01b0382166120d25760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b604482015260640161110f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080546001600160a01b03838116911614806110e45750506001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b0383166121b55760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b604482015260640161110f565b6001600160a01b0382166121fe5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b604482015260640161110f565b60095460ff1615612286576001600160a01b03831660009081526008602052604090205460ff1615801561224b57506001600160a01b03821660009081526008602052604090205460ff16155b6122865760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b604482015260640161110f565b6011546001600160a01b03848116600160401b909204161460006122ab600486612a6e565b806122bc57506122bc600485612a6e565b806122df57506001600160a01b0385166000908152600c602052604090205460ff165b8061230257506001600160a01b0384166000908152600c602052604090205460ff165b905060006001600160a01b03861630148061232557506001600160a01b03851630145b6014549091506000906001600160a01b03888116911614801561236457506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b806123a357506014546001600160a01b0387811691161480156123a357506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b905081806123ae5750805b806123b65750825b806123be5750835b156123d3576123ce878787612a90565b612571565b601d54610100900460ff166124c1576000546001600160a01b0388811691161480159061240e57506000546001600160a01b03878116911614155b156124c157601154600160301b900460ff161561246a57856001600160a01b0316876001600160a01b03166000805160206138c5833981519152600060405161245991815260200190565b60405180910390a350505050505050565b601d54610100900460ff166124c15760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c6564000000000000000000604482015260640161110f565b6014546000906001600160a01b03898116911614806124fc57506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b6014549091506000906001600160a01b038981169116148061253a57506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b90506125498989898585612b49565b601154600160381b900460ff161561256e575060009450849350839250829150819050805b50505b50505050505050565b601b805460ff191660019081179091553060009081526020919091526040902054601154600a54630100000090910460ff1690838111156125c357600b5460ff16156125c35750825b808310806125d3575061ffff8216155b156125e0575050506126c4565b60115460009061ffff841690612600906301000000900460ff1684613829565b61260a9190613719565b60115490915060009061ffff85169061262e90640100000000900460ff1685613829565b6126389190613719565b90506000612647600284613719565b905060006126558285613848565b9050600061266384836136dc565b90504761266f82612edc565b600061267b8247613848565b905060008361268a8684613829565b6126949190613719565b90506126a08682613044565b60006126ac8447613848565b90506126b78161311b565b5050505050505050505050505b50601b805460ff19169055565b6019546013546000908190600160a01b900460ff1615612709576126f6600284613719565b91506127028284613848565b905061270d565b8291505b6040805160028082526060820183526000926020830190803683375050601554604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561277257600080fd5b505afa158015612786573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127aa919061332b565b816000815181106127bd576127bd61388b565b6001600160a01b0392831660209182029290920101526012548251911690829060019081106127ee576127ee61388b565b6001600160a01b03928316602091820292909201015260155460405163b6f9de9560e01b815291169063b6f9de9590859061283690600090869061dead9042906004016135c0565b6000604051808303818588803b15801561284f57600080fd5b505af1158015612863573d6000803e3d6000fd5b5050505050826019600082825461287a9190613848565b9091555050601354600160a01b900460ff161561168d576040805160028082526060820183526000926020830190803683375050601554604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156128f657600080fd5b505afa15801561290a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292e919061332b565b826000815181106129415761294161388b565b6001600160a01b0392831660209182029290920101526013548351911690839060019081106129725761297261388b565b6001600160a01b03928316602091820292909201015260155460405163b6f9de9560e01b815291169063b6f9de959085906129ba90600090869061dead9042906004016135c0565b6000604051808303818588803b1580156129d357600080fd5b505af11580156129e7573d6000803e3d6000fd5b505050505082601960008282546129fe9190613848565b90915550505050505050565b6000611338836001600160a01b03841661316e565b6000818152600183016020526040812054612a66575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556110e4565b5060006110e4565b6001600160a01b03811660009081526001830160205260408120541515611338565b6001600160a01b03831660009081526001602052604090205481811015612af45760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161110f565b612afe848361325b565b612b0883836132a0565b826001600160a01b0316846001600160a01b03166000805160206138c583398151915284604051612b3b91815260200190565b60405180910390a350505050565b6001600160a01b0380851660009081526001602052604080822054928816825290205484811015612bb75760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161110f565b6002600f54612bc69190613719565b600a5560008315612ccb57612bdc600689612a6e565b612c76576001600160a01b03881660009081526003602052604090205442101580612c0e5750601b54610100900460ff165b612c4f5760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b604482015260640161110f565b601c54612c5c90426136dc565b6001600160a01b0389166000908152600360205260409020555b600f54861115612cba5760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b604482015260640161110f565b50601154610100900460ff16612ddd565b8415612d2a57600e54612cde87856136dc565b1115612cfc5760405162461bcd60e51b815260040161110f90613676565b601054861115612d1e5760405162461bcd60e51b815260040161110f90613676565b5060115460ff16612ddd565b600e54612d3787856136dc565b1115612d555760405162461bcd60e51b815260040161110f90613676565b612d60600689612a6e565b612dcf576001600160a01b03881660009081526003602052604090205442101580612d925750601b54610100900460ff165b612dcf5760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b604482015260640161110f565b5060115462010000900460ff165b6014546001600160a01b03898116911614801590612dfe5750601d5460ff16155b8015612e0d5750601b5460ff16155b15612e1b57612e1b8661257a565b601154600090612e4c9088908490612e479060ff640100000000820481169163010000009004166136f4565b6132c4565b90506000612e5a8289613848565b9050612e668a8961325b565b3060009081526001602052604081208054849290612e859084906136dc565b90915550612e95905089826132a0565b886001600160a01b03168a6001600160a01b03166000805160206138c583398151915283604051612ec891815260200190565b60405180910390a350505050505050505050565b601554612ef49030906001600160a01b031683612040565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612f2957612f2961388b565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612f7d57600080fd5b505afa158015612f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb5919061332b565b81600181518110612fc857612fc861388b565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac9479061300e9085906000908690309042906004016136a0565b600060405180830381600087803b15801561302857600080fd5b505af115801561303c573d6000803e3d6000fd5b505050505050565b80601a600082825461305691906136dc565b90915550506015546130739030906001600160a01b031684612040565b60155460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b1580156130db57600080fd5b505af11580156130ef573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061311491906134ce565b5050505050565b6018546000906064906131319060ff1684613829565b61313b9190613719565b9050806019600082825461314f91906136dc565b909155505060195467016345785d8a00001015611123576111236126d1565b60008181526001830160205260408120548015613251576000613192600183613848565b85549091506000906131a690600190613848565b905060008660000182815481106131bf576131bf61388b565b90600052602060002001549050808760000184815481106131e2576131e261388b565b60009182526020808320909101929092558281526001890190915260409020849055865487908061321557613215613875565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506110e4565b60009150506110e4565b6001600160a01b03821660009081526001602052604081205461327f908390613848565b6001600160a01b039093166000908152600160205260409020929092555050565b6001600160a01b03821660009081526001602052604081205461327f9083906136dc565b60006127108260ff168460ff16866132dc9190613829565b6132e69190613829565b6132f09190613719565b949350505050565b803560ff8116811461330957600080fd5b919050565b60006020828403121561332057600080fd5b8135611338816138a1565b60006020828403121561333d57600080fd5b8151611338816138a1565b6000806040838503121561335b57600080fd5b8235613366816138a1565b91506020830135613376816138a1565b809150509250929050565b60008060006060848603121561339657600080fd5b83356133a1816138a1565b925060208401356133b1816138a1565b929592945050506040919091013590565b600080604083850312156133d557600080fd5b82356133e0816138a1565b91506020830135613376816138b6565b6000806040838503121561340357600080fd5b823561340e816138a1565b946020939093013593505050565b60006020828403121561342e57600080fd5b8135611338816138b6565b60006020828403121561344b57600080fd5b8151611338816138b6565b60006020828403121561346857600080fd5b813561ffff8116811461133857600080fd5b60006020828403121561348c57600080fd5b5035919050565b6000602082840312156134a557600080fd5b5051919050565b600080604083850312156134bf57600080fd5b50508035926020909101359150565b6000806000606084860312156134e357600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561350e57600080fd5b611338826132f8565b600080600080600060a0868803121561352f57600080fd5b613538866132f8565b9450613546602087016132f8565b9350613554604087016132f8565b9250613562606087016132f8565b9150613570608087016132f8565b90509295509295909350565b600081518084526020808501945080840160005b838110156135b55781516001600160a01b031687529582019590820190600101613590565b509495945050505050565b8481526080602082015260006135d9608083018661357c565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b8181101561362257858101830151858201604001528201613606565b81811115613634576000604083870101525b50601f01601f1916929092016040019392505050565b602080825260129082015271086c2d8d8cae440dcdee840d2dc4082eae8d60731b604082015260600190565b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b85815284602082015260a0604082015260006136bf60a083018661357c565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156136ef576136ef61385f565b500190565b600060ff821660ff84168060ff038211156137115761371161385f565b019392505050565b60008261373657634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561377657816000190482111561375c5761375c61385f565b8085161561376957918102915b93841c9390800290613740565b509250929050565b600061133860ff841683600082613797575060016110e4565b816137a4575060006110e4565b81600181146137ba57600281146137c4576137e0565b60019150506110e4565b60ff8411156137d5576137d561385f565b50506001821b6110e4565b5060208310610133831016604e8410600b8410161715613803575081810a6110e4565b61380d838361373b565b80600019048211156138215761382161385f565b029392505050565b60008160001904831182151516156138435761384361385f565b500290565b60008282101561385a5761385a61385f565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461195e57600080fd5b801515811461195e57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204910a3d3a5ac7030e0f87d2345a4a027049d75557a658a24e01385b12ca7f5b064736f6c63430008070033
Deployed Bytecode Sourcemap
16036:20524:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28289:225;;;;;;;;;;-1:-1:-1;28450:11:0;;28289:225;;;28450:11;;;;;;16257:25:1;;28462:13:0;;;;;16313:2:1;16298:18;;16291:34;28476:7:0;;;16341:18:1;;;16334:34;;;;28450:11:0;28484:8;;;;16399:2:1;16384:18;;16377:34;28493:12:0;;;;;16442:3:1;16427:19;;16420:35;16244:3;16229:19;28289:225:0;;;;;;;;16220:68;;;;;;;;;;-1:-1:-1;16220:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:25:1;;;6952:2;6937:18;16220:68:0;6810:185:1;17773:27:0;;;;;;;;;;-1:-1:-1;17773:27:0;;;;-1:-1:-1;;;17773:27:0;;-1:-1:-1;;;;;17773:27:0;;;;;;-1:-1:-1;;;;;5451:32:1;;;5433:51;;5421:2;5406:18;17773:27:0;5287:203:1;34229:94:0;;;;;;;;;;-1:-1:-1;34310:5:0;;;;;;;;;;;;-1:-1:-1;;;34310:5:0;;;;34229:94;;;;;;;:::i;35114:161::-;;;;;;;;;;-1:-1:-1;35114:161:0;;;;;:::i;:::-;;:::i;:::-;;;6551:14:1;;6544:22;6526:41;;6514:2;6499:18;35114:161:0;6386:187:1;16963:35:0;;;;;;;;;;-1:-1:-1;16963:35:0;;;;;;;;;;;;;;14957:6:1;14945:19;;;14927:38;;14915:2;14900:18;16963:35:0;14783:188:1;30061:110:0;;;;;;;;;;-1:-1:-1;30061:110:0;;;;;:::i;:::-;;:::i;17631:24::-;;;;;;;;;;-1:-1:-1;17631:24:0;;;;;;;;;;;;;;16638:4:1;16626:17;;;16608:36;;16596:2;16581:18;17631:24:0;16466:184:1;32029:107:0;;;;;;;;;;-1:-1:-1;32029:107:0;;;;;:::i;:::-;;:::i;17566:25::-;;;;;;;;;;-1:-1:-1;17566:25:0;;;;;;;;;;;34539:108;;;;;;;;;;-1:-1:-1;34621:18:0;;34539:108;;16688:66;;;;;;;;;;;;;:::i;16855:33::-;;;;;;;;;;-1:-1:-1;16855:33:0;;;;;;;;;;;35592:392;;;;;;;;;;-1:-1:-1;35592:392:0;;;;;:::i;:::-;;:::i;24008:29::-;;;;;;;;;;-1:-1:-1;24008:29:0;;;;;;;;17914:34;;;;;;;;;;-1:-1:-1;17914:34:0;;;;-1:-1:-1;;;;;17914:34:0;;;29363:100;;;;;;;;;;-1:-1:-1;29363:100:0;;;;;:::i;:::-;;:::i;16907:37::-;;;;;;;;;;-1:-1:-1;16907:37:0;;;;;;;;;;;34437:94;;;;;;;;;;-1:-1:-1;16679:2:0;34437:94;;16645:36;;;;;;;;;;;;16679:2;16645:36;;29159:91;;;;;;;;;;-1:-1:-1;29159:91:0;;;;;:::i;:::-;;:::i;17020:42::-;;;;;;;;;;-1:-1:-1;17020:42:0;;;;-1:-1:-1;;;17020:42:0;;;;;;31109:97;;;;;;;;;;-1:-1:-1;31109:97:0;;;;;:::i;:::-;;:::i;17598:26::-;;;;;;;;;;-1:-1:-1;17598:26:0;;;;;;;;;;;17878:29;;;;;;;;;;-1:-1:-1;17878:29:0;;;;-1:-1:-1;;;17878:29:0;;;;;;36000:205;;;;;;;;;;-1:-1:-1;36000:205:0;;;;;:::i;:::-;;:::i;25581:25::-;;;;;;;;;;;;;;;;23966:27;;;;;;;;;;;;;;;;17511:20;;;;;;;;;;-1:-1:-1;17511:20:0;;;;;;;;28526:289;;;;;;;;;;-1:-1:-1;28526:289:0;;;;;:::i;:::-;;:::i;23915:38::-;;;;;;;;;;;;;;;;32684:26;;;;;;;;;;-1:-1:-1;32684:26:0;;;;;;;;;;;32884:149;;;;;;;;;;-1:-1:-1;32884:149:0;;;;;:::i;:::-;;:::i;17398:46::-;;;;;;;;;;;;;;;;29728:92;;;;;;;;;;-1:-1:-1;29728:92:0;;;;;:::i;:::-;;:::i;31594:423::-;;;;;;;;;;-1:-1:-1;31594:423:0;;;;;:::i;:::-;;:::i;17451:45::-;;;;;;;;;;;;;;;;28821:110;;;;;;;;;;-1:-1:-1;28911:12:0;;28821:110;;33750:123;;;;;;;;;;-1:-1:-1;33750:123:0;;;;;:::i;:::-;;:::i;33049:289::-;;;;;;;;;;-1:-1:-1;33049:289:0;;;;;:::i;:::-;;:::i;16168:45::-;;;;;;;;;;-1:-1:-1;16168:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;27856:256;;;;;;;;;;-1:-1:-1;27856:256:0;;;;;:::i;:::-;;:::i;34655:121::-;;;;;;;;;;-1:-1:-1;34655:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;34750:18:0;34723:7;34750:18;;;:9;:18;;;;;;;34655:121;8128:140;;;;;;;;;;;;;:::i;30567:264::-;;;;;;;;;;;;;:::i;17342:49::-;;;;;;;;;;;;;;;;29951:102;;;;;;;;;;-1:-1:-1;29951:102:0;;;;;:::i;:::-;;:::i;32146:128::-;;;;;;;;;;-1:-1:-1;32146:128:0;;;;;:::i;:::-;;:::i;31343:107::-;;;;;;;;;;-1:-1:-1;31343:107:0;;;;;:::i;:::-;;:::i;17201:73::-;;;;;;;;;;;;17232:42;17201:73;;24050:29;;;;;;;;;;;;;;;;29008:28;;;;;;;;;;-1:-1:-1;29008:28:0;;;;;;;;28939;;;;;;;;;;-1:-1:-1;28939:28:0;;;;;;;;;;;34127:94;;;;;;;;;;-1:-1:-1;34179:7:0;7968:6;-1:-1:-1;;;;;7968:6:0;34127:94;;30839:262;;;;;;;;;;;;;:::i;17955:39::-;;;;;;;;;;-1:-1:-1;17955:39:0;;;;-1:-1:-1;;;;;17955:39:0;;;34331:98;;;;;;;;;;-1:-1:-1;34414:7:0;;;;;;;;;;;;-1:-1:-1;;;34414:7:0;;;;34331:98;;33883:153;;;;;;;;;;;;;:::i;16463:43::-;;;;;;;;;;-1:-1:-1;16463:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17287:48;;;;;;;;;;;;;;;;32583:89;;;;;;;;;;;;;:::i;36213:342::-;;;;;;;;;;-1:-1:-1;36213:342:0;;;;;:::i;:::-;;:::i;33354:129::-;;;;;;;;;;-1:-1:-1;33354:129:0;;;;;:::i;:::-;;:::i;34784:167::-;;;;;;;;;;-1:-1:-1;34784:167:0;;;;;:::i;:::-;;:::i;31462:118::-;;;;;;;;;;-1:-1:-1;31462:118:0;;;;;:::i;:::-;;:::i;17737:27::-;;;;;;;;;;-1:-1:-1;17737:27:0;;;;-1:-1:-1;;;17737:27:0;;;;;;33491:118;;;;;;;;;;-1:-1:-1;33491:118:0;;;;;:::i;:::-;;:::i;16598:40::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16598:40:0;;;;;33617:125;;;;;;;;;;-1:-1:-1;33617:125:0;;;;;:::i;:::-;;:::i;29047:104::-;;;;;;;;;;-1:-1:-1;29047:104:0;;;;;:::i;:::-;;:::i;31218:113::-;;;;;;;;;;-1:-1:-1;31218:113:0;;;;;:::i;:::-;;:::i;32770:100::-;;;;;;;;;;-1:-1:-1;32770:100:0;;;;;:::i;:::-;;:::i;29582:107::-;;;;;;;;;;-1:-1:-1;29582:107:0;;;;;:::i;:::-;;:::i;17114:80::-;;;;;;;;;;;;17152:42;17114:80;;17538:21;;;;;;;;;;-1:-1:-1;17538:21:0;;;;;;;;;;;29471:103;;;;;;;;;;-1:-1:-1;29471:103:0;;;;;:::i;:::-;;:::i;16551:40::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16551:40:0;;;;;30300:126;;;;;;;;;;-1:-1:-1;30300:126:0;;;;;:::i;:::-;;:::i;30432:127::-;;;;;;;;;;-1:-1:-1;30432:127:0;;;;;:::i;:::-;;:::i;17701:29::-;;;;;;;;;;-1:-1:-1;17701:29:0;;;;-1:-1:-1;;;17701:29:0;;;;;;34959:147;;;;;;;;;;-1:-1:-1;34959:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;35070:19:0;;;35043:7;35070:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;34959:147;32288:282;;;;;;;;;;-1:-1:-1;32288:282:0;;;;;:::i;:::-;;:::i;29258:97::-;;;;;;;;;;-1:-1:-1;29258:97:0;;;;;:::i;:::-;;:::i;28124:157::-;;;;;;;;;;;;;:::i;:::-;;;;15919:25:1;;;15975:2;15960:18;;15953:34;;;;15892:18;28124:157:0;15745:248:1;29828:115:0;;;;;;;;;;-1:-1:-1;29828:115:0;;;;;:::i;:::-;;:::i;30177:111::-;;;;;;;;;;-1:-1:-1;30177:111:0;;;;;:::i;:::-;;:::i;8282:236::-;;;;;;;;;;-1:-1:-1;8282:236:0;;;;;:::i;:::-;;:::i;17807:27::-;;;;;;;;;;-1:-1:-1;17807:27:0;;;;-1:-1:-1;;;;;17807:27:0;;;28974;;;;;;;;;;;;;;;;17841:30;;;;;;;;;;-1:-1:-1;17841:30:0;;;;-1:-1:-1;;;;;17841:30:0;;;16295:45;;;;;;;;;;-1:-1:-1;16295:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;35114:161;35191:4;35208:37;35217:10;35229:7;35238:6;35208:8;:37::i;:::-;-1:-1:-1;35263:4:0;35114:161;;;;;:::o;30061:110::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;;;;;;;;;30141:22:::1;:9;30155:7:::0;30141:13:::1;:22::i;:::-;;30061:110:::0;:::o;32029:107::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;32107:12:::1;:21:::0;;-1:-1:-1;;32107:21:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;32029:107::o;16688:66::-;16741:13;16679:2;16741;:13;:::i;:::-;16727:27;;:11;:27;:::i;:::-;16688:66;:::o;35592:392::-;35692:4;35709:36;35719:6;35727:9;35738:6;35709:9;:36::i;:::-;-1:-1:-1;;;;;35785:19:0;;35758:24;35785:19;;;:11;:19;;;;;;;;35805:10;35785:31;;;;;;;;35835:26;;;;35827:59;;;;-1:-1:-1;;;35827:59:0;;10821:2:1;35827:59:0;;;10803:21:1;10860:2;10840:18;;;10833:30;-1:-1:-1;;;10879:18:1;;;10872:50;10939:18;;35827:59:0;10619:344:1;35827:59:0;35899:55;35908:6;35916:10;35928:25;35947:6;35928:16;:25;:::i;:::-;35899:8;:55::i;:::-;-1:-1:-1;35972:4:0;;35592:392;-1:-1:-1;;;;35592:392:0:o;29363:100::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;29436:12:::1;:19:::0;;-1:-1:-1;;;;;;29436:19:0::1;-1:-1:-1::0;;;;;29436:19:0;;;::::1;::::0;;;::::1;::::0;;29363:100::o;29159:91::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;29227:9:::1;:15:::0;29159:91::o;31109:97::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;31182:8:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;31182:16:0::1;-1:-1:-1::0;;31182:16:0;;::::1;::::0;;;::::1;::::0;;31109:97::o;36000:205::-;36108:10;36082:4;36129:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;36129:32:0;;;;;;;;;;36082:4;;36099:76;;36120:7;;36129:45;;36164:10;;36129:45;:::i;28526:289::-;-1:-1:-1;;;;;28656:25:0;;28620:7;28656:25;;;:9;:25;;;;;;28705:15;28695:25;;28692:74;;-1:-1:-1;28753:1:0;;28526:289;-1:-1:-1;;28526:289:0:o;28692:74::-;28783:24;28792:15;28783:8;:24;:::i;:::-;28776:31;28526:289;-1:-1:-1;;;28526:289:0:o;32884:149::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;32981:22:::1;:44:::0;;-1:-1:-1;;;;;32981:44:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;32981:44:0;;::::1;::::0;;;::::1;::::0;;32884:149::o;29728:92::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;29793:12:::1;:19:::0;;-1:-1:-1;;;;;29793:19:0;;::::1;-1:-1:-1::0;;;29793:19:0::1;-1:-1:-1::0;;;;;;29793:19:0;;::::1;::::0;;;::::1;::::0;;29728:92::o;31594:423::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;31736:14:::1;31751:28;31765:14:::0;31751:12;:28:::1;:::i;:::-;31736:43;;31798:8;:13;;31808:3;31798:13;31790:54;;;::::0;-1:-1:-1;;;31790:54:0;;8666:2:1;31790:54:0::1;::::0;::::1;8648:21:1::0;8705:2;8685:18;;;8678:30;8744;8724:18;;;8717:58;8792:18;;31790:54:0::1;8464:352:1::0;31790:54:0::1;-1:-1:-1::0;31855:11:0::1;:26:::0;;::::1;31985:24:::0;;::::1;::::0;::::1;-1:-1:-1::0;;31958:16:0;;::::1;31855:26;31958:16;-1:-1:-1::0;;31892:28:0;;::::1;::::0;::::1;-1:-1:-1::0;;31855:26:0;;::::1;::::0;::::1;31892:28:::0;;;;-1:-1:-1;;31892:28:0;;;;;;;;;;::::1;31958:16:::0;;;;31933:14;;;::::1;31958:16:::0;;;;;;;::::1;31985:24:::0;;;::::1;::::0;;;::::1;::::0;;31594:423::o;33750:123::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33837:20:0::1;33860:5;33837:20:::0;;;:10:::1;:20;::::0;;;;:28;;-1:-1:-1;;33837:28:0::1;::::0;;33750:123::o;33049:289::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;33191:30:::1;::::0;-1:-1:-1;;;33191:30:0;;33215:4:::1;33191:30;::::0;::::1;5433:51:1::0;33148:10:0;;33126:12:::1;::::0;-1:-1:-1;;;;;33191:15:0;::::1;::::0;::::1;::::0;5406:18:1;;33191:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33170:51;;33251:1;33240:10;:12;33232:49;;;::::0;-1:-1:-1;;;33232:49:0;;12571:2:1;33232:49:0::1;::::0;::::1;12553:21:1::0;12610:2;12590:18;;;12583:30;12649:26;12629:18;;;12622:54;12693:18;;33232:49:0::1;12369:348:1::0;33232:49:0::1;33292:38;::::0;-1:-1:-1;;;33292:38:0;;33307:10:::1;33292:38;::::0;::::1;5669:51:1::0;5736:18;;;5729:34;;;-1:-1:-1;;;;;33292:14:0;::::1;::::0;::::1;::::0;5642:18:1;;33292:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33115:223;;33049:289:::0;:::o;27856:256::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;27950:4:::1;27932:24;::::0;;;:9:::1;:24;::::0;;;;;:34;-1:-1:-1;27932:34:0::1;27924:43;;;::::0;::::1;;27996:4;27978:24;::::0;;;:9:::1;:24;::::0;;;;:34;;28006:6;;27978:24;:34:::1;::::0;28006:6;;27978:34:::1;:::i;:::-;;;;;;;;28045:6;28023:18;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;28067:37:0::1;::::0;6964:25:1;;;17232:42:0::1;::::0;28084:4:::1;::::0;-1:-1:-1;;;;;;;;;;;28067:37:0;6952:2:1;6937:18;28067:37:0::1;;;;;;;27856:256:::0;:::o;8128:140::-;8047:10;8036:7;7941;7968:6;-1:-1:-1;;;;;7968:6:0;;7903:79;8036:7;-1:-1:-1;;;;;8036:21:0;;8028:66;;;;-1:-1:-1;;;8028:66:0;;11858:2:1;8028:66:0;;;11840:21:1;;;11877:18;;;11870:30;11936:34;11916:18;;;11909:62;11988:18;;8028:66:0;11656:356:1;8028:66:0;8227:1:::1;8211:6:::0;;8190:40:::1;::::0;-1:-1:-1;;;;;8211:6:0;;::::1;::::0;8190:40:::1;::::0;8227:1;;8190:40:::1;8258:1;8241:19:::0;;-1:-1:-1;;;;;;8241:19:0::1;::::0;;8128:140::o;30567:264::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;30624:14:::1;30677:8;30662:14;;30640:21;:36;;;;:::i;:::-;:45;;;;:::i;:::-;30624:62;;30697:14;30714:10;30697:27;;30736:9;30749:6;-1:-1:-1::0;;;;;30749:11:0::1;30769:6;30749:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30735:46;;;30800:4;30792:31;;;::::0;-1:-1:-1;;;30792:31:0;;13953:2:1;30792:31:0::1;::::0;::::1;13935:21:1::0;13992:2;13972:18;;;13965:30;-1:-1:-1;;;14011:18:1;;;14004:45;14066:18;;30792:31:0::1;13751:339:1::0;30792:31:0::1;30613:218;;;30567:264::o:0;29951:102::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30025:12:0;;;::::1;;::::0;;;:6:::1;:12;::::0;;;;:20;;-1:-1:-1;;30025:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29951:102::o;32146:128::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;32234:32:::1;32253:12;:4:::0;32260:5:::1;32253:12;:::i;:::-;32234:18;:32::i;:::-;32146:128:::0;:::o;31343:107::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;31417:16:::1;:25:::0;;;::::1;;;;-1:-1:-1::0;;31417:25:0;;::::1;::::0;;;::::1;::::0;;31343:107::o;30839:262::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;30915:14:::1;::::0;;30900::::1;30940:16:::0;;;;31019:32:::1;::::0;30915:14;;30984:10:::1;::::0;;;30915:14;;31019:32:::1;5077:205:1::0;33883:153:0;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;33953:51:::1;::::0;33940:9:::1;::::0;33953:10:::1;::::0;33977:21:::1;::::0;33940:9;33953:51;33940:9;33953:51;33977:21;33953:10;:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33939:65;;;34023:4;34015:13;;;::::0;::::1;32583:89:::0;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;32643:21:::1;:19;:21::i;:::-;32583:89::o:0;36213:342::-;36356:10;36300:4;36344:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;36344:32:0;;;;;;;;;;36395:35;;;;36387:60;;;;-1:-1:-1;;;36387:60:0;;14297:2:1;36387:60:0;;;14279:21:1;14336:2;14316:18;;;14309:30;-1:-1:-1;;;14355:18:1;;;14348:42;14407:18;;36387:60:0;14095:336:1;36387:60:0;36460:65;36469:10;36481:7;36490:34;36509:15;36490:16;:34;:::i;36460:65::-;-1:-1:-1;36543:4:0;;36213:342;-1:-1:-1;;;36213:342:0:o;33354:129::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;33443:11:::1;:32:::0;;-1:-1:-1;;33443:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33354:129::o;34784:167::-;34864:4;34881:40;34891:10;34903:9;34914:6;34881:9;:40::i;31462:118::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;31544:12:::1;:28:::0;31462:118::o;33491:::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;33575:17:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;33575:26:0;;::::1;::::0;;;::::1;::::0;;33491:118::o;33617:125::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33704:23:0::1;;::::0;;;:10:::1;:23;::::0;;;;:30;;-1:-1:-1;;33704:30:0::1;33730:4;33704:30;::::0;;33617:125::o;29047:104::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;29120:12:::1;:23:::0;;-1:-1:-1;;29120:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29047:104::o;31218:113::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;31300:16:::1;:23:::0;;-1:-1:-1;;31300:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31218:113::o;32770:100::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;32840:14:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;32840:22:0;;::::1;::::0;;;::::1;::::0;;32770:100::o;29582:107::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;29656:17:::1;:25:::0;;;::::1;;-1:-1:-1::0;;;29656:25:0::1;-1:-1:-1::0;;;;29656:25:0;;::::1;::::0;;;::::1;::::0;;29582:107::o;29471:103::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;29544:15:::1;:22:::0;;-1:-1:-1;;;;;;29544:22:0::1;-1:-1:-1::0;;;;;29544:22:0;;;::::1;::::0;;;::::1;::::0;;29471:103::o;30300:126::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;30384:34:::1;:21;30410:7:::0;30384:25:::1;:34::i;30432:127::-:0;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;30514:37:::1;:21;30543:7:::0;30514:28:::1;:37::i;32288:282::-:0;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;32423:13:::1;16679:2;32423;:13;:::i;:::-;32407:29;::::0;:15;:29:::1;:::i;:::-;32391:45:::0;-1:-1:-1;32473:13:0::1;16679:2;32473;:13;:::i;:::-;32460:26;::::0;:12;:26:::1;:::i;:::-;32497:12;:30:::0;;;;-1:-1:-1;32538:9:0::1;:24:::0;32288:282::o;29258:97::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;29326:15:::1;:21:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;29326:21:0::1;-1:-1:-1::0;;29326:21:0;;::::1;::::0;;;::::1;::::0;;29258:97::o;28124:157::-;28173:15;;28234:13;16679:2;28234;:13;:::i;:::-;28221:12;;:26;;;;:::i;:::-;28259:13;16679:2;28259;:13;:::i;:::-;28249:9;;:23;;;;:::i;:::-;28214:59;;;;28124:157;;:::o;29828:115::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29911:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:24;;-1:-1:-1;;29911:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29828:115::o;30177:111::-;18048:19;18056:10;18048:7;:19::i;:::-;18040:50;;;;-1:-1:-1;;;18040:50:0;;;;;;;:::i;:::-;30255:25:::1;:9;30272:7:::0;30255:16:::1;:25::i;8282:236::-:0;8047:10;8036:7;7941;7968:6;-1:-1:-1;;;;;7968:6:0;;7903:79;8036:7;-1:-1:-1;;;;;8036:21:0;;8028:66;;;;-1:-1:-1;;;8028:66:0;;11858:2:1;8028:66:0;;;11840:21:1;;;11877:18;;;11870:30;11936:34;11916:18;;;11909:62;11988:18;;8028:66:0;11656:356:1;8028:66:0;-1:-1:-1;;;;;8363:22:0;::::1;8355:73;;;::::0;-1:-1:-1;;;8355:73:0;;9376:2:1;8355:73:0::1;::::0;::::1;9358:21:1::0;9415:2;9395:18;;;9388:30;9454:34;9434:18;;;9427:62;-1:-1:-1;;;9505:18:1;;;9498:36;9551:19;;8355:73:0::1;9174:402:1::0;8355:73:0::1;8465:6;::::0;;8444:38:::1;::::0;-1:-1:-1;;;;;8444:38:0;;::::1;::::0;8465:6;::::1;::::0;8444:38:::1;::::0;::::1;8493:6;:17:::0;;-1:-1:-1;;;;;;8493:17:0::1;-1:-1:-1::0;;;;;8493:17:0;;;::::1;::::0;;;::::1;::::0;;8282:236::o;14414:152::-;14484:4;14508:50;14513:3;-1:-1:-1;;;;;14533:23:0;;14508:4;:50::i;35281:303::-;-1:-1:-1;;;;;35375:20:0;;35367:50;;;;-1:-1:-1;;;35367:50:0;;10130:2:1;35367:50:0;;;10112:21:1;10169:2;10149:18;;;10142:30;-1:-1:-1;;;10188:18:1;;;10181:47;10245:18;;35367:50:0;9928:341:1;35367:50:0;-1:-1:-1;;;;;35436:21:0;;35428:49;;;;-1:-1:-1;;;35428:49:0;;11514:2:1;35428:49:0;;;11496:21:1;11553:2;11533:18;;;11526:30;-1:-1:-1;;;11572:18:1;;;11565:45;11627:18;;35428:49:0;11312:339:1;35428:49:0;-1:-1:-1;;;;;35490:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;35543:33;;6964:25:1;;;35543:33:0;;6937:18:1;35543:33:0;;;;;;;35281:303;;;:::o;18116:111::-;18169:4;7968:6;;-1:-1:-1;;;;;18192:13:0;;;7968:6;;18192:13;;:27;;-1:-1:-1;;;;;;;18207:12:0;;;;;:6;:12;;;;;;;;;18116:111::o;19334:1893::-;-1:-1:-1;;;;;19430:20:0;;19422:51;;;;-1:-1:-1;;;19422:51:0;;8319:2:1;19422:51:0;;;8301:21:1;8358:2;8338:18;;;8331:30;-1:-1:-1;;;8377:18:1;;;8370:48;8435:18;;19422:51:0;8117:342:1;19422:51:0;-1:-1:-1;;;;;19492:23:0;;19484:52;;;;-1:-1:-1;;;19484:52:0;;10476:2:1;19484:52:0;;;10458:21:1;10515:2;10495:18;;;10488:30;-1:-1:-1;;;10534:18:1;;;10527:46;10590:18;;19484:52:0;10274:340:1;19484:52:0;19550:11;;;;19547:113;;;-1:-1:-1;;;;;19587:18:0;;;;;;:10;:18;;;;;;;;19586:19;:45;;;;-1:-1:-1;;;;;;19610:21:0;;;;;;:10;:21;;;;;;;;19609:22;19586:45;19578:70;;;;-1:-1:-1;;;19578:70:0;;12924:2:1;19578:70:0;;;12906:21:1;12963:2;12943:18;;;12936:30;-1:-1:-1;;;12982:18:1;;;12975:42;13034:18;;19578:70:0;12722:336:1;19578:70:0;19695:12;;-1:-1:-1;;;;;19687:20:0;;;-1:-1:-1;;;19695:12:0;;;;19687:20;19672:12;19739:26;:9;19687:6;19739:18;:26::i;:::-;:59;;;-1:-1:-1;19769:29:0;:9;19788;19769:18;:29::i;:::-;19739:77;;;-1:-1:-1;;;;;;19802:14:0;;;;;;:6;:14;;;;;;;;19739:77;:98;;;-1:-1:-1;;;;;;19820:17:0;;;;;;:6;:17;;;;;;;;19739:98;19720:118;-1:-1:-1;19851:23:0;-1:-1:-1;;;;;19876:21:0;;19892:4;19876:21;;:49;;-1:-1:-1;;;;;;19901:24:0;;19920:4;19901:24;19876:49;19978:19;;19851:75;;-1:-1:-1;19939:24:0;;-1:-1:-1;;;;;19968:29:0;;;19978:19;;19968:29;:59;;;;-1:-1:-1;;;;;;20001:26:0;;17152:42;20001:26;19968:59;19967:135;;;-1:-1:-1;20055:19:0;;-1:-1:-1;;;;;20042:32:0;;;20055:19;;20042:32;:59;;;;-1:-1:-1;;;;;;20078:23:0;;17152:42;20078:23;20042:59;19939:164;;20121:18;:41;;;;20143:19;20121:41;:55;;;;20166:10;20121:55;:66;;;;20180:7;20121:66;20118:1102;;;20203:43;20220:6;20228:9;20239:6;20203:16;:43::i;:::-;20118:1102;;;20292:14;;;;;;;20287:404;;7941:7;7968:6;-1:-1:-1;;;;;20331:17:0;;;7968:6;;20331:17;;;;:41;;-1:-1:-1;7941:7:0;7968:6;-1:-1:-1;;;;;20352:20:0;;;7968:6;;20352:20;;20331:41;20327:349;;;20401:10;;-1:-1:-1;;;20401:10:0;;;;20397:260;;;20461:9;-1:-1:-1;;;;;20445:28:0;20454:6;-1:-1:-1;;;;;20445:28:0;-1:-1:-1;;;;;;;;;;;20471:1:0;20445:28;;;;6964:25:1;;6952:2;6937:18;;6810:185;20445:28:0;;;;;;;;20500:7;;;;19334:1893;;;:::o;20397:260::-;20592:14;;;;;;;20584:49;;;;-1:-1:-1;;;20584:49:0;;12219:2:1;20584:49:0;;;12201:21:1;12258:2;12238:18;;;12231:30;12297:25;12277:18;;;12270:53;12340:18;;20584:49:0;12017:347:1;20584:49:0;20742:19;;20723:10;;-1:-1:-1;;;;;20734:27:0;;;20742:19;;20734:27;;:53;;-1:-1:-1;;;;;;20764:23:0;;17152:42;20764:23;20734:53;20825:19;;20723:64;;-1:-1:-1;20802:11:0;;-1:-1:-1;;;;;20814:30:0;;;20825:19;;20814:30;;:59;;-1:-1:-1;;;;;;20847:26:0;;17152:42;20847:26;20814:59;20802:71;;20888:52;20903:6;20910:9;20920:6;20927:5;20933:6;20888:14;:52::i;:::-;20960:8;;-1:-1:-1;;;20960:8:0;;;;20957:250;;;-1:-1:-1;20989:12:0;;-1:-1:-1;20989:12:0;;-1:-1:-1;20989:12:0;;-1:-1:-1;20989:12:0;;-1:-1:-1;20989:12:0;;-1:-1:-1;20989:12:0;20957:250;20272:948;;20118:1102;19411:1816;;;;19334:1893;;;:::o;25806:1137::-;25698:27;:34;;-1:-1:-1;;25698:34:0;25728:4;25698:34;;;;;;25924:4:::1;25698:27:::0;25906:24;;;::::1;::::0;;;;;;;;25957:13:::1;::::0;26001:9:::1;::::0;25957:13;;;::::1;25698:34:::0;25957:13:::1;::::0;26024:22;;::::1;26021:127;;;26066:12;::::0;::::1;;26063:74;;;-1:-1:-1::0;26113:8:0;26063:74:::1;26180:11;26164:15;:27;:40;;;-1:-1:-1::0;26193:11:0::1;::::0;::::1;::::0;26164:40:::1;26161:77;;;26220:7;;;;;26161:77;26287:13;::::0;26248:25:::1;::::0;26274:36:::1;::::0;::::1;::::0;26275:25:::1;::::0;26287:13;;::::1;;;26275:11:::0;:25:::1;:::i;:::-;26274:36;;;;:::i;:::-;26359:11;::::0;26248:62;;-1:-1:-1;26321:23:0::1;::::0;26346:34:::1;::::0;::::1;::::0;26347:23:::1;::::0;26359:11;;::::1;;;26347::::0;:23:::1;:::i;:::-;26346:34;;;;:::i;:::-;26321:59:::0;-1:-1:-1;26393:16:0::1;26410:19;26428:1;26410:17:::0;:19:::1;:::i;:::-;26393:36:::0;-1:-1:-1;26440:19:0::1;26460:26;26393:36:::0;26460:17;:26:::1;:::i;:::-;26440:46:::0;-1:-1:-1;26502:17:0::1;26520:27;26532:15:::0;26440:46;26520:27:::1;:::i;:::-;26502:45:::0;-1:-1:-1;26589:21:0::1;26621:27;26502:45:::0;26621:16:::1;:27::i;:::-;26659:14;26675:41;26699:17:::0;26675:21:::1;:41;:::i;:::-;26659:58:::0;-1:-1:-1;26728:14:0::1;26766:9:::0;26746:18:::1;26753:11:::0;26659:58;26746:18:::1;:::i;:::-;26745:30;;;;:::i;:::-;26728:47;;26786:31;26800:8;26810:6;26786:13;:31::i;:::-;26828:20;26850:41;26874:17:::0;26850:21:::1;:41;:::i;:::-;26828:64;;26903:32;26922:12;26903:18;:32::i;:::-;25871:1072;;;;;;;;;;;;25743:1;-1:-1:-1::0;25755:27:0;:35;;-1:-1:-1;;25755:35:0;;;25806:1137::o;24368:1201::-;24449:14;;24537:17;;24418:11;;;;-1:-1:-1;;;24537:17:0;;;;24534:187;;;24588:10;24597:1;24588:6;:10;:::i;:::-;24571:27;-1:-1:-1;24630:23:0;24571:27;24630:6;:23;:::i;:::-;24613:40;;24534:187;;;24703:6;24686:23;;24534:187;24757:16;;;24771:1;24757:16;;;;;;;;24733:21;;24757:16;;;;;;;;-1:-1:-1;;24794:14:0;;:21;;;-1:-1:-1;;;24794:21:0;;;;24733:40;;-1:-1:-1;;;;;;24794:14:0;;;;:19;;-1:-1:-1;24794:21:0;;;;;;;;;;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24784:4;24789:1;24784:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24784:31:0;;;:7;;;;;;;;;:31;24836:12;;24826:7;;24836:12;;;24826:4;;24836:12;;24826:7;;;;;;:::i;:::-;-1:-1:-1;;;;;24826:22:0;;;:7;;;;;;;;;:22;24861:14;;:184;;-1:-1:-1;;;24861:184:0;;:14;;;:65;;24935:14;;24861:184;;:14;;24981:4;;17232:42;;25019:15;;24861:184;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25076:14;25058;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;25106:17:0;;-1:-1:-1;;;25106:17:0;;;;25103:459;;;25168:16;;;25182:1;25168:16;;;;;;;;25142:23;;25168:16;;;;;;;;-1:-1:-1;;25219:14:0;;:21;;;-1:-1:-1;;;25219:21:0;;;;25142:42;;-1:-1:-1;;;;;;25219:14:0;;;;:19;;-1:-1:-1;25219:21:0;;;;;;;;;;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25209:4;25214:1;25209:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25209:31:0;;;:7;;;;;;;;;:31;25265:15;;25255:7;;25265:15;;;25255:4;;25265:15;;25255:7;;;;;;:::i;:::-;-1:-1:-1;;;;;25255:25:0;;;:7;;;;;;;;;:25;25297:14;;:206;;-1:-1:-1;;;25297:206:0;;:14;;;:65;;25371:14;;25297:206;;:14;;25425:6;;17232:42;;25473:15;;25297:206;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25536:14;25518;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;;24407:1162:0;;;;24368:1201::o;14580:158::-;14653:4;14677:53;14685:3;-1:-1:-1;;;;;14705:23:0;;14677:7;:53::i;12098:305::-;12161:4;13187:19;;;:12;;;:19;;;;;;12178:218;;-1:-1:-1;12221:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;12295:18;;12273:19;;;:12;;;:19;;;;;;:40;;;;12328:11;;12178:218;-1:-1:-1;12379:5:0;12372:12;;14752:167;-1:-1:-1;;;;;14886:23:0;;14832:4;13187:19;;;:12;;;:19;;;;;;:24;;14856:55;13090:129;23004:351;-1:-1:-1;;;;;23123:17:0;;23099:21;23123:17;;;:9;:17;;;;;;23159:23;;;;23151:60;;;;-1:-1:-1;;;23151:60:0;;9023:2:1;23151:60:0;;;9005:21:1;9062:2;9042:18;;;9035:30;-1:-1:-1;;;9081:18:1;;;9074:54;9145:18;;23151:60:0;8821:348:1;23151:60:0;23225:27;23238:6;23245;23225:12;:27::i;:::-;23266:28;23276:9;23287:6;23266:9;:28::i;:::-;23328:9;-1:-1:-1;;;;;23312:33:0;23321:6;-1:-1:-1;;;;;23312:33:0;-1:-1:-1;;;;;;;;;;;23338:6:0;23312:33;;;;6964:25:1;;6952:2;6937:18;;6810:185;23312:33:0;;;;;;;;23088:267;23004:351;;;:::o;21233:1759::-;-1:-1:-1;;;;;21376:20:0;;;21349:24;21376:20;;;:9;:20;;;;;;;21431:17;;;;;;;;21467:23;;;;21459:60;;;;-1:-1:-1;;;21459:60:0;;9023:2:1;21459:60:0;;;9005:21:1;9062:2;9042:18;;;9035:30;-1:-1:-1;;;9081:18:1;;;9074:54;9145:18;;21459:60:0;8821:348:1;21459:60:0;21556:1;21546:9;;:11;;;;:::i;:::-;21534:9;:23;21570:9;21590:893;;;;21619:38;:21;21650:6;21619:30;:38::i;:::-;21615:247;;-1:-1:-1;;;;;21696:17:0;;;;;;:9;:17;;;;;;21715:15;-1:-1:-1;21696:34:0;;:52;;-1:-1:-1;21732:16:0;;;;;;;21696:52;21688:82;;;;-1:-1:-1;;;21688:82:0;;14638:2:1;21688:82:0;;;14620:21:1;14677:2;14657:18;;;14650:30;-1:-1:-1;;;14696:18:1;;;14689:48;14754:18;;21688:82:0;14436:342:1;21688:82:0;21834:12;;21818:28;;:15;:28;:::i;:::-;-1:-1:-1;;;;;21800:17:0;;;;;;:9;:17;;;;;:46;21615:247;21906:9;;21898:6;:17;;21890:44;;;;-1:-1:-1;;;21890:44:0;;11170:2:1;21890:44:0;;;11152:21:1;11209:2;11189:18;;;11182:30;-1:-1:-1;;;11228:18:1;;;11221:45;11283:18;;21890:44:0;10968:339:1;21890:44:0;-1:-1:-1;21953:8:0;;;;;;;21590:893;;;21984:5;21981:502;;;22045:12;;22020:23;22037:6;22020:16;:23;:::i;:::-;:37;;22012:65;;;;-1:-1:-1;;;22012:65:0;;;;;;;:::i;:::-;22108:8;;22100:6;:16;;22092:45;;;;-1:-1:-1;;;22092:45:0;;;;;;;:::i;:::-;-1:-1:-1;22156:7:0;;;;21981:502;;;22238:12;;22213:23;22230:6;22213:16;:23;:::i;:::-;:37;;22205:65;;;;-1:-1:-1;;;22205:65:0;;;;;;;:::i;:::-;22303:38;:21;22334:6;22303:30;:38::i;:::-;22299:139;;-1:-1:-1;;;;;22368:17:0;;;;;;:9;:17;;;;;;22387:15;-1:-1:-1;22368:34:0;;:52;;-1:-1:-1;22404:16:0;;;;;;;22368:52;22360:78;;;;-1:-1:-1;;;22360:78:0;;13610:2:1;22360:78:0;;;13592:21:1;13649:2;13629:18;;;13622:30;-1:-1:-1;;;13668:18:1;;;13661:44;13722:18;;22360:78:0;13408:338:1;22360:78:0;-1:-1:-1;22457:12:0;;;;;;;21981:502;22514:19;;-1:-1:-1;;;;;22506:27:0;;;22514:19;;22506:27;;;;22505:50;;-1:-1:-1;22538:16:0;;;;22537:17;22505:50;:82;;;;-1:-1:-1;22559:27:0;;;;22558:28;22505:82;22502:126;;;22602:26;22621:6;22602:18;:26::i;:::-;22705:11;;22642:21;;22664:53;;22678:6;;22686:3;;22691:25;;22705:11;;;;;;;22691:13;;;;:25;:::i;:::-;22664:13;:53::i;:::-;22642:75;-1:-1:-1;22731:19:0;22751:22;22642:75;22751:6;:22;:::i;:::-;22731:42;;22789:27;22802:6;22809;22789:12;:27::i;:::-;22850:4;22832:24;;;;:9;:24;;;;;:41;;22860:13;;22832:24;:41;;22860:13;;22832:41;:::i;:::-;;;;-1:-1:-1;22889:33:0;;-1:-1:-1;22899:9:0;22910:11;22889:9;:33::i;:::-;22956:9;-1:-1:-1;;;;;22940:38:0;22949:6;-1:-1:-1;;;;;22940:38:0;-1:-1:-1;;;;;;;;;;;22966:11:0;22940:38;;;;6964:25:1;;6952:2;6937:18;;6810:185;22940:38:0;;;;;;;;21338:1654;;;;;21233:1759;;;;;:::o;26955:455::-;27048:14;;27016:56;;27033:4;;-1:-1:-1;;;;;27048:14:0;27065:6;27016:8;:56::i;:::-;27107:16;;;27121:1;27107:16;;;;;;;;27083:21;;27107:16;;;;;;;;;;-1:-1:-1;27107:16:0;27083:40;;27152:4;27134;27139:1;27134:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27134:23:0;;;:7;;;;;;;;;;:23;;;;27178:14;;:21;;;-1:-1:-1;;;27178:21:0;;;;:14;;;;;:19;;:21;;;;;27134:7;;27178:21;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27168:4;27173:1;27168:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27168:31:0;;;:7;;;;;;;;;:31;27212:14;;:190;;-1:-1:-1;;;27212:190:0;;:14;;;:65;;:190;;27292:6;;27212:14;;27329:4;;27356;;27376:15;;27212:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27005:405;26955:455;:::o;27422:397::-;27516:9;27504:10;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;27568:14:0;;27536:61;;27553:4;;-1:-1:-1;;;;;27568:14:0;27585:11;27536:8;:61::i;:::-;27608:14;;:203;;-1:-1:-1;;;27608:203:0;;27679:4;27608:203;;;6115:34:1;;;6165:18;;;6158:34;;;27608:14:0;6208:18:1;;;6201:34;;;6251:18;;;6244:34;6294:19;;;6287:44;27785:15:0;6347:19:1;;;6340:35;-1:-1:-1;;;;;27608:14:0;;;;:30;;27646:9;;6049:19:1;;27608:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27422:397;;:::o;24096:264::-;24198:12;;24162:20;;24212:3;;24186:24;;24198:12;;24186:9;:24;:::i;:::-;24185:30;;;;:::i;:::-;24162:53;;24242:12;24226:14;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;;24268:14:0;;24285:18;-1:-1:-1;24265:88:0;;;24320:21;:19;:21::i;12417:659::-;12483:4;12524:19;;;:12;;;:19;;;;;;12560:15;;12556:513;;12609:21;12633:14;12646:1;12633:10;:14;:::i;:::-;12682:18;;12609:38;;-1:-1:-1;12662:17:0;;12682:22;;12703:1;;12682:22;:::i;:::-;12662:42;;12730:17;12750:3;:11;;12762:9;12750:22;;;;;;;;:::i;:::-;;;;;;;;;12730:42;;12825:9;12796:3;:11;;12808:13;12796:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;12856:23;;;:12;;;:23;;;;;;:36;;;12917:17;;12856:3;;12917:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;12965:3;:12;;:19;12978:5;12965:19;;;;;;;;;;;12958:26;;;13008:4;13001:11;;;;;;;;12556:513;13052:5;13045:12;;;;;23702:158;-1:-1:-1;;;;;23794:15:0;;23776:17;23794:15;;;:9;:15;;;;;;:22;;23810:6;;23794:22;:::i;:::-;-1:-1:-1;;;;;23827:15:0;;;;;;;:9;:15;;;;;:25;;;;-1:-1:-1;;23702:158:0:o;23529:157::-;-1:-1:-1;;;;;23618:15:0;;23600:17;23618:15;;;:9;:15;;;;;;:22;;23634:6;;23618:22;:::i;23367:156::-;23457:7;23510:5;23496:10;23485:21;;23492:3;23485:10;;:6;:10;;;;:::i;:::-;:21;;;;:::i;:::-;23484:31;;;;:::i;:::-;23477:38;23367:156;-1:-1:-1;;;;23367:156:0:o;14::1:-;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;109:55;14:156;;;:::o;175:247::-;234:6;287:2;275:9;266:7;262:23;258:32;255:52;;;303:1;300;293:12;255:52;342:9;329:23;361:31;386:5;361:31;:::i;427:251::-;497:6;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;598:9;592:16;617:31;642:5;617:31;:::i;683:388::-;751:6;759;812:2;800:9;791:7;787:23;783:32;780:52;;;828:1;825;818:12;780:52;867:9;854:23;886:31;911:5;886:31;:::i;:::-;936:5;-1:-1:-1;993:2:1;978:18;;965:32;1006:33;965:32;1006:33;:::i;:::-;1058:7;1048:17;;;683:388;;;;;:::o;1076:456::-;1153:6;1161;1169;1222:2;1210:9;1201:7;1197:23;1193:32;1190:52;;;1238:1;1235;1228:12;1190:52;1277:9;1264:23;1296:31;1321:5;1296:31;:::i;:::-;1346:5;-1:-1:-1;1403:2:1;1388:18;;1375:32;1416:33;1375:32;1416:33;:::i;:::-;1076:456;;1468:7;;-1:-1:-1;;;1522:2:1;1507:18;;;;1494:32;;1076:456::o;1537:382::-;1602:6;1610;1663:2;1651:9;1642:7;1638:23;1634:32;1631:52;;;1679:1;1676;1669:12;1631:52;1718:9;1705:23;1737:31;1762:5;1737:31;:::i;:::-;1787:5;-1:-1:-1;1844:2:1;1829:18;;1816:32;1857:30;1816:32;1857:30;:::i;1924:315::-;1992:6;2000;2053:2;2041:9;2032:7;2028:23;2024:32;2021:52;;;2069:1;2066;2059:12;2021:52;2108:9;2095:23;2127:31;2152:5;2127:31;:::i;:::-;2177:5;2229:2;2214:18;;;;2201:32;;-1:-1:-1;;;1924:315:1:o;2244:241::-;2300:6;2353:2;2341:9;2332:7;2328:23;2324:32;2321:52;;;2369:1;2366;2359:12;2321:52;2408:9;2395:23;2427:28;2449:5;2427:28;:::i;2490:245::-;2557:6;2610:2;2598:9;2589:7;2585:23;2581:32;2578:52;;;2626:1;2623;2616:12;2578:52;2658:9;2652:16;2677:28;2699:5;2677:28;:::i;2740:272::-;2798:6;2851:2;2839:9;2830:7;2826:23;2822:32;2819:52;;;2867:1;2864;2857:12;2819:52;2906:9;2893:23;2956:6;2949:5;2945:18;2938:5;2935:29;2925:57;;2978:1;2975;2968:12;3017:180;3076:6;3129:2;3117:9;3108:7;3104:23;3100:32;3097:52;;;3145:1;3142;3135:12;3097:52;-1:-1:-1;3168:23:1;;3017:180;-1:-1:-1;3017:180:1:o;3202:184::-;3272:6;3325:2;3313:9;3304:7;3300:23;3296:32;3293:52;;;3341:1;3338;3331:12;3293:52;-1:-1:-1;3364:16:1;;3202:184;-1:-1:-1;3202:184:1:o;3391:248::-;3459:6;3467;3520:2;3508:9;3499:7;3495:23;3491:32;3488:52;;;3536:1;3533;3526:12;3488:52;-1:-1:-1;;3559:23:1;;;3629:2;3614:18;;;3601:32;;-1:-1:-1;3391:248:1:o;3644:306::-;3732:6;3740;3748;3801:2;3789:9;3780:7;3776:23;3772:32;3769:52;;;3817:1;3814;3807:12;3769:52;3846:9;3840:16;3830:26;;3896:2;3885:9;3881:18;3875:25;3865:35;;3940:2;3929:9;3925:18;3919:25;3909:35;;3644:306;;;;;:::o;3955:182::-;4012:6;4065:2;4053:9;4044:7;4040:23;4036:32;4033:52;;;4081:1;4078;4071:12;4033:52;4104:27;4121:9;4104:27;:::i;4142:464::-;4227:6;4235;4243;4251;4259;4312:3;4300:9;4291:7;4287:23;4283:33;4280:53;;;4329:1;4326;4319:12;4280:53;4352:27;4369:9;4352:27;:::i;:::-;4342:37;;4398:36;4430:2;4419:9;4415:18;4398:36;:::i;:::-;4388:46;;4453:36;4485:2;4474:9;4470:18;4453:36;:::i;:::-;4443:46;;4508:36;4540:2;4529:9;4525:18;4508:36;:::i;:::-;4498:46;;4563:37;4595:3;4584:9;4580:19;4563:37;:::i;:::-;4553:47;;4142:464;;;;;;;;:::o;4611:461::-;4664:3;4702:5;4696:12;4729:6;4724:3;4717:19;4755:4;4784:2;4779:3;4775:12;4768:19;;4821:2;4814:5;4810:14;4842:1;4852:195;4866:6;4863:1;4860:13;4852:195;;;4931:13;;-1:-1:-1;;;;;4927:39:1;4915:52;;4987:12;;;;5022:15;;;;4963:1;4881:9;4852:195;;;-1:-1:-1;5063:3:1;;4611:461;-1:-1:-1;;;;;4611:461:1:o;7000:510::-;7271:6;7260:9;7253:25;7314:3;7309:2;7298:9;7294:18;7287:31;7234:4;7335:57;7387:3;7376:9;7372:19;7364:6;7335:57;:::i;:::-;-1:-1:-1;;;;;7428:32:1;;;;7423:2;7408:18;;7401:60;-1:-1:-1;7492:2:1;7477:18;7470:34;7327:65;7000:510;-1:-1:-1;;7000:510:1:o;7515:597::-;7627:4;7656:2;7685;7674:9;7667:21;7717:6;7711:13;7760:6;7755:2;7744:9;7740:18;7733:34;7785:1;7795:140;7809:6;7806:1;7803:13;7795:140;;;7904:14;;;7900:23;;7894:30;7870:17;;;7889:2;7866:26;7859:66;7824:10;;7795:140;;;7953:6;7950:1;7947:13;7944:91;;;8023:1;8018:2;8009:6;7998:9;7994:22;7990:31;7983:42;7944:91;-1:-1:-1;8096:2:1;8075:15;-1:-1:-1;;8071:29:1;8056:45;;;;8103:2;8052:54;;7515:597;-1:-1:-1;;;7515:597:1:o;9581:342::-;9783:2;9765:21;;;9822:2;9802:18;;;9795:30;-1:-1:-1;;;9856:2:1;9841:18;;9834:48;9914:2;9899:18;;9581:342::o;13063:340::-;13265:2;13247:21;;;13304:2;13284:18;;;13277:30;-1:-1:-1;;;13338:2:1;13323:18;;13316:46;13394:2;13379:18;;13063:340::o;15158:582::-;15457:6;15446:9;15439:25;15500:6;15495:2;15484:9;15480:18;15473:34;15543:3;15538:2;15527:9;15523:18;15516:31;15420:4;15564:57;15616:3;15605:9;15601:19;15593:6;15564:57;:::i;:::-;-1:-1:-1;;;;;15657:32:1;;;;15652:2;15637:18;;15630:60;-1:-1:-1;15721:3:1;15706:19;15699:35;15556:65;15158:582;-1:-1:-1;;;15158:582:1:o;16655:128::-;16695:3;16726:1;16722:6;16719:1;16716:13;16713:39;;;16732:18;;:::i;:::-;-1:-1:-1;16768:9:1;;16655:128::o;16788:204::-;16826:3;16862:4;16859:1;16855:12;16894:4;16891:1;16887:12;16929:3;16923:4;16919:14;16914:3;16911:23;16908:49;;;16937:18;;:::i;:::-;16973:13;;16788:204;-1:-1:-1;;;16788:204:1:o;16997:217::-;17037:1;17063;17053:132;;17107:10;17102:3;17098:20;17095:1;17088:31;17142:4;17139:1;17132:15;17170:4;17167:1;17160:15;17053:132;-1:-1:-1;17199:9:1;;16997:217::o;17219:422::-;17308:1;17351:5;17308:1;17365:270;17386:7;17376:8;17373:21;17365:270;;;17445:4;17441:1;17437:6;17433:17;17427:4;17424:27;17421:53;;;17454:18;;:::i;:::-;17504:7;17494:8;17490:22;17487:55;;;17524:16;;;;17487:55;17603:22;;;;17563:15;;;;17365:270;;;17369:3;17219:422;;;;;:::o;17646:140::-;17704:5;17733:47;17774:4;17764:8;17760:19;17754:4;17840:5;17870:8;17860:80;;-1:-1:-1;17911:1:1;17925:5;;17860:80;17959:4;17949:76;;-1:-1:-1;17996:1:1;18010:5;;17949:76;18041:4;18059:1;18054:59;;;;18127:1;18122:130;;;;18034:218;;18054:59;18084:1;18075:10;;18098:5;;;18122:130;18159:3;18149:8;18146:17;18143:43;;;18166:18;;:::i;:::-;-1:-1:-1;;18222:1:1;18208:16;;18237:5;;18034:218;;18336:2;18326:8;18323:16;18317:3;18311:4;18308:13;18304:36;18298:2;18288:8;18285:16;18280:2;18274:4;18271:12;18267:35;18264:77;18261:159;;;-1:-1:-1;18373:19:1;;;18405:5;;18261:159;18452:34;18477:8;18471:4;18452:34;:::i;:::-;18522:6;18518:1;18514:6;18510:19;18501:7;18498:32;18495:58;;;18533:18;;:::i;:::-;18571:20;;17791:806;-1:-1:-1;;;17791:806:1:o;18602:168::-;18642:7;18708:1;18704;18700:6;18696:14;18693:1;18690:21;18685:1;18678:9;18671:17;18667:45;18664:71;;;18715:18;;:::i;:::-;-1:-1:-1;18755:9:1;;18602:168::o;18775:125::-;18815:4;18843:1;18840;18837:8;18834:34;;;18848:18;;:::i;:::-;-1:-1:-1;18885:9:1;;18775:125::o;18905:127::-;18966:10;18961:3;18957:20;18954:1;18947:31;18997:4;18994:1;18987:15;19021:4;19018:1;19011:15;19037:127;19098:10;19093:3;19089:20;19086:1;19079:31;19129:4;19126:1;19119:15;19153:4;19150:1;19143:15;19169:127;19230:10;19225:3;19221:20;19218:1;19211:31;19261:4;19258:1;19251:15;19285:4;19282:1;19275:15;19433:131;-1:-1:-1;;;;;19508:31:1;;19498:42;;19488:70;;19554:1;19551;19544:12;19569:118;19655:5;19648:13;19641:21;19634:5;19631:32;19621:60;;19677:1;19674;19667:12
Swarm Source
ipfs://4910a3d3a5ac7030e0f87d2345a4a027049d75557a658a24e01385b12ca7f5b0
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.