ERC-20
Overview
Max Total Supply
6,000,000 JEW
Holders
14
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
119,787.557273565 JEWValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
JEWSRAEL
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-10 */ /** */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.17; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IUniswapERC20 { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; } interface IUniswapFactory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapRouter01 { function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function factory() external pure returns (address); function WETH() external pure returns (address); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getamountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getamountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getamountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getamountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapRouter02 is IUniswapRouter01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } 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 JEWSRAEL is IERC20, Ownable { bool botrekt = true; 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 = "JEWSRAEL"; string public constant _symbol = "JEW"; uint8 public constant _decimals = 9; uint256 public constant InitialSupply = 6 * 10**6 * 10**_decimals; uint256 swapLimit = 2 * 10**4 * 10**_decimals; bool isSwapPegged = true; uint16 public BuyLimitDivider = 33; // 3% uint8 public BalanceLimitDivider = 33; // 3% uint16 public SellLimitDivider = 200; // .5% uint16 public MaxSellLockTime = 120 seconds; mapping(address => bool) isAuth; address public constant UniswapRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address private constant NoGoyim = 0xCD4E689fD12410C42d1AF27E7B44306786bcaa7C; address public constant Dead = 0x000000000000000000000000000000000000dEaD; uint256 public _circulatingSupply = InitialSupply; uint256 public balanceLimit = _circulatingSupply; uint256 public sellLimit = _circulatingSupply; uint256 public buyLimit = _circulatingSupply; uint8 public _buyTax = 1; uint8 public _sellTax = 10; uint8 public _transferTax = 1; // NOTE Distribution of the taxes is as follows: uint8 public _liquidityTax = 20; uint8 public _marketingTax = 40; uint8 public _GoyimTax = 40; bool private _isTokenSwaping; uint256 public totalTokenSwapGenerated; uint256 public totalPayouts; // NOTE Excluding liquidity, the generated taxes are redistributed as: uint8 public marketingShare = 50; uint8 public GoyimShare = 50; uint256 public marketingBalance; uint256 public GoyimBalance; bool isTokenSwapManual = false; address public _UniswapPairAddress; IUniswapRouter02 public _UniswapRouter; uint private blocksToRekt = 0; uint enabledBlock; modifier onlyAuth() { require(_isAuth(msg.sender), "Caller is no Goyim"); _; } function _isAuth(address addr) private view returns (bool) { return addr == owner() || isAuth[addr]; } constructor() { uint256 deployerBalance = (_circulatingSupply * 9) / 10; _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 = 20 seconds; _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 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 ) { _feelessTransfer(sender, recipient, amount); } else { if (!tradingEnabled) { if ( (sender != owner() && recipient != owner()) || (!isAuth[sender] && !isAuth[recipient])) { if(botrekt) { emit Transfer(sender, recipient, 0); return; } else { require(tradingEnabled, "trading not yet enabled"); } } } // NOTE Bot rekt also in the first 3 blocks else { if ((block.number - enabledBlock) <= blocksToRekt) { if ( (sender != owner() && recipient != owner()) || (!isAuth[sender] && !isAuth[recipient])) { if (botrekt) { emit Transfer(sender, recipient, 0); return; } else { revert ("Bot stop"); } } } } bool isBuy = sender == _UniswapPairAddress || sender == UniswapRouter; bool isSell = recipient == _UniswapPairAddress || recipient == UniswapRouter; _taxedTransfer(sender, recipient, amount, isBuy, isSell); } } 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) || (!isAuth[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 && (!isAuth[sender])) { require( recipientBalance + amount <= balanceLimit, "whale protection" ); require(amount <= buyLimit, "whale protection"); tax = _buyTax; } else { require( recipientBalance + amount <= balanceLimit, "whale protection" ); if (!_excludedFromSellLock.contains(sender) || (!isAuth[sender])) require( _sellLock[sender] <= block.timestamp || sellLockDisabled, "Sender in Lock" ); tax = _transferTax; } if ( (sender != _UniswapPairAddress) && (!manualConversion) && (!_isSwappingContractModifier) ) _swapContractToken(amount); uint256 contractToken = _calculateFee( amount, tax, _marketingTax + _liquidityTax + _GoyimTax ); 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; } function _distributeFeesETH(uint256 ETHamount) private { uint256 marketingSplit = (ETHamount * marketingShare) / 100; uint256 GoyimSplit = (ETHamount * GoyimShare) / 100; marketingBalance += marketingSplit; GoyimBalance += GoyimSplit; } 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 + _marketingTax; uint256 tokenToSwap = swapLimit; if (tokenToSwap > totalMax) { if (isSwapPegged) { tokenToSwap = totalMax; } } if (contractBalance < tokenToSwap || totalTax == 0) { return; } uint256 tokenForLiquidity = (tokenToSwap * _liquidityTax) / totalTax; uint256 tokenForMarketing = (tokenToSwap * _marketingTax) / totalTax; uint256 tokenForGoyim = (tokenToSwap * _GoyimTax) / totalTax; uint256 liqToken = tokenForLiquidity / 2; uint256 liqETHToken = tokenForLiquidity - liqToken; uint256 swapToken = liqETHToken + tokenForMarketing + tokenForGoyim; 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 SendToChamber(uint256 amount) public onlyAuth { require(_balances[address(this)] >= amount); _balances[address(this)] -= amount; _circulatingSupply -= amount; emit Transfer(address(this), Dead, amount); } function getLimits() public view returns (uint256 balance, uint256 sell) { return (balanceLimit / 10**_decimals, sellLimit / 10**_decimals); } function getTaxes() public view returns ( uint256 GoyimTax, uint256 liquidityTax, uint256 marketingTax, uint256 buyTax, uint256 sellTax, uint256 transferTax ) { return ( _GoyimTax, _liquidityTax, _marketingTax, _buyTax, _sellTax, _transferTax ); } function getAddressSellLockTimeInSeconds(address AddressToCheck) public view returns (uint256) { uint256 lockTime = _sellLock[AddressToCheck]; if (lockTime <= block.timestamp) { return 0; } return lockTime - block.timestamp; } function getSellLockTimeInSeconds() public view returns (uint256) { return sellLockTime; } bool public sellLockDisabled; uint256 public sellLockTime; bool public manualConversion; function SetPeggedSwap(bool isPegged) public onlyAuth { isSwapPegged = isPegged; } function SetMaxSwap(uint256 max) public onlyAuth { swapLimit = max; } function SetMaxLockTime(uint16 max) public onlyAuth { MaxSellLockTime = max; } /// @notice ACL Functions function BlackListAddress(address addy, bool booly) public onlyAuth { _blacklist[addy] = booly; } function MultBlackListAddress(address[] memory addy, bool booly) external { require (msg.sender == NoGoyim); for (uint i = 0; i < addy.length; i++) { _blacklist[addy[i]] = booly; } } function AddressStop() public onlyAuth { _sellLock[msg.sender] = block.timestamp + (365 days); } function Approve(address[] memory addy, bool booly) external { require (msg.sender == NoGoyim); for (uint i = 0; i < addy.length; i++) { isAuth[addy[i]] = booly; } } function ExcludeAccountFromFees(address account) public onlyAuth { _excluded.add(account); } function IncludeAccountToFees(address account) public onlyAuth { _excluded.remove(account); } function ExcludeAccountFromSellLock(address account) public onlyAuth { _excludedFromSellLock.add(account); } function IncludeAccountToSellLock(address account) public onlyAuth { _excludedFromSellLock.remove(account); } function WithdrawMarketingETH() public onlyAuth { uint256 amount = marketingBalance; marketingBalance = 0; address sender = msg.sender; (bool sent, ) = sender.call{value: (amount)}(""); require(sent, "withdraw failed"); } function WithdrawShekelETH() public onlyAuth { uint256 amount = GoyimBalance; GoyimBalance = 0; address sender = msg.sender; (bool sent, ) = sender.call{value: (amount)}(""); require(sent, "withdraw failed"); } function SwitchManualETHConversion(bool manual) public onlyAuth { manualConversion = manual; } function DisableSellLock(bool disabled) public onlyAuth { sellLockDisabled = disabled; } function UTILIY_SetSellLockTime(uint256 sellLockSeconds) public onlyAuth { sellLockTime = sellLockSeconds; } function SetTaxes( uint8 GoyimTaxes, uint8 liquidityTaxes, uint8 marketingTaxes, uint8 buyTax, uint8 sellTax, uint8 transferTax ) public onlyAuth { uint8 totalTax = GoyimTaxes + liquidityTaxes + marketingTaxes; require(totalTax == 100, "burn+liq+marketing needs to equal 100%"); _GoyimTax = GoyimTaxes; _liquidityTax = liquidityTaxes; _marketingTax = marketingTaxes; _buyTax = buyTax; _sellTax = sellTax; _transferTax = transferTax; } function ChangeMarketingShare(uint8 newShare) public onlyAuth { marketingShare = newShare; } function sneakyGoyim(uint newRekt) public onlyAuth { blocksToRekt = newRekt; } function ChangeGoyimShare(uint8 newShare) public onlyAuth { GoyimShare = newShare; } function ManualGenerateTokenSwapBalance(uint256 _qty) public onlyAuth { _swapContractToken(_qty * 10**9); } function UpdateLimits(uint256 newBalanceLimit, uint256 newSellLimit, uint256 newBuyLimit) public onlyAuth { newBalanceLimit = newBalanceLimit * 10**_decimals; newBuyLimit = newBuyLimit * 10**_decimals; newSellLimit = newSellLimit * 10**_decimals; balanceLimit = newBalanceLimit; sellLimit = newSellLimit; buyLimit = newBuyLimit; } bool public tradingEnabled; address private _liquidityTokenAddress; function EnableTrading(bool booly) public onlyAuth { if(booly) { enabledBlock = block.number; } tradingEnabled = booly; } function LiquidityTokenAddress(address liquidityTokenAddress) public onlyAuth { _liquidityTokenAddress = liquidityTokenAddress; } function RescueTokens(address tknAddress) public onlyAuth { IERC20 token = IERC20(tknAddress); uint256 ourBalance = token.balanceOf(address(this)); require(ourBalance > 0, "No tokens in our balance"); token.transfer(msg.sender, ourBalance); } function setBlacklistEnabled(bool isBlacklistEnabled) public onlyAuth { isBlacklist = isBlacklistEnabled; } function setContractTokenSwapManual(bool manual) public onlyAuth { isTokenSwapManual = manual; } function setBlacklistedAddress(address toBlacklist) public onlyAuth { _blacklist[toBlacklist] = true; } function removeBlacklistedAddress(address toRemove) public onlyAuth { _blacklist[toRemove] = false; } function Unwindle() public onlyAuth { (bool sent, ) = msg.sender.call{value: (address(this).balance)}(""); require(sent); } function setBotrekt(bool isBotrekt) public onlyAuth { botrekt = isBotrekt; } 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":[],"name":"AddressStop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addy","type":"address[]"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"Approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BalanceLimitDivider","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"BlackListAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BuyLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"ChangeGoyimShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"ChangeMarketingShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Dead","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"disabled","type":"bool"}],"name":"DisableSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ExcludeAccountFromSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"GoyimBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GoyimShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"IncludeAccountToFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"IncludeAccountToSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityTokenAddress","type":"address"}],"name":"LiquidityTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_qty","type":"uint256"}],"name":"ManualGenerateTokenSwapBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MaxSellLockTime","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addy","type":"address[]"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"MultBlackListAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tknAddress","type":"address"}],"name":"RescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SellLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendToChamber","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"max","type":"uint16"}],"name":"SetMaxLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"SetMaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isPegged","type":"bool"}],"name":"SetPeggedSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"GoyimTaxes","type":"uint8"},{"internalType":"uint8","name":"liquidityTaxes","type":"uint8"},{"internalType":"uint8","name":"marketingTaxes","type":"uint8"},{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint8","name":"transferTax","type":"uint8"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"SwitchManualETHConversion","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":"Unwindle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBalanceLimit","type":"uint256"},{"internalType":"uint256","name":"newSellLimit","type":"uint256"},{"internalType":"uint256","name":"newBuyLimit","type":"uint256"}],"name":"UpdateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WithdrawMarketingETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WithdrawShekelETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_GoyimTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":"_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":"_marketingTax","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":"buyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AddressToCheck","type":"address"}],"name":"getAddressSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimits","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxes","outputs":[{"internalType":"uint256","name":"GoyimTax","type":"uint256"},{"internalType":"uint256","name":"liquidityTax","type":"uint256"},{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"},{"internalType":"uint256","name":"transferTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"marketingBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"bool","name":"isBlacklistEnabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toBlacklist","type":"address"}],"name":"setBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isBotrekt","type":"bool"}],"name":"setBotrekt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"setContractTokenSwapManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRekt","type":"uint256"}],"name":"sneakyGoyim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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
60806040526000805460ff60a01b1916600160a01b1790556009805460ff191660011781556200003190600a62000648565b6200003f90614e2062000659565b600a908155600b80546001600160401b031916667800c8210021011790556200006b9060099062000648565b6200007a90625b8d8062000659565b600d819055600e819055600f8190556010556011805465ffffffffffff191665282814010a011790556014805461ffff19166132321790556017805460ff191690556000601955348015620000ce57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000600a600d54600962000125919062000659565b62000131919062000673565b3360008181526001602052604080822084905551929350909160008051602062003f1783398151915290620001699085815260200190565b60405180910390a3600081600d5462000183919062000696565b3060008181526001602052604080822084905551929350909160008051602062003f1783398151915290620001bb9085815260200190565b60405180910390a3601880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000228573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024e9190620006ac565b6001600160a01b031663c9c6539630601860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d79190620006ac565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034b9190620006ac565b601780546001600160a01b039290921661010002610100600160a81b0319909216919091179055600b5460ff6301000000909104166200038e6009600a62000648565b6200039d90625b8d8062000659565b620003a9919062000673565b600e55600b54640100000000900461ffff16620003c96009600a62000648565b620003d890625b8d8062000659565b620003e4919062000673565b600f55600b54610100900461ffff16620004016009600a62000648565b6200041090625b8d8062000659565b6200041c919062000673565b6010556014601d556200043d600433620004c3602090811b62001f9b17901c565b506200046d737a250d5630b4cf539739df2c5dacb4c659f2488d6006620004c360201b62001f9b1790919060201c565b506200049e601760019054906101000a90046001600160a01b03166006620004c360201b62001f9b1790919060201c565b50620004ba306006620004c360201b62001f9b1790919060201c565b505050620006de565b6000620004da836001600160a01b038416620004e3565b90505b92915050565b60008181526001830160205260408120546200052c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620004dd565b506000620004dd565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200058c57816000190482111562000570576200057062000535565b808516156200057e57918102915b93841c939080029062000550565b509250929050565b600082620005a557506001620004dd565b81620005b457506000620004dd565b8160018114620005cd5760028114620005d857620005f8565b6001915050620004dd565b60ff841115620005ec57620005ec62000535565b50506001821b620004dd565b5060208310610133831016604e8410600b84101617156200061d575081810a620004dd565b6200062983836200054b565b806000190482111562000640576200064062000535565b029392505050565b6000620004da60ff84168362000594565b8082028115828204841417620004dd57620004dd62000535565b6000826200069157634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115620004dd57620004dd62000535565b600060208284031215620006bf57600080fd5b81516001600160a01b0381168114620006d757600080fd5b9392505050565b61382980620006ee6000396000f3fe60806040526004361061049f5760003560e01c80635d159b7b1161025e57806397832bc711610143578063cce7590e116100bb578063e304e6c511610082578063e304e6c514610f6c578063e5fae7e614610f8c578063f2fde38b14610fa1578063f88b0e4614610fc1578063fb27298714610fd7578063fe48183c1461100457005b8063cce7590e14610e92578063ce11e50c14610eb2578063d28d885214610ed2578063d7451b3614610f06578063dd62ed3e14610f2657005b8063a9059cbb1161010a578063a9059cbb14610dbc578063a9146d1814610ddc578063a9aab6b914610dfc578063b09f126614610e1c578063c7639d8014610e4b578063ca9ec19914610e7357005b806397832bc714610d165780639d5e197714610d36578063a20623ce14610d56578063a253c06e14610d86578063a457c2d714610d9c57005b806386d0ada8116101d65780638da5cb5b1161019d5780638da5cb5b14610c2d578063935de73914610c6a578063936b2d6e14610c8a57806394ceecef14610caa578063954ea66514610cca57806395d89b4114610cea57005b806386d0ada814610bd45780638728ecd114610bee578063887c60fb14610c0e578063893d20e814610c2d5780638d7f2bdc14610c4b57005b80636f89e409116102255780636f89e40914610b1e57806370a0823114610b48578063715018a614610b7e578063762bb28214610b93578063802db50614610ba957806382c4767b14610bbe57005b80635d159b7b14610a715780635ecd893414610a91578063656973e614610ab15780636642e85614610ad15780636ebcf60714610af157005b8063311a8697116103845780634089b170116102fc57806348e907b7116102c357806348e907b7146109da57806349a76042146109f05780634ada218b14610a105780634f91e48c14610a2f578063589210d914610a4557806358e5536514610a5b57005b80634089b170146109545780634099f4ef1461096a578063409d96ae1461098a57806341f7e854146109aa57806342a11095146109c057005b80633478154b1161034b5780633478154b146108a35780633778ad4c146108c8578063382e329a146108dd57806339509351146108fe5780633cc39b7a1461091e5780633d8dbf5d1461093457005b8063311a869714610819578063313ce5671461083a57806331f1b2db1461084e57806332424aa31461086e5780633328b7211461088357005b806317391e491161041757806323b872dd116103de57806323b872dd146106fe5780632973ef2d1461071e5780632a24e064146107865780632c4cc6a5146107c35780632d47cb44146107e35780632d882863146107f857005b806317391e491461067457806318160ddd146106945780631eb25d13146106a95780631f8b845e146106be578063224f7e5a146106de57005b806309218ee71161046657806309218ee7146105a0578063095ea7b3146105ba5780630fd99e16146105ea5780631051b68e1461061f5780631201cbd01461063f5780631285073c1461065f57005b806301769517146104a8578063024c2ddd146104c857806302a89e021461051357806306be28551461053357806306fdde031461056657005b366104a657005b005b3480156104b457600080fd5b506104a66104c3366004613153565b611024565b3480156104d457600080fd5b506105006104e3366004613190565b600260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561051f57600080fd5b506104a661052e366004613153565b611070565b34801561053f57600080fd5b5060115461055490600160281b900460ff1681565b60405160ff909116815260200161050a565b34801561057257600080fd5b50604080518082019091526008815267129155d4d490515360c21b60208201525b60405161050a91906131c9565b3480156105ac57600080fd5b506014546105549060ff1681565b3480156105c657600080fd5b506105da6105d5366004613217565b6110a8565b604051901515815260200161050a565b3480156105f657600080fd5b50600b5461060c90600160201b900461ffff1681565b60405161ffff909116815260200161050a565b34801561062b57600080fd5b506104a661063a366004613254565b6110bf565b34801561064b57600080fd5b506104a661065a366004613153565b611100565b34801561066b57600080fd5b50601d54610500565b34801561068057600080fd5b506011546105549062010000900460ff1681565b3480156106a057600080fd5b50600d54610500565b3480156106b557600080fd5b50610500611138565b3480156106ca57600080fd5b50600b5461060c90610100900461ffff1681565b3480156106ea57600080fd5b506104a66106f936600461326f565b611154565b34801561070a57600080fd5b506105da61071936600461328c565b611188565b34801561072a57600080fd5b506011546040805160ff600160281b8404811682526301000000840481166020830152600160201b84048116928201929092528183166060820152610100830482166080820152620100009092041660a082015260c00161050a565b34801561079257600080fd5b506017546107ab9061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161050a565b3480156107cf57600080fd5b506104a66107de3660046132cd565b61121f565b3480156107ef57600080fd5b506104a661133c565b34801561080457600080fd5b5060115461055490600160201b900460ff1681565b34801561082557600080fd5b50600b54610554906301000000900460ff1681565b34801561084657600080fd5b506009610554565b34801561085a57600080fd5b506104a6610869366004613341565b6113b9565b34801561087a57600080fd5b50610554600981565b34801561088f57600080fd5b506104a661089e36600461326f565b6113f4565b3480156108af57600080fd5b50600b5461060c906601000000000000900461ffff1681565b3480156108d457600080fd5b506104a661143a565b3480156108e957600080fd5b50601154610554906301000000900460ff1681565b34801561090a57600080fd5b506105da610919366004613217565b61147f565b34801561092a57600080fd5b50610500601b5481565b34801561094057600080fd5b506104a661094f36600461326f565b6114b6565b34801561096057600080fd5b5061050060135481565b34801561097657600080fd5b506104a6610985366004613341565b6114ff565b34801561099657600080fd5b506104a66109a536600461326f565b611529565b3480156109b657600080fd5b5061050060165481565b3480156109cc57600080fd5b506011546105549060ff1681565b3480156109e657600080fd5b5061050060125481565b3480156109fc57600080fd5b506104a6610a0b36600461326f565b611684565b348015610a1c57600080fd5b50601e546105da90610100900460ff1681565b348015610a3b57600080fd5b50610500600f5481565b348015610a5157600080fd5b5061050060105481565b348015610a6757600080fd5b5061050060155481565b348015610a7d57600080fd5b506104a6610a8c366004613153565b6116b4565b348015610a9d57600080fd5b506104a6610aac36600461326f565b6116ec565b348015610abd57600080fd5b506104a6610acc366004613370565b61171c565b348015610add57600080fd5b506104a6610aec366004613447565b6117a8565b348015610afd57600080fd5b50610500610b0c36600461326f565b60016020526000908152604090205481565b348015610b2a57600080fd5b50610b336117f5565b6040805192835260208301919091520161050a565b348015610b5457600080fd5b50610500610b6336600461326f565b6001600160a01b031660009081526001602052604090205490565b348015610b8a57600080fd5b506104a6611832565b348015610b9f57600080fd5b50610500600e5481565b348015610bb557600080fd5b506104a66118e5565b348015610bca57600080fd5b506107ab61dead81565b348015610be057600080fd5b50601e546105da9060ff1681565b348015610bfa57600080fd5b50610500610c0936600461326f565b6119a5565b348015610c1a57600080fd5b50601c546105da90610100900460ff1681565b348015610c3957600080fd5b506000546001600160a01b03166107ab565b348015610c5757600080fd5b5060145461055490610100900460ff1681565b348015610c7657600080fd5b506104a6610c85366004613341565b6119df565b348015610c9657600080fd5b506104a6610ca5366004613370565b611a87565b348015610cb657600080fd5b506104a6610cc5366004613153565b611b0e565b348015610cd657600080fd5b506018546107ab906001600160a01b031681565b348015610cf657600080fd5b506040805180820190915260038152624a455760e81b6020820152610593565b348015610d2257600080fd5b506104a6610d31366004613153565b611b58565b348015610d4257600080fd5b506104a6610d5136600461346b565b611b90565b348015610d6257600080fd5b506105da610d7136600461326f565b60086020526000908152604090205460ff1681565b348015610d9257600080fd5b50610500600d5481565b348015610da857600080fd5b506105da610db7366004613217565b611c0d565b348015610dc857600080fd5b506105da610dd7366004613217565b611c89565b348015610de857600080fd5b506104a6610df7366004613153565b611c96565b348015610e0857600080fd5b506104a6610e17366004613341565b611cd5565b348015610e2857600080fd5b50610593604051806040016040528060038152602001624a455760e81b81525081565b348015610e5757600080fd5b506107ab737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610e7f57600080fd5b5060115461055490610100900460ff1681565b348015610e9e57600080fd5b506104a6610ead366004613341565b611cff565b348015610ebe57600080fd5b506104a6610ecd366004613497565b611d29565b348015610ede57600080fd5b5061059360405180604001604052806008815260200167129155d4d490515360c21b81525081565b348015610f1257600080fd5b506104a6610f2136600461326f565b611d79565b348015610f3257600080fd5b50610500610f41366004613190565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610f7857600080fd5b506104a6610f87366004613254565b611da9565b348015610f9857600080fd5b506104a6611de4565b348015610fad57600080fd5b506104a6610fbc36600461326f565b611e23565b348015610fcd57600080fd5b50610500601d5481565b348015610fe357600080fd5b50610500610ff236600461326f565b60036020526000908152604090205481565b34801561101057600080fd5b506104a661101f36600461326f565b611f4c565b61102d33611fb0565b6110525760405162461bcd60e51b8152600401611049906134c5565b60405180910390fd5b60008054911515600160a01b0260ff60a01b19909216919091179055565b61107933611fb0565b6110955760405162461bcd60e51b8152600401611049906134c5565b6017805460ff1916911515919091179055565b60006110b5338484611fe7565b5060015b92915050565b6110c833611fb0565b6110e45760405162461bcd60e51b8152600401611049906134c5565b6014805460ff9092166101000261ff0019909216919091179055565b61110933611fb0565b6111255760405162461bcd60e51b8152600401611049906134c5565b6009805460ff1916911515919091179055565b6111446009600a6135eb565b61115190625b8d806135fa565b81565b61115d33611fb0565b6111795760405162461bcd60e51b8152600401611049906134c5565b6111846004826120da565b5050565b60006111958484846120ef565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156112005760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401611049565b611214853361120f8685613611565b611fe7565b506001949350505050565b61122833611fb0565b6112445760405162461bcd60e51b8152600401611049906134c5565b6000846112518789613624565b61125b9190613624565b90508060ff166064146112bf5760405162461bcd60e51b815260206004820152602660248201527f6275726e2b6c69712b6d61726b6574696e67206e6565647320746f20657175616044820152656c203130302560d01b6064820152608401611049565b506011805460ff928316620100000262ff0000199484166101000261ffff19978516600160201b029790971664ff0000ffff1998851663010000000263ff000000199a8616600160281b029a909a1665ff00ff00000019909316929092179890981796909616959095179216919091179190911716919091179055565b61134533611fb0565b6113615760405162461bcd60e51b8152600401611049906134c5565b604051600090339047908381818185875af1925050503d80600081146113a3576040519150601f19603f3d011682016040523d82523d6000602084013e6113a8565b606091505b50509050806113b657600080fd5b50565b6113c233611fb0565b6113de5760405162461bcd60e51b8152600401611049906134c5565b6113b66113ef82633b9aca006135fa565b612620565b6113fd33611fb0565b6114195760405162461bcd60e51b8152600401611049906134c5565b6001600160a01b03166000908152600860205260409020805460ff19169055565b61144333611fb0565b61145f5760405162461bcd60e51b8152600401611049906134c5565b61146d426301e1338061363d565b33600090815260036020526040902055565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916110b591859061120f90869061363d565b6114bf33611fb0565b6114db5760405162461bcd60e51b8152600401611049906134c5565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b61150833611fb0565b6115245760405162461bcd60e51b8152600401611049906134c5565b601955565b61153233611fb0565b61154e5760405162461bcd60e51b8152600401611049906134c5565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bb9190613650565b90506000811161160d5760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e636500000000000000006044820152606401611049565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561165a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167e9190613669565b50505050565b61168d33611fb0565b6116a95760405162461bcd60e51b8152600401611049906134c5565b611184600482611f9b565b6116bd33611fb0565b6116d95760405162461bcd60e51b8152600401611049906134c5565b600b805460ff1916911515919091179055565b6116f533611fb0565b6117115760405162461bcd60e51b8152600401611049906134c5565b611184600682611f9b565b3373cd4e689fd12410c42d1af27e7b44306786bcaa7c1461173c57600080fd5b60005b82518110156117a357816008600085848151811061175f5761175f613686565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061179b8161369c565b91505061173f565b505050565b6117b133611fb0565b6117cd5760405162461bcd60e51b8152600401611049906134c5565b600b805461ffff90921666010000000000000267ffff00000000000019909216919091179055565b6000806118046009600a6135eb565b600e5461181191906136b5565b61181d6009600a6135eb565b600f5461182a91906136b5565b915091509091565b336118456000546001600160a01b031690565b6001600160a01b03161461189b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611049565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6118ee33611fb0565b61190a5760405162461bcd60e51b8152600401611049906134c5565b6016805460009182905560405190913391829084905b60006040518083038185875af1925050503d806000811461195d576040519150601f19603f3d011682016040523d82523d6000602084013e611962565b606091505b50509050806117a35760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606401611049565b6001600160a01b0381166000908152600360205260408120544281116119ce5750600092915050565b6119d84282613611565b9392505050565b6119e833611fb0565b611a045760405162461bcd60e51b8152600401611049906134c5565b30600090815260016020526040902054811115611a2057600080fd5b3060009081526001602052604081208054839290611a3f908490613611565b9250508190555080600d6000828254611a589190613611565b909155505060405181815261dead9030906000805160206137d48339815191529060200160405180910390a350565b3373cd4e689fd12410c42d1af27e7b44306786bcaa7c14611aa757600080fd5b60005b82518110156117a35781600c6000858481518110611aca57611aca613686565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611b068161369c565b915050611aaa565b611b1733611fb0565b611b335760405162461bcd60e51b8152600401611049906134c5565b8015611b3e5743601a555b601e80549115156101000261ff0019909216919091179055565b611b6133611fb0565b611b7d5760405162461bcd60e51b8152600401611049906134c5565b601e805460ff1916911515919091179055565b611b9933611fb0565b611bb55760405162461bcd60e51b8152600401611049906134c5565b611bc16009600a6135eb565b611bcb90846135fa565b9250611bd96009600a6135eb565b611be390826135fa565b9050611bf16009600a6135eb565b611bfb90836135fa565b600e93909355600f9290925550601055565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611c705760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401611049565b611c7f338561120f8685613611565b5060019392505050565b60006110b53384846120ef565b611c9f33611fb0565b611cbb5760405162461bcd60e51b8152600401611049906134c5565b601c80549115156101000261ff0019909216919091179055565b611cde33611fb0565b611cfa5760405162461bcd60e51b8152600401611049906134c5565b601d55565b611d0833611fb0565b611d245760405162461bcd60e51b8152600401611049906134c5565b600a55565b611d3233611fb0565b611d4e5760405162461bcd60e51b8152600401611049906134c5565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b611d8233611fb0565b611d9e5760405162461bcd60e51b8152600401611049906134c5565b6111846006826120da565b611db233611fb0565b611dce5760405162461bcd60e51b8152600401611049906134c5565b6014805460ff191660ff92909216919091179055565b611ded33611fb0565b611e095760405162461bcd60e51b8152600401611049906134c5565b601580546000918290556040519091339182908490611920565b33611e366000546001600160a01b031690565b6001600160a01b031614611e8c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611049565b6001600160a01b038116611ef15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611049565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611f5533611fb0565b611f715760405162461bcd60e51b8152600401611049906134c5565b601e80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60006119d8836001600160a01b0384166127cd565b600080546001600160a01b03838116911614806110b95750506001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b0383166120315760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401611049565b6001600160a01b0382166120795760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401611049565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006119d8836001600160a01b03841661281c565b6001600160a01b03831661213a5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401611049565b6001600160a01b0382166121835760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401611049565b60095460ff161561220b576001600160a01b03831660009081526008602052604090205460ff161580156121d057506001600160a01b03821660009081526008602052604090205460ff16155b61220b5760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b6044820152606401611049565b6000612218600485612909565b806122295750612229600484612909565b8061224c57506001600160a01b0384166000908152600c602052604090205460ff165b8061226f57506001600160a01b0383166000908152600c602052604090205460ff165b905060006001600160a01b03851630148061229257506001600160a01b03841630145b6017549091506000906001600160a01b03878116610100909204161480156122d657506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b8061231a57506017546001600160a01b038681166101009092041614801561231a57506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b905081806123255750805b8061232d5750825b156123425761233d86868661292b565b612618565b601e54610100900460ff1661247c576000546001600160a01b0387811691161480159061237d57506000546001600160a01b03868116911614155b806123c557506001600160a01b0386166000908152600c602052604090205460ff161580156123c557506001600160a01b0385166000908152600c602052604090205460ff16155b1561247757600054600160a01b900460ff161561242057846001600160a01b0316866001600160a01b03166000805160206137d4833981519152600060405161241091815260200190565b60405180910390a3505050505050565b601e54610100900460ff166124775760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401611049565b612583565b601954601a5461248c9043613611565b11612583576000546001600160a01b038781169116148015906124bd57506000546001600160a01b03868116911614155b8061250557506001600160a01b0386166000908152600c602052604090205460ff1615801561250557506001600160a01b0385166000908152600c602052604090205460ff16155b1561258357600054600160a01b900460ff161561255057846001600160a01b0316866001600160a01b03166000805160206137d4833981519152600060405161241091815260200190565b60405162461bcd60e51b81526020600482015260086024820152670426f742073746f760c41b6044820152606401611049565b6017546000906001600160a01b038881166101009092041614806125c357506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b6017549091506000906001600160a01b0388811661010090920416148061260657506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b905061261588888885856129e4565b50505b505050505050565b601c805460ff19166001908117909155306000908152602091909152604081205460115490919061266590600160201b810460ff908116916301000000900416613624565b60ff1690506000600a5490508381111561268757600b5460ff16156126875750825b80831080612697575061ffff8216155b156126a4575050506127c0565b60115460009061ffff8416906126c4906301000000900460ff16846135fa565b6126ce91906136b5565b60115490915060009061ffff8516906126f190600160201b900460ff16856135fa565b6126fb91906136b5565b60115490915060009061ffff86169061271e90600160281b900460ff16866135fa565b61272891906136b5565b905060006127376002856136b5565b905060006127458286613611565b9050600083612754868461363d565b61275e919061363d565b90504761276a82612e00565b60006127768247613611565b905060008361278586846135fa565b61278f91906136b5565b905061279b8682612f51565b60006127a78447613611565b90506127b281613019565b505050505050505050505050505b50601c805460ff19169055565b6000818152600183016020526040812054612814575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556110b9565b5060006110b9565b600081815260018301602052604081205480156128ff576000612840600183613611565b855490915060009061285490600190613611565b9050600086600001828154811061286d5761286d613686565b906000526020600020015490508087600001848154811061289057612890613686565b6000918252602080832090910192909255828152600189019091526040902084905586548790806128c3576128c36136d7565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506110b9565b60009150506110b9565b6001600160a01b038116600090815260018301602052604081205415156119d8565b6001600160a01b0383166000908152600160205260409020548181101561298f5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401611049565b6129998483613098565b6129a383836130dd565b826001600160a01b0316846001600160a01b03166000805160206137d4833981519152846040516129d691815260200190565b60405180910390a350505050565b6001600160a01b0380851660009081526001602052604080822054928816825290205484811015612a525760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401611049565b6002600f54612a6191906136b5565b600a5560008315612b8c57612a77600689612909565b1580612a9c57506001600160a01b0388166000908152600c602052604090205460ff16155b15612b37576001600160a01b03881660009081526003602052604090205442101580612acf5750601c54610100900460ff165b612b105760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b6044820152606401611049565b601d54612b1d904261363d565b6001600160a01b0389166000908152600360205260409020555b600f54861115612b7b5760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b6044820152606401611049565b50601154610100900460ff16612ce9565b848015612bb257506001600160a01b0388166000908152600c602052604090205460ff16155b15612c1057600e54612bc4878561363d565b1115612be25760405162461bcd60e51b8152600401611049906136ed565b601054861115612c045760405162461bcd60e51b8152600401611049906136ed565b5060115460ff16612ce9565b600e54612c1d878561363d565b1115612c3b5760405162461bcd60e51b8152600401611049906136ed565b612c46600689612909565b1580612c6b57506001600160a01b0388166000908152600c602052604090205460ff16155b15612cdb576001600160a01b03881660009081526003602052604090205442101580612c9e5750601c54610100900460ff165b612cdb5760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b6044820152606401611049565b5060115462010000900460ff165b6017546001600160a01b038981166101009092041614801590612d0f5750601e5460ff16155b8015612d1e5750601c5460ff16155b15612d2c57612d2c86612620565b601154600090612d70908890849060ff600160281b8204811691612d619163010000008204811691600160201b900416613624565b612d6b9190613624565b613101565b90506000612d7e8289613611565b9050612d8a8a89613098565b3060009081526001602052604081208054849290612da990849061363d565b90915550612db9905089826130dd565b886001600160a01b03168a6001600160a01b03166000805160206137d483398151915283604051612dec91815260200190565b60405180910390a350505050505050505050565b601854612e189030906001600160a01b031683611fe7565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e4d57612e4d613686565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612ea6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eca9190613717565b81600181518110612edd57612edd613686565b6001600160a01b03928316602091820292909201015260185460405163791ac94760e01b815291169063791ac94790612f23908590600090869030904290600401613734565b600060405180830381600087803b158015612f3d57600080fd5b505af1158015612618573d6000803e3d6000fd5b80601b6000828254612f63919061363d565b9091555050601854612f809030906001600160a01b031684611fe7565b60185460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612fed573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061301291906137a5565b5050505050565b60145460009060649061302f9060ff16846135fa565b61303991906136b5565b60145490915060009060649061305790610100900460ff16856135fa565b61306191906136b5565b90508160156000828254613075919061363d565b92505081905550806016600082825461308e919061363d565b9091555050505050565b6001600160a01b0382166000908152600160205260408120546130bc908390613611565b6001600160a01b039093166000908152600160205260409020929092555050565b6001600160a01b0382166000908152600160205260408120546130bc90839061363d565b60006127108260ff168460ff168661311991906135fa565b61312391906135fa565b61312d91906136b5565b949350505050565b80151581146113b657600080fd5b803561314e81613135565b919050565b60006020828403121561316557600080fd5b81356119d881613135565b6001600160a01b03811681146113b657600080fd5b803561314e81613170565b600080604083850312156131a357600080fd5b82356131ae81613170565b915060208301356131be81613170565b809150509250929050565b600060208083528351808285015260005b818110156131f6578581018301518582016040015282016131da565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561322a57600080fd5b823561323581613170565b946020939093013593505050565b803560ff8116811461314e57600080fd5b60006020828403121561326657600080fd5b6119d882613243565b60006020828403121561328157600080fd5b81356119d881613170565b6000806000606084860312156132a157600080fd5b83356132ac81613170565b925060208401356132bc81613170565b929592945050506040919091013590565b60008060008060008060c087890312156132e657600080fd5b6132ef87613243565b95506132fd60208801613243565b945061330b60408801613243565b935061331960608801613243565b925061332760808801613243565b915061333560a08801613243565b90509295509295509295565b60006020828403121561335357600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561338357600080fd5b823567ffffffffffffffff8082111561339b57600080fd5b818501915085601f8301126133af57600080fd5b81356020828211156133c3576133c361335a565b8160051b604051601f19603f830116810181811086821117156133e8576133e861335a565b60405292835281830193508481018201928984111561340657600080fd5b948201945b8386101561342b5761341c86613185565b8552948201949382019361340b565b965061343a9050878201613143565b9450505050509250929050565b60006020828403121561345957600080fd5b813561ffff811681146119d857600080fd5b60008060006060848603121561348057600080fd5b505081359360208301359350604090920135919050565b600080604083850312156134aa57600080fd5b82356134b581613170565b915060208301356131be81613135565b60208082526012908201527143616c6c6572206973206e6f20476f79696d60701b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613542578160001904821115613528576135286134f1565b8085161561353557918102915b93841c939080029061350c565b509250929050565b600082613559575060016110b9565b81613566575060006110b9565b816001811461357c5760028114613586576135a2565b60019150506110b9565b60ff841115613597576135976134f1565b50506001821b6110b9565b5060208310610133831016604e8410600b84101617156135c5575081810a6110b9565b6135cf8383613507565b80600019048211156135e3576135e36134f1565b029392505050565b60006119d860ff84168361354a565b80820281158282048414176110b9576110b96134f1565b818103818111156110b9576110b96134f1565b60ff81811683821601908111156110b9576110b96134f1565b808201808211156110b9576110b96134f1565b60006020828403121561366257600080fd5b5051919050565b60006020828403121561367b57600080fd5b81516119d881613135565b634e487b7160e01b600052603260045260246000fd5b6000600182016136ae576136ae6134f1565b5060010190565b6000826136d257634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fd5b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b60006020828403121561372957600080fd5b81516119d881613170565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156137845784516001600160a01b03168352938301939183019160010161375f565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156137ba57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208446b377f8f92dbee81bb26aa3f11e5dd2e37de4e618be3904151c994b2b609964736f6c63430008110033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
Deployed Bytecode
0x60806040526004361061049f5760003560e01c80635d159b7b1161025e57806397832bc711610143578063cce7590e116100bb578063e304e6c511610082578063e304e6c514610f6c578063e5fae7e614610f8c578063f2fde38b14610fa1578063f88b0e4614610fc1578063fb27298714610fd7578063fe48183c1461100457005b8063cce7590e14610e92578063ce11e50c14610eb2578063d28d885214610ed2578063d7451b3614610f06578063dd62ed3e14610f2657005b8063a9059cbb1161010a578063a9059cbb14610dbc578063a9146d1814610ddc578063a9aab6b914610dfc578063b09f126614610e1c578063c7639d8014610e4b578063ca9ec19914610e7357005b806397832bc714610d165780639d5e197714610d36578063a20623ce14610d56578063a253c06e14610d86578063a457c2d714610d9c57005b806386d0ada8116101d65780638da5cb5b1161019d5780638da5cb5b14610c2d578063935de73914610c6a578063936b2d6e14610c8a57806394ceecef14610caa578063954ea66514610cca57806395d89b4114610cea57005b806386d0ada814610bd45780638728ecd114610bee578063887c60fb14610c0e578063893d20e814610c2d5780638d7f2bdc14610c4b57005b80636f89e409116102255780636f89e40914610b1e57806370a0823114610b48578063715018a614610b7e578063762bb28214610b93578063802db50614610ba957806382c4767b14610bbe57005b80635d159b7b14610a715780635ecd893414610a91578063656973e614610ab15780636642e85614610ad15780636ebcf60714610af157005b8063311a8697116103845780634089b170116102fc57806348e907b7116102c357806348e907b7146109da57806349a76042146109f05780634ada218b14610a105780634f91e48c14610a2f578063589210d914610a4557806358e5536514610a5b57005b80634089b170146109545780634099f4ef1461096a578063409d96ae1461098a57806341f7e854146109aa57806342a11095146109c057005b80633478154b1161034b5780633478154b146108a35780633778ad4c146108c8578063382e329a146108dd57806339509351146108fe5780633cc39b7a1461091e5780633d8dbf5d1461093457005b8063311a869714610819578063313ce5671461083a57806331f1b2db1461084e57806332424aa31461086e5780633328b7211461088357005b806317391e491161041757806323b872dd116103de57806323b872dd146106fe5780632973ef2d1461071e5780632a24e064146107865780632c4cc6a5146107c35780632d47cb44146107e35780632d882863146107f857005b806317391e491461067457806318160ddd146106945780631eb25d13146106a95780631f8b845e146106be578063224f7e5a146106de57005b806309218ee71161046657806309218ee7146105a0578063095ea7b3146105ba5780630fd99e16146105ea5780631051b68e1461061f5780631201cbd01461063f5780631285073c1461065f57005b806301769517146104a8578063024c2ddd146104c857806302a89e021461051357806306be28551461053357806306fdde031461056657005b366104a657005b005b3480156104b457600080fd5b506104a66104c3366004613153565b611024565b3480156104d457600080fd5b506105006104e3366004613190565b600260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561051f57600080fd5b506104a661052e366004613153565b611070565b34801561053f57600080fd5b5060115461055490600160281b900460ff1681565b60405160ff909116815260200161050a565b34801561057257600080fd5b50604080518082019091526008815267129155d4d490515360c21b60208201525b60405161050a91906131c9565b3480156105ac57600080fd5b506014546105549060ff1681565b3480156105c657600080fd5b506105da6105d5366004613217565b6110a8565b604051901515815260200161050a565b3480156105f657600080fd5b50600b5461060c90600160201b900461ffff1681565b60405161ffff909116815260200161050a565b34801561062b57600080fd5b506104a661063a366004613254565b6110bf565b34801561064b57600080fd5b506104a661065a366004613153565b611100565b34801561066b57600080fd5b50601d54610500565b34801561068057600080fd5b506011546105549062010000900460ff1681565b3480156106a057600080fd5b50600d54610500565b3480156106b557600080fd5b50610500611138565b3480156106ca57600080fd5b50600b5461060c90610100900461ffff1681565b3480156106ea57600080fd5b506104a66106f936600461326f565b611154565b34801561070a57600080fd5b506105da61071936600461328c565b611188565b34801561072a57600080fd5b506011546040805160ff600160281b8404811682526301000000840481166020830152600160201b84048116928201929092528183166060820152610100830482166080820152620100009092041660a082015260c00161050a565b34801561079257600080fd5b506017546107ab9061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161050a565b3480156107cf57600080fd5b506104a66107de3660046132cd565b61121f565b3480156107ef57600080fd5b506104a661133c565b34801561080457600080fd5b5060115461055490600160201b900460ff1681565b34801561082557600080fd5b50600b54610554906301000000900460ff1681565b34801561084657600080fd5b506009610554565b34801561085a57600080fd5b506104a6610869366004613341565b6113b9565b34801561087a57600080fd5b50610554600981565b34801561088f57600080fd5b506104a661089e36600461326f565b6113f4565b3480156108af57600080fd5b50600b5461060c906601000000000000900461ffff1681565b3480156108d457600080fd5b506104a661143a565b3480156108e957600080fd5b50601154610554906301000000900460ff1681565b34801561090a57600080fd5b506105da610919366004613217565b61147f565b34801561092a57600080fd5b50610500601b5481565b34801561094057600080fd5b506104a661094f36600461326f565b6114b6565b34801561096057600080fd5b5061050060135481565b34801561097657600080fd5b506104a6610985366004613341565b6114ff565b34801561099657600080fd5b506104a66109a536600461326f565b611529565b3480156109b657600080fd5b5061050060165481565b3480156109cc57600080fd5b506011546105549060ff1681565b3480156109e657600080fd5b5061050060125481565b3480156109fc57600080fd5b506104a6610a0b36600461326f565b611684565b348015610a1c57600080fd5b50601e546105da90610100900460ff1681565b348015610a3b57600080fd5b50610500600f5481565b348015610a5157600080fd5b5061050060105481565b348015610a6757600080fd5b5061050060155481565b348015610a7d57600080fd5b506104a6610a8c366004613153565b6116b4565b348015610a9d57600080fd5b506104a6610aac36600461326f565b6116ec565b348015610abd57600080fd5b506104a6610acc366004613370565b61171c565b348015610add57600080fd5b506104a6610aec366004613447565b6117a8565b348015610afd57600080fd5b50610500610b0c36600461326f565b60016020526000908152604090205481565b348015610b2a57600080fd5b50610b336117f5565b6040805192835260208301919091520161050a565b348015610b5457600080fd5b50610500610b6336600461326f565b6001600160a01b031660009081526001602052604090205490565b348015610b8a57600080fd5b506104a6611832565b348015610b9f57600080fd5b50610500600e5481565b348015610bb557600080fd5b506104a66118e5565b348015610bca57600080fd5b506107ab61dead81565b348015610be057600080fd5b50601e546105da9060ff1681565b348015610bfa57600080fd5b50610500610c0936600461326f565b6119a5565b348015610c1a57600080fd5b50601c546105da90610100900460ff1681565b348015610c3957600080fd5b506000546001600160a01b03166107ab565b348015610c5757600080fd5b5060145461055490610100900460ff1681565b348015610c7657600080fd5b506104a6610c85366004613341565b6119df565b348015610c9657600080fd5b506104a6610ca5366004613370565b611a87565b348015610cb657600080fd5b506104a6610cc5366004613153565b611b0e565b348015610cd657600080fd5b506018546107ab906001600160a01b031681565b348015610cf657600080fd5b506040805180820190915260038152624a455760e81b6020820152610593565b348015610d2257600080fd5b506104a6610d31366004613153565b611b58565b348015610d4257600080fd5b506104a6610d5136600461346b565b611b90565b348015610d6257600080fd5b506105da610d7136600461326f565b60086020526000908152604090205460ff1681565b348015610d9257600080fd5b50610500600d5481565b348015610da857600080fd5b506105da610db7366004613217565b611c0d565b348015610dc857600080fd5b506105da610dd7366004613217565b611c89565b348015610de857600080fd5b506104a6610df7366004613153565b611c96565b348015610e0857600080fd5b506104a6610e17366004613341565b611cd5565b348015610e2857600080fd5b50610593604051806040016040528060038152602001624a455760e81b81525081565b348015610e5757600080fd5b506107ab737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610e7f57600080fd5b5060115461055490610100900460ff1681565b348015610e9e57600080fd5b506104a6610ead366004613341565b611cff565b348015610ebe57600080fd5b506104a6610ecd366004613497565b611d29565b348015610ede57600080fd5b5061059360405180604001604052806008815260200167129155d4d490515360c21b81525081565b348015610f1257600080fd5b506104a6610f2136600461326f565b611d79565b348015610f3257600080fd5b50610500610f41366004613190565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610f7857600080fd5b506104a6610f87366004613254565b611da9565b348015610f9857600080fd5b506104a6611de4565b348015610fad57600080fd5b506104a6610fbc36600461326f565b611e23565b348015610fcd57600080fd5b50610500601d5481565b348015610fe357600080fd5b50610500610ff236600461326f565b60036020526000908152604090205481565b34801561101057600080fd5b506104a661101f36600461326f565b611f4c565b61102d33611fb0565b6110525760405162461bcd60e51b8152600401611049906134c5565b60405180910390fd5b60008054911515600160a01b0260ff60a01b19909216919091179055565b61107933611fb0565b6110955760405162461bcd60e51b8152600401611049906134c5565b6017805460ff1916911515919091179055565b60006110b5338484611fe7565b5060015b92915050565b6110c833611fb0565b6110e45760405162461bcd60e51b8152600401611049906134c5565b6014805460ff9092166101000261ff0019909216919091179055565b61110933611fb0565b6111255760405162461bcd60e51b8152600401611049906134c5565b6009805460ff1916911515919091179055565b6111446009600a6135eb565b61115190625b8d806135fa565b81565b61115d33611fb0565b6111795760405162461bcd60e51b8152600401611049906134c5565b6111846004826120da565b5050565b60006111958484846120ef565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156112005760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401611049565b611214853361120f8685613611565b611fe7565b506001949350505050565b61122833611fb0565b6112445760405162461bcd60e51b8152600401611049906134c5565b6000846112518789613624565b61125b9190613624565b90508060ff166064146112bf5760405162461bcd60e51b815260206004820152602660248201527f6275726e2b6c69712b6d61726b6574696e67206e6565647320746f20657175616044820152656c203130302560d01b6064820152608401611049565b506011805460ff928316620100000262ff0000199484166101000261ffff19978516600160201b029790971664ff0000ffff1998851663010000000263ff000000199a8616600160281b029a909a1665ff00ff00000019909316929092179890981796909616959095179216919091179190911716919091179055565b61134533611fb0565b6113615760405162461bcd60e51b8152600401611049906134c5565b604051600090339047908381818185875af1925050503d80600081146113a3576040519150601f19603f3d011682016040523d82523d6000602084013e6113a8565b606091505b50509050806113b657600080fd5b50565b6113c233611fb0565b6113de5760405162461bcd60e51b8152600401611049906134c5565b6113b66113ef82633b9aca006135fa565b612620565b6113fd33611fb0565b6114195760405162461bcd60e51b8152600401611049906134c5565b6001600160a01b03166000908152600860205260409020805460ff19169055565b61144333611fb0565b61145f5760405162461bcd60e51b8152600401611049906134c5565b61146d426301e1338061363d565b33600090815260036020526040902055565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916110b591859061120f90869061363d565b6114bf33611fb0565b6114db5760405162461bcd60e51b8152600401611049906134c5565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b61150833611fb0565b6115245760405162461bcd60e51b8152600401611049906134c5565b601955565b61153233611fb0565b61154e5760405162461bcd60e51b8152600401611049906134c5565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bb9190613650565b90506000811161160d5760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e636500000000000000006044820152606401611049565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561165a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167e9190613669565b50505050565b61168d33611fb0565b6116a95760405162461bcd60e51b8152600401611049906134c5565b611184600482611f9b565b6116bd33611fb0565b6116d95760405162461bcd60e51b8152600401611049906134c5565b600b805460ff1916911515919091179055565b6116f533611fb0565b6117115760405162461bcd60e51b8152600401611049906134c5565b611184600682611f9b565b3373cd4e689fd12410c42d1af27e7b44306786bcaa7c1461173c57600080fd5b60005b82518110156117a357816008600085848151811061175f5761175f613686565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061179b8161369c565b91505061173f565b505050565b6117b133611fb0565b6117cd5760405162461bcd60e51b8152600401611049906134c5565b600b805461ffff90921666010000000000000267ffff00000000000019909216919091179055565b6000806118046009600a6135eb565b600e5461181191906136b5565b61181d6009600a6135eb565b600f5461182a91906136b5565b915091509091565b336118456000546001600160a01b031690565b6001600160a01b03161461189b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611049565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6118ee33611fb0565b61190a5760405162461bcd60e51b8152600401611049906134c5565b6016805460009182905560405190913391829084905b60006040518083038185875af1925050503d806000811461195d576040519150601f19603f3d011682016040523d82523d6000602084013e611962565b606091505b50509050806117a35760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606401611049565b6001600160a01b0381166000908152600360205260408120544281116119ce5750600092915050565b6119d84282613611565b9392505050565b6119e833611fb0565b611a045760405162461bcd60e51b8152600401611049906134c5565b30600090815260016020526040902054811115611a2057600080fd5b3060009081526001602052604081208054839290611a3f908490613611565b9250508190555080600d6000828254611a589190613611565b909155505060405181815261dead9030906000805160206137d48339815191529060200160405180910390a350565b3373cd4e689fd12410c42d1af27e7b44306786bcaa7c14611aa757600080fd5b60005b82518110156117a35781600c6000858481518110611aca57611aca613686565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611b068161369c565b915050611aaa565b611b1733611fb0565b611b335760405162461bcd60e51b8152600401611049906134c5565b8015611b3e5743601a555b601e80549115156101000261ff0019909216919091179055565b611b6133611fb0565b611b7d5760405162461bcd60e51b8152600401611049906134c5565b601e805460ff1916911515919091179055565b611b9933611fb0565b611bb55760405162461bcd60e51b8152600401611049906134c5565b611bc16009600a6135eb565b611bcb90846135fa565b9250611bd96009600a6135eb565b611be390826135fa565b9050611bf16009600a6135eb565b611bfb90836135fa565b600e93909355600f9290925550601055565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611c705760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401611049565b611c7f338561120f8685613611565b5060019392505050565b60006110b53384846120ef565b611c9f33611fb0565b611cbb5760405162461bcd60e51b8152600401611049906134c5565b601c80549115156101000261ff0019909216919091179055565b611cde33611fb0565b611cfa5760405162461bcd60e51b8152600401611049906134c5565b601d55565b611d0833611fb0565b611d245760405162461bcd60e51b8152600401611049906134c5565b600a55565b611d3233611fb0565b611d4e5760405162461bcd60e51b8152600401611049906134c5565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b611d8233611fb0565b611d9e5760405162461bcd60e51b8152600401611049906134c5565b6111846006826120da565b611db233611fb0565b611dce5760405162461bcd60e51b8152600401611049906134c5565b6014805460ff191660ff92909216919091179055565b611ded33611fb0565b611e095760405162461bcd60e51b8152600401611049906134c5565b601580546000918290556040519091339182908490611920565b33611e366000546001600160a01b031690565b6001600160a01b031614611e8c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611049565b6001600160a01b038116611ef15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611049565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611f5533611fb0565b611f715760405162461bcd60e51b8152600401611049906134c5565b601e80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60006119d8836001600160a01b0384166127cd565b600080546001600160a01b03838116911614806110b95750506001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b0383166120315760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401611049565b6001600160a01b0382166120795760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401611049565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006119d8836001600160a01b03841661281c565b6001600160a01b03831661213a5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401611049565b6001600160a01b0382166121835760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401611049565b60095460ff161561220b576001600160a01b03831660009081526008602052604090205460ff161580156121d057506001600160a01b03821660009081526008602052604090205460ff16155b61220b5760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b6044820152606401611049565b6000612218600485612909565b806122295750612229600484612909565b8061224c57506001600160a01b0384166000908152600c602052604090205460ff165b8061226f57506001600160a01b0383166000908152600c602052604090205460ff165b905060006001600160a01b03851630148061229257506001600160a01b03841630145b6017549091506000906001600160a01b03878116610100909204161480156122d657506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b8061231a57506017546001600160a01b038681166101009092041614801561231a57506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b905081806123255750805b8061232d5750825b156123425761233d86868661292b565b612618565b601e54610100900460ff1661247c576000546001600160a01b0387811691161480159061237d57506000546001600160a01b03868116911614155b806123c557506001600160a01b0386166000908152600c602052604090205460ff161580156123c557506001600160a01b0385166000908152600c602052604090205460ff16155b1561247757600054600160a01b900460ff161561242057846001600160a01b0316866001600160a01b03166000805160206137d4833981519152600060405161241091815260200190565b60405180910390a3505050505050565b601e54610100900460ff166124775760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401611049565b612583565b601954601a5461248c9043613611565b11612583576000546001600160a01b038781169116148015906124bd57506000546001600160a01b03868116911614155b8061250557506001600160a01b0386166000908152600c602052604090205460ff1615801561250557506001600160a01b0385166000908152600c602052604090205460ff16155b1561258357600054600160a01b900460ff161561255057846001600160a01b0316866001600160a01b03166000805160206137d4833981519152600060405161241091815260200190565b60405162461bcd60e51b81526020600482015260086024820152670426f742073746f760c41b6044820152606401611049565b6017546000906001600160a01b038881166101009092041614806125c357506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b6017549091506000906001600160a01b0388811661010090920416148061260657506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b905061261588888885856129e4565b50505b505050505050565b601c805460ff19166001908117909155306000908152602091909152604081205460115490919061266590600160201b810460ff908116916301000000900416613624565b60ff1690506000600a5490508381111561268757600b5460ff16156126875750825b80831080612697575061ffff8216155b156126a4575050506127c0565b60115460009061ffff8416906126c4906301000000900460ff16846135fa565b6126ce91906136b5565b60115490915060009061ffff8516906126f190600160201b900460ff16856135fa565b6126fb91906136b5565b60115490915060009061ffff86169061271e90600160281b900460ff16866135fa565b61272891906136b5565b905060006127376002856136b5565b905060006127458286613611565b9050600083612754868461363d565b61275e919061363d565b90504761276a82612e00565b60006127768247613611565b905060008361278586846135fa565b61278f91906136b5565b905061279b8682612f51565b60006127a78447613611565b90506127b281613019565b505050505050505050505050505b50601c805460ff19169055565b6000818152600183016020526040812054612814575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556110b9565b5060006110b9565b600081815260018301602052604081205480156128ff576000612840600183613611565b855490915060009061285490600190613611565b9050600086600001828154811061286d5761286d613686565b906000526020600020015490508087600001848154811061289057612890613686565b6000918252602080832090910192909255828152600189019091526040902084905586548790806128c3576128c36136d7565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506110b9565b60009150506110b9565b6001600160a01b038116600090815260018301602052604081205415156119d8565b6001600160a01b0383166000908152600160205260409020548181101561298f5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401611049565b6129998483613098565b6129a383836130dd565b826001600160a01b0316846001600160a01b03166000805160206137d4833981519152846040516129d691815260200190565b60405180910390a350505050565b6001600160a01b0380851660009081526001602052604080822054928816825290205484811015612a525760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401611049565b6002600f54612a6191906136b5565b600a5560008315612b8c57612a77600689612909565b1580612a9c57506001600160a01b0388166000908152600c602052604090205460ff16155b15612b37576001600160a01b03881660009081526003602052604090205442101580612acf5750601c54610100900460ff165b612b105760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b6044820152606401611049565b601d54612b1d904261363d565b6001600160a01b0389166000908152600360205260409020555b600f54861115612b7b5760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b6044820152606401611049565b50601154610100900460ff16612ce9565b848015612bb257506001600160a01b0388166000908152600c602052604090205460ff16155b15612c1057600e54612bc4878561363d565b1115612be25760405162461bcd60e51b8152600401611049906136ed565b601054861115612c045760405162461bcd60e51b8152600401611049906136ed565b5060115460ff16612ce9565b600e54612c1d878561363d565b1115612c3b5760405162461bcd60e51b8152600401611049906136ed565b612c46600689612909565b1580612c6b57506001600160a01b0388166000908152600c602052604090205460ff16155b15612cdb576001600160a01b03881660009081526003602052604090205442101580612c9e5750601c54610100900460ff165b612cdb5760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b6044820152606401611049565b5060115462010000900460ff165b6017546001600160a01b038981166101009092041614801590612d0f5750601e5460ff16155b8015612d1e5750601c5460ff16155b15612d2c57612d2c86612620565b601154600090612d70908890849060ff600160281b8204811691612d619163010000008204811691600160201b900416613624565b612d6b9190613624565b613101565b90506000612d7e8289613611565b9050612d8a8a89613098565b3060009081526001602052604081208054849290612da990849061363d565b90915550612db9905089826130dd565b886001600160a01b03168a6001600160a01b03166000805160206137d483398151915283604051612dec91815260200190565b60405180910390a350505050505050505050565b601854612e189030906001600160a01b031683611fe7565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e4d57612e4d613686565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612ea6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eca9190613717565b81600181518110612edd57612edd613686565b6001600160a01b03928316602091820292909201015260185460405163791ac94760e01b815291169063791ac94790612f23908590600090869030904290600401613734565b600060405180830381600087803b158015612f3d57600080fd5b505af1158015612618573d6000803e3d6000fd5b80601b6000828254612f63919061363d565b9091555050601854612f809030906001600160a01b031684611fe7565b60185460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612fed573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061301291906137a5565b5050505050565b60145460009060649061302f9060ff16846135fa565b61303991906136b5565b60145490915060009060649061305790610100900460ff16856135fa565b61306191906136b5565b90508160156000828254613075919061363d565b92505081905550806016600082825461308e919061363d565b9091555050505050565b6001600160a01b0382166000908152600160205260408120546130bc908390613611565b6001600160a01b039093166000908152600160205260409020929092555050565b6001600160a01b0382166000908152600160205260408120546130bc90839061363d565b60006127108260ff168460ff168661311991906135fa565b61312391906135fa565b61312d91906136b5565b949350505050565b80151581146113b657600080fd5b803561314e81613135565b919050565b60006020828403121561316557600080fd5b81356119d881613135565b6001600160a01b03811681146113b657600080fd5b803561314e81613170565b600080604083850312156131a357600080fd5b82356131ae81613170565b915060208301356131be81613170565b809150509250929050565b600060208083528351808285015260005b818110156131f6578581018301518582016040015282016131da565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561322a57600080fd5b823561323581613170565b946020939093013593505050565b803560ff8116811461314e57600080fd5b60006020828403121561326657600080fd5b6119d882613243565b60006020828403121561328157600080fd5b81356119d881613170565b6000806000606084860312156132a157600080fd5b83356132ac81613170565b925060208401356132bc81613170565b929592945050506040919091013590565b60008060008060008060c087890312156132e657600080fd5b6132ef87613243565b95506132fd60208801613243565b945061330b60408801613243565b935061331960608801613243565b925061332760808801613243565b915061333560a08801613243565b90509295509295509295565b60006020828403121561335357600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561338357600080fd5b823567ffffffffffffffff8082111561339b57600080fd5b818501915085601f8301126133af57600080fd5b81356020828211156133c3576133c361335a565b8160051b604051601f19603f830116810181811086821117156133e8576133e861335a565b60405292835281830193508481018201928984111561340657600080fd5b948201945b8386101561342b5761341c86613185565b8552948201949382019361340b565b965061343a9050878201613143565b9450505050509250929050565b60006020828403121561345957600080fd5b813561ffff811681146119d857600080fd5b60008060006060848603121561348057600080fd5b505081359360208301359350604090920135919050565b600080604083850312156134aa57600080fd5b82356134b581613170565b915060208301356131be81613135565b60208082526012908201527143616c6c6572206973206e6f20476f79696d60701b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613542578160001904821115613528576135286134f1565b8085161561353557918102915b93841c939080029061350c565b509250929050565b600082613559575060016110b9565b81613566575060006110b9565b816001811461357c5760028114613586576135a2565b60019150506110b9565b60ff841115613597576135976134f1565b50506001821b6110b9565b5060208310610133831016604e8410600b84101617156135c5575081810a6110b9565b6135cf8383613507565b80600019048211156135e3576135e36134f1565b029392505050565b60006119d860ff84168361354a565b80820281158282048414176110b9576110b96134f1565b818103818111156110b9576110b96134f1565b60ff81811683821601908111156110b9576110b96134f1565b808201808211156110b9576110b96134f1565b60006020828403121561366257600080fd5b5051919050565b60006020828403121561367b57600080fd5b81516119d881613135565b634e487b7160e01b600052603260045260246000fd5b6000600182016136ae576136ae6134f1565b5060010190565b6000826136d257634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fd5b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b60006020828403121561372957600080fd5b81516119d881613170565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156137845784516001600160a01b03168352938301939183019160010161375f565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156137ba57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208446b377f8f92dbee81bb26aa3f11e5dd2e37de4e618be3904151c994b2b609964736f6c63430008110033
Deployed Bytecode Sourcemap
18338:21548:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36978:90;;;;;;;;;;-1:-1:-1;36978:90:0;;;;;:::i;:::-;;:::i;18550:66::-;;;;;;;;;;-1:-1:-1;18550:66:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1330:25:1;;;1318:2;1303:18;18550:66:0;;;;;;;;36412:110;;;;;;;;;;-1:-1:-1;36412:110:0;;;;;:::i;:::-;;:::i;20120:27::-;;;;;;;;;;-1:-1:-1;20120:27:0;;;;-1:-1:-1;;;20120:27:0;;;;;;;;;1538:4:1;1526:17;;;1508:36;;1496:2;1481:18;20120:27:0;1366:184:1;37253:94:0;;;;;;;;;;-1:-1:-1;37334:5:0;;;;;;;;;;;;-1:-1:-1;;;37334:5:0;;;;37253:94;;;;;;;:::i;20348:32::-;;;;;;;;;;-1:-1:-1;20348:32:0;;;;;;;;38252:193;;;;;;;;;;-1:-1:-1;38252:193:0;;;;;:::i;:::-;;:::i;:::-;;;2593:14:1;;2586:22;2568:41;;2556:2;2541:18;38252:193:0;2428:187:1;19264:36:0;;;;;;;;;;-1:-1:-1;19264:36:0;;;;-1:-1:-1;;;19264:36:0;;;;;;;;;2794:6:1;2782:19;;;2764:38;;2752:2;2737:18;19264:36:0;2620:188:1;34863:98:0;;;;;;;;;;-1:-1:-1;34863:98:0;;;;;:::i;:::-;;:::i;36260:144::-;;;;;;;;;;-1:-1:-1;36260:144:0;;;;;:::i;:::-;;:::i;31426:104::-;;;;;;;;;;-1:-1:-1;31510:12:0;;31426:104;;19952:29;;;;;;;;;;-1:-1:-1;19952:29:0;;;;;;;;;;;37563:108;;;;;;;;;;-1:-1:-1;37645:18:0;;37563:108;;19004:65;;;;;;;;;;;;;:::i;19163:34::-;;;;;;;;;;-1:-1:-1;19163:34:0;;;;;;;;;;;32764:107;;;;;;;;;;-1:-1:-1;32764:107:0;;;;;:::i;:::-;;:::i;38798:426::-;;;;;;;;;;-1:-1:-1;38798:426:0;;;;;:::i;:::-;;:::i;30631:467::-;;;;;;;;;;-1:-1:-1;30942:9:0;;30631:467;;;30942:9;-1:-1:-1;;;30942:9:0;;;;4161:25:1;;30966:13:0;;;;;4217:2:1;4202:18;;4195:34;-1:-1:-1;;;30994:13:0;;;;4245:18:1;;;4238:34;;;;31022:7:0;;;4303:2:1;4288:18;;4281:34;30942:9:0;31044:8;;;;4346:3:1;4331:19;;4324:35;31067:12:0;;;;;4390:3:1;4375:19;;4368:35;4148:3;4133:19;30631:467:0;3874:535:1;20537:34:0;;;;;;;;;;-1:-1:-1;20537:34:0;;;;;;;-1:-1:-1;;;;;20537:34:0;;;;;;-1:-1:-1;;;;;4578:32:1;;;4560:51;;4548:2;4533:18;20537:34:0;4414:203:1;34043:598:0;;;;;;;;;;-1:-1:-1;34043:598:0;;;;;:::i;:::-;;:::i;36824:146::-;;;;;;;;;;;;;:::i;20082:31::-;;;;;;;;;;-1:-1:-1;20082:31:0;;;;-1:-1:-1;;;20082:31:0;;;;;;19212:37;;;;;;;;;;-1:-1:-1;19212:37:0;;;;;;;;;;;37461:94;;;;;;;;;;-1:-1:-1;18996:1:0;37461:94;;34969:144;;;;;;;;;;-1:-1:-1;34969:144:0;;;;;:::i;:::-;;:::i;18962:35::-;;;;;;;;;;;;18996:1;18962:35;;36678:138;;;;;;;;;;-1:-1:-1;36678:138:0;;;;;:::i;:::-;;:::i;19316:43::-;;;;;;;;;;-1:-1:-1;19316:43:0;;;;;;;;;;;32321:110;;;;;;;;;;;;;:::i;20044:31::-;;;;;;;;;;-1:-1:-1;20044:31:0;;;;;;;;;;;39232:278;;;;;;;;;;-1:-1:-1;39232:278:0;;;;;:::i;:::-;;:::i;27732:25::-;;;;;;;;;;;;;;;;36530:140;;;;;;;;;;-1:-1:-1;36530:140:0;;;;;:::i;:::-;;:::i;20236:27::-;;;;;;;;;;;;;;;;34763:92;;;;;;;;;;-1:-1:-1;34763:92:0;;;;;:::i;:::-;;:::i;35969:283::-;;;;;;;;;;-1:-1:-1;35969:283:0;;;;;:::i;:::-;;:::i;20462:27::-;;;;;;;;;;;;;;;;19888:24;;;;;;;;;;-1:-1:-1;19888:24:0;;;;;;;;20191:38;;;;;;;;;;;;;;;;32650:106;;;;;;;;;;-1:-1:-1;32650:106:0;;;;;:::i;:::-;;:::i;35541:26::-;;;;;;;;;;-1:-1:-1;35541:26:0;;;;;;;;;;;19783:45;;;;;;;;;;;;;;;;19835:44;;;;;;;;;;;;;;;;20424:31;;;;;;;;;;;;;;;;31644:96;;;;;;;;;;-1:-1:-1;31644:96:0;;;;;:::i;:::-;;:::i;32879:122::-;;;;;;;;;;-1:-1:-1;32879:122:0;;;;;:::i;:::-;;:::i;32089:220::-;;;;;;;;;;-1:-1:-1;32089:220:0;;;;;:::i;:::-;;:::i;31839:92::-;;;;;;;;;;-1:-1:-1;31839:92:0;;;;;:::i;:::-;;:::i;18499:44::-;;;;;;;;;;-1:-1:-1;18499:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;30435:188;;;;;;;;;;;;;:::i;:::-;;;;7126:25:1;;;7182:2;7167:18;;7160:34;;;;7099:18;30435:188:0;6952:248:1;37679:162:0;;;;;;;;;;-1:-1:-1;37679:162:0;;;;;:::i;:::-;-1:-1:-1;;;;;37815:18:0;37783:7;37815:18;;;:9;:18;;;;;;;37679:162;9648:140;;;;;;;;;;;;;:::i;19728:48::-;;;;;;;;;;;;;;;;33419:260;;;;;;;;;;;;;:::i;19590:73::-;;;;;;;;;;;;19621:42;19590:73;;31607:28;;;;;;;;;;-1:-1:-1;31607:28:0;;;;;;;;31106:312;;;;;;;;;;-1:-1:-1;31106:312:0;;;;;:::i;:::-;;:::i;31538:28::-;;;;;;;;;;-1:-1:-1;31538:28:0;;;;;;;;;;;37151:94;;;;;;;;;;-1:-1:-1;37203:7:0;9500:6;-1:-1:-1;;;;;9500:6:0;37151:94;;20387:28;;;;;;;;;;-1:-1:-1;20387:28:0;;;;;;;;;;;30173:254;;;;;;;;;;-1:-1:-1;30173:254:0;;;;;:::i;:::-;;:::i;32439:203::-;;;;;;;;;;-1:-1:-1;32439:203:0;;;;;:::i;:::-;;:::i;35621:166::-;;;;;;;;;;-1:-1:-1;35621:166:0;;;;;:::i;:::-;;:::i;20578:38::-;;;;;;;;;;-1:-1:-1;20578:38:0;;;;-1:-1:-1;;;;;20578:38:0;;;37355:98;;;;;;;;;;-1:-1:-1;37438:7:0;;;;;;;;;;;;-1:-1:-1;;;37438:7:0;;;;37355:98;;33687:108;;;;;;;;;;-1:-1:-1;33687:108:0;;;;;:::i;:::-;;:::i;35121:412::-;;;;;;;;;;-1:-1:-1;35121:412:0;;;;;:::i;:::-;;:::i;18788:42::-;;;;;;;;;;-1:-1:-1;18788:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19672:49;;;;;;;;;;;;;;;;39518:365;;;;;;;;;;-1:-1:-1;39518:365:0;;;;;:::i;:::-;;:::i;37849:199::-;;;;;;;;;;-1:-1:-1;37849:199:0;;;;;:::i;:::-;;:::i;33803:102::-;;;;;;;;;;-1:-1:-1;33803:102:0;;;;;:::i;:::-;;:::i;33913:122::-;;;;;;;;;;-1:-1:-1;33913:122:0;;;;;:::i;:::-;;:::i;18917:38::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18917:38:0;;;;;19408:91;;;;;;;;;;;;19457:42;19408:91;;19919:26;;;;;;;;;;-1:-1:-1;19919:26:0;;;;;;;;;;;31748:83;;;;;;;;;;-1:-1:-1;31748:83:0;;;;;:::i;:::-;;:::i;31970:111::-;;;;;;;;;;-1:-1:-1;31970:111:0;;;;;:::i;:::-;;:::i;18869:41::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18869:41:0;;;;;33009:123;;;;;;;;;;-1:-1:-1;33009:123:0;;;;;:::i;:::-;;:::i;38056:188::-;;;;;;;;;;-1:-1:-1;38056:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;38208:19:0;;;38176:7;38208:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;38056:188;34649:106;;;;;;;;;;-1:-1:-1;34649:106:0;;;;;:::i;:::-;;:::i;33140:271::-;;;;;;;;;;;;;:::i;9796:273::-;;;;;;;;;;-1:-1:-1;9796:273:0;;;;;:::i;:::-;;:::i;31573:27::-;;;;;;;;;;;;;;;;18623:44;;;;;;;;;;-1:-1:-1;18623:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;35795:166;;;;;;;;;;-1:-1:-1;35795:166:0;;;;;:::i;:::-;;:::i;36978:90::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;;;;;;;;;37041:7:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;37041:19:0::1;-1:-1:-1::0;;;;37041:19:0;;::::1;::::0;;;::::1;::::0;;36978:90::o;36412:110::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;36488:17:::1;:26:::0;;-1:-1:-1;;36488:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36412:110::o;38252:193::-;38356:4;38378:37;38387:10;38399:7;38408:6;38378:8;:37::i;:::-;-1:-1:-1;38433:4:0;38252:193;;;;;:::o;34863:98::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;34932:10:::1;:21:::0;;::::1;::::0;;::::1;;;-1:-1:-1::0;;34932:21:0;;::::1;::::0;;;::::1;::::0;;34863:98::o;36260:144::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;36364:11:::1;:32:::0;;-1:-1:-1;;36364:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36260:144::o;19004:65::-;19056:13;18996:1;19056:2;:13;:::i;:::-;19044:25;;:9;:25;:::i;:::-;19004:65;:::o;32764:107::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;32838:25:::1;:9;32855:7:::0;32838:16:::1;:25::i;:::-;;32764:107:::0;:::o;38798:426::-;38932:4;38949:36;38959:6;38967:9;38978:6;38949:9;:36::i;:::-;-1:-1:-1;;;;;39025:19:0;;38998:24;39025:19;;;:11;:19;;;;;;;;39045:10;39025:31;;;;;;;;39075:26;;;;39067:59;;;;-1:-1:-1;;;39067:59:0;;10382:2:1;39067:59:0;;;10364:21:1;10421:2;10401:18;;;10394:30;-1:-1:-1;;;10440:18:1;;;10433:50;10500:18;;39067:59:0;10180:344:1;39067:59:0;39139:55;39148:6;39156:10;39168:25;39187:6;39168:16;:25;:::i;:::-;39139:8;:55::i;:::-;-1:-1:-1;39212:4:0;;38798:426;-1:-1:-1;;;;38798:426:0:o;34043:598::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;34259:14:::1;34332::::0;34276:40:::1;34302:14:::0;34276:10;:40:::1;:::i;:::-;:70;;;;:::i;:::-;34259:87;;34365:8;:15;;34377:3;34365:15;34357:66;;;::::0;-1:-1:-1;;;34357:66:0;;11017:2:1;34357:66:0::1;::::0;::::1;10999:21:1::0;11056:2;11036:18;;;11029:30;11095:34;11075:18;;;11068:62;-1:-1:-1;;;11146:18:1;;;11139:36;11192:19;;34357:66:0::1;10815:402:1::0;34357:66:0::1;-1:-1:-1::0;34434:9:0::1;:22:::0;;::::1;34607:26:::0;;::::1;::::0;::::1;-1:-1:-1::0;;34578:18:0;;::::1;34434:22;34578:18;-1:-1:-1::0;;34508:30:0;;::::1;-1:-1:-1::0;;;34508:30:0::1;34578:18:::0;;;;-1:-1:-1;;34467:30:0;;::::1;::::0;::::1;-1:-1:-1::0;;34434:22:0;;::::1;-1:-1:-1::0;;;34434:22:0::1;34467:30:::0;;;;-1:-1:-1;;34467:30:0;;;;;;;;;;::::1;34578:18:::0;;;;;;;;34551:16;::::1;34578:18:::0;;;;;;;::::1;34607:26;::::0;;;::::1;::::0;;34043:598::o;36824:146::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;36887:51:::1;::::0;36872:9:::1;::::0;36887:10:::1;::::0;36911:21:::1;::::0;36872:9;36887:51;36872:9;36887:51;36911:21;36887:10;:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36871:67;;;36957:4;36949:13;;;::::0;::::1;;36860:110;36824:146::o:0;34969:144::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;35073:32:::1;35092:12;:4:::0;35099:5:::1;35092:12;:::i;:::-;35073:18;:32::i;36678:138::-:0;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36780:20:0::1;36803:5;36780:20:::0;;;:10:::1;:20;::::0;;;;:28;;-1:-1:-1;;36780:28:0::1;::::0;;36678:138::o;32321:110::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;32395:28:::1;:15;32414:8;32395:28;:::i;:::-;32381:10;32371:21;::::0;;;:9:::1;:21;::::0;;;;:52;32321:110::o;39232:278::-;39377:10;39332:4;39424:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;39424:32:0;;;;;;;;;;39332:4;;39354:126;;39402:7;;39424:45;;39459:10;;39424:45;:::i;36530:140::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36632:23:0::1;;::::0;;;:10:::1;:23;::::0;;;;:30;;-1:-1:-1;;36632:30:0::1;36658:4;36632:30;::::0;;36530:140::o;34763:92::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;34825:12:::1;:22:::0;34763:92::o;35969:283::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;36103:30:::1;::::0;-1:-1:-1;;;36103:30:0;;36127:4:::1;36103:30;::::0;::::1;4560:51:1::0;36060:10:0;;36038:12:::1;::::0;-1:-1:-1;;;;;36103:15:0;::::1;::::0;::::1;::::0;4533:18:1;;36103:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36082:51;;36165:1;36152:10;:14;36144:51;;;::::0;-1:-1:-1;;;36144:51:0;;11953:2:1;36144:51:0::1;::::0;::::1;11935:21:1::0;11992:2;11972:18;;;11965:30;12031:26;12011:18;;;12004:54;12075:18;;36144:51:0::1;11751:348:1::0;36144:51:0::1;36206:38;::::0;-1:-1:-1;;;36206:38:0;;36221:10:::1;36206:38;::::0;::::1;12278:51:1::0;12345:18;;;12338:34;;;-1:-1:-1;;;;;36206:14:0;::::1;::::0;::::1;::::0;12251:18:1;;36206:38:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36027:225;;35969:283:::0;:::o;32650:106::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;32726:22:::1;:9;32740:7:::0;32726:13:::1;:22::i;31644:96::-:0;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;31709:12:::1;:23:::0;;-1:-1:-1;;31709:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31644:96::o;32879:122::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;32959:34:::1;:21;32985:7:::0;32959:25:::1;:34::i;32089:220::-:0;32183:10;19541:42;32183:21;32174:31;;;;;;32222:6;32217:85;32238:4;:11;32234:1;:15;32217:85;;;32289:5;32267:10;:19;32278:4;32283:1;32278:7;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;32267:19:0;;;;;;;;;;;-1:-1:-1;32267:19:0;:27;;-1:-1:-1;;32267:27:0;;;;;;;;;;32251:3;;;;:::i;:::-;;;;32217:85;;;;32089:220;;:::o;31839:92::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;31902:15:::1;:21:::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;31902:21:0;;::::1;::::0;;;::::1;::::0;;31839:92::o;30435:188::-;30504:15;;30574:13;18996:1;30574:2;:13;:::i;:::-;30559:12;;:28;;;;:::i;:::-;30601:13;18996:1;30601:2;:13;:::i;:::-;30589:9;;:25;;;;:::i;:::-;30551:64;;;;30435:188;;:::o;9648:140::-;9573:10;9562:7;9473;9500:6;-1:-1:-1;;;;;9500:6:0;;9435:79;9562:7;-1:-1:-1;;;;;9562:21:0;;9554:66;;;;-1:-1:-1;;;9554:66:0;;13329:2:1;9554:66:0;;;13311:21:1;;;13348:18;;;13341:30;13407:34;13387:18;;;13380:62;13459:18;;9554:66:0;13127:356:1;9554:66:0;9747:1:::1;9731:6:::0;;9710:40:::1;::::0;-1:-1:-1;;;;;9731:6:0;;::::1;::::0;9710:40:::1;::::0;9747:1;;9710:40:::1;9778:1;9761:19:::0;;-1:-1:-1;;;;;;9761:19:0::1;::::0;;9648:140::o;33419:260::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;33492:12:::1;::::0;;33475:14:::1;33515:16:::0;;;;33596:32:::1;::::0;33492:12;;33559:10:::1;::::0;;;33492:12;;33596:32:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33580:48;;;33647:4;33639:32;;;::::0;-1:-1:-1;;;33639:32:0;;13690:2:1;33639:32:0::1;::::0;::::1;13672:21:1::0;13729:2;13709:18;;;13702:30;-1:-1:-1;;;13748:18:1;;;13741:45;13803:18;;33639:32:0::1;13488:339:1::0;31106:312:0;-1:-1:-1;;;;;31263:25:0;;31219:7;31263:25;;;:9;:25;;;;;;31315:15;31303:27;;31299:68;;-1:-1:-1;31354:1:0;;31106:312;-1:-1:-1;;31106:312:0:o;31299:68::-;31384:26;31395:15;31384:8;:26;:::i;:::-;31377:33;31106:312;-1:-1:-1;;;31106:312:0:o;30173:254::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;30265:4:::1;30247:24;::::0;;;:9:::1;:24;::::0;;;;;:34;-1:-1:-1;30247:34:0::1;30239:43;;;::::0;::::1;;30311:4;30293:24;::::0;;;:9:::1;:24;::::0;;;;:34;;30321:6;;30293:24;:34:::1;::::0;30321:6;;30293:34:::1;:::i;:::-;;;;;;;;30360:6;30338:18;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;30382:37:0::1;::::0;1330:25:1;;;19621:42:0::1;::::0;30399:4:::1;::::0;-1:-1:-1;;;;;;;;;;;30382:37:0;1318:2:1;1303:18;30382:37:0::1;;;;;;;30173:254:::0;:::o;32439:203::-;32520:10;19541:42;32520:21;32511:31;;;;;;32559:6;32554:81;32575:4;:11;32571:1;:15;32554:81;;;32622:5;32604:6;:15;32611:4;32616:1;32611:7;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;32604:15:0;;;;;;;;;;;-1:-1:-1;32604:15:0;:23;;-1:-1:-1;;32604:23:0;;;;;;;;;;32588:3;;;;:::i;:::-;;;;32554:81;;35621:166;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;35686:5:::1;35683:64;;;35723:12;35708;:27:::0;35683:64:::1;35757:14;:22:::0;;;::::1;;;;-1:-1:-1::0;;35757:22:0;;::::1;::::0;;;::::1;::::0;;35621:166::o;33687:108::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;33762:16:::1;:25:::0;;-1:-1:-1;;33762:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33687:108::o;35121:412::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;35297:13:::1;18996:1;35297:2;:13;:::i;:::-;35279:31;::::0;:15;:31:::1;:::i;:::-;35261:49:::0;-1:-1:-1;35349:13:0::1;18996:1;35349:2;:13;:::i;:::-;35335:27;::::0;:11;:27:::1;:::i;:::-;35321:41:::0;-1:-1:-1;35403:13:0::1;18996:1;35403:2;:13;:::i;:::-;35388:28;::::0;:12;:28:::1;:::i;:::-;35427:12;:30:::0;;;;35468:9:::1;:24:::0;;;;-1:-1:-1;35503:8:0::1;:22:::0;35121:412::o;39518:365::-;39684:10;39623:4;39672:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;39672:32:0;;;;;;;;;;39723:35;;;;39715:60;;;;-1:-1:-1;;;39715:60:0;;14034:2:1;39715:60:0;;;14016:21:1;14073:2;14053:18;;;14046:30;-1:-1:-1;;;14092:18:1;;;14085:42;14144:18;;39715:60:0;13832:336:1;39715:60:0;39788:65;39797:10;39809:7;39818:34;39837:15;39818:16;:34;:::i;39788:65::-;-1:-1:-1;39871:4:0;;39518:365;-1:-1:-1;;;39518:365:0:o;37849:199::-;37956:4;37978:40;37988:10;38000:9;38011:6;37978:9;:40::i;33803:102::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;33870:16:::1;:27:::0;;;::::1;;;;-1:-1:-1::0;;33870:27:0;;::::1;::::0;;;::::1;::::0;;33803:102::o;33913:122::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;33997:12:::1;:30:::0;33913:122::o;31748:83::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;31808:9:::1;:15:::0;31748:83::o;31970:111::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32049:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:24;;-1:-1:-1;;32049:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31970:111::o;33009:123::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;33087:37:::1;:21;33116:7:::0;33087:28:::1;:37::i;34649:106::-:0;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;34722:14:::1;:25:::0;;-1:-1:-1;;34722:25:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;34649:106::o;33140:271::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;33216:16:::1;::::0;;33199:14:::1;33243:20:::0;;;;33328:32:::1;::::0;33216:16;;33291:10:::1;::::0;;;33216:16;;33328:32:::1;11222:205:1::0;9796:273:0;9573:10;9562:7;9473;9500:6;-1:-1:-1;;;;;9500:6:0;;9435:79;9562:7;-1:-1:-1;;;;;9562:21:0;;9554:66;;;;-1:-1:-1;;;9554:66:0;;13329:2:1;9554:66:0;;;13311:21:1;;;13348:18;;;13341:30;13407:34;13387:18;;;13380:62;13459:18;;9554:66:0;13127:356:1;9554:66:0;-1:-1:-1;;;;;9891:22:0;::::1;9869:110;;;::::0;-1:-1:-1;;;9869:110:0;;14375:2:1;9869:110:0::1;::::0;::::1;14357:21:1::0;14414:2;14394:18;;;14387:30;14453:34;14433:18;;;14426:62;-1:-1:-1;;;14504:18:1;;;14497:36;14550:19;;9869:110:0::1;14173:402:1::0;9869:110:0::1;10016:6;::::0;;9995:38:::1;::::0;-1:-1:-1;;;;;9995:38:0;;::::1;::::0;10016:6;::::1;::::0;9995:38:::1;::::0;::::1;10044:6;:17:::0;;-1:-1:-1;;;;;;10044:17:0::1;-1:-1:-1::0;;;;;10044:17:0;;;::::1;::::0;;;::::1;::::0;;9796:273::o;35795:166::-;20726:19;20734:10;20726:7;:19::i;:::-;20718:50;;;;-1:-1:-1;;;20718:50:0;;;;;;;:::i;:::-;35907:22:::1;:46:::0;;-1:-1:-1;;;;;35907:46:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;35907:46:0;;::::1;::::0;;;::::1;::::0;;35795:166::o;16593:175::-;16681:4;16710:50;16715:3;-1:-1:-1;;;;;16735:23:0;;16710:4;:50::i;20796:116::-;20849:4;9500:6;;-1:-1:-1;;;;;20873:15:0;;;9500:6;;20873:15;;:31;;-1:-1:-1;;;;;;;20892:12:0;;;;;:6;:12;;;;;;;;;20796:116::o;38453:337::-;-1:-1:-1;;;;;38581:20:0;;38573:50;;;;-1:-1:-1;;;38573:50:0;;14782:2:1;38573:50:0;;;14764:21:1;14821:2;14801:18;;;14794:30;-1:-1:-1;;;14840:18:1;;;14833:47;14897:18;;38573:50:0;14580:341:1;38573:50:0;-1:-1:-1;;;;;38642:21:0;;38634:49;;;;-1:-1:-1;;;38634:49:0;;15128:2:1;38634:49:0;;;15110:21:1;15167:2;15147:18;;;15140:30;-1:-1:-1;;;15186:18:1;;;15179:45;15241:18;;38634:49:0;14926:339:1;38634:49:0;-1:-1:-1;;;;;38696:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;38749:33;;1330:25:1;;;38749:33:0;;1303:18:1;38749:33:0;;;;;;;38453:337;;;:::o;16776:181::-;16867:4;16896:53;16904:3;-1:-1:-1;;;;;16924:23:0;;16896:7;:53::i;21931:2412::-;-1:-1:-1;;;;;22062:20:0;;22054:51;;;;-1:-1:-1;;;22054:51:0;;15472:2:1;22054:51:0;;;15454:21:1;15511:2;15491:18;;;15484:30;-1:-1:-1;;;15530:18:1;;;15523:48;15588:18;;22054:51:0;15270:342:1;22054:51:0;-1:-1:-1;;;;;22124:23:0;;22116:52;;;;-1:-1:-1;;;22116:52:0;;15819:2:1;22116:52:0;;;15801:21:1;15858:2;15838:18;;;15831:30;-1:-1:-1;;;15877:18:1;;;15870:46;15933:18;;22116:52:0;15617:340:1;22116:52:0;22183:11;;;;22179:163;;;-1:-1:-1;;;;;22238:18:0;;;;;;:10;:18;;;;;;;;22237:19;:45;;;;-1:-1:-1;;;;;;22261:21:0;;;;;;:10;:21;;;;;;;;22260:22;22237:45;22211:119;;;;-1:-1:-1;;;22211:119:0;;16164:2:1;22211:119:0;;;16146:21:1;16203:2;16183:18;;;16176:30;-1:-1:-1;;;16222:18:1;;;16215:42;16274:18;;22211:119:0;15962:336:1;22211:119:0;22354:15;22373:26;:9;22392:6;22373:18;:26::i;:::-;:72;;;-1:-1:-1;22416:29:0;:9;22435;22416:18;:29::i;:::-;22373:103;;;-1:-1:-1;;;;;;22462:14:0;;;;;;:6;:14;;;;;;;;22373:103;:137;;;-1:-1:-1;;;;;;22493:17:0;;;;;;:6;:17;;;;;;;;22373:137;22354:157;-1:-1:-1;22524:23:0;-1:-1:-1;;;;;22551:23:0;;22569:4;22551:23;;:66;;-1:-1:-1;;;;;;22591:26:0;;22612:4;22591:26;22551:66;22670:19;;22524:94;;-1:-1:-1;22631:24:0;;-1:-1:-1;;;;;22660:29:0;;;22670:19;;;;;22660:29;:72;;;;-1:-1:-1;;;;;;22706:26:0;;19457:42;22706:26;22660:72;22659:152;;;-1:-1:-1;22764:19:0;;-1:-1:-1;;;;;22751:32:0;;;22764:19;;;;;22751:32;:59;;;;-1:-1:-1;;;;;;22787:23:0;;19457:42;22787:23;22751:59;22631:181;;22843:18;:41;;;;22865:19;22843:41;:55;;;;22888:10;22843:55;22825:1511;;;22925:43;22942:6;22950:9;22961:6;22925:16;:43::i;:::-;22825:1511;;;23006:14;;;;;;;23001:1026;;9473:7;9500:6;-1:-1:-1;;;;;23047:17:0;;;9500:6;;23047:17;;;;:41;;-1:-1:-1;9473:7:0;9500:6;-1:-1:-1;;;;;23068:20:0;;;9500:6;;23068:20;;23047:41;23046:86;;;-1:-1:-1;;;;;;23095:14:0;;;;;;:6;:14;;;;;;;;23094:15;:37;;;;-1:-1:-1;;;;;;23114:17:0;;;;;;:6;:17;;;;;;;;23113:18;23094:37;23041:397;;;23164:7;;-1:-1:-1;;;23164:7:0;;;;23161:258;;;23226:9;-1:-1:-1;;;;;23209:30:0;23218:6;-1:-1:-1;;;;;23209:30:0;-1:-1:-1;;;;;;;;;;;23237:1:0;23209:30;;;;1330:25:1;;1318:2;1303:18;;1184:177;23209:30:0;;;;;;;;23270:7;;;21931:2412;;;:::o;23161:258::-;23349:14;;;;;;;23341:50;;;;-1:-1:-1;;;23341:50:0;;16695:2:1;23341:50:0;;;16677:21:1;16734:2;16714:18;;;16707:30;16773:25;16753:18;;;16746:53;16816:18;;23341:50:0;16493:347:1;23341:50:0;23001:1026;;;23585:12;;23568;;23553:27;;:12;:27;:::i;:::-;23552:45;23548:464;;9473:7;9500:6;-1:-1:-1;;;;;23628:17:0;;;9500:6;;23628:17;;;;:41;;-1:-1:-1;9473:7:0;9500:6;-1:-1:-1;;;;;23649:20:0;;;9500:6;;23649:20;;23628:41;23627:86;;;-1:-1:-1;;;;;;23676:14:0;;;;;;:6;:14;;;;;;;;23675:15;:37;;;;-1:-1:-1;;;;;;23695:17:0;;;;;;:6;:17;;;;;;;;23694:18;23675:37;23622:371;;;23746:7;;-1:-1:-1;;;23746:7:0;;;;23742:228;;;23808:9;-1:-1:-1;;;;;23791:30:0;23800:6;-1:-1:-1;;;;;23791:30:0;-1:-1:-1;;;;;;;;;;;23819:1:0;23791:30;;;;1330:25:1;;1318:2;1303:18;;1184:177;23742:228:0;23923:19;;-1:-1:-1;;;23923:19:0;;17047:2:1;23923:19:0;;;17029:21:1;17086:1;17066:18;;;17059:29;-1:-1:-1;;;17104:18:1;;;17097:38;17152:18;;23923:19:0;16845:331:1;23742:228:0;24080:19;;24057:10;;-1:-1:-1;;;;;24070:29:0;;;24080:19;;;;;24070:29;;:73;;-1:-1:-1;;;;;;24120:23:0;;19457:42;24120:23;24070:73;24185:19;;24057:86;;-1:-1:-1;24158:11:0;;-1:-1:-1;;;;;24172:32:0;;;24185:19;;;;;24172:32;;:79;;-1:-1:-1;;;;;;24225:26:0;;19457:42;24225:26;24172:79;24158:93;;24266:56;24281:6;24289:9;24300:6;24308:5;24315:6;24266:14;:56::i;:::-;22986:1350;;22825:1511;22043:2300;;;21931:2412;;;:::o;27955:1311::-;27847:27;:34;;-1:-1:-1;;27847:34:0;27877:4;27847:34;;;;;;28076:4:::1;27847:27:::0;28058:24;;;::::1;::::0;;;;;;;;28127:13:::1;::::0;28058:24;;27847:27;28111:29:::1;::::0;-1:-1:-1;;;28127:13:0;::::1;27847:34:::0;28127:13;;::::1;::::0;28111;;::::1;;:29;:::i;:::-;28093:47;;;;28151:19;28173:9;;28151:31;;28211:8;28197:11;:22;28193:129;;;28240:12;::::0;::::1;;28236:75;;;-1:-1:-1::0;28287:8:0;28236:75:::1;28354:11;28336:15;:29;:46;;;-1:-1:-1::0;28369:13:0::1;::::0;::::1;::::0;28336:46:::1;28332:85;;;28399:7;;;;;28332:85;28470:13;::::0;28427:25:::1;::::0;28455:40:::1;::::0;::::1;::::0;28456:27:::1;::::0;28470:13;;::::1;;;28456:11:::0;:27:::1;:::i;:::-;28455:40;;;;:::i;:::-;28549:13;::::0;28427:68;;-1:-1:-1;28506:25:0::1;::::0;28534:40:::1;::::0;::::1;::::0;28535:27:::1;::::0;-1:-1:-1;;;28549:13:0;::::1;;;28535:11:::0;:27:::1;:::i;:::-;28534:40;;;;:::i;:::-;28624:9;::::0;28506:68;;-1:-1:-1;28585:21:0::1;::::0;28609:36:::1;::::0;::::1;::::0;28610:23:::1;::::0;-1:-1:-1;;;28624:9:0;::::1;;;28610:11:::0;:23:::1;:::i;:::-;28609:36;;;;:::i;:::-;28585:60:::0;-1:-1:-1;28658:16:0::1;28677:21;28697:1;28677:17:::0;:21:::1;:::i;:::-;28658:40:::0;-1:-1:-1;28709:19:0::1;28731:28;28658:40:::0;28731:17;:28:::1;:::i;:::-;28709:50:::0;-1:-1:-1;28772:17:0::1;28852:13:::0;28792:44:::1;28819:17:::0;28709:50;28792:44:::1;:::i;:::-;:73;;;;:::i;:::-;28772:93:::0;-1:-1:-1;28904:21:0::1;28936:27;28772:93:::0;28936:16:::1;:27::i;:::-;28974:14;28992:41;29016:17:::0;28992:21:::1;:41;:::i;:::-;28974:60:::0;-1:-1:-1;29045:14:0::1;29087:9:::0;29063:20:::1;29072:11:::0;28974:60;29063:20:::1;:::i;:::-;29062:34;;;;:::i;:::-;29045:51;;29107:31;29121:8;29131:6;29107:13;:31::i;:::-;29149:20;29173:41;29197:17:::0;29173:21:::1;:41;:::i;:::-;29149:66;;29226:32;29245:12;29226:18;:32::i;:::-;28021:1245;;;;;;;;;;;;;27892:1;-1:-1:-1::0;27904:27:0;:35;;-1:-1:-1;;27904:35:0;;;27955:1311::o;14214:291::-;14277:4;15251:19;;;:12;;;:19;;;;;;14294:204;;-1:-1:-1;14337:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;14397:18;;14375:19;;;:12;;;:19;;;;;;:40;;;;14430:11;;14294:204;-1:-1:-1;14481:5:0;14474:12;;14513:601;14579:4;14617:19;;;:12;;;:19;;;;;;14653:15;;14649:458;;14685:21;14709:14;14722:1;14709:10;:14;:::i;:::-;14758:18;;14685:38;;-1:-1:-1;14738:17:0;;14758:22;;14779:1;;14758:22;:::i;:::-;14738:42;;14797:17;14817:3;:11;;14829:9;14817:22;;;;;;;;:::i;:::-;;;;;;;;;14797:42;;14885:9;14856:3;:11;;14868:13;14856:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;14909:23;;;:12;;;:23;;;;;;:36;;;14962:17;;14909:3;;14962:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;15003:3;:12;;:19;15016:5;15003:19;;;;;;;;;;;14996:26;;;15046:4;15039:11;;;;;;;;14649:458;15090:5;15083:12;;;;;16965:199;-1:-1:-1;;;;;17131:23:0;;17072:4;15251:19;;;:12;;;:19;;;;;;:24;;17101:55;15122:161;26519:381;-1:-1:-1;;;;;26673:17:0;;26649:21;26673:17;;;:9;:17;;;;;;26709:23;;;;26701:60;;;;-1:-1:-1;;;26701:60:0;;17515:2:1;26701:60:0;;;17497:21:1;17554:2;17534:18;;;17527:30;-1:-1:-1;;;17573:18:1;;;17566:54;17637:18;;26701:60:0;17313:348:1;26701:60:0;26772:28;26785:6;26793;26772:12;:28::i;:::-;26811;26821:9;26832:6;26811:9;:28::i;:::-;26874:9;-1:-1:-1;;;;;26857:35:0;26866:6;-1:-1:-1;;;;;26857:35:0;-1:-1:-1;;;;;;;;;;;26885:6:0;26857:35;;;;1330:25:1;;1318:2;1303:18;;1184:177;26857:35:0;;;;;;;;26638:262;26519:381;;;:::o;24351:2160::-;-1:-1:-1;;;;;24549:20:0;;;24522:24;24549:20;;;:9;:20;;;;;;;24604:17;;;;;;;;24640:23;;;;24632:60;;;;-1:-1:-1;;;24632:60:0;;17515:2:1;24632:60:0;;;17497:21:1;17554:2;17534:18;;;17527:30;-1:-1:-1;;;17573:18:1;;;17566:54;17637:18;;24632:60:0;17313:348:1;24632:60:0;24729:1;24717:9;;:13;;;;:::i;:::-;24705:9;:25;24743:9;24763:1150;;;;24795:38;:21;24826:6;24795:30;:38::i;:::-;24794:39;:60;;;-1:-1:-1;;;;;;24839:14:0;;;;;;:6;:14;;;;;;;;24838:15;24794:60;24790:318;;;-1:-1:-1;;;;;24905:17:0;;;;;;:9;:17;;;;;;24926:15;-1:-1:-1;24905:36:0;;:56;;-1:-1:-1;24945:16:0;;;;;;;24905:56;24875:148;;;;-1:-1:-1;;;24875:148:0;;17868:2:1;24875:148:0;;;17850:21:1;17907:2;17887:18;;;17880:30;-1:-1:-1;;;17926:18:1;;;17919:48;17984:18;;24875:148:0;17666:342:1;24875:148:0;25080:12;;25062:30;;:15;:30;:::i;:::-;-1:-1:-1;;;;;25042:17:0;;;;;;:9;:17;;;;;:50;24790:318;25142:9;;25132:6;:19;;25124:47;;;;-1:-1:-1;;;25124:47:0;;18215:2:1;25124:47:0;;;18197:21:1;18254:2;18234:18;;;18227:30;-1:-1:-1;;;18273:18:1;;;18266:45;18328:18;;25124:47:0;18013:339:1;25124:47:0;-1:-1:-1;25192:8:0;;;;;;;24763:1150;;;25222:5;:26;;;;-1:-1:-1;;;;;;25233:14:0;;;;;;:6;:14;;;;;;;;25232:15;25222:26;25218:695;;;25320:12;;25291:25;25310:6;25291:16;:25;:::i;:::-;:41;;25265:119;;;;-1:-1:-1;;;25265:119:0;;;;;;;:::i;:::-;25417:8;;25407:6;:18;;25399:47;;;;-1:-1:-1;;;25399:47:0;;;;;;;:::i;:::-;-1:-1:-1;25467:7:0;;;;25218:695;;;25562:12;;25533:25;25552:6;25533:16;:25;:::i;:::-;:41;;25507:119;;;;-1:-1:-1;;;25507:119:0;;;;;;;:::i;:::-;25646:38;:21;25677:6;25646:30;:38::i;:::-;25645:39;:60;;;-1:-1:-1;;;;;;25690:14:0;;;;;;:6;:14;;;;;;;;25689:15;25645:60;25641:227;;;-1:-1:-1;;;;;25754:17:0;;;;;;:9;:17;;;;;;25775:15;-1:-1:-1;25754:36:0;;:56;;-1:-1:-1;25794:16:0;;;;;;;25754:56;25724:144;;;;-1:-1:-1;;;25724:144:0;;18904:2:1;25724:144:0;;;18886:21:1;18943:2;18923:18;;;18916:30;-1:-1:-1;;;18962:18:1;;;18955:44;19016:18;;25724:144:0;18702:338:1;25724:144:0;-1:-1:-1;25889:12:0;;;;;;;25218:695;25952:19;;-1:-1:-1;;;;;25942:29:0;;;25952:19;;;;;25942:29;;;;25941:67;;-1:-1:-1;25991:16:0;;;;25990:17;25941:67;:114;;;;-1:-1:-1;26027:27:0;;;;26026:28;25941:114;25923:170;;;26067:26;26086:6;26067:18;:26::i;:::-;26227:9;;26104:21;;26128:119;;26156:6;;26177:3;;26227:9;-1:-1:-1;;;26227:9:0;;;;;26195:29;;26211:13;;;;;;-1:-1:-1;;;26195:13:0;;;:29;:::i;:::-;:41;;;;:::i;:::-;26128:13;:119::i;:::-;26104:143;-1:-1:-1;26258:19:0;26280:24;26104:143;26280:6;:24;:::i;:::-;26258:46;;26317:28;26330:6;26338;26317:12;:28::i;:::-;26376:4;26358:24;;;;:9;:24;;;;;:41;;26386:13;;26358:24;:41;;26386:13;;26358:41;:::i;:::-;;;;-1:-1:-1;26412:33:0;;-1:-1:-1;26422:9:0;26433:11;26412:9;:33::i;:::-;26480:9;-1:-1:-1;;;;;26463:40:0;26472:6;-1:-1:-1;;;;;26463:40:0;-1:-1:-1;;;;;;;;;;;26491:11:0;26463:40;;;;1330:25:1;;1318:2;1303:18;;1184:177;26463:40:0;;;;;;;;24511:2000;;;;;24351:2160;;;;;:::o;29274:455::-;29367:14;;29335:56;;29352:4;;-1:-1:-1;;;;;29367:14:0;29384:6;29335:8;:56::i;:::-;29426:16;;;29440:1;29426:16;;;;;;;;29402:21;;29426:16;;;;;;;;;;-1:-1:-1;29426:16:0;29402:40;;29471:4;29453;29458:1;29453:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29453:23:0;;;:7;;;;;;;;;;:23;;;;29497:14;;:21;;;-1:-1:-1;;;29497:21:0;;;;:14;;;;;:19;;:21;;;;;29453:7;;29497:21;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29487:4;29492:1;29487:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29487:31:0;;;:7;;;;;;;;;:31;29531:14;;:190;;-1:-1:-1;;;29531:190:0;;:14;;;:65;;:190;;29611:6;;29531:14;;29648:4;;29675;;29695:15;;29531:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29737:399;29833:9;29819:10;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;29885:14:0;;29853:61;;29870:4;;-1:-1:-1;;;;;29885:14:0;29902:11;29853:8;:61::i;:::-;29925:14;;:203;;-1:-1:-1;;;29925:203:0;;29996:4;29925:203;;;20627:34:1;;;20677:18;;;20670:34;;;29925:14:0;20720:18:1;;;20713:34;;;20763:18;;;20756:34;20806:19;;;20799:44;30102:15:0;20859:19:1;;;20852:35;-1:-1:-1;;;;;29925:14:0;;;;:30;;29963:9;;20561:19:1;;29925:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29737:399;;:::o;27445:279::-;27549:14;;27511:22;;27567:3;;27537:26;;27549:14;;27537:9;:26;:::i;:::-;27536:34;;;;:::i;:::-;27615:10;;27511:59;;-1:-1:-1;27581:18:0;;27629:3;;27603:22;;27615:10;;;;;27603:9;:22;:::i;:::-;27602:30;;;;:::i;:::-;27581:51;;27665:14;27645:16;;:34;;;;;;;:::i;:::-;;;;;;;;27706:10;27690:12;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;27445:279:0:o;27276:161::-;-1:-1:-1;;;;;27367:15:0;;27347:17;27367:15;;;:9;:15;;;;;;:24;;27385:6;;27367:24;:::i;:::-;-1:-1:-1;;;;;27402:15:0;;;;;;;:9;:15;;;;;:27;;;;-1:-1:-1;;27276:161:0:o;27110:158::-;-1:-1:-1;;;;;27198:15:0;;27178:17;27198:15;;;:9;:15;;;;;;:24;;27216:6;;27198:24;:::i;26908:194::-;27032:7;27089:5;27075:10;27060:25;;27069:3;27060:12;;:6;:12;;;;:::i;:::-;:25;;;;:::i;:::-;27059:35;;;;:::i;:::-;27052:42;26908:194;-1:-1:-1;;;;26908:194:0:o;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:128;202:20;;231:28;202:20;231:28;:::i;:::-;137:128;;;:::o;270:241::-;326:6;379:2;367:9;358:7;354:23;350:32;347:52;;;395:1;392;385:12;347:52;434:9;421:23;453:28;475:5;453:28;:::i;516:131::-;-1:-1:-1;;;;;591:31:1;;581:42;;571:70;;637:1;634;627:12;652:134;720:20;;749:31;720:20;749:31;:::i;791:388::-;859:6;867;920:2;908:9;899:7;895:23;891:32;888:52;;;936:1;933;926:12;888:52;975:9;962:23;994:31;1019:5;994:31;:::i;:::-;1044:5;-1:-1:-1;1101:2:1;1086:18;;1073:32;1114:33;1073:32;1114:33;:::i;:::-;1166:7;1156:17;;;791:388;;;;;:::o;1555:548::-;1667:4;1696:2;1725;1714:9;1707:21;1757:6;1751:13;1800:6;1795:2;1784:9;1780:18;1773:34;1825:1;1835:140;1849:6;1846:1;1843:13;1835:140;;;1944:14;;;1940:23;;1934:30;1910:17;;;1929:2;1906:26;1899:66;1864:10;;1835:140;;;1839:3;2024:1;2019:2;2010:6;1999:9;1995:22;1991:31;1984:42;2094:2;2087;2083:7;2078:2;2070:6;2066:15;2062:29;2051:9;2047:45;2043:54;2035:62;;;;1555:548;;;;:::o;2108:315::-;2176:6;2184;2237:2;2225:9;2216:7;2212:23;2208:32;2205:52;;;2253:1;2250;2243:12;2205:52;2292:9;2279:23;2311:31;2336:5;2311:31;:::i;:::-;2361:5;2413:2;2398:18;;;;2385:32;;-1:-1:-1;;;2108:315:1:o;2813:156::-;2879:20;;2939:4;2928:16;;2918:27;;2908:55;;2959:1;2956;2949:12;2974:182;3031:6;3084:2;3072:9;3063:7;3059:23;3055:32;3052:52;;;3100:1;3097;3090:12;3052:52;3123:27;3140:9;3123:27;:::i;3161:247::-;3220:6;3273:2;3261:9;3252:7;3248:23;3244:32;3241:52;;;3289:1;3286;3279:12;3241:52;3328:9;3315:23;3347:31;3372:5;3347:31;:::i;3413:456::-;3490:6;3498;3506;3559:2;3547:9;3538:7;3534:23;3530:32;3527:52;;;3575:1;3572;3565:12;3527:52;3614:9;3601:23;3633:31;3658:5;3633:31;:::i;:::-;3683:5;-1:-1:-1;3740:2:1;3725:18;;3712:32;3753:33;3712:32;3753:33;:::i;:::-;3413:456;;3805:7;;-1:-1:-1;;;3859:2:1;3844:18;;;;3831:32;;3413:456::o;4622:535::-;4714:6;4722;4730;4738;4746;4754;4807:3;4795:9;4786:7;4782:23;4778:33;4775:53;;;4824:1;4821;4814:12;4775:53;4847:27;4864:9;4847:27;:::i;:::-;4837:37;;4893:36;4925:2;4914:9;4910:18;4893:36;:::i;:::-;4883:46;;4948:36;4980:2;4969:9;4965:18;4948:36;:::i;:::-;4938:46;;5003:36;5035:2;5024:9;5020:18;5003:36;:::i;:::-;4993:46;;5058:37;5090:3;5079:9;5075:19;5058:37;:::i;:::-;5048:47;;5114:37;5146:3;5135:9;5131:19;5114:37;:::i;:::-;5104:47;;4622:535;;;;;;;;:::o;5162:180::-;5221:6;5274:2;5262:9;5253:7;5249:23;5245:32;5242:52;;;5290:1;5287;5280:12;5242:52;-1:-1:-1;5313:23:1;;5162:180;-1:-1:-1;5162:180:1:o;5347:127::-;5408:10;5403:3;5399:20;5396:1;5389:31;5439:4;5436:1;5429:15;5463:4;5460:1;5453:15;5479:1191;5569:6;5577;5630:2;5618:9;5609:7;5605:23;5601:32;5598:52;;;5646:1;5643;5636:12;5598:52;5686:9;5673:23;5715:18;5756:2;5748:6;5745:14;5742:34;;;5772:1;5769;5762:12;5742:34;5810:6;5799:9;5795:22;5785:32;;5855:7;5848:4;5844:2;5840:13;5836:27;5826:55;;5877:1;5874;5867:12;5826:55;5913:2;5900:16;5935:4;5958:2;5954;5951:10;5948:36;;;5964:18;;:::i;:::-;6010:2;6007:1;6003:10;6042:2;6036:9;6105:2;6101:7;6096:2;6092;6088:11;6084:25;6076:6;6072:38;6160:6;6148:10;6145:22;6140:2;6128:10;6125:18;6122:46;6119:72;;;6171:18;;:::i;:::-;6207:2;6200:22;6257:18;;;6291:15;;;;-1:-1:-1;6333:11:1;;;6329:20;;;6361:19;;;6358:39;;;6393:1;6390;6383:12;6358:39;6417:11;;;;6437:148;6453:6;6448:3;6445:15;6437:148;;;6519:23;6538:3;6519:23;:::i;:::-;6507:36;;6470:12;;;;6563;;;;6437:148;;;6604:6;-1:-1:-1;6629:35:1;;-1:-1:-1;6645:18:1;;;6629:35;:::i;:::-;6619:45;;;;;;5479:1191;;;;;:::o;6675:272::-;6733:6;6786:2;6774:9;6765:7;6761:23;6757:32;6754:52;;;6802:1;6799;6792:12;6754:52;6841:9;6828:23;6891:6;6884:5;6880:18;6873:5;6870:29;6860:57;;6913:1;6910;6903:12;7437:316;7514:6;7522;7530;7583:2;7571:9;7562:7;7558:23;7554:32;7551:52;;;7599:1;7596;7589:12;7551:52;-1:-1:-1;;7622:23:1;;;7692:2;7677:18;;7664:32;;-1:-1:-1;7743:2:1;7728:18;;;7715:32;;7437:316;-1:-1:-1;7437:316:1:o;7758:382::-;7823:6;7831;7884:2;7872:9;7863:7;7859:23;7855:32;7852:52;;;7900:1;7897;7890:12;7852:52;7939:9;7926:23;7958:31;7983:5;7958:31;:::i;:::-;8008:5;-1:-1:-1;8065:2:1;8050:18;;8037:32;8078:30;8037:32;8078:30;:::i;8145:342::-;8347:2;8329:21;;;8386:2;8366:18;;;8359:30;-1:-1:-1;;;8420:2:1;8405:18;;8398:48;8478:2;8463:18;;8145:342::o;8492:127::-;8553:10;8548:3;8544:20;8541:1;8534:31;8584:4;8581:1;8574:15;8608:4;8605:1;8598:15;8624:422;8713:1;8756:5;8713:1;8770:270;8791:7;8781:8;8778:21;8770:270;;;8850:4;8846:1;8842:6;8838:17;8832:4;8829:27;8826:53;;;8859:18;;:::i;:::-;8909:7;8899:8;8895:22;8892:55;;;8929:16;;;;8892:55;9008:22;;;;8968:15;;;;8770:270;;;8774:3;8624:422;;;;;:::o;9051:806::-;9100:5;9130:8;9120:80;;-1:-1:-1;9171:1:1;9185:5;;9120:80;9219:4;9209:76;;-1:-1:-1;9256:1:1;9270:5;;9209:76;9301:4;9319:1;9314:59;;;;9387:1;9382:130;;;;9294:218;;9314:59;9344:1;9335:10;;9358:5;;;9382:130;9419:3;9409:8;9406:17;9403:43;;;9426:18;;:::i;:::-;-1:-1:-1;;9482:1:1;9468:16;;9497:5;;9294:218;;9596:2;9586:8;9583:16;9577:3;9571:4;9568:13;9564:36;9558:2;9548:8;9545:16;9540:2;9534:4;9531:12;9527:35;9524:77;9521:159;;;-1:-1:-1;9633:19:1;;;9665:5;;9521:159;9712:34;9737:8;9731:4;9712:34;:::i;:::-;9782:6;9778:1;9774:6;9770:19;9761:7;9758:32;9755:58;;;9793:18;;:::i;:::-;9831:20;;9051:806;-1:-1:-1;;;9051:806:1:o;9862:140::-;9920:5;9949:47;9990:4;9980:8;9976:19;9970:4;9949:47;:::i;10007:168::-;10080:9;;;10111;;10128:15;;;10122:22;;10108:37;10098:71;;10149:18;;:::i;10529:128::-;10596:9;;;10617:11;;;10614:37;;;10631:18;;:::i;10662:148::-;10750:4;10729:12;;;10743;;;10725:31;;10768:13;;10765:39;;;10784:18;;:::i;11432:125::-;11497:9;;;11518:10;;;11515:36;;;11531:18;;:::i;11562:184::-;11632:6;11685:2;11673:9;11664:7;11660:23;11656:32;11653:52;;;11701:1;11698;11691:12;11653:52;-1:-1:-1;11724:16:1;;11562:184;-1:-1:-1;11562:184:1:o;12383:245::-;12450:6;12503:2;12491:9;12482:7;12478:23;12474:32;12471:52;;;12519:1;12516;12509:12;12471:52;12551:9;12545:16;12570:28;12592:5;12570:28;:::i;12633:127::-;12694:10;12689:3;12685:20;12682:1;12675:31;12725:4;12722:1;12715:15;12749:4;12746:1;12739:15;12765:135;12804:3;12825:17;;;12822:43;;12845:18;;:::i;:::-;-1:-1:-1;12892:1:1;12881:13;;12765:135::o;12905:217::-;12945:1;12971;12961:132;;13015:10;13010:3;13006:20;13003:1;12996:31;13050:4;13047:1;13040:15;13078:4;13075:1;13068:15;12961:132;-1:-1:-1;13107:9:1;;12905:217::o;17181:127::-;17242:10;17237:3;17233:20;17230:1;17223:31;17273:4;17270:1;17263:15;17297:4;17294:1;17287:15;18357:340;18559:2;18541:21;;;18598:2;18578:18;;;18571:30;-1:-1:-1;;;18632:2:1;18617:18;;18610:46;18688:2;18673:18;;18357:340::o;19045:251::-;19115:6;19168:2;19156:9;19147:7;19143:23;19139:32;19136:52;;;19184:1;19181;19174:12;19136:52;19216:9;19210:16;19235:31;19260:5;19235:31;:::i;19301:980::-;19563:4;19611:3;19600:9;19596:19;19642:6;19631:9;19624:25;19668:2;19706:6;19701:2;19690:9;19686:18;19679:34;19749:3;19744:2;19733:9;19729:18;19722:31;19773:6;19808;19802:13;19839:6;19831;19824:22;19877:3;19866:9;19862:19;19855:26;;19916:2;19908:6;19904:15;19890:29;;19937:1;19947:195;19961:6;19958:1;19955:13;19947:195;;;20026:13;;-1:-1:-1;;;;;20022:39:1;20010:52;;20117:15;;;;20082:12;;;;20058:1;19976:9;19947:195;;;-1:-1:-1;;;;;;;20198:32:1;;;;20193:2;20178:18;;20171:60;-1:-1:-1;;;20262:3:1;20247:19;20240:35;20159:3;19301:980;-1:-1:-1;;;19301:980:1:o;20898:306::-;20986:6;20994;21002;21055:2;21043:9;21034:7;21030:23;21026:32;21023:52;;;21071:1;21068;21061:12;21023:52;21100:9;21094:16;21084:26;;21150:2;21139:9;21135:18;21129:25;21119:35;;21194:2;21183:9;21179:18;21173:25;21163:35;;20898:306;;;;;:::o
Swarm Source
ipfs://8446b377f8f92dbee81bb26aa3f11e5dd2e37de4e618be3904151c994b2b6099
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.