Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000,000 INTER
Holders
5
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
14,182,051,756.666084841900490233 INTERValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
INETERNER
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-05 */ /** *Submitted for verification at Etherscan.io on 2022-08-03 */ // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.9.0; abstract contract Context { function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20Upgradeable { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/od/ai/nu/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (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"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address lpPair, uint); function getPair(address tokenA, address tokenB) external view returns (address lpPair); function createPair(address tokenA, address tokenB) external returns (address lpPair); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract INETERNER is Context, IERC20Upgradeable { // Ownership moved to in-contract for customizability. address private _owner; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => bool) lpPairs; uint256 private timeSinceLastPair = 0; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; mapping (address => bool) private _liquidityHolders; uint256 private startingSupply; string private _name; string private _symbol; uint256 public _reflectFee = 2; uint256 public _liquidityFee = 0; uint256 public _marketingFee =2; uint256 public _buyReflectFee = _reflectFee; uint256 public _buyLiquidityFee = _liquidityFee; uint256 public _buyMarketingFee = _marketingFee; uint256 public _sellReflectFee = 0; uint256 public _sellLiquidityFee = 0; uint256 public _sellMarketingFee = 2; uint256 public _transferReflectFee = 2; uint256 public _transferLiquidityFee = 0; uint256 public _transferMarketingFee = 0; uint256 private maxReflectFee = 1000; uint256 private maxLiquidityFee = 1000; uint256 private maxMarketingFee = 2200; uint256 public _liquidityRatio = 0; uint256 public _marketingRatio = 0; uint256 private masterTaxDivisor = 10000; uint256 public MarketShare = 1; uint256 public DevShare = 0; uint256 public ValueDivisor = 1; uint256 private constant MAX = ~uint256(0); uint8 private _decimals; uint256 private _decimalsMul; uint256 private _tTotal; uint256 private _rTotal; uint256 private _tFeeTotal; IUniswapV2Router02 public dexRouter; address public lpPair; // UNI ROUTER address public _routerAddress; address public DEAD = 0x000000000000000000000000000000000000dEaD; address public ZERO = 0x0000000000000000000000000000000000000000; address payable private _devWallet; address payable private _marketWallet; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; uint256 private _maxTxAmount; uint256 public maxTxAmountUI; uint256 private _maxWalletSize; uint256 public maxWalletSizeUI; uint256 private swapThreshold; uint256 private swapAmount; bool tradingEnabled = false; bool public _hasLiqBeenAdded = false; uint256 private _liqAddBlock = 0; uint256 private _liqAddStamp = 0; bool private sameBlockActive = true; mapping (address => uint256) private lastTrade; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SniperCaught(address sniperAddress); uint256 Planted; bool contractInitialized = false; modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } constructor () payable { // Set the owner. _owner = msg.sender; if (block.chainid == 56) { _routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E; } else if (block.chainid == 97) { _routerAddress = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3; } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) { _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; } else { revert(); } _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _liquidityHolders[owner()] = true; _approve(_msgSender(), _routerAddress, MAX); _approve(address(this), _routerAddress, MAX); } receive() external payable {} function intializeContract(address payable setMarketWallet, address payable setDevWallet, string memory _tokenname, string memory _tokensymbol) external onlyOwner { require(!contractInitialized); _marketWallet = payable(0x615B7d03AAB89b9ea7d58889Bb407173E96c1c11); _devWallet = payable(0x615B7d03AAB89b9ea7d58889Bb407173E96c1c11); _name = _tokenname; _symbol = _tokensymbol; startingSupply = 1_000_000_000_000; if (startingSupply < 10000000000000) { _decimals = 18; _decimalsMul = _decimals; } else { _decimals = 9; _decimalsMul = _decimals; } _tTotal = startingSupply * (10**_decimalsMul); _rTotal = (MAX - (MAX % _tTotal)); dexRouter = IUniswapV2Router02(_routerAddress); lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this)); lpPairs[lpPair] = true; _allowances[address(this)][address(dexRouter)] = type(uint256).max; _maxTxAmount = (_tTotal * 100) / 100; maxTxAmountUI = (startingSupply * 1000) / 100000; _maxWalletSize = (_tTotal * 100) / 100; maxWalletSizeUI = (startingSupply * 10) / 1000; swapThreshold = (_tTotal * 5) / 10000; swapAmount = (_tTotal * 5) / 1000; approve(_routerAddress, type(uint256).max); contractInitialized = true; _rOwned[owner()] = _rTotal; emit Transfer(ZERO, owner(), _tTotal); _approve(address(this), address(dexRouter), type(uint256).max); _transfer(owner(), address(this), balanceOf(owner())); dexRouter.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); Planted = block.number; } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== // Ownable removed as a lib and added here to allow for custom transfers and recnouncements. // This allows for removal of ownership privelages from the owner once renounced or transferred. function owner() public view returns (address) { return _owner; } function transferOwner(address newOwner) external onlyOwner() { require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address."); require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address."); setExcludedFromFee(_owner, false); setExcludedFromFee(newOwner, true); setExcludedFromReward(newOwner, true); if (_devWallet == payable(0x615B7d03AAB89b9ea7d58889Bb407173E96c1c11)) _devWallet = payable(0x615B7d03AAB89b9ea7d58889Bb407173E96c1c11); _allowances[_owner][newOwner] = balanceOf(_owner); if(balanceOf(_owner) > 0) { _transfer(_owner, newOwner, balanceOf(_owner)); } _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } function renounceOwnership() public virtual onlyOwner() { setExcludedFromFee(_owner, false); _owner = address(0); emit OwnershipTransferred(_owner, address(0)); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== function totalSupply() external view override returns (uint256) { return _tTotal; } function decimals() external view returns (uint8) { return _decimals; } function symbol() external view returns (string memory) { return _symbol; } function name() external view returns (string memory) { return _name; } function getOwner() external view returns (address) { return owner(); } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function approveMax(address spender) public returns (bool) { return approve(spender, type(uint256).max); } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue); return true; } function setNewRouter(address newRouter) external onlyOwner() { IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter); address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); if (get_pair == address(0)) { lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { lpPair = get_pair; } dexRouter = _newRouter; _approve(address(this), newRouter, MAX); } function setLpPair(address pair, bool enabled) external onlyOwner { if (enabled == false) { lpPairs[pair] = false; } else { if (timeSinceLastPair != 0) { require(block.timestamp - timeSinceLastPair > 1 weeks, "Cannot set a new pair this week!"); } lpPairs[pair] = true; timeSinceLastPair = block.timestamp; } } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function setTaxesBuy(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner { require(reflect <= maxReflectFee && liquidity <= maxLiquidityFee && marketing <= maxMarketingFee ); require(reflect + liquidity + marketing <= 4900); _buyReflectFee = reflect; _buyLiquidityFee = liquidity; _buyMarketingFee = marketing; } function setTaxesSell(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner { require(reflect <= maxReflectFee && liquidity <= maxLiquidityFee && marketing <= maxMarketingFee ); require(reflect + liquidity + marketing <= 4900); _sellReflectFee = reflect; _sellLiquidityFee = liquidity; _sellMarketingFee = marketing; } function setTaxesTransfer(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner { require(reflect <= maxReflectFee && liquidity <= maxLiquidityFee && marketing <= maxMarketingFee ); require(reflect + liquidity + marketing <= 4900); _transferReflectFee = reflect; _transferLiquidityFee = liquidity; _transferMarketingFee = marketing; } function setValues(uint256 ms, uint256 ds, uint256 vd) external onlyOwner { MarketShare = ms; DevShare = ds; ValueDivisor = vd; } function setRatios(uint256 liquidity, uint256 marketing) external onlyOwner { _liquidityRatio = liquidity; _marketingRatio = marketing; } function MaxTx(uint256 percent, uint256 divisor) external onlyOwner { uint256 check = (_tTotal * percent) / divisor; require(check >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply."); _maxTxAmount = check; maxTxAmountUI = (startingSupply * percent) / divisor; } function WalletSize(uint256 percent, uint256 divisor) external onlyOwner { uint256 check = (_tTotal * percent) / divisor; require(check >= (_tTotal / 1000), "Max Wallet amt must be above 0.1% of total supply."); _maxWalletSize = check; maxWalletSizeUI = (startingSupply * percent) / divisor; } function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; swapAmount = (_tTotal * amountPercent) / amountDivisor; } function NewMarketWallet(address payable newWallet) external onlyOwner { require(_marketWallet != newWallet, "Wallet already set!"); _marketWallet = payable(newWallet); } function NewDevWallet(address payable newWallet) external onlyOwner { require(_devWallet != newWallet, "Wallet already set!"); _devWallet = payable(newWallet); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setExcludedFromFee(address account, bool enabled) public onlyOwner { _isExcludedFromFee[account] = enabled; } function setExcludedFromReward(address account, bool enabled) public onlyOwner { if (enabled == true) { require(!_isExcluded[account], "Account is already excluded."); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } else if (enabled == false) { require(_isExcluded[account], "Account is already included."); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } } function totalFees() public view returns (uint256) { return _tFeeTotal; } function _hasLimits(address from, address to) internal view returns (bool) { return from != owner() && to != owner() && !_liquidityHolders[to] && !_liquidityHolders[from] && to != DEAD && to != address(0) && from != address(this); } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount / currentRate; } function _approve(address sender, address spender, uint256 amount) internal { require(sender != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } function _transfer(address from, address to, uint256 amount) internal returns (bool) { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(_hasLimits(from, to)) { if(!tradingEnabled) { revert("Trading not yet enabled!"); } if (sameBlockActive) { if (lpPairs[from]){ require(lastTrade[to] != block.number); lastTrade[to] = block.number; } else { require(lastTrade[from] != block.number); lastTrade[from] = block.number; } } require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); if(to != _routerAddress && !lpPairs[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize."); } } bool takeFee = true; if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } if (lpPairs[to]) { if (!inSwapAndLiquify && swapAndLiquifyEnabled ) { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= swapThreshold) { if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; } swapAndLiquify(contractTokenBalance); } } } return _finalizeTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) internal lockTheSwap { if (_liquidityRatio + _marketingRatio == 0) return; uint256 toLiquify = ((contractTokenBalance * _liquidityRatio) / (_liquidityRatio + _marketingRatio)) / 2; uint256 toSwapForEth = contractTokenBalance - toLiquify; address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( toSwapForEth, 0, path, address(this), block.timestamp ); uint256 liquidityBalance = ((address(this).balance * _liquidityRatio) / (_liquidityRatio + _marketingRatio)) / 2; if (toLiquify > 0) { dexRouter.addLiquidityETH{value: liquidityBalance}( address(this), toLiquify, 0, 0, DEAD, block.timestamp ); emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify); } if (contractTokenBalance - toLiquify > 0) { uint256 OperationsFee = (address(this).balance); uint256 marketFee = OperationsFee/(ValueDivisor)*(MarketShare); uint256 devfeeshare = OperationsFee/(ValueDivisor)*(DevShare); _marketWallet.transfer(marketFee); _devWallet.transfer(devfeeshare); } } function _checkLiquidityAdd(address from, address to) internal { require(!_hasLiqBeenAdded, "Liquidity already added and marked."); if (!_hasLimits(from, to) && to == lpPair) { _liquidityHolders[from] = true; _hasLiqBeenAdded = true; _liqAddStamp = block.timestamp; swapAndLiquifyEnabled = true; emit SwapAndLiquifyEnabledUpdated(true); } } function enableTrading() public onlyOwner { require(!tradingEnabled, "Trading already enabled!"); setExcludedFromReward(address(this), true); setExcludedFromReward(lpPair, true); tradingEnabled = true; swapAndLiquifyEnabled = true; } struct ExtraValues { uint256 tTransferAmount; uint256 tFee; uint256 tLiquidity; uint256 rTransferAmount; uint256 rAmount; uint256 rFee; } function _finalizeTransfer(address from, address to, uint256 tAmount, bool takeFee) internal returns (bool) { if (!_hasLiqBeenAdded) { _checkLiquidityAdd(from, to); if (!_hasLiqBeenAdded && _hasLimits(from, to)) { revert("Only owner can transfer at this time."); } } ExtraValues memory values = _getValues(from, to, tAmount, takeFee); _rOwned[from] = _rOwned[from] - values.rAmount; _rOwned[to] = _rOwned[to] + values.rTransferAmount; if (_isExcluded[from] && !_isExcluded[to]) { _tOwned[from] = _tOwned[from] - tAmount; } else if (!_isExcluded[from] && _isExcluded[to]) { _tOwned[to] = _tOwned[to] + values.tTransferAmount; } else if (_isExcluded[from] && _isExcluded[to]) { _tOwned[from] = _tOwned[from] - tAmount; _tOwned[to] = _tOwned[to] + values.tTransferAmount; } if (values.tLiquidity > 0) _takeLiquidity(from, values.tLiquidity); if (values.rFee > 0 || values.tFee > 0) _takeReflect(values.rFee, values.tFee); emit Transfer(from, to, values.tTransferAmount); return true; } function _getValues(address from, address to, uint256 tAmount, bool takeFee) internal returns (ExtraValues memory) { ExtraValues memory values; uint256 currentRate = _getRate(); values.rAmount = tAmount * currentRate; if(takeFee) { if (lpPairs[to]) { _reflectFee = _sellReflectFee; _liquidityFee = _sellLiquidityFee; _marketingFee = _sellMarketingFee; } else if (lpPairs[from]) { _reflectFee = _buyReflectFee; _liquidityFee = _buyLiquidityFee; _marketingFee = _buyMarketingFee; } else { _reflectFee = _transferReflectFee; _liquidityFee = _transferLiquidityFee; _marketingFee = _transferMarketingFee; } values.tFee = (tAmount * _reflectFee) / masterTaxDivisor; values.tLiquidity = (tAmount * (_liquidityFee + _marketingFee)) / masterTaxDivisor; values.tTransferAmount = tAmount - (values.tFee + values.tLiquidity); values.rFee = values.tFee * currentRate; } else { values.tFee = 0; values.tLiquidity = 0; values.tTransferAmount = tAmount; values.rFee = 0; } values.rTransferAmount = values.rAmount - (values.rFee + (values.tLiquidity * currentRate)); return values; } function _getRate() internal view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply / tSupply; } function _getCurrentSupply() internal view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply - _rOwned[_excluded[i]]; tSupply = tSupply - _tOwned[_excluded[i]]; } if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeReflect(uint256 rFee, uint256 tFee) internal { _rTotal = _rTotal - rFee; _tFeeTotal = _tFeeTotal + tFee; } function takeETHback() external onlyOwner { payable(owner()).transfer(address(this).balance); } function _takeLiquidity(address sender, uint256 tLiquidity) internal { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity * currentRate; _rOwned[address(this)] = _rOwned[address(this)] + rLiquidity; if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)] + tLiquidity; emit Transfer(sender, address(this), tLiquidity); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DevShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MarketShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"MaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"NewDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"NewMarketWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ValueDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"WalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ZERO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyReflectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellReflectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferReflectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"setMarketWallet","type":"address"},{"internalType":"address payable","name":"setDevWallet","type":"address"},{"internalType":"string","name":"_tokenname","type":"string"},{"internalType":"string","name":"_tokensymbol","type":"string"}],"name":"intializeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSizeUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTaxesBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTaxesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTaxesTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ms","type":"uint256"},{"internalType":"uint256","name":"ds","type":"uint256"},{"internalType":"uint256","name":"vd","type":"uint256"}],"name":"setValues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeETHback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600060048190556002600d819055600e829055600f819055601081905560118290556012819055601382905560148290556015819055601655601781905560188190556103e86019819055601a55610898601b55601c819055601d819055612710601e556001601f81905560208290556021819055602a80546001600160a01b031990811661dead17909155602b805482169055602d805460ff60a81b191690556034805461ffff19169055603583905560368390556037805460ff199081169093179055603a80549092169091558154163317905560384614156200011057602980546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905562000199565b46606114156200014657602980546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c317905562000199565b4660011480620001565750466004145b80620001625750466003145b156200019457602980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905562000199565b600080fd5b600160066000620001b26000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260069092528120805490921660019081179092556009906200020b6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620002546200023f3390565b6029546001600160a01b031660001962000276565b602954620002709030906001600160a01b031660001962000276565b620003a2565b6001600160a01b038316620002de5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620003415760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620002d5565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b613f1f80620003b26000396000f3fe6080604052600436106103c75760003560e01c80636cbdd5e3116101f2578063c49b9a801161010d578063dc44b6a0116100a0578063ea08d30b1161006f578063ea08d30b14610ade578063eafb5a3c14610af4578063f6540ec714610b14578063fb78680d14610b2a57600080fd5b8063dc44b6a014610a42578063dd62ed3e14610a58578063e60624b414610a9e578063e7c281d614610abe57600080fd5b8063d038b07e116100dc578063d038b07e146109cc578063d4154e85146109e2578063d9e6646014610a02578063da4b33c714610a2257600080fd5b8063c49b9a801461096b578063c5d241891461098b578063c8607952146109a1578063c9987e98146109b757600080fd5b80638a8c523c11610185578063a9059cbb11610154578063a9059cbb146108f5578063b746454c14610915578063bac3052b14610935578063bbcea6bf1461095557600080fd5b80638a8c523c146108ab5780638da5cb5b1461088d57806395d89b41146108c0578063a457c2d7146108d557600080fd5b806380c581d1116101c157806380c581d11461081e57806388790a681461083e57806388f8202014610854578063893d20e81461088d57600080fd5b80636cbdd5e3146107bd57806370a08231146107d3578063715018a6146107f357806371e078d51461080857600080fd5b806339509351116102e2578063571ac8b0116102755780636612e66f116102445780636612e66f146107475780636639dd93146107675780636bc87c3a146107875780636c6d9fa11461079d57600080fd5b8063571ac8b0146106d1578063575f18e5146106f157806358fa63ca14610711578063640384091461073157600080fd5b80634ef3cce5116102b15780634ef3cce5146106435780634fb2e45d1461065957806350a8e016146106795780635342acb41461069857600080fd5b806339509351146105cc578063452ed4f1146105ec57806345e8c85c1461060c5780634a74bb021461062257600080fd5b806315639c1b1161035a57806323b872dd1161032957806323b872dd146105545780632d83811914610574578063313ce56714610594578063384f6b51146105b657600080fd5b806315639c1b146104fd57806317eade331461051357806318160ddd1461052957806322976e0d1461053e57600080fd5b80630e954d8e116103965780630e954d8e14610482578063111be316146104a657806313114a9d146104c857806313e46192146104dd57600080fd5b806303fd2a45146103d357806306fdde03146104105780630758d92414610432578063095ea7b31461045257600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b50602a546103f3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041c57600080fd5b50610425610b4a565b6040516104079190613b86565b34801561043e57600080fd5b506027546103f3906001600160a01b031681565b34801561045e57600080fd5b5061047261046d366004613a44565b610bdc565b6040519015158152602001610407565b34801561048e57600080fd5b5061049860205481565b604051908152602001610407565b3480156104b257600080fd5b506104c66104c1366004613ac2565b610bf3565b005b3480156104d457600080fd5b50602654610498565b3480156104e957600080fd5b506104c66104f8366004613a10565b610c34565b34801561050957600080fd5b50610498600d5481565b34801561051f57600080fd5b5061049860215481565b34801561053557600080fd5b50602454610498565b34801561054a57600080fd5b50610498600f5481565b34801561056057600080fd5b5061047261056f3660046139d0565b610f60565b34801561058057600080fd5b5061049861058f366004613a89565b610fb3565b3480156105a057600080fd5b5060225460405160ff9091168152602001610407565b3480156105c257600080fd5b50610498601c5481565b3480156105d857600080fd5b506104726105e7366004613a44565b611037565b3480156105f857600080fd5b506028546103f3906001600160a01b031681565b34801561061857600080fd5b5061049860165481565b34801561062e57600080fd5b50602d5461047290600160a81b900460ff1681565b34801561064f57600080fd5b50610498601d5481565b34801561066557600080fd5b506104c66106743660046138da565b61106e565b34801561068557600080fd5b5060345461047290610100900460ff1681565b3480156106a457600080fd5b506104726106b33660046138da565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106dd57600080fd5b506104726106ec3660046138da565b611229565b3480156106fd57600080fd5b506104c661070c366004613ac2565b611237565b34801561071d57600080fd5b50602b546103f3906001600160a01b031681565b34801561073d57600080fd5b50610498602f5481565b34801561075357600080fd5b506104c6610762366004613a10565b6112bd565b34801561077357600080fd5b506104c6610782366004613aa1565b611312565b34801561079357600080fd5b50610498600e5481565b3480156107a957600080fd5b506104c66107b8366004613ac2565b611347565b3480156107c957600080fd5b5061049860185481565b3480156107df57600080fd5b506104986107ee3660046138da565b6113cd565b3480156107ff57600080fd5b506104c661142c565b34801561081457600080fd5b50610498601f5481565b34801561082a57600080fd5b506104c6610839366004613a10565b6114ab565b34801561084a57600080fd5b5061049860145481565b34801561086057600080fd5b5061047261086f3660046138da565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561089957600080fd5b506000546001600160a01b03166103f3565b3480156108b757600080fd5b506104c661158e565b3480156108cc57600080fd5b5061042561164f565b3480156108e157600080fd5b506104726108f0366004613a44565b61165e565b34801561090157600080fd5b50610472610910366004613a44565b611695565b34801561092157600080fd5b506104c66109303660046138da565b6116a2565b34801561094157600080fd5b506104c66109503660046138da565b611742565b34801561096157600080fd5b5061049860135481565b34801561097757600080fd5b506104c6610986366004613a6f565b6117e2565b34801561099757600080fd5b5061049860125481565b3480156109ad57600080fd5b5061049860155481565b3480156109c357600080fd5b506104c6611864565b3480156109d857600080fd5b5061049860105481565b3480156109ee57600080fd5b506104c66109fd366004613aa1565b6118cb565b348015610a0e57600080fd5b506029546103f3906001600160a01b031681565b348015610a2e57600080fd5b506104c6610a3d366004613aa1565b6119be565b348015610a4e57600080fd5b5061049860115481565b348015610a6457600080fd5b50610498610a73366004613998565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610aaa57600080fd5b506104c6610ab9366004613912565b611aa6565b348015610aca57600080fd5b506104c6610ad9366004613ac2565b611ff3565b348015610aea57600080fd5b5061049860175481565b348015610b0057600080fd5b506104c6610b0f3660046138da565b612079565b348015610b2057600080fd5b5061049860315481565b348015610b3657600080fd5b506104c6610b45366004613b1a565b612403565b6060600b8054610b5990613e28565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8590613e28565b8015610bd25780601f10610ba757610100808354040283529160200191610bd2565b820191906000526020600020905b815481529060010190602001808311610bb557829003601f168201915b5050505050905090565b6000610be933848461246c565b5060015b92915050565b6000546001600160a01b03163314610c265760405162461bcd60e51b8152600401610c1d90613bd9565b60405180910390fd5b601f92909255602055602155565b6000546001600160a01b03163314610c5e5760405162461bcd60e51b8152600401610c1d90613bd9565b60018115151415610d93576001600160a01b03821660009081526007602052604090205460ff1615610cd25760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610c1d565b6001600160a01b03821660009081526001602052604090205415610d2c576001600160a01b038216600090815260016020526040902054610d1290610fb3565b6001600160a01b0383166000908152600260205260409020555b506001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b80610f5c576001600160a01b03821660009081526007602052604090205460ff16610e005760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610c1d565b60005b600854811015610f5a57826001600160a01b031660088281548110610e3857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610f485760088054610e6390600190613e11565b81548110610e8157634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600880546001600160a01b039092169183908110610ebb57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600282526040808220829055600790925220805460ff191690556008805480610f2157634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055610f5a565b80610f5281613e63565b915050610e03565b505b5050565b6000610f6d848484612590565b506001600160a01b038416600090815260056020908152604080832033808552925290912054610fa9918691610fa4908690613e11565b61246c565b5060019392505050565b600060255482111561101a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610c1d565b60006110246129bc565b90506110308184613cf3565b9392505050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610be9918590610fa4908690613cdb565b6000546001600160a01b031633146110985760405162461bcd60e51b8152600401610c1d90613bd9565b6001600160a01b0381166110be5760405162461bcd60e51b8152600401610c1d90613c0e565b602a546001600160a01b03828116911614156110ec5760405162461bcd60e51b8152600401610c1d90613c0e565b60008054611105916001600160a01b03909116906112bd565b6111108160016112bd565b61111b816001610c34565b602c546001600160a01b031673615b7d03aab89b9ea7d58889bb407173e96c1c11141561116957602c80546001600160a01b03191673615b7d03aab89b9ea7d58889bb407173e96c1c111790555b60005461117e906001600160a01b03166113cd565b600080546001600160a01b0390811682526005602090815260408084208684168552909152822092909255805490916111b791166113cd565b11156111de576000546111dc906001600160a01b0316826111d7826113cd565b612590565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610bed82600019610bdc565b6000546001600160a01b031633146112615760405162461bcd60e51b8152600401610c1d90613bd9565b60195483111580156112755750601a548211155b80156112835750601b548111155b61128c57600080fd5b6113248161129a8486613cdb565b6112a49190613cdb565b11156112af57600080fd5b601692909255601755601855565b6000546001600160a01b031633146112e75760405162461bcd60e51b8152600401610c1d90613bd9565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461133c5760405162461bcd60e51b8152600401610c1d90613bd9565b601c91909155601d55565b6000546001600160a01b031633146113715760405162461bcd60e51b8152600401610c1d90613bd9565b60195483111580156113855750601a548211155b80156113935750601b548111155b61139c57600080fd5b611324816113aa8486613cdb565b6113b49190613cdb565b11156113bf57600080fd5b601092909255601155601255565b6001600160a01b03811660009081526007602052604081205460ff161561140a57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610bed90610fb3565b6000546001600160a01b031633146114565760405162461bcd60e51b8152600401610c1d90613bd9565b6000805461146f916001600160a01b03909116906112bd565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146114d55760405162461bcd60e51b8152600401610c1d90613bd9565b806114fc57506001600160a01b03166000908152600360205260409020805460ff19169055565b600454156115635762093a80600454426115169190613e11565b116115635760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610c1d565b6001600160a01b0382166000908152600360205260409020805460ff19166001179055426004555050565b6000546001600160a01b031633146115b85760405162461bcd60e51b8152600401610c1d90613bd9565b60345460ff161561160b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c1d565b611616306001610c34565b60285461162d906001600160a01b03166001610c34565b6034805460ff19166001179055602d805460ff60a81b1916600160a81b179055565b6060600c8054610b5990613e28565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610be9918590610fa4908690613e11565b6000610fa9338484612590565b6000546001600160a01b031633146116cc5760405162461bcd60e51b8152600401610c1d90613bd9565b602d546001600160a01b03828116911614156117205760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610c1d565b602d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461176c5760405162461bcd60e51b8152600401610c1d90613bd9565b602c546001600160a01b03828116911614156117c05760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610c1d565b602c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461180c5760405162461bcd60e51b8152600401610c1d90613bd9565b602d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061185990831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461188e5760405162461bcd60e51b8152600401610c1d90613bd9565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156118c8573d6000803e3d6000fd5b50565b6000546001600160a01b031633146118f55760405162461bcd60e51b8152600401610c1d90613bd9565b600081836024546119069190613df2565b6119109190613cf3565b90506103e86024546119229190613cf3565b8110156119975760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c1d565b602e819055600a5482906119ac908590613df2565b6119b69190613cf3565b602f55505050565b6000546001600160a01b031633146119e85760405162461bcd60e51b8152600401610c1d90613bd9565b600081836024546119f99190613df2565b611a039190613cf3565b90506103e8602454611a159190613cf3565b811015611a7f5760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e31604482015271129037b3103a37ba30b61039bab838363c9760711b6064820152608401610c1d565b6030819055600a548290611a94908590613df2565b611a9e9190613cf3565b603155505050565b6000546001600160a01b03163314611ad05760405162461bcd60e51b8152600401610c1d90613bd9565b603a5460ff1615611ae057600080fd5b602d805473615b7d03aab89b9ea7d58889bb407173e96c1c116001600160a01b03199182168117909255602c805490911690911790558151611b2990600b9060208501906137a5565b508051611b3d90600c9060208401906137a5565b5064e8d4a51000600a556022805460ff19166012908117909155602355602354611b6890600a613d4a565b600a54611b759190613df2565b6024819055611b8690600019613e7e565b611b9290600019613e11565b602555602954602780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b158015611bec57600080fd5b505afa158015611c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2491906138f6565b6001600160a01b031663c9c65396602760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8057600080fd5b505afa158015611c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb891906138f6565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015611cff57600080fd5b505af1158015611d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3791906138f6565b602880546001600160a01b0319166001600160a01b039283169081179091556000908152600360209081526040808320805460ff19166001179055308352600582528083206027549094168352929052206000199055602454606490611d9d9082613df2565b611da79190613cf3565b602e55600a54620186a090611dbe906103e8613df2565b611dc89190613cf3565b602f55602454606490611ddb9082613df2565b611de59190613cf3565b603055600a80546103e891611dfa9190613df2565b611e049190613cf3565b60315560245461271090611e19906005613df2565b611e239190613cf3565b6032556024546103e890611e38906005613df2565b611e429190613cf3565b603355602954611e5d906001600160a01b0316600019610bdc565b50603a805460ff19166001908117909155602554906000611e866000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055611eb26000546001600160a01b031690565b602b546024546040519081526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3602754611f159030906001600160a01b031660001961246c565b611f40611f2a6000546001600160a01b031690565b306111d76107ee6000546001600160a01b031690565b506027546001600160a01b031663f305d7194730611f5d816113cd565b600080611f726000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401611f9496959493929190613b4b565b6060604051808303818588803b158015611fad57600080fd5b505af1158015611fc1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fe69190613aed565b5050436039555050505050565b6000546001600160a01b0316331461201d5760405162461bcd60e51b8152600401610c1d90613bd9565b60195483111580156120315750601a548211155b801561203f5750601b548111155b61204857600080fd5b611324816120568486613cdb565b6120609190613cdb565b111561206b57600080fd5b601392909255601455601555565b6000546001600160a01b031633146120a35760405162461bcd60e51b8152600401610c1d90613bd9565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156120e357600080fd5b505afa1580156120f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211b91906138f6565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561216357600080fd5b505afa158015612177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219b91906138f6565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156121e157600080fd5b505afa1580156121f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221991906138f6565b90506001600160a01b0381166123bf57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561226257600080fd5b505afa158015612276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229a91906138f6565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122e257600080fd5b505afa1580156122f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231a91906138f6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239a91906138f6565b602880546001600160a01b0319166001600160a01b03929092169190911790556123db565b602880546001600160a01b0319166001600160a01b0383161790555b602780546001600160a01b0319166001600160a01b038416179055610f5a308460001961246c565b6000546001600160a01b0316331461242d5760405162461bcd60e51b8152600401610c1d90613bd9565b828460245461243c9190613df2565b6124469190613cf3565b6032556024548190612459908490613df2565b6124639190613cf3565b60335550505050565b6001600160a01b0383166124ce5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c1d565b6001600160a01b03821661252f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c1d565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166125f65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c1d565b6001600160a01b0383166126585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c1d565b600082116126ba5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c1d565b6126c484846129df565b156128e45760345460ff1661271b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c1d565b60375460ff16156127cd576001600160a01b03841660009081526003602052604090205460ff161561278c576001600160a01b03831660009081526038602052604090205443141561276c57600080fd5b6001600160a01b03831660009081526038602052604090204390556127cd565b6001600160a01b0384166000908152603860205260409020544314156127b157600080fd5b6001600160a01b03841660009081526038602052604090204390555b602e548211156128305760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c1d565b6029546001600160a01b0384811691161480159061286757506001600160a01b03831660009081526003602052604090205460ff16155b156128e45760305482612879856113cd565b6128839190613cdb565b11156128e45760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610c1d565b6001600160a01b03841660009081526006602052604090205460019060ff168061292657506001600160a01b03841660009081526006602052604090205460ff165b1561292f575060005b6001600160a01b03841660009081526003602052604090205460ff16156129a757602d54600160a01b900460ff161580156129735750602d54600160a81b900460ff165b156129a7576000612983306113cd565b905060325481106129a557603354811061299c57506033545b6129a581612a9f565b505b6129b385858584612e6f565b95945050505050565b60008060006129c96131f0565b90925090506129d88183613cf3565b9250505090565b600080546001600160a01b03848116911614801590612a0c57506000546001600160a01b03838116911614155b8015612a3157506001600160a01b03821660009081526009602052604090205460ff16155b8015612a5657506001600160a01b03831660009081526009602052604090205460ff16155b8015612a705750602a546001600160a01b03838116911614155b8015612a8457506001600160a01b03821615155b801561103057506001600160a01b0383163014159392505050565b602d805460ff60a01b1916600160a01b179055601d54601c54612ac29190613cdb565b612acb57612e5f565b60006002601d54601c54612adf9190613cdb565b601c54612aec9085613df2565b612af69190613cf3565b612b009190613cf3565b90506000612b0e8284613e11565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612b5657634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612baa57600080fd5b505afa158015612bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be291906138f6565b81600181518110612c0357634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260275460405163791ac94760e01b815291169063791ac94790612c49908590600090869030904290600401613c6b565b600060405180830381600087803b158015612c6357600080fd5b505af1158015612c77573d6000803e3d6000fd5b5050505060006002601d54601c54612c8f9190613cdb565b601c54612c9c9047613df2565b612ca69190613cf3565b612cb09190613cf3565b90508315612d8f57602754602a5460405163f305d71960e01b81526001600160a01b039283169263f305d719928592612cf89230928b92600092839216904290600401613b4b565b6060604051808303818588803b158015612d1157600080fd5b505af1158015612d25573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d4a9190613aed565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b6000612d9b8587613e11565b1115612e5a57601f546021544791600091612db69084613cf3565b612dc09190613df2565b9050600060205460215484612dd59190613cf3565b612ddf9190613df2565b602d546040519192506001600160a01b03169083156108fc029084906000818181858888f19350505050158015612e1a573d6000803e3d6000fd5b50602c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612e55573d6000803e3d6000fd5b505050505b505050505b50602d805460ff60a01b19169055565b603454600090610100900460ff16612f0357612e8b85856133ab565b603454610100900460ff16158015612ea85750612ea885856129df565b15612f035760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610c1d565b6000612f11868686866134c5565b60808101516001600160a01b038816600090815260016020526040902054919250612f3b91613e11565b6001600160a01b0380881660009081526001602052604080822093909355606084015191881681529190912054612f729190613cdb565b6001600160a01b0380871660009081526001602090815260408083209490945591891681526007909152205460ff168015612fc657506001600160a01b03851660009081526007602052604090205460ff16155b1561300d576001600160a01b038616600090815260026020526040902054612fef908590613e11565b6001600160a01b03871660009081526002602052604090205561314d565b6001600160a01b03861660009081526007602052604090205460ff1615801561304e57506001600160a01b03851660009081526007602052604090205460ff165b156130965780516001600160a01b0386166000908152600260205260409020546130789190613cdb565b6001600160a01b03861660009081526002602052604090205561314d565b6001600160a01b03861660009081526007602052604090205460ff1680156130d657506001600160a01b03851660009081526007602052604090205460ff165b1561314d576001600160a01b0386166000908152600260205260409020546130ff908590613e11565b6001600160a01b03808816600090815260026020526040808220939093558351918816815291909120546131339190613cdb565b6001600160a01b0386166000908152600260205260409020555b604081015115613165576131658682604001516136b3565b60008160a00151118061317c575060008160200151115b15613193576131938160a00151826020015161377f565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600001516040516131dc91815260200190565b60405180910390a350600195945050505050565b6025546024546000918291825b60085481101561337a5782600160006008848154811061322d57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806132a6575081600260006008848154811061327f57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156132bc57602554602454945094505050509091565b60016000600883815481106132e157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020546133109084613e11565b9250600260006008838154811061333757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020546133669083613e11565b91508061337281613e63565b9150506131fd565b5060245460255461338b9190613cf3565b8210156133a2576025546024549350935050509091565b90939092509050565b603454610100900460ff161561340f5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610c1d565b61341982826129df565b15801561343357506028546001600160a01b038281169116145b15610f5c576001600160a01b03821660009081526009602052604090819020805460ff191660019081179091556034805461ff00191661010017905542603655602d805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159916134b991901515815260200190565b60405180910390a15050565b6134fe6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6135376040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60006135416129bc565b905061354d8186613df2565b6080830152831561365d576001600160a01b03861660009081526003602052604090205460ff161561359057601354600d55601454600e55601554600f556135db565b6001600160a01b03871660009081526003602052604090205460ff16156135c857601054600d55601154600e55601254600f556135db565b601654600d55601754600e55601854600f555b601e54600d546135eb9087613df2565b6135f59190613cf3565b6020830152601e54600f54600e5461360d9190613cdb565b6136179087613df2565b6136219190613cf3565b6040830181905260208301516136379190613cdb565b6136419086613e11565b82526020820151613653908290613df2565b60a0830152613676565b6000602083018190526040830181905285835260a08301525b8082604001516136869190613df2565b8260a001516136959190613cdb565b82608001516136a49190613e11565b60608301525095945050505050565b60006136bd6129bc565b905060006136cb8284613df2565b306000908152600160205260409020549091506136e9908290613cdb565b3060009081526001602090815260408083209390935560079052205460ff16156137395730600090815260026020526040902054613728908490613cdb565b306000908152600260205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b8160255461378d9190613e11565b60255560265461379e908290613cdb565b6026555050565b8280546137b190613e28565b90600052602060002090601f0160209004810192826137d35760008555613819565b82601f106137ec57805160ff1916838001178555613819565b82800160010185558215613819579182015b828111156138195782518255916020019190600101906137fe565b50613825929150613829565b5090565b5b80821115613825576000815560010161382a565b8035801515811461384e57600080fd5b919050565b600082601f830112613863578081fd5b813567ffffffffffffffff8082111561387e5761387e613ebe565b604051601f8301601f19908116603f011681019082821181831017156138a6576138a6613ebe565b816040528381528660208588010111156138be578485fd5b8360208701602083013792830160200193909352509392505050565b6000602082840312156138eb578081fd5b813561103081613ed4565b600060208284031215613907578081fd5b815161103081613ed4565b60008060008060808587031215613927578283fd5b843561393281613ed4565b9350602085013561394281613ed4565b9250604085013567ffffffffffffffff8082111561395e578384fd5b61396a88838901613853565b9350606087013591508082111561397f578283fd5b5061398c87828801613853565b91505092959194509250565b600080604083850312156139aa578182fd5b82356139b581613ed4565b915060208301356139c581613ed4565b809150509250929050565b6000806000606084860312156139e4578283fd5b83356139ef81613ed4565b925060208401356139ff81613ed4565b929592945050506040919091013590565b60008060408385031215613a22578182fd5b8235613a2d81613ed4565b9150613a3b6020840161383e565b90509250929050565b60008060408385031215613a56578182fd5b8235613a6181613ed4565b946020939093013593505050565b600060208284031215613a80578081fd5b6110308261383e565b600060208284031215613a9a578081fd5b5035919050565b60008060408385031215613ab3578182fd5b50508035926020909101359150565b600080600060608486031215613ad6578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215613b01578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215613b2f578384fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000602080835283518082850152825b81811015613bb257858101830151858201604001528201613b96565b81811115613bc35783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015613cba5784516001600160a01b031683529383019391830191600101613c95565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115613cee57613cee613e92565b500190565b600082613d0257613d02613ea8565b500490565b600181815b80851115613d42578160001904821115613d2857613d28613e92565b80851615613d3557918102915b93841c9390800290613d0c565b509250929050565b60006110308383600082613d6057506001610bed565b81613d6d57506000610bed565b8160018114613d835760028114613d8d57613da9565b6001915050610bed565b60ff841115613d9e57613d9e613e92565b50506001821b610bed565b5060208310610133831016604e8410600b8410161715613dcc575081810a610bed565b613dd68383613d07565b8060001904821115613dea57613dea613e92565b029392505050565b6000816000190483118215151615613e0c57613e0c613e92565b500290565b600082821015613e2357613e23613e92565b500390565b600181811c90821680613e3c57607f821691505b60208210811415613e5d57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613e7757613e77613e92565b5060010190565b600082613e8d57613e8d613ea8565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146118c857600080fdfea264697066735822122086c7cd83ecd80947eb6a27a514521529a215b699eb8056e0159f16ed760ecd2f64736f6c63430008040033
Deployed Bytecode
0x6080604052600436106103c75760003560e01c80636cbdd5e3116101f2578063c49b9a801161010d578063dc44b6a0116100a0578063ea08d30b1161006f578063ea08d30b14610ade578063eafb5a3c14610af4578063f6540ec714610b14578063fb78680d14610b2a57600080fd5b8063dc44b6a014610a42578063dd62ed3e14610a58578063e60624b414610a9e578063e7c281d614610abe57600080fd5b8063d038b07e116100dc578063d038b07e146109cc578063d4154e85146109e2578063d9e6646014610a02578063da4b33c714610a2257600080fd5b8063c49b9a801461096b578063c5d241891461098b578063c8607952146109a1578063c9987e98146109b757600080fd5b80638a8c523c11610185578063a9059cbb11610154578063a9059cbb146108f5578063b746454c14610915578063bac3052b14610935578063bbcea6bf1461095557600080fd5b80638a8c523c146108ab5780638da5cb5b1461088d57806395d89b41146108c0578063a457c2d7146108d557600080fd5b806380c581d1116101c157806380c581d11461081e57806388790a681461083e57806388f8202014610854578063893d20e81461088d57600080fd5b80636cbdd5e3146107bd57806370a08231146107d3578063715018a6146107f357806371e078d51461080857600080fd5b806339509351116102e2578063571ac8b0116102755780636612e66f116102445780636612e66f146107475780636639dd93146107675780636bc87c3a146107875780636c6d9fa11461079d57600080fd5b8063571ac8b0146106d1578063575f18e5146106f157806358fa63ca14610711578063640384091461073157600080fd5b80634ef3cce5116102b15780634ef3cce5146106435780634fb2e45d1461065957806350a8e016146106795780635342acb41461069857600080fd5b806339509351146105cc578063452ed4f1146105ec57806345e8c85c1461060c5780634a74bb021461062257600080fd5b806315639c1b1161035a57806323b872dd1161032957806323b872dd146105545780632d83811914610574578063313ce56714610594578063384f6b51146105b657600080fd5b806315639c1b146104fd57806317eade331461051357806318160ddd1461052957806322976e0d1461053e57600080fd5b80630e954d8e116103965780630e954d8e14610482578063111be316146104a657806313114a9d146104c857806313e46192146104dd57600080fd5b806303fd2a45146103d357806306fdde03146104105780630758d92414610432578063095ea7b31461045257600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b50602a546103f3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041c57600080fd5b50610425610b4a565b6040516104079190613b86565b34801561043e57600080fd5b506027546103f3906001600160a01b031681565b34801561045e57600080fd5b5061047261046d366004613a44565b610bdc565b6040519015158152602001610407565b34801561048e57600080fd5b5061049860205481565b604051908152602001610407565b3480156104b257600080fd5b506104c66104c1366004613ac2565b610bf3565b005b3480156104d457600080fd5b50602654610498565b3480156104e957600080fd5b506104c66104f8366004613a10565b610c34565b34801561050957600080fd5b50610498600d5481565b34801561051f57600080fd5b5061049860215481565b34801561053557600080fd5b50602454610498565b34801561054a57600080fd5b50610498600f5481565b34801561056057600080fd5b5061047261056f3660046139d0565b610f60565b34801561058057600080fd5b5061049861058f366004613a89565b610fb3565b3480156105a057600080fd5b5060225460405160ff9091168152602001610407565b3480156105c257600080fd5b50610498601c5481565b3480156105d857600080fd5b506104726105e7366004613a44565b611037565b3480156105f857600080fd5b506028546103f3906001600160a01b031681565b34801561061857600080fd5b5061049860165481565b34801561062e57600080fd5b50602d5461047290600160a81b900460ff1681565b34801561064f57600080fd5b50610498601d5481565b34801561066557600080fd5b506104c66106743660046138da565b61106e565b34801561068557600080fd5b5060345461047290610100900460ff1681565b3480156106a457600080fd5b506104726106b33660046138da565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106dd57600080fd5b506104726106ec3660046138da565b611229565b3480156106fd57600080fd5b506104c661070c366004613ac2565b611237565b34801561071d57600080fd5b50602b546103f3906001600160a01b031681565b34801561073d57600080fd5b50610498602f5481565b34801561075357600080fd5b506104c6610762366004613a10565b6112bd565b34801561077357600080fd5b506104c6610782366004613aa1565b611312565b34801561079357600080fd5b50610498600e5481565b3480156107a957600080fd5b506104c66107b8366004613ac2565b611347565b3480156107c957600080fd5b5061049860185481565b3480156107df57600080fd5b506104986107ee3660046138da565b6113cd565b3480156107ff57600080fd5b506104c661142c565b34801561081457600080fd5b50610498601f5481565b34801561082a57600080fd5b506104c6610839366004613a10565b6114ab565b34801561084a57600080fd5b5061049860145481565b34801561086057600080fd5b5061047261086f3660046138da565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561089957600080fd5b506000546001600160a01b03166103f3565b3480156108b757600080fd5b506104c661158e565b3480156108cc57600080fd5b5061042561164f565b3480156108e157600080fd5b506104726108f0366004613a44565b61165e565b34801561090157600080fd5b50610472610910366004613a44565b611695565b34801561092157600080fd5b506104c66109303660046138da565b6116a2565b34801561094157600080fd5b506104c66109503660046138da565b611742565b34801561096157600080fd5b5061049860135481565b34801561097757600080fd5b506104c6610986366004613a6f565b6117e2565b34801561099757600080fd5b5061049860125481565b3480156109ad57600080fd5b5061049860155481565b3480156109c357600080fd5b506104c6611864565b3480156109d857600080fd5b5061049860105481565b3480156109ee57600080fd5b506104c66109fd366004613aa1565b6118cb565b348015610a0e57600080fd5b506029546103f3906001600160a01b031681565b348015610a2e57600080fd5b506104c6610a3d366004613aa1565b6119be565b348015610a4e57600080fd5b5061049860115481565b348015610a6457600080fd5b50610498610a73366004613998565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610aaa57600080fd5b506104c6610ab9366004613912565b611aa6565b348015610aca57600080fd5b506104c6610ad9366004613ac2565b611ff3565b348015610aea57600080fd5b5061049860175481565b348015610b0057600080fd5b506104c6610b0f3660046138da565b612079565b348015610b2057600080fd5b5061049860315481565b348015610b3657600080fd5b506104c6610b45366004613b1a565b612403565b6060600b8054610b5990613e28565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8590613e28565b8015610bd25780601f10610ba757610100808354040283529160200191610bd2565b820191906000526020600020905b815481529060010190602001808311610bb557829003601f168201915b5050505050905090565b6000610be933848461246c565b5060015b92915050565b6000546001600160a01b03163314610c265760405162461bcd60e51b8152600401610c1d90613bd9565b60405180910390fd5b601f92909255602055602155565b6000546001600160a01b03163314610c5e5760405162461bcd60e51b8152600401610c1d90613bd9565b60018115151415610d93576001600160a01b03821660009081526007602052604090205460ff1615610cd25760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610c1d565b6001600160a01b03821660009081526001602052604090205415610d2c576001600160a01b038216600090815260016020526040902054610d1290610fb3565b6001600160a01b0383166000908152600260205260409020555b506001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b80610f5c576001600160a01b03821660009081526007602052604090205460ff16610e005760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610c1d565b60005b600854811015610f5a57826001600160a01b031660088281548110610e3857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610f485760088054610e6390600190613e11565b81548110610e8157634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600880546001600160a01b039092169183908110610ebb57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600282526040808220829055600790925220805460ff191690556008805480610f2157634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055610f5a565b80610f5281613e63565b915050610e03565b505b5050565b6000610f6d848484612590565b506001600160a01b038416600090815260056020908152604080832033808552925290912054610fa9918691610fa4908690613e11565b61246c565b5060019392505050565b600060255482111561101a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610c1d565b60006110246129bc565b90506110308184613cf3565b9392505050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610be9918590610fa4908690613cdb565b6000546001600160a01b031633146110985760405162461bcd60e51b8152600401610c1d90613bd9565b6001600160a01b0381166110be5760405162461bcd60e51b8152600401610c1d90613c0e565b602a546001600160a01b03828116911614156110ec5760405162461bcd60e51b8152600401610c1d90613c0e565b60008054611105916001600160a01b03909116906112bd565b6111108160016112bd565b61111b816001610c34565b602c546001600160a01b031673615b7d03aab89b9ea7d58889bb407173e96c1c11141561116957602c80546001600160a01b03191673615b7d03aab89b9ea7d58889bb407173e96c1c111790555b60005461117e906001600160a01b03166113cd565b600080546001600160a01b0390811682526005602090815260408084208684168552909152822092909255805490916111b791166113cd565b11156111de576000546111dc906001600160a01b0316826111d7826113cd565b612590565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610bed82600019610bdc565b6000546001600160a01b031633146112615760405162461bcd60e51b8152600401610c1d90613bd9565b60195483111580156112755750601a548211155b80156112835750601b548111155b61128c57600080fd5b6113248161129a8486613cdb565b6112a49190613cdb565b11156112af57600080fd5b601692909255601755601855565b6000546001600160a01b031633146112e75760405162461bcd60e51b8152600401610c1d90613bd9565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461133c5760405162461bcd60e51b8152600401610c1d90613bd9565b601c91909155601d55565b6000546001600160a01b031633146113715760405162461bcd60e51b8152600401610c1d90613bd9565b60195483111580156113855750601a548211155b80156113935750601b548111155b61139c57600080fd5b611324816113aa8486613cdb565b6113b49190613cdb565b11156113bf57600080fd5b601092909255601155601255565b6001600160a01b03811660009081526007602052604081205460ff161561140a57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610bed90610fb3565b6000546001600160a01b031633146114565760405162461bcd60e51b8152600401610c1d90613bd9565b6000805461146f916001600160a01b03909116906112bd565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146114d55760405162461bcd60e51b8152600401610c1d90613bd9565b806114fc57506001600160a01b03166000908152600360205260409020805460ff19169055565b600454156115635762093a80600454426115169190613e11565b116115635760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610c1d565b6001600160a01b0382166000908152600360205260409020805460ff19166001179055426004555050565b6000546001600160a01b031633146115b85760405162461bcd60e51b8152600401610c1d90613bd9565b60345460ff161561160b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c1d565b611616306001610c34565b60285461162d906001600160a01b03166001610c34565b6034805460ff19166001179055602d805460ff60a81b1916600160a81b179055565b6060600c8054610b5990613e28565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610be9918590610fa4908690613e11565b6000610fa9338484612590565b6000546001600160a01b031633146116cc5760405162461bcd60e51b8152600401610c1d90613bd9565b602d546001600160a01b03828116911614156117205760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610c1d565b602d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461176c5760405162461bcd60e51b8152600401610c1d90613bd9565b602c546001600160a01b03828116911614156117c05760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610c1d565b602c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461180c5760405162461bcd60e51b8152600401610c1d90613bd9565b602d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061185990831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461188e5760405162461bcd60e51b8152600401610c1d90613bd9565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156118c8573d6000803e3d6000fd5b50565b6000546001600160a01b031633146118f55760405162461bcd60e51b8152600401610c1d90613bd9565b600081836024546119069190613df2565b6119109190613cf3565b90506103e86024546119229190613cf3565b8110156119975760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c1d565b602e819055600a5482906119ac908590613df2565b6119b69190613cf3565b602f55505050565b6000546001600160a01b031633146119e85760405162461bcd60e51b8152600401610c1d90613bd9565b600081836024546119f99190613df2565b611a039190613cf3565b90506103e8602454611a159190613cf3565b811015611a7f5760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e31604482015271129037b3103a37ba30b61039bab838363c9760711b6064820152608401610c1d565b6030819055600a548290611a94908590613df2565b611a9e9190613cf3565b603155505050565b6000546001600160a01b03163314611ad05760405162461bcd60e51b8152600401610c1d90613bd9565b603a5460ff1615611ae057600080fd5b602d805473615b7d03aab89b9ea7d58889bb407173e96c1c116001600160a01b03199182168117909255602c805490911690911790558151611b2990600b9060208501906137a5565b508051611b3d90600c9060208401906137a5565b5064e8d4a51000600a556022805460ff19166012908117909155602355602354611b6890600a613d4a565b600a54611b759190613df2565b6024819055611b8690600019613e7e565b611b9290600019613e11565b602555602954602780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b158015611bec57600080fd5b505afa158015611c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2491906138f6565b6001600160a01b031663c9c65396602760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8057600080fd5b505afa158015611c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb891906138f6565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015611cff57600080fd5b505af1158015611d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3791906138f6565b602880546001600160a01b0319166001600160a01b039283169081179091556000908152600360209081526040808320805460ff19166001179055308352600582528083206027549094168352929052206000199055602454606490611d9d9082613df2565b611da79190613cf3565b602e55600a54620186a090611dbe906103e8613df2565b611dc89190613cf3565b602f55602454606490611ddb9082613df2565b611de59190613cf3565b603055600a80546103e891611dfa9190613df2565b611e049190613cf3565b60315560245461271090611e19906005613df2565b611e239190613cf3565b6032556024546103e890611e38906005613df2565b611e429190613cf3565b603355602954611e5d906001600160a01b0316600019610bdc565b50603a805460ff19166001908117909155602554906000611e866000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055611eb26000546001600160a01b031690565b602b546024546040519081526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3602754611f159030906001600160a01b031660001961246c565b611f40611f2a6000546001600160a01b031690565b306111d76107ee6000546001600160a01b031690565b506027546001600160a01b031663f305d7194730611f5d816113cd565b600080611f726000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401611f9496959493929190613b4b565b6060604051808303818588803b158015611fad57600080fd5b505af1158015611fc1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fe69190613aed565b5050436039555050505050565b6000546001600160a01b0316331461201d5760405162461bcd60e51b8152600401610c1d90613bd9565b60195483111580156120315750601a548211155b801561203f5750601b548111155b61204857600080fd5b611324816120568486613cdb565b6120609190613cdb565b111561206b57600080fd5b601392909255601455601555565b6000546001600160a01b031633146120a35760405162461bcd60e51b8152600401610c1d90613bd9565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156120e357600080fd5b505afa1580156120f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211b91906138f6565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561216357600080fd5b505afa158015612177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219b91906138f6565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156121e157600080fd5b505afa1580156121f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221991906138f6565b90506001600160a01b0381166123bf57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561226257600080fd5b505afa158015612276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229a91906138f6565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122e257600080fd5b505afa1580156122f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231a91906138f6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239a91906138f6565b602880546001600160a01b0319166001600160a01b03929092169190911790556123db565b602880546001600160a01b0319166001600160a01b0383161790555b602780546001600160a01b0319166001600160a01b038416179055610f5a308460001961246c565b6000546001600160a01b0316331461242d5760405162461bcd60e51b8152600401610c1d90613bd9565b828460245461243c9190613df2565b6124469190613cf3565b6032556024548190612459908490613df2565b6124639190613cf3565b60335550505050565b6001600160a01b0383166124ce5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c1d565b6001600160a01b03821661252f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c1d565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166125f65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c1d565b6001600160a01b0383166126585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c1d565b600082116126ba5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c1d565b6126c484846129df565b156128e45760345460ff1661271b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c1d565b60375460ff16156127cd576001600160a01b03841660009081526003602052604090205460ff161561278c576001600160a01b03831660009081526038602052604090205443141561276c57600080fd5b6001600160a01b03831660009081526038602052604090204390556127cd565b6001600160a01b0384166000908152603860205260409020544314156127b157600080fd5b6001600160a01b03841660009081526038602052604090204390555b602e548211156128305760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c1d565b6029546001600160a01b0384811691161480159061286757506001600160a01b03831660009081526003602052604090205460ff16155b156128e45760305482612879856113cd565b6128839190613cdb565b11156128e45760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610c1d565b6001600160a01b03841660009081526006602052604090205460019060ff168061292657506001600160a01b03841660009081526006602052604090205460ff165b1561292f575060005b6001600160a01b03841660009081526003602052604090205460ff16156129a757602d54600160a01b900460ff161580156129735750602d54600160a81b900460ff165b156129a7576000612983306113cd565b905060325481106129a557603354811061299c57506033545b6129a581612a9f565b505b6129b385858584612e6f565b95945050505050565b60008060006129c96131f0565b90925090506129d88183613cf3565b9250505090565b600080546001600160a01b03848116911614801590612a0c57506000546001600160a01b03838116911614155b8015612a3157506001600160a01b03821660009081526009602052604090205460ff16155b8015612a5657506001600160a01b03831660009081526009602052604090205460ff16155b8015612a705750602a546001600160a01b03838116911614155b8015612a8457506001600160a01b03821615155b801561103057506001600160a01b0383163014159392505050565b602d805460ff60a01b1916600160a01b179055601d54601c54612ac29190613cdb565b612acb57612e5f565b60006002601d54601c54612adf9190613cdb565b601c54612aec9085613df2565b612af69190613cf3565b612b009190613cf3565b90506000612b0e8284613e11565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612b5657634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612baa57600080fd5b505afa158015612bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be291906138f6565b81600181518110612c0357634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260275460405163791ac94760e01b815291169063791ac94790612c49908590600090869030904290600401613c6b565b600060405180830381600087803b158015612c6357600080fd5b505af1158015612c77573d6000803e3d6000fd5b5050505060006002601d54601c54612c8f9190613cdb565b601c54612c9c9047613df2565b612ca69190613cf3565b612cb09190613cf3565b90508315612d8f57602754602a5460405163f305d71960e01b81526001600160a01b039283169263f305d719928592612cf89230928b92600092839216904290600401613b4b565b6060604051808303818588803b158015612d1157600080fd5b505af1158015612d25573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d4a9190613aed565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b6000612d9b8587613e11565b1115612e5a57601f546021544791600091612db69084613cf3565b612dc09190613df2565b9050600060205460215484612dd59190613cf3565b612ddf9190613df2565b602d546040519192506001600160a01b03169083156108fc029084906000818181858888f19350505050158015612e1a573d6000803e3d6000fd5b50602c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612e55573d6000803e3d6000fd5b505050505b505050505b50602d805460ff60a01b19169055565b603454600090610100900460ff16612f0357612e8b85856133ab565b603454610100900460ff16158015612ea85750612ea885856129df565b15612f035760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610c1d565b6000612f11868686866134c5565b60808101516001600160a01b038816600090815260016020526040902054919250612f3b91613e11565b6001600160a01b0380881660009081526001602052604080822093909355606084015191881681529190912054612f729190613cdb565b6001600160a01b0380871660009081526001602090815260408083209490945591891681526007909152205460ff168015612fc657506001600160a01b03851660009081526007602052604090205460ff16155b1561300d576001600160a01b038616600090815260026020526040902054612fef908590613e11565b6001600160a01b03871660009081526002602052604090205561314d565b6001600160a01b03861660009081526007602052604090205460ff1615801561304e57506001600160a01b03851660009081526007602052604090205460ff165b156130965780516001600160a01b0386166000908152600260205260409020546130789190613cdb565b6001600160a01b03861660009081526002602052604090205561314d565b6001600160a01b03861660009081526007602052604090205460ff1680156130d657506001600160a01b03851660009081526007602052604090205460ff165b1561314d576001600160a01b0386166000908152600260205260409020546130ff908590613e11565b6001600160a01b03808816600090815260026020526040808220939093558351918816815291909120546131339190613cdb565b6001600160a01b0386166000908152600260205260409020555b604081015115613165576131658682604001516136b3565b60008160a00151118061317c575060008160200151115b15613193576131938160a00151826020015161377f565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600001516040516131dc91815260200190565b60405180910390a350600195945050505050565b6025546024546000918291825b60085481101561337a5782600160006008848154811061322d57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806132a6575081600260006008848154811061327f57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156132bc57602554602454945094505050509091565b60016000600883815481106132e157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020546133109084613e11565b9250600260006008838154811061333757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020546133669083613e11565b91508061337281613e63565b9150506131fd565b5060245460255461338b9190613cf3565b8210156133a2576025546024549350935050509091565b90939092509050565b603454610100900460ff161561340f5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610c1d565b61341982826129df565b15801561343357506028546001600160a01b038281169116145b15610f5c576001600160a01b03821660009081526009602052604090819020805460ff191660019081179091556034805461ff00191661010017905542603655602d805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159916134b991901515815260200190565b60405180910390a15050565b6134fe6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6135376040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60006135416129bc565b905061354d8186613df2565b6080830152831561365d576001600160a01b03861660009081526003602052604090205460ff161561359057601354600d55601454600e55601554600f556135db565b6001600160a01b03871660009081526003602052604090205460ff16156135c857601054600d55601154600e55601254600f556135db565b601654600d55601754600e55601854600f555b601e54600d546135eb9087613df2565b6135f59190613cf3565b6020830152601e54600f54600e5461360d9190613cdb565b6136179087613df2565b6136219190613cf3565b6040830181905260208301516136379190613cdb565b6136419086613e11565b82526020820151613653908290613df2565b60a0830152613676565b6000602083018190526040830181905285835260a08301525b8082604001516136869190613df2565b8260a001516136959190613cdb565b82608001516136a49190613e11565b60608301525095945050505050565b60006136bd6129bc565b905060006136cb8284613df2565b306000908152600160205260409020549091506136e9908290613cdb565b3060009081526001602090815260408083209390935560079052205460ff16156137395730600090815260026020526040902054613728908490613cdb565b306000908152600260205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b8160255461378d9190613e11565b60255560265461379e908290613cdb565b6026555050565b8280546137b190613e28565b90600052602060002090601f0160209004810192826137d35760008555613819565b82601f106137ec57805160ff1916838001178555613819565b82800160010185558215613819579182015b828111156138195782518255916020019190600101906137fe565b50613825929150613829565b5090565b5b80821115613825576000815560010161382a565b8035801515811461384e57600080fd5b919050565b600082601f830112613863578081fd5b813567ffffffffffffffff8082111561387e5761387e613ebe565b604051601f8301601f19908116603f011681019082821181831017156138a6576138a6613ebe565b816040528381528660208588010111156138be578485fd5b8360208701602083013792830160200193909352509392505050565b6000602082840312156138eb578081fd5b813561103081613ed4565b600060208284031215613907578081fd5b815161103081613ed4565b60008060008060808587031215613927578283fd5b843561393281613ed4565b9350602085013561394281613ed4565b9250604085013567ffffffffffffffff8082111561395e578384fd5b61396a88838901613853565b9350606087013591508082111561397f578283fd5b5061398c87828801613853565b91505092959194509250565b600080604083850312156139aa578182fd5b82356139b581613ed4565b915060208301356139c581613ed4565b809150509250929050565b6000806000606084860312156139e4578283fd5b83356139ef81613ed4565b925060208401356139ff81613ed4565b929592945050506040919091013590565b60008060408385031215613a22578182fd5b8235613a2d81613ed4565b9150613a3b6020840161383e565b90509250929050565b60008060408385031215613a56578182fd5b8235613a6181613ed4565b946020939093013593505050565b600060208284031215613a80578081fd5b6110308261383e565b600060208284031215613a9a578081fd5b5035919050565b60008060408385031215613ab3578182fd5b50508035926020909101359150565b600080600060608486031215613ad6578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215613b01578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215613b2f578384fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000602080835283518082850152825b81811015613bb257858101830151858201604001528201613b96565b81811115613bc35783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015613cba5784516001600160a01b031683529383019391830191600101613c95565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115613cee57613cee613e92565b500190565b600082613d0257613d02613ea8565b500490565b600181815b80851115613d42578160001904821115613d2857613d28613e92565b80851615613d3557918102915b93841c9390800290613d0c565b509250929050565b60006110308383600082613d6057506001610bed565b81613d6d57506000610bed565b8160018114613d835760028114613d8d57613da9565b6001915050610bed565b60ff841115613d9e57613d9e613e92565b50506001821b610bed565b5060208310610133831016604e8410600b8410161715613dcc575081810a610bed565b613dd68383613d07565b8060001904821115613dea57613dea613e92565b029392505050565b6000816000190483118215151615613e0c57613e0c613e92565b500290565b600082821015613e2357613e23613e92565b500390565b600181811c90821680613e3c57607f821691505b60208210811415613e5d57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613e7757613e77613e92565b5060010190565b600082613e8d57613e8d613ea8565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146118c857600080fdfea264697066735822122086c7cd83ecd80947eb6a27a514521529a215b699eb8056e0159f16ed760ecd2f64736f6c63430008040033
Deployed Bytecode Sourcemap
8274:25356:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10263:64;;;;;;;;;;-1:-1:-1;10263:64:0;;;;-1:-1:-1;;;;;10263:64:0;;;;;;-1:-1:-1;;;;;5995:32:1;;;5977:51;;5965:2;5950:18;10263:64:0;;;;;;;;16874:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10134:35::-;;;;;;;;;;-1:-1:-1;10134:35:0;;;;-1:-1:-1;;;;;10134:35:0;;;17550:161;;;;;;;;;;-1:-1:-1;17550:161:0;;;;;:::i;:::-;;:::i;:::-;;;7125:14:1;;7118:22;7100:41;;7088:2;7073:18;17550:161:0;7055:92:1;9851:27:0;;;;;;;;;;;;;;;;;;;15972:25:1;;;15960:2;15945:18;9851:27:0;15927:76:1;21182:161:0;;;;;;;;;;-1:-1:-1;21182:161:0;;;;;:::i;:::-;;:::i;:::-;;24120:87;;;;;;;;;;-1:-1:-1;24189:10:0;;24120:87;;23206:906;;;;;;;;;;-1:-1:-1;23206:906:0;;;;;:::i;:::-;;:::i;8992:30::-;;;;;;;;;;;;;;;;9885:31;;;;;;;;;;;;;;;;16627:83;;;;;;;;;;-1:-1:-1;16700:7:0;;16627:83;;9068:31;;;;;;;;;;;;;;;;17847:266;;;;;;;;;;-1:-1:-1;17847:266:0;;;;;:::i;:::-;;:::i;24547:250::-;;;;;;;;;;-1:-1:-1;24547:250:0;;;;;:::i;:::-;;:::i;16716:71::-;;;;;;;;;;-1:-1:-1;16775:9:0;;16716:71;;16775:9;;;;17462:36:1;;17450:2;17435:18;16716:71:0;17417:87:1;9681:34:0;;;;;;;;;;;;;;;;18121:215;;;;;;;;;;-1:-1:-1;18121:215:0;;;;;:::i;:::-;;:::i;10176:21::-;;;;;;;;;;-1:-1:-1;10176:21:0;;;;-1:-1:-1;;;;;10176:21:0;;;9401:38;;;;;;;;;;;;;;;;10524:41;;;;;;;;;;-1:-1:-1;10524:41:0;;;;-1:-1:-1;;;10524:41:0;;;;;;9722:34;;;;;;;;;;;;;;;;15207:865;;;;;;;;;;-1:-1:-1;15207:865:0;;;;;:::i;:::-;;:::i;10833:36::-;;;;;;;;;;-1:-1:-1;10833:36:0;;;;;;;;;;;19698:123;;;;;;;;;;-1:-1:-1;19698:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;19786:27:0;19762:4;19786:27;;;:18;:27;;;;;;;;;19698:123;17719:120;;;;;;;;;;-1:-1:-1;17719:120:0;;;;;:::i;:::-;;:::i;20719:455::-;;;;;;;;;;-1:-1:-1;20719:455:0;;;;;:::i;:::-;;:::i;10334:64::-;;;;;;;;;;-1:-1:-1;10334:64:0;;;;-1:-1:-1;;;;;10334:64:0;;;10613:28;;;;;;;;;;;;;;;;23066:132;;;;;;;;;;-1:-1:-1;23066:132:0;;;;;:::i;:::-;;:::i;21351:160::-;;;;;;;;;;-1:-1:-1;21351:160:0;;;;;:::i;:::-;;:::i;9029:32::-;;;;;;;;;;;;;;;;19829:435;;;;;;;;;;-1:-1:-1;19829:435:0;;;;;:::i;:::-;;:::i;9493:40::-;;;;;;;;;;;;;;;;17169:198;;;;;;;;;;-1:-1:-1;17169:198:0;;;;;:::i;:::-;;:::i;16080:194::-;;;;;;;;;;;;;:::i;9814:30::-;;;;;;;;;;;;;;;;19138:424;;;;;;;;;;-1:-1:-1;19138:424:0;;;;;:::i;:::-;;:::i;9309:36::-;;;;;;;;;;;;;;;;19570:120;;;;;;;;;;-1:-1:-1;19570:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;19662:20:0;19638:4;19662:20;;;:11;:20;;;;;;;;;19570:120;16951:71;;;;;;;;;;-1:-1:-1;16994:7:0;15185:6;-1:-1:-1;;;;;15185:6:0;16951:71;;28947:285;;;;;;;;;;;;;:::i;16793:75::-;;;;;;;;;;;;;:::i;18344:225::-;;;;;;;;;;-1:-1:-1;18344:225:0;;;;;:::i;:::-;;:::i;17375:167::-;;;;;;;;;;-1:-1:-1;17375:167:0;;;;;:::i;:::-;;:::i;22496:193::-;;;;;;;;;;-1:-1:-1;22496:193:0;;;;;:::i;:::-;;:::i;22697:184::-;;;;;;;;;;-1:-1:-1;22697:184:0;;;;;:::i;:::-;;:::i;9268:34::-;;;;;;;;;;;;;;;;22887:171;;;;;;;;;;-1:-1:-1;22887:171:0;;;;;:::i;:::-;;:::i;9212:47::-;;;;;;;;;;;;;;;;9352:36;;;;;;;;;;;;;;;;33083:109;;;;;;;;;;;;;:::i;9108:43::-;;;;;;;;;;;;;;;;21519:330;;;;;;;;;;-1:-1:-1;21519:330:0;;;;;:::i;:::-;;:::i;10225:29::-;;;;;;;;;;-1:-1:-1;10225:29:0;;;;-1:-1:-1;;;;;10225:29:0;;;21857:334;;;;;;;;;;-1:-1:-1;21857:334:0;;;;;:::i;:::-;;:::i;9158:47::-;;;;;;;;;;;;;;;;17028:133;;;;;;;;;;-1:-1:-1;17028:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;17130:19:0;;;17112:7;17130:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17028:133;12596:1971;;;;;;;;;;-1:-1:-1;12596:1971:0;;;;;:::i;:::-;;:::i;20272:439::-;;;;;;;;;;-1:-1:-1;20272:439:0;;;;;:::i;:::-;;:::i;9446:40::-;;;;;;;;;;;;;;;;18577:553;;;;;;;;;;-1:-1:-1;18577:553:0;;;;;:::i;:::-;;:::i;10687:30::-;;;;;;;;;;;;;;;;22199:289;;;;;;;;;;-1:-1:-1;22199:289:0;;;;;:::i;:::-;;:::i;16874:71::-;16913:13;16937:5;16930:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16874:71;:::o;17550:161::-;17625:4;17642:39;260:10;17665:7;17674:6;17642:8;:39::i;:::-;-1:-1:-1;17699:4:0;17550:161;;;;;:::o;21182:::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;;;;;;;;;21267:11:::1;:16:::0;;;;21294:8:::1;:13:::0;21318:12:::1;:17:::0;21182:161::o;23206:906::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;23311:4:::1;23300:15:::0;::::1;;;23296:809;;;-1:-1:-1::0;;;;;23341:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;23340:21;23332:62;;;::::0;-1:-1:-1;;;23332:62:0;;12486:2:1;23332:62:0::1;::::0;::::1;12468:21:1::0;12525:2;12505:18;;;12498:30;12564;12544:18;;;12537:58;12612:18;;23332:62:0::1;12458:178:1::0;23332:62:0::1;-1:-1:-1::0;;;;;23412:16:0;::::1;23431:1;23412:16:::0;;;:7:::1;:16;::::0;;;;;:20;23409:116:::1;;-1:-1:-1::0;;;;;23492:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;23472:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;23453:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;23409:116:::1;-1:-1:-1::0;;;;;;23539:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;23539:27:0::1;23562:4;23539:27:::0;;::::1;::::0;;;23581:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;23581:23:0::1;::::0;;::::1;::::0;;23206:906::o;23296:809::-:1;23626:16:::0;23622:483:::1;;-1:-1:-1::0;;;;;23667:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;23659:61;;;::::0;-1:-1:-1;;;23659:61:0;;10532:2:1;23659:61:0::1;::::0;::::1;10514:21:1::0;10571:2;10551:18;;;10544:30;10610;10590:18;;;10583:58;10658:18;;23659:61:0::1;10504:178:1::0;23659:61:0::1;23740:9;23735:359;23759:9;:16:::0;23755:20;::::1;23735:359;;;23821:7;-1:-1:-1::0;;;;;23805:23:0::1;:9;23815:1;23805:12;;;;;;-1:-1:-1::0;;;23805:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;23805:12:0::1;:23;23801:278;;;23868:9;23878:16:::0;;:20:::1;::::0;23897:1:::1;::::0;23878:20:::1;:::i;:::-;23868:31;;;;;;-1:-1:-1::0;;;23868:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;23853:9:::1;:12:::0;;-1:-1:-1;;;;;23868:31:0;;::::1;::::0;23863:1;;23853:12;::::1;;;-1:-1:-1::0;;;23853:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;23853:46:0::1;-1:-1:-1::0;;;;;23853:46:0;;::::1;;::::0;;23922:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;23965:11:::1;:20:::0;;;;:28;;-1:-1:-1;;23965:28:0::1;::::0;;24016:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;24016:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;24016:15:0;;;;;-1:-1:-1;;;;;;24016:15:0::1;::::0;;;;;24054:5:::1;;23801:278;23777:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23735:359;;;;23622:483;23206:906:::0;;:::o;17847:266::-;17945:4;17962:36;17972:6;17980:9;17991:6;17962:9;:36::i;:::-;-1:-1:-1;;;;;;18040:19:0;;;;;;:11;:19;;;;;;;;260:10;18040:33;;;;;;;;;18009:74;;18018:6;;18040:42;;18076:6;;18040:42;:::i;:::-;18009:8;:74::i;:::-;-1:-1:-1;18101:4:0;17847:266;;;;;:::o;24547:250::-;24613:7;24652;;24641;:18;;24633:73;;;;-1:-1:-1;;;24633:73:0;;8953:2:1;24633:73:0;;;8935:21:1;8992:2;8972:18;;;8965:30;9031:34;9011:18;;;9004:62;-1:-1:-1;;;9082:18:1;;;9075:40;9132:19;;24633:73:0;8925:232:1;24633:73:0;24717:19;24740:10;:8;:10::i;:::-;24717:33;-1:-1:-1;24768:21:0;24717:33;24768:7;:21;:::i;:::-;24761:28;24547:250;-1:-1:-1;;;24547:250:0:o;18121:215::-;260:10;18209:4;18258:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18258:34:0;;;;;;;;;;18209:4;;18226:80;;18249:7;;18258:47;;18295:10;;18258:47;:::i;15207:865::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15288:22:0;::::1;15280:96;;;;-1:-1:-1::0;;;15280:96:0::1;;;;;;;:::i;:::-;15407:4;::::0;-1:-1:-1;;;;;15395:16:0;;::::1;15407:4:::0;::::1;15395:16;;15387:90;;;;-1:-1:-1::0;;;15387:90:0::1;;;;;;;:::i;:::-;15507:6;::::0;;15488:33:::1;::::0;-1:-1:-1;;;;;15507:6:0;;::::1;::::0;15488:18:::1;:33::i;:::-;15532:34;15551:8;15561:4;15532:18;:34::i;:::-;15577:37;15599:8;15609:4;15577:21;:37::i;:::-;15639:10;::::0;-1:-1:-1;;;;;15639:10:0::1;15661:42;15639:65;15635:148;;;15719:10;:64:::0;;-1:-1:-1;;;;;;15719:64:0::1;15740:42;15719:64;::::0;;15635:148:::1;15846:6;::::0;15836:17:::1;::::0;-1:-1:-1;;;;;15846:6:0::1;15836:9;:17::i;:::-;15804:19;15816:6:::0;;-1:-1:-1;;;;;15816:6:0;;::::1;15804:19:::0;;:11:::1;:19;::::0;;;;;;;:29;;::::1;::::0;;;;;;;:49;;;;15877:6;;15804:19;;15867:17:::1;::::0;15877:6:::1;15867:9;:17::i;:::-;:21;15864:99;;;15915:6;::::0;15905:46:::1;::::0;-1:-1:-1;;;;;15915:6:0::1;15923:8:::0;15933:17:::1;15915:6:::0;15933:9:::1;:17::i;:::-;15905:9;:46::i;:::-;;15864:99;15983:6;:17:::0;;-1:-1:-1;;;;;;15983:17:0::1;-1:-1:-1::0;;;;;15983:17:0;::::1;::::0;;::::1;::::0;;16016:38:::1;::::0;15983:17;;;;16016:38:::1;::::0;15983:6;16016:38:::1;15207:865:::0;:::o;17719:120::-;17772:4;17796:35;17804:7;-1:-1:-1;;17796:7:0;:35::i;20719:455::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;20849:13:::1;;20838:7;:24;;:73;;;;;20896:15;;20883:9;:28;;20838:73;:122;;;;;20945:15;;20932:9;:28;;20838:122;20830:149;;;::::0;::::1;;21033:4;21020:9:::0;20998:19:::1;21008:9:::0;20998:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;20990:48;;;::::0;::::1;;21049:19;:29:::0;;;;21089:21:::1;:33:::0;21133:21:::1;:33:::0;20719:455::o;23066:132::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23153:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:37;;-1:-1:-1;;23153:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23066:132::o;21351:160::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;21438:15:::1;:27:::0;;;;21476:15:::1;:27:::0;21351:160::o;19829:435::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;19954:13:::1;;19943:7;:24;;:73;;;;;20001:15;;19988:9;:28;;19943:73;:122;;;;;20050:15;;20037:9;:28;;19943:122;19935:149;;;::::0;::::1;;20138:4;20125:9:::0;20103:19:::1;20113:9:::0;20103:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;20095:48;;;::::0;::::1;;20154:14;:24:::0;;;;20189:16:::1;:28:::0;20228:16:::1;:28:::0;19829:435::o;17169:198::-;-1:-1:-1;;;;;17259:20:0;;17235:7;17259:20;;;:11;:20;;;;;;;;17255:49;;;-1:-1:-1;;;;;;17288:16:0;;;;;:7;:16;;;;;;;17169:198::o;17255:49::-;-1:-1:-1;;;;;17342:16:0;;;;;;:7;:16;;;;;;17322:37;;:19;:37::i;16080:194::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;16166:6:::1;::::0;;16147:33:::1;::::0;-1:-1:-1;;;;;16166:6:0;;::::1;::::0;16147:18:::1;:33::i;:::-;16208:1;16191:19:::0;;-1:-1:-1;;;;;;16191:19:0::1;::::0;;16226:40:::1;::::0;16208:1;;16226:40:::1;::::0;16208:1;;16226:40:::1;16080:194::o:0;19138:424::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;19219:16;19215:340:::1;;-1:-1:-1::0;;;;;;19252:13:0::1;19268:5;19252:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;19252:21:0::1;::::0;;23206:906::o;19215:340::-:1;19310:17;::::0;:22;19306:153:::1;;19399:7;19379:17;;19361:15;:35;;;;:::i;:::-;:45;19353:90;;;::::0;-1:-1:-1;;;19353:90:0;;10171:2:1;19353:90:0::1;::::0;::::1;10153:21:1::0;;;10190:18;;;10183:30;10249:34;10229:18;;;10222:62;10301:18;;19353:90:0::1;10143:182:1::0;19353:90:0::1;-1:-1:-1::0;;;;;19473:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;19473:20:0::1;19489:4;19473:20;::::0;;19528:15:::1;19508:17;:35:::0;19138:424;;:::o;28947:285::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;29009:14:::1;::::0;::::1;;29008:15;29000:52;;;::::0;-1:-1:-1;;;29000:52:0;;15245:2:1;29000:52:0::1;::::0;::::1;15227:21:1::0;15284:2;15264:18;;;15257:30;15323:26;15303:18;;;15296:54;15367:18;;29000:52:0::1;15217:174:1::0;29000:52:0::1;29063:42;29093:4;29100;29063:21;:42::i;:::-;29138:6;::::0;29116:35:::1;::::0;-1:-1:-1;;;;;29138:6:0::1;::::0;29116:21:::1;:35::i;:::-;29164:14;:21:::0;;-1:-1:-1;;29164:21:0::1;29181:4;29164:21;::::0;;29196::::1;:28:::0;;-1:-1:-1;;;;29196:28:0::1;-1:-1:-1::0;;;29196:28:0::1;::::0;;28947:285::o;16793:75::-;16834:13;16858:7;16851:14;;;;;:::i;18344:225::-;260:10;18437:4;18486:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18486:34:0;;;;;;;;;;18437:4;;18454:85;;18477:7;;18486:52;;18523:15;;18486:52;:::i;17375:167::-;17453:4;17470:42;260:10;17494:9;17505:6;17470:9;:42::i;22496:193::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;22586:13:::1;::::0;-1:-1:-1;;;;;22586:26:0;;::::1;:13:::0;::::1;:26;;22578:58;;;::::0;-1:-1:-1;;;22578:58:0;;12138:2:1;22578:58:0::1;::::0;::::1;12120:21:1::0;12177:2;12157:18;;;12150:30;-1:-1:-1;;;12196:18:1;;;12189:49;12255:18;;22578:58:0::1;12110:169:1::0;22578:58:0::1;22647:13;:34:::0;;-1:-1:-1;;;;;;22647:34:0::1;-1:-1:-1::0;;;;;22647:34:0;;;::::1;::::0;;;::::1;::::0;;22496:193::o;22697:184::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;22784:10:::1;::::0;-1:-1:-1;;;;;22784:23:0;;::::1;:10:::0;::::1;:23;;22776:55;;;::::0;-1:-1:-1;;;22776:55:0;;12138:2:1;22776:55:0::1;::::0;::::1;12120:21:1::0;12177:2;12157:18;;;12150:30;-1:-1:-1;;;12196:18:1;;;12189:49;12255:18;;22776:55:0::1;12110:169:1::0;22776:55:0::1;22842:10;:31:::0;;-1:-1:-1;;;;;;22842:31:0::1;-1:-1:-1::0;;;;;22842:31:0;;;::::1;::::0;;;::::1;::::0;;22697:184::o;22887:171::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;22964:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;22964:32:0::1;-1:-1:-1::0;;;;22964:32:0;;::::1;;::::0;;23012:38:::1;::::0;::::1;::::0;::::1;::::0;22988:8;7125:14:1;7118:22;7100:41;;7088:2;7073:18;;7055:92;23012:38:0::1;;;;;;;;22887:171:::0;:::o;33083:109::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;15158:7;15185:6;;33136:48:::1;::::0;-1:-1:-1;;;;;15185:6:0;;;;33162:21:::1;33136:48:::0;::::1;;;::::0;33162:21;;33136:48;15158:7;33136:48;33162:21;15185:6;33136:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;33083:109::o:0;21519:330::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;21598:13:::1;21636:7;21625;21615;;:17;;;;:::i;:::-;21614:29;;;;:::i;:::-;21598:45;;21682:4;21672:7;;:14;;;;:::i;:::-;21662:5;:25;;21654:93;;;::::0;-1:-1:-1;;;21654:93:0;;10889:2:1;21654:93:0::1;::::0;::::1;10871:21:1::0;10928:2;10908:18;;;10901:30;10967:34;10947:18;;;10940:62;11038:25;11018:18;;;11011:53;11081:19;;21654:93:0::1;10861:245:1::0;21654:93:0::1;21758:12;:20:::0;;;21806:14:::1;::::0;21834:7;;21806:24:::1;::::0;21823:7;;21806:24:::1;:::i;:::-;21805:36;;;;:::i;:::-;21789:13;:52:::0;-1:-1:-1;;;21519:330:0:o;21857:334::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;21941:13:::1;21979:7;21968;21958;;:17;;;;:::i;:::-;21957:29;;;;:::i;:::-;21941:45;;22025:4;22015:7;;:14;;;;:::i;:::-;22005:5;:25;;21997:88;;;::::0;-1:-1:-1;;;21997:88:0;;11719:2:1;21997:88:0::1;::::0;::::1;11701:21:1::0;11758:2;11738:18;;;11731:30;11797:34;11777:18;;;11770:62;-1:-1:-1;;;11848:18:1;;;11841:48;11906:19;;21997:88:0::1;11691:240:1::0;21997:88:0::1;22096:14;:22:::0;;;22148:14:::1;::::0;22176:7;;22148:24:::1;::::0;22165:7;;22148:24:::1;:::i;:::-;22147:36;;;;:::i;:::-;22129:15;:54:::0;-1:-1:-1;;;21857:334:0:o;12596:1971::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;12779:19:::1;::::0;::::1;;12778:20;12770:29;;;::::0;::::1;;12812:13;:67:::0;;12836:42:::1;-1:-1:-1::0;;;;;;12812:67:0;;::::1;::::0;::::1;::::0;;;12890:10:::1;:64:::0;;;;::::1;::::0;;::::1;::::0;;12967:18;;::::1;::::0;:5:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;12996:22:0;;::::1;::::0;:7:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;13046:17:0::1;13029:14;:34:::0;13126:9:::1;:14:::0;;-1:-1:-1;;13126:14:0::1;13138:2;13126:14:::0;;::::1;::::0;;;13155:12:::1;:24:::0;13318:12:::1;::::0;13314:16:::1;::::0;:2:::1;:16;:::i;:::-;13296:14;;:35;;;;:::i;:::-;13286:7;:45:::0;;;13360:13:::1;::::0;-1:-1:-1;;13360:13:0::1;:::i;:::-;13353:21;::::0;-1:-1:-1;;13353:21:0::1;:::i;:::-;13342:7;:33:::0;13419:14:::1;::::0;13388:9:::1;:46:::0;;-1:-1:-1;;;;;;13388:46:0::1;-1:-1:-1::0;;;;;13419:14:0;;::::1;13388:46:::0;;::::1;::::0;;13472:19:::1;::::0;;-1:-1:-1;;;13472:19:0;;;;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;13419:14;13472:19;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13454:49:0::1;;13504:9;;;;;;;;;-1:-1:-1::0;;;;;13504:9:0::1;-1:-1:-1::0;;;;;13504:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13454:82;::::0;-1:-1:-1;;;;;;13454:82:0::1;::::0;;;;;;-1:-1:-1;;;;;6269:15:1;;;13454:82:0::1;::::0;::::1;6251:34:1::0;13530:4:0::1;6301:18:1::0;;;6294:43;6186:18;;13454:82:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13445:6;:91:::0;;-1:-1:-1;;;;;;13445:91:0::1;-1:-1:-1::0;;;;;13445:91:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13547:15:0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;13547:22:0::1;-1:-1:-1::0;13547:22:0::1;::::0;;13600:4:::1;13580:26:::0;;:11:::1;:26:::0;;;;;13615:9:::1;::::0;;;::::1;13580:46:::0;;;;;;-1:-1:-1;;13580:66:0;;13683:7:::1;::::0;13700:3:::1;::::0;13683:13:::1;::::0;13700:3;13683:13:::1;:::i;:::-;13682:21;;;;:::i;:::-;13667:12;:36:::0;13731:14:::1;::::0;13756:6:::1;::::0;13731:21:::1;::::0;13748:4:::1;13731:21;:::i;:::-;13730:32;;;;:::i;:::-;13714:13;:48:::0;13791:7:::1;::::0;13808:3:::1;::::0;13791:13:::1;::::0;13808:3;13791:13:::1;:::i;:::-;13790:21;;;;:::i;:::-;13773:14;:38:::0;13841:14:::1;::::0;;13864:4:::1;::::0;13841:19:::1;::::0;:14;:19:::1;:::i;:::-;13840:28;;;;:::i;:::-;13822:15;:46:::0;13896:7:::1;::::0;13911:5:::1;::::0;13896:11:::1;::::0;13906:1:::1;13896:11;:::i;:::-;13895:21;;;;:::i;:::-;13879:13;:37:::0;13941:7:::1;::::0;13956:4:::1;::::0;13941:11:::1;::::0;13951:1:::1;13941:11;:::i;:::-;13940:20;;;;:::i;:::-;13927:10;:33:::0;13981:14:::1;::::0;13973:42:::1;::::0;-1:-1:-1;;;;;13981:14:0::1;-1:-1:-1::0;;13973:7:0::1;:42::i;:::-;-1:-1:-1::0;14028:19:0::1;:26:::0;;-1:-1:-1;;14028:26:0::1;14050:4;14028:26:::0;;::::1;::::0;;;14084:7:::1;::::0;;14028:19:::1;14073:7;15158::::0;15185:6;-1:-1:-1;;;;;15185:6:0;;15120:79;14073:7:::1;-1:-1:-1::0;;;;;14065:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14065:16:0;:26;14122:7:::1;15158::::0;15185:6;-1:-1:-1;;;;;15185:6:0;;15120:79;14122:7:::1;14116:4;::::0;14131:7:::1;::::0;14107:32:::1;::::0;15972:25:1;;;-1:-1:-1;;;;;14107:32:0;;::::1;::::0;14116:4;;::::1;::::0;14107:32:::1;::::0;15960:2:1;15945:18;14107:32:0::1;;;;;;;14184:9;::::0;14152:62:::1;::::0;14169:4:::1;::::0;-1:-1:-1;;;;;14184:9:0::1;-1:-1:-1::0;;14152:8:0::1;:62::i;:::-;14227:53;14237:7;15158::::0;15185:6;-1:-1:-1;;;;;15185:6:0;;15120:79;14237:7:::1;14254:4;14261:18;14271:7;15158::::0;15185:6;-1:-1:-1;;;;;15185:6:0;;15120:79;14227:53:::1;-1:-1:-1::0;14307:9:0::1;::::0;-1:-1:-1;;;;;14307:9:0::1;:25;14340:21;14385:4;14405:24;14385:4:::0;14405:9:::1;:24::i;:::-;14444:1;14461::::0;14478:7:::1;15158::::0;15185:6;-1:-1:-1;;;;;15185:6:0;;15120:79;14478:7:::1;14500:15;14307:219;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14547:12:0::1;14537:7;:22:::0;-1:-1:-1;;;;;12596:1971:0:o;20272:439::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;20398:13:::1;;20387:7;:24;;:73;;;;;20445:15;;20432:9;:28;;20387:73;:122;;;;;20494:15;;20481:9;:28;;20387:122;20379:149;;;::::0;::::1;;20582:4;20569:9:::0;20547:19:::1;20557:9:::0;20547:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;20539:48;;;::::0;::::1;;20598:15;:25:::0;;;;20634:17:::1;:29:::0;20674:17:::1;:29:::0;20272:439::o;18577:553::-;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;18650:29:::1;18701:9;18650:61;;18722:16;18759:10;-1:-1:-1::0;;;;;18759:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18741:47:0::1;;18797:4;18804:10;-1:-1:-1::0;;;;;18804:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18741:81;::::0;-1:-1:-1;;;;;;18741:81:0::1;::::0;;;;;;-1:-1:-1;;;;;6269:15:1;;;18741:81:0::1;::::0;::::1;6251:34:1::0;6321:15;;6301:18;;;6294:43;6186:18;;18741:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18722:100:::0;-1:-1:-1;;;;;;18837:22:0;::::1;18833:207;;18903:10;-1:-1:-1::0;;;;;18903:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18885:50:0::1;;18944:4;18951:10;-1:-1:-1::0;;;;;18951:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18885:84;::::0;-1:-1:-1;;;;;;18885:84:0::1;::::0;;;;;;-1:-1:-1;;;;;6269:15:1;;;18885:84:0::1;::::0;::::1;6251:34:1::0;6321:15;;6301:18;;;6294:43;6186:18;;18885:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18876:6;:93:::0;;-1:-1:-1;;;;;;18876:93:0::1;-1:-1:-1::0;;;;;18876:93:0;;;::::1;::::0;;;::::1;::::0;;18833:207:::1;;;19011:6;:17:::0;;-1:-1:-1;;;;;;19011:17:0::1;-1:-1:-1::0;;;;;19011:17:0;::::1;;::::0;;18833:207:::1;19050:9;:22:::0;;-1:-1:-1;;;;;;19050:22:0::1;-1:-1:-1::0;;;;;19050:22:0;::::1;;::::0;;19083:39:::1;19100:4;19107:9:::0;-1:-1:-1;;19083:8:0::1;:39::i;22199:289::-:0;11676:6;;-1:-1:-1;;;;;11676:6:0;260:10;11676:22;11668:67;;;;-1:-1:-1;;;11668:67:0;;;;;;;:::i;:::-;22399:16:::1;22379;22369:7;;:26;;;;:::i;:::-;22368:47;;;;:::i;:::-;22352:13;:63:::0;22440:7:::1;::::0;22467:13;;22440:23:::1;::::0;22450:13;;22440:23:::1;:::i;:::-;22439:41;;;;:::i;:::-;22426:10;:54:::0;-1:-1:-1;;;;22199:289:0:o;24809:342::-;-1:-1:-1;;;;;24904:20:0;;24896:69;;;;-1:-1:-1;;;24896:69:0;;14840:2:1;24896:69:0;;;14822:21:1;14879:2;14859:18;;;14852:30;14918:34;14898:18;;;14891:62;-1:-1:-1;;;14969:18:1;;;14962:34;15013:19;;24896:69:0;14812:226:1;24896:69:0;-1:-1:-1;;;;;24984:21:0;;24976:68;;;;-1:-1:-1;;;24976:68:0;;9364:2:1;24976:68:0;;;9346:21:1;9403:2;9383:18;;;9376:30;9442:34;9422:18;;;9415:62;-1:-1:-1;;;9493:18:1;;;9486:32;9535:19;;24976:68:0;9336:224:1;24976:68:0;-1:-1:-1;;;;;25057:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;25110:33;;15972:25:1;;;25110:33:0;;15945:18:1;25110:33:0;;;;;;;24809:342;;;:::o;25159:1776::-;25238:4;-1:-1:-1;;;;;25263:18:0;;25255:68;;;;-1:-1:-1;;;25255:68:0;;14434:2:1;25255:68:0;;;14416:21:1;14473:2;14453:18;;;14446:30;14512:34;14492:18;;;14485:62;-1:-1:-1;;;14563:18:1;;;14556:35;14608:19;;25255:68:0;14406:227:1;25255:68:0;-1:-1:-1;;;;;25342:16:0;;25334:64;;;;-1:-1:-1;;;25334:64:0;;8196:2:1;25334:64:0;;;8178:21:1;8235:2;8215:18;;;8208:30;8274:34;8254:18;;;8247:62;-1:-1:-1;;;8325:18:1;;;8318:33;8368:19;;25334:64:0;8168:225:1;25334:64:0;25426:1;25417:6;:10;25409:64;;;;-1:-1:-1;;;25409:64:0;;14024:2:1;25409:64:0;;;14006:21:1;14063:2;14043:18;;;14036:30;14102:34;14082:18;;;14075:62;-1:-1:-1;;;14153:18:1;;;14146:39;14202:19;;25409:64:0;13996:231:1;25409:64:0;25487:20;25498:4;25504:2;25487:10;:20::i;:::-;25484:776;;;25528:14;;;;25524:89;;25563:34;;-1:-1:-1;;;25563:34:0;;8600:2:1;25563:34:0;;;8582:21:1;8639:2;8619:18;;;8612:30;8678:26;8658:18;;;8651:54;8722:18;;25563:34:0;8572:174:1;25524:89:0;25631:15;;;;25627:347;;;-1:-1:-1;;;;;25671:13:0;;;;;;:7;:13;;;;;;;;25667:292;;;-1:-1:-1;;;;;25716:13:0;;;;;;:9;:13;;;;;;25733:12;25716:29;;25708:38;;;;;;-1:-1:-1;;;;;25769:13:0;;;;;;:9;:13;;;;;25785:12;25769:28;;25667:292;;;-1:-1:-1;;;;;25854:15:0;;;;;;:9;:15;;;;;;25873:12;25854:31;;25846:40;;;;;;-1:-1:-1;;;;;25909:15:0;;;;;;:9;:15;;;;;25927:12;25909:30;;25667:292;26006:12;;25996:6;:22;;25988:75;;;;-1:-1:-1;;;25988:75:0;;12843:2:1;25988:75:0;;;12825:21:1;12882:2;12862:18;;;12855:30;12921:34;12901:18;;;12894:62;-1:-1:-1;;;12972:18:1;;;12965:38;13020:19;;25988:75:0;12815:230:1;25988:75:0;26087:14;;-1:-1:-1;;;;;26081:20:0;;;26087:14;;26081:20;;;;:36;;-1:-1:-1;;;;;;26106:11:0;;;;;;:7;:11;;;;;;;;26105:12;26081:36;26078:171;;;26172:14;;26162:6;26146:13;26156:2;26146:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;26138:95;;;;-1:-1:-1;;;26138:95:0;;13252:2:1;26138:95:0;;;13234:21:1;13291:2;13271:18;;;13264:30;13330:34;13310:18;;;13303:62;-1:-1:-1;;;13381:18:1;;;13374:40;13431:19;;26138:95:0;13224:232:1;26138:95:0;-1:-1:-1;;;;;26303:24:0;;26270:12;26303:24;;;:18;:24;;;;;;26285:4;;26303:24;;;:50;;-1:-1:-1;;;;;;26331:22:0;;;;;;:18;:22;;;;;;;;26303:50;26300:96;;;-1:-1:-1;26379:5:0;26300:96;-1:-1:-1;;;;;26412:11:0;;;;;;:7;:11;;;;;;;;26408:457;;;26445:16;;-1:-1:-1;;;26445:16:0;;;;26444:17;:59;;;;-1:-1:-1;26482:21:0;;-1:-1:-1;;;26482:21:0;;;;26444:59;26440:408;;;26538:28;26569:24;26587:4;26569:9;:24::i;:::-;26538:55;;26640:13;;26616:20;:37;26612:221;;26705:10;;26681:20;:34;26678:77;;-1:-1:-1;26742:10:0;;26678:77;26777:36;26792:20;26777:14;:36::i;:::-;26440:408;;26883:44;26901:4;26907:2;26911:6;26919:7;26883:17;:44::i;:::-;26876:51;25159:1776;-1:-1:-1;;;;;25159:1776:0:o;32204:161::-;32246:7;32267:15;32284;32303:19;:17;:19::i;:::-;32266:56;;-1:-1:-1;32266:56:0;-1:-1:-1;32340:17:0;32266:56;;32340:17;:::i;:::-;32333:24;;;;32204:161;:::o;24215:324::-;24284:4;15185:6;;-1:-1:-1;;;;;24308:15:0;;;15185:6;;24308:15;;;;:45;;-1:-1:-1;15158:7:0;15185:6;-1:-1:-1;;;;;24340:13:0;;;15185:6;;24340:13;;24308:45;:84;;;;-1:-1:-1;;;;;;24371:21:0;;;;;;:17;:21;;;;;;;;24370:22;24308:84;:125;;;;-1:-1:-1;;;;;;24410:23:0;;;;;;:17;:23;;;;;;;;24409:24;24308:125;:152;;;;-1:-1:-1;24456:4:0;;-1:-1:-1;;;;;24450:10:0;;;24456:4;;24450:10;;24308:152;:185;;;;-1:-1:-1;;;;;;24477:16:0;;;;24308:185;:223;;;;-1:-1:-1;;;;;;24510:21:0;;24526:4;24510:21;;24301:230;24215:324;-1:-1:-1;;;24215:324:0:o;26943:1541::-;11550:16;:23;;-1:-1:-1;;;;11550:23:0;-1:-1:-1;;;11550:23:0;;;27051:15:::1;::::0;27033::::1;::::0;:33:::1;::::0;27051:15;27033:33:::1;:::i;:::-;27029:64;;27086:7;;27029:64;27103:17;27206:1;27186:15;;27168;;:33;;;;:::i;:::-;27148:15;::::0;27125:38:::1;::::0;:20;:38:::1;:::i;:::-;27124:78;;;;:::i;:::-;27123:84;;;;:::i;:::-;27103:104:::0;-1:-1:-1;27220:20:0::1;27243:32;27103:104:::0;27243:20;:32:::1;:::i;:::-;27312:16;::::0;;27326:1:::1;27312:16:::0;;;;;::::1;::::0;;27220:55;;-1:-1:-1;27288:21:0::1;::::0;27312:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;27312:16:0::1;27288:40;;27357:4;27339;27344:1;27339:7;;;;;;-1:-1:-1::0;;;27339:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;27339:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;27383:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;27383:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;27339:7;;27383:16;;;;;:9;:16;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27373:4;27378:1;27373:7;;;;;;-1:-1:-1::0;;;27373:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;27373:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;27412:9:::1;::::0;:191:::1;::::0;-1:-1:-1;;;27412:191:0;;:9;::::1;::::0;:60:::1;::::0;:191:::1;::::0;27487:12;;27412:9:::1;::::0;27530:4;;27557::::1;::::0;27577:15:::1;::::0;27412:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27618:24;27729:1;27709:15;;27691;;:33;;;;:::i;:::-;27671:15;::::0;27647:39:::1;::::0;:21:::1;:39;:::i;:::-;27646:79;;;;:::i;:::-;27645:85;;;;:::i;:::-;27618:112:::0;-1:-1:-1;27747:13:0;;27743:344:::1;;27777:9;::::0;27948:4:::1;::::0;27777:224:::1;::::0;-1:-1:-1;;;27777:224:0;;-1:-1:-1;;;;;27777:9:0;;::::1;::::0;:25:::1;::::0;27810:16;;27777:224:::1;::::0;27854:4:::1;::::0;27878:9;;27777::::1;::::0;;;27948:4:::1;::::0;27971:15:::1;::::0;27777:224:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;28021:54:0::1;::::0;;17198:25:1;;;17254:2;17239:18;;17232:34;;;17282:18;;;17275:34;;;28021:54:0::1;::::0;-1:-1:-1;17186:2:1;17171:18;28021:54:0::1;;;;;;;27743:344;28136:1;28101:32;28124:9:::0;28101:20;:32:::1;:::i;:::-;:36;28097:380;;;28268:11;::::0;28253:12:::1;::::0;28181:21:::1;::::0;28156::::1;::::0;28238:28:::1;::::0;28181:21;28238:28:::1;:::i;:::-;:42;;;;:::i;:::-;28218:62;;28295:19;28347:8;;28332:12;;28317:13;:28;;;;:::i;:::-;:39;;;;:::i;:::-;28371:13;::::0;:33:::1;::::0;28295:61;;-1:-1:-1;;;;;;28371:13:0::1;::::0;:33;::::1;;;::::0;28394:9;;28371:13:::1;:33:::0;:13;:33;28394:9;28371:13;:33;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;28419:10:0::1;::::0;:32:::1;::::0;-1:-1:-1;;;;;28419:10:0;;::::1;::::0;:32;::::1;;;::::0;28439:11;;28419:10:::1;:32:::0;:10;:32;28439:11;28419:10;:32;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;28097:380;;;;11584:1;;;;;-1:-1:-1::0;11596:16:0;:24;;-1:-1:-1;;;;11596:24:0;;;26943:1541::o;29446:1278::-;29574:16;;29548:4;;29574:16;;;;;29569:237;;29611:28;29630:4;29636:2;29611:18;:28::i;:::-;29663:16;;;;;;;29662:17;:41;;;;;29683:20;29694:4;29700:2;29683:10;:20::i;:::-;29658:137;;;29728:47;;-1:-1:-1;;;29728:47:0;;11313:2:1;29728:47:0;;;11295:21:1;11352:2;11332:18;;;11325:30;11391:34;11371:18;;;11364:62;-1:-1:-1;;;11442:18:1;;;11435:35;11487:19;;29728:47:0;11285:227:1;29658:137:0;29826:25;29854:38;29865:4;29871:2;29875:7;29884;29854:10;:38::i;:::-;29937:14;;;;-1:-1:-1;;;;;29921:13:0;;;;;;:7;:13;;;;;;29826:66;;-1:-1:-1;29921:30:0;;;:::i;:::-;-1:-1:-1;;;;;29905:13:0;;;;;;;:7;:13;;;;;;:46;;;;29990:22;;;;29976:11;;;;;;;;;;:36;;29990:22;29976:36;:::i;:::-;-1:-1:-1;;;;;29962:11:0;;;;;;;:7;:11;;;;;;;;:50;;;;30029:17;;;;;:11;:17;;;;;;;:37;;;;-1:-1:-1;;;;;;30051:15:0;;;;;;:11;:15;;;;;;;;30050:16;30029:37;30025:416;;;-1:-1:-1;;;;;30099:13:0;;;;;;:7;:13;;;;;;:23;;30115:7;;30099:23;:::i;:::-;-1:-1:-1;;;;;30083:13:0;;;;;;:7;:13;;;;;:39;30025:416;;;-1:-1:-1;;;;;30145:17:0;;;;;;:11;:17;;;;;;;;30144:18;:37;;;;-1:-1:-1;;;;;;30166:15:0;;;;;;:11;:15;;;;;;;;30144:37;30140:301;;;30226:22;;-1:-1:-1;;;;;30212:11:0;;30226:22;30212:11;;;:7;:11;;;;;;:36;;30226:22;30212:36;:::i;:::-;-1:-1:-1;;;;;30198:11:0;;;;;;:7;:11;;;;;:50;30140:301;;;-1:-1:-1;;;;;30272:17:0;;;;;;:11;:17;;;;;;;;:36;;;;-1:-1:-1;;;;;;30293:15:0;;;;;;:11;:15;;;;;;;;30272:36;30268:173;;;-1:-1:-1;;;;;30341:13:0;;;;;;:7;:13;;;;;;:23;;30357:7;;30341:23;:::i;:::-;-1:-1:-1;;;;;30325:13:0;;;;;;;:7;:13;;;;;;:39;;;;30407:22;;30393:11;;;;;;;;;;:36;;30407:22;30393:36;:::i;:::-;-1:-1:-1;;;;;30379:11:0;;;;;;:7;:11;;;;;:50;30268:173;30457:17;;;;:21;30453:79;;30493:39;30508:4;30514:6;:17;;;30493:14;:39::i;:::-;30561:1;30547:6;:11;;;:15;:34;;;;30580:1;30566:6;:11;;;:15;30547:34;30543:91;;;30596:38;30609:6;:11;;;30622:6;:11;;;30596:12;:38::i;:::-;30667:2;-1:-1:-1;;;;;30652:42:0;30661:4;-1:-1:-1;;;;;30652:42:0;;30671:6;:22;;;30652:42;;;;15972:25:1;;15960:2;15945:18;;15927:76;30652:42:0;;;;;;;;-1:-1:-1;30712:4:0;;29446:1278;-1:-1:-1;;;;;29446:1278:0:o;32373:547::-;32471:7;;32507;;32424;;;;;32525:283;32549:9;:16;32545:20;;32525:283;;;32615:7;32591;:21;32599:9;32609:1;32599:12;;;;;;-1:-1:-1;;;32599:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32599:12:0;32591:21;;;;;;;;;;;;;:31;;:66;;;32650:7;32626;:21;32634:9;32644:1;32634:12;;;;;;-1:-1:-1;;;32634:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32634:12:0;32626:21;;;;;;;;;;;;;:31;32591:66;32587:97;;;32667:7;;32676;;32659:25;;;;;;;32373:547;;:::o;32587:97::-;32719:7;:21;32727:9;32737:1;32727:12;;;;;;-1:-1:-1;;;32727:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32727:12:0;32719:21;;;;;;;;;;;;;32709:31;;:7;:31;:::i;:::-;32699:41;;32775:7;:21;32783:9;32793:1;32783:12;;;;;;-1:-1:-1;;;32783:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32783:12:0;32775:21;;;;;;;;;;;;;32765:31;;:7;:31;:::i;:::-;32755:41;-1:-1:-1;32567:3:0;;;;:::i;:::-;;;;32525:283;;;;32842:7;;32832;;:17;;;;:::i;:::-;32822:7;:27;32818:58;;;32859:7;;32868;;32851:25;;;;;;32373:547;;:::o;32818:58::-;32895:7;;32904;;-1:-1:-1;32373:547:0;-1:-1:-1;32373:547:0:o;28500:439::-;28583:16;;;;;;;28582:17;28574:65;;;;-1:-1:-1;;;28574:65:0;;9767:2:1;28574:65:0;;;9749:21:1;9806:2;9786:18;;;9779:30;9845:34;9825:18;;;9818:62;-1:-1:-1;;;9896:18:1;;;9889:33;9939:19;;28574:65:0;9739:225:1;28574:65:0;28655:20;28666:4;28672:2;28655:10;:20::i;:::-;28654:21;:37;;;;-1:-1:-1;28685:6:0;;-1:-1:-1;;;;;28679:12:0;;;28685:6;;28679:12;28654:37;28650:282;;;-1:-1:-1;;;;;28708:23:0;;;;;;:17;:23;;;;;;;:30;;-1:-1:-1;;28708:30:0;28734:4;28708:30;;;;;;28753:16;:23;;-1:-1:-1;;28753:23:0;28708:30;28753:23;;;28806:15;28791:12;:30;28838:21;:28;;-1:-1:-1;;;;28838:28:0;-1:-1:-1;;;28838:28:0;;;28886:34;;;;;;7125:14:1;;7118:22;7100:41;;7088:2;7073:18;;7055:92;28886:34:0;;;;;;;;28500:439;;:::o;30732:1464::-;30827:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30827:18:0;30858:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30858:25:0;30894:19;30916:10;:8;:10::i;:::-;30894:32;-1:-1:-1;30956:21:0;30894:32;30956:7;:21;:::i;:::-;30939:14;;;:38;30990:1071;;;;-1:-1:-1;;;;;31021:11:0;;;;;;:7;:11;;;;;;;;31017:561;;;31067:15;;31053:11;:29;31117:17;;31101:13;:33;31169:17;;31153:13;:33;31017:561;;;-1:-1:-1;;;;;31212:13:0;;;;;;:7;:13;;;;;;;;31208:370;;;31260:14;;31246:11;:28;31309:16;;31293:13;:32;31360:16;;31344:13;:32;31208:370;;;31431:19;;31417:11;:33;31485:21;;31469:13;:37;31541:21;;31525:13;:37;31208:370;31634:16;;31619:11;;31609:21;;:7;:21;:::i;:::-;31608:42;;;;:::i;:::-;31594:11;;;:56;31731:16;;31713:13;;31697;;:29;;31713:13;31697:29;:::i;:::-;31686:41;;:7;:41;:::i;:::-;31685:62;;;;:::i;:::-;31665:17;;;:82;;;31798:11;;;;:31;;31665:82;31798:31;:::i;:::-;31787:43;;:7;:43;:::i;:::-;31762:68;;31861:11;;;;:25;;31875:11;;31861:25;:::i;:::-;31847:11;;;:39;30990:1071;;;31933:1;31919:11;;;:15;;;31949:17;;;:21;;;31985:32;;;32034:11;;;:15;30990:1071;32151:11;32131:6;:17;;;:31;;;;:::i;:::-;32116:6;:11;;;:47;;;;:::i;:::-;32098:6;:14;;;:66;;;;:::i;:::-;32073:22;;;:91;-1:-1:-1;32073:22:0;30732:1464;-1:-1:-1;;;;;30732:1464:0:o;33204:423::-;33284:19;33307:10;:8;:10::i;:::-;33284:33;-1:-1:-1;33328:18:0;33349:24;33284:33;33349:10;:24;:::i;:::-;33425:4;33409:22;;;;:7;:22;;;;;;33328:45;;-1:-1:-1;33409:35:0;;33328:45;;33409:35;:::i;:::-;33400:4;33384:22;;;;:7;:22;;;;;;;;:60;;;;33458:11;:26;;;;;;33455:104;;;33540:4;33524:22;;;;:7;:22;;;;;;:35;;33549:10;;33524:35;:::i;:::-;33515:4;33499:22;;;;:7;:22;;;;;:60;33455:104;33575:43;;15972:25:1;;;33600:4:0;;-1:-1:-1;;;;;33575:43:0;;;;;15960:2:1;15945:18;33575:43:0;;;;;;;33204:423;;;;:::o;32932:143::-;33022:4;33012:7;;:14;;;;:::i;:::-;33002:7;:24;33050:10;;:17;;33063:4;;33050:17;:::i;:::-;33037:10;:30;-1:-1:-1;;32932:143:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:160:1;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:739::-;222:5;275:3;268:4;260:6;256:17;252:27;242:2;;297:5;290;283:20;242:2;337:6;324:20;363:18;400:2;396;393:10;390:2;;;406:18;;:::i;:::-;481:2;475:9;449:2;535:13;;-1:-1:-1;;531:22:1;;;555:2;527:31;523:40;511:53;;;579:18;;;599:22;;;576:46;573:2;;;625:18;;:::i;:::-;665:10;661:2;654:22;700:2;692:6;685:18;746:3;739:4;734:2;726:6;722:15;718:26;715:35;712:2;;;767:5;760;753:20;712:2;835;828:4;820:6;816:17;809:4;801:6;797:17;784:54;858:15;;;875:4;854:26;847:41;;;;-1:-1:-1;862:6:1;232:686;-1:-1:-1;;;232:686:1:o;923:257::-;982:6;1035:2;1023:9;1014:7;1010:23;1006:32;1003:2;;;1056:6;1048;1041:22;1003:2;1100:9;1087:23;1119:31;1144:5;1119:31;:::i;1185:261::-;1255:6;1308:2;1296:9;1287:7;1283:23;1279:32;1276:2;;;1329:6;1321;1314:22;1276:2;1366:9;1360:16;1385:31;1410:5;1385:31;:::i;1721:866::-;1843:6;1851;1859;1867;1920:3;1908:9;1899:7;1895:23;1891:33;1888:2;;;1942:6;1934;1927:22;1888:2;1986:9;1973:23;2005:31;2030:5;2005:31;:::i;:::-;2055:5;-1:-1:-1;2112:2:1;2097:18;;2084:32;2125:33;2084:32;2125:33;:::i;:::-;2177:7;-1:-1:-1;2235:2:1;2220:18;;2207:32;2258:18;2288:14;;;2285:2;;;2320:6;2312;2305:22;2285:2;2348:50;2390:7;2381:6;2370:9;2366:22;2348:50;:::i;:::-;2338:60;;2451:2;2440:9;2436:18;2423:32;2407:48;;2480:2;2470:8;2467:16;2464:2;;;2501:6;2493;2486:22;2464:2;;2529:52;2573:7;2562:8;2551:9;2547:24;2529:52;:::i;:::-;2519:62;;;1878:709;;;;;;;:::o;2592:398::-;2660:6;2668;2721:2;2709:9;2700:7;2696:23;2692:32;2689:2;;;2742:6;2734;2727:22;2689:2;2786:9;2773:23;2805:31;2830:5;2805:31;:::i;:::-;2855:5;-1:-1:-1;2912:2:1;2897:18;;2884:32;2925:33;2884:32;2925:33;:::i;:::-;2977:7;2967:17;;;2679:311;;;;;:::o;2995:466::-;3072:6;3080;3088;3141:2;3129:9;3120:7;3116:23;3112:32;3109:2;;;3162:6;3154;3147:22;3109:2;3206:9;3193:23;3225:31;3250:5;3225:31;:::i;:::-;3275:5;-1:-1:-1;3332:2:1;3317:18;;3304:32;3345:33;3304:32;3345:33;:::i;:::-;3099:362;;3397:7;;-1:-1:-1;;;3451:2:1;3436:18;;;;3423:32;;3099:362::o;3466:325::-;3531:6;3539;3592:2;3580:9;3571:7;3567:23;3563:32;3560:2;;;3613:6;3605;3598:22;3560:2;3657:9;3644:23;3676:31;3701:5;3676:31;:::i;:::-;3726:5;-1:-1:-1;3750:35:1;3781:2;3766:18;;3750:35;:::i;:::-;3740:45;;3550:241;;;;;:::o;3796:325::-;3864:6;3872;3925:2;3913:9;3904:7;3900:23;3896:32;3893:2;;;3946:6;3938;3931:22;3893:2;3990:9;3977:23;4009:31;4034:5;4009:31;:::i;:::-;4059:5;4111:2;4096:18;;;;4083:32;;-1:-1:-1;;;3883:238:1:o;4126:190::-;4182:6;4235:2;4223:9;4214:7;4210:23;4206:32;4203:2;;;4256:6;4248;4241:22;4203:2;4284:26;4300:9;4284:26;:::i;4321:190::-;4380:6;4433:2;4421:9;4412:7;4408:23;4404:32;4401:2;;;4454:6;4446;4439:22;4401:2;-1:-1:-1;4482:23:1;;4391:120;-1:-1:-1;4391:120:1:o;4516:258::-;4584:6;4592;4645:2;4633:9;4624:7;4620:23;4616:32;4613:2;;;4666:6;4658;4651:22;4613:2;-1:-1:-1;;4694:23:1;;;4764:2;4749:18;;;4736:32;;-1:-1:-1;4603:171:1:o;4779:326::-;4856:6;4864;4872;4925:2;4913:9;4904:7;4900:23;4896:32;4893:2;;;4946:6;4938;4931:22;4893:2;-1:-1:-1;;4974:23:1;;;5044:2;5029:18;;5016:32;;-1:-1:-1;5095:2:1;5080:18;;;5067:32;;4883:222;-1:-1:-1;4883:222:1:o;5110:316::-;5198:6;5206;5214;5267:2;5255:9;5246:7;5242:23;5238:32;5235:2;;;5288:6;5280;5273:22;5235:2;5322:9;5316:16;5306:26;;5372:2;5361:9;5357:18;5351:25;5341:35;;5416:2;5405:9;5401:18;5395:25;5385:35;;5225:201;;;;;:::o;5431:395::-;5517:6;5525;5533;5541;5594:3;5582:9;5573:7;5569:23;5565:33;5562:2;;;5616:6;5608;5601:22;5562:2;-1:-1:-1;;5644:23:1;;;5714:2;5699:18;;5686:32;;-1:-1:-1;5765:2:1;5750:18;;5737:32;;5816:2;5801:18;5788:32;;-1:-1:-1;5552:274:1;-1:-1:-1;5552:274:1:o;6348:607::-;-1:-1:-1;;;;;6707:15:1;;;6689:34;;6754:2;6739:18;;6732:34;;;;6797:2;6782:18;;6775:34;;;;6840:2;6825:18;;6818:34;;;;6889:15;;;6883:3;6868:19;;6861:44;6669:3;6921:19;;6914:35;;;;6638:3;6623:19;;6605:350::o;7386:603::-;7498:4;7527:2;7556;7545:9;7538:21;7588:6;7582:13;7631:6;7626:2;7615:9;7611:18;7604:34;7656:4;7669:140;7683:6;7680:1;7677:13;7669:140;;;7778:14;;;7774:23;;7768:30;7744:17;;;7763:2;7740:26;7733:66;7698:10;;7669:140;;;7827:6;7824:1;7821:13;7818:2;;;7897:4;7892:2;7883:6;7872:9;7868:22;7864:31;7857:45;7818:2;-1:-1:-1;7973:2:1;7952:15;-1:-1:-1;;7948:29:1;7933:45;;;;7980:2;7929:54;;7507:482;-1:-1:-1;;;7507:482:1:o;13461:356::-;13663:2;13645:21;;;13682:18;;;13675:30;13741:34;13736:2;13721:18;;13714:62;13808:2;13793:18;;13635:182::o;15396:425::-;15598:2;15580:21;;;15637:2;15617:18;;;15610:30;15676:34;15671:2;15656:18;;15649:62;15747:31;15742:2;15727:18;;15720:59;15811:3;15796:19;;15570:251::o;16008:983::-;16270:4;16318:3;16307:9;16303:19;16349:6;16338:9;16331:25;16375:2;16413:6;16408:2;16397:9;16393:18;16386:34;16456:3;16451:2;16440:9;16436:18;16429:31;16480:6;16515;16509:13;16546:6;16538;16531:22;16584:3;16573:9;16569:19;16562:26;;16623:2;16615:6;16611:15;16597:29;;16644:4;16657:195;16671:6;16668:1;16665:13;16657:195;;;16736:13;;-1:-1:-1;;;;;16732:39:1;16720:52;;16827:15;;;;16792:12;;;;16768:1;16686:9;16657:195;;;-1:-1:-1;;;;;;;16908:32:1;;;;16903:2;16888:18;;16881:60;-1:-1:-1;;;16972:3:1;16957:19;16950:35;16869:3;16279:712;-1:-1:-1;;;16279:712:1:o;17509:128::-;17549:3;17580:1;17576:6;17573:1;17570:13;17567:2;;;17586:18;;:::i;:::-;-1:-1:-1;17622:9:1;;17557:80::o;17642:120::-;17682:1;17708;17698:2;;17713:18;;:::i;:::-;-1:-1:-1;17747:9:1;;17688:74::o;17767:422::-;17856:1;17899:5;17856:1;17913:270;17934:7;17924:8;17921:21;17913:270;;;17993:4;17989:1;17985:6;17981:17;17975:4;17972:27;17969:2;;;18002:18;;:::i;:::-;18052:7;18042:8;18038:22;18035:2;;;18072:16;;;;18035:2;18151:22;;;;18111:15;;;;17913:270;;;17917:3;17831:358;;;;;:::o;18194:131::-;18254:5;18283:36;18310:8;18304:4;18379:5;18409:8;18399:2;;-1:-1:-1;18450:1:1;18464:5;;18399:2;18498:4;18488:2;;-1:-1:-1;18535:1:1;18549:5;;18488:2;18580:4;18598:1;18593:59;;;;18666:1;18661:130;;;;18573:218;;18593:59;18623:1;18614:10;;18637:5;;;18661:130;18698:3;18688:8;18685:17;18682:2;;;18705:18;;:::i;:::-;-1:-1:-1;;18761:1:1;18747:16;;18776:5;;18573:218;;18875:2;18865:8;18862:16;18856:3;18850:4;18847:13;18843:36;18837:2;18827:8;18824:16;18819:2;18813:4;18810:12;18806:35;18803:77;18800:2;;;-1:-1:-1;18912:19:1;;;18944:5;;18800:2;18991:34;19016:8;19010:4;18991:34;:::i;:::-;19061:6;19057:1;19053:6;19049:19;19040:7;19037:32;19034:2;;;19072:18;;:::i;:::-;19110:20;;18389:747;-1:-1:-1;;;18389:747:1:o;19141:168::-;19181:7;19247:1;19243;19239:6;19235:14;19232:1;19229:21;19224:1;19217:9;19210:17;19206:45;19203:2;;;19254:18;;:::i;:::-;-1:-1:-1;19294:9:1;;19193:116::o;19314:125::-;19354:4;19382:1;19379;19376:8;19373:2;;;19387:18;;:::i;:::-;-1:-1:-1;19424:9:1;;19363:76::o;19444:380::-;19523:1;19519:12;;;;19566;;;19587:2;;19641:4;19633:6;19629:17;19619:27;;19587:2;19694;19686:6;19683:14;19663:18;19660:38;19657:2;;;19740:10;19735:3;19731:20;19728:1;19721:31;19775:4;19772:1;19765:15;19803:4;19800:1;19793:15;19657:2;;19499:325;;;:::o;19829:135::-;19868:3;-1:-1:-1;;19889:17:1;;19886:2;;;19909:18;;:::i;:::-;-1:-1:-1;19956:1:1;19945:13;;19876:88::o;19969:112::-;20001:1;20027;20017:2;;20032:18;;:::i;:::-;-1:-1:-1;20066:9:1;;20007:74::o;20086:127::-;20147:10;20142:3;20138:20;20135:1;20128:31;20178:4;20175:1;20168:15;20202:4;20199:1;20192:15;20218:127;20279:10;20274:3;20270:20;20267:1;20260:31;20310:4;20307:1;20300:15;20334:4;20331:1;20324:15;20350:127;20411:10;20406:3;20402:20;20399:1;20392:31;20442:4;20439:1;20432:15;20466:4;20463:1;20456:15;20482:131;-1:-1:-1;;;;;20557:31:1;;20547:42;;20537:2;;20603:1;20600;20593:12
Swarm Source
ipfs://86c7cd83ecd80947eb6a27a514521529a215b699eb8056e0159f16ed760ecd2f
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.