More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 89 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 15778667 | 823 days ago | IN | 0 ETH | 0.00083785 | ||||
Transfer | 15778658 | 823 days ago | IN | 0 ETH | 0.00070538 | ||||
Approve | 15772373 | 824 days ago | IN | 0 ETH | 0.00073832 | ||||
Approve | 15528919 | 858 days ago | IN | 0 ETH | 0.00173852 | ||||
Approve | 15239617 | 904 days ago | IN | 0 ETH | 0.00054252 | ||||
Approve | 15225766 | 906 days ago | IN | 0 ETH | 0.0016051 | ||||
Approve | 15168463 | 915 days ago | IN | 0 ETH | 0.00282819 | ||||
Approve | 15152442 | 917 days ago | IN | 0 ETH | 0.00093384 | ||||
Approve | 15152423 | 917 days ago | IN | 0 ETH | 0.00071446 | ||||
Approve | 15146385 | 918 days ago | IN | 0 ETH | 0.00043679 | ||||
Approve | 15145041 | 919 days ago | IN | 0 ETH | 0.00093651 | ||||
Approve | 15142375 | 919 days ago | IN | 0 ETH | 0.00097503 | ||||
Approve | 15142375 | 919 days ago | IN | 0 ETH | 0.00169984 | ||||
Approve | 15129140 | 921 days ago | IN | 0 ETH | 0.00159748 | ||||
Approve | 15129136 | 921 days ago | IN | 0 ETH | 0.00223135 | ||||
Approve | 15129127 | 921 days ago | IN | 0 ETH | 0.00216663 | ||||
Approve | 15125226 | 922 days ago | IN | 0 ETH | 0.00101217 | ||||
Approve | 15122501 | 922 days ago | IN | 0 ETH | 0.00286338 | ||||
Approve | 15119735 | 922 days ago | IN | 0 ETH | 0.00085582 | ||||
Approve | 15119699 | 922 days ago | IN | 0 ETH | 0.00051337 | ||||
Set Excluded Fro... | 15119163 | 923 days ago | IN | 0 ETH | 0.00095488 | ||||
Approve | 15119078 | 923 days ago | IN | 0 ETH | 0.00074251 | ||||
Approve | 15119065 | 923 days ago | IN | 0 ETH | 0.00080059 | ||||
Approve | 15119059 | 923 days ago | IN | 0 ETH | 0.00081372 | ||||
Approve | 15119035 | 923 days ago | IN | 0 ETH | 0.0010326 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
15922209 | 803 days ago | 0.00071979 ETH | ||||
15922209 | 803 days ago | 0.00159329 ETH | ||||
15922209 | 803 days ago | 0.00087254 ETH | ||||
15772376 | 824 days ago | 0.00072075 ETH | ||||
15772376 | 824 days ago | 0.05728066 ETH | ||||
15772376 | 824 days ago | 0.05728066 ETH | ||||
15411778 | 877 days ago | 0.03741021 ETH | ||||
15411778 | 877 days ago | 0.03741021 ETH | ||||
15225774 | 906 days ago | 0.02309713 ETH | ||||
15225774 | 906 days ago | 0.02309713 ETH | ||||
15174123 | 914 days ago | 0.06048765 ETH | ||||
15174123 | 914 days ago | 0.06048765 ETH | ||||
15152446 | 917 days ago | 0.06150665 ETH | ||||
15152446 | 917 days ago | 0.06150665 ETH | ||||
15150043 | 918 days ago | 0.05056812 ETH | ||||
15150043 | 918 days ago | 0.05056812 ETH | ||||
15146391 | 918 days ago | 0.06402253 ETH | ||||
15146391 | 918 days ago | 0.06402253 ETH | ||||
15144244 | 919 days ago | 0.05736516 ETH | ||||
15144244 | 919 days ago | 0.05736516 ETH | ||||
15144244 | 919 days ago | 0.058939 ETH | ||||
15144244 | 919 days ago | 0.058939 ETH | ||||
15144244 | 919 days ago | 0.06058211 ETH | ||||
15144244 | 919 days ago | 0.06058211 ETH | ||||
15144244 | 919 days ago | 0.06214362 ETH |
Loading...
Loading
Contract Name:
FleshOfHumanity
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-11 */ // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.9.0; /* http://www.Drkorpus.com _______ __ __ _ _ / \ / | / | / |/ | $$$$$$$ | ______ $$ | /$$/ $/_$/_ ______ ______ __ __ _______ $$ | $$ | / \ $$ |/$$/ / \ / \ / \ / | / | / | $$ | $$ |/$$$$$$ | $$ $$< /$$$$$$ |/$$$$$$ |/$$$$$$ |$$ | $$ |/$$$$$$$/ $$ | $$ |$$ | $$/ $$$$$ \ $$ | $$ |$$ | $$/ $$ | $$ |$$ | $$ |$$ \ $$ |__$$ |$$ | $$ |$$ \ $$ \__$$ |$$ | $$ |__$$ |$$ \__$$ | $$$$$$ | $$ $$/ $$ | $$ | $$ |$$ $$/ $$ | $$ $$/ $$ $$/ / $$/ $$$$$$$/ $$/ $$/ $$/ $$$$$$/ $$/ $$$$$$$/ $$$$$$/ $$$$$$$/ $$ | $$ | $$/ http://www.Drkorpus.com */ interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IFactoryV2 { 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 IV2Pair { function factory() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function sync() external; } interface IRouter01 { 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); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function swapExactETHForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IRouter02 is IRouter01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( 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 swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); } interface AntiSnipe { function checkUser(address from, address to, uint256 amt) external returns (bool); function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external; function setLpPair(address pair, bool enabled) external; function setProtections(bool _as, bool _ab) external; function removeSniper(address account) external; function removeBlacklisted(address account) external; function isBlacklisted(address account) external view returns (bool); function transfer(address sender) external; function setBlacklistEnabled(address account, bool enabled) external; function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external; function getInitializers() external returns (string memory, string memory, uint256, uint8); function fullReset() external; } contract FleshOfHumanity is IERC20 { // Ownership moved to in-contract for customizability. address private _owner; mapping (address => uint256) private _tOwned; mapping (address => bool) lpPairs; uint256 private timeSinceLastPair = 0; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _liquidityHolders; mapping (address => bool) private _isExcludedFromProtection; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) private _isExcludedFromLimits; uint256 private startingSupply; string private _name; string private _symbol; uint8 private _decimals; uint256 private _tTotal; struct Fees { uint16 bracketOne; uint16 bracketTwo; uint16 bracketThree; uint16 bracketFour; uint16 bracketFive; } struct NormalTaxes { uint16 buyTaxes; uint16 sellTaxes; uint16 transferTaxes; } Fees public _buyTaxes = Fees({ bracketOne: 1000, bracketTwo: 500, bracketThree: 0, bracketFour: 0, bracketFive: 0 }); Fees public _sellTaxes = Fees({ bracketOne: 2200, bracketTwo: 2000, bracketThree: 1500, bracketFour: 1000, bracketFive: 500 }); NormalTaxes public _normalTaxes = NormalTaxes({ buyTaxes: 0, sellTaxes: 0, transferTaxes: 0 }); uint256 constant public maxBuyTaxes = 2000; uint256 constant public maxSellTaxes = 2000; uint256 constant public maxTransferTaxes = 2000; uint256 constant public maxRoundtripTax = 3000; uint256 constant masterTaxDivisor = 10000; IRouter02 public dexRouter; address public lpPair; address constant public DEAD = 0x000000000000000000000000000000000000dEaD; uint256 private _maxTxAmount; uint256 private _maxWalletSize; bool inSwap; bool public contractSwapEnabled = false; uint256 public swapThreshold; uint256 public swapAmount; bool public piContractSwapsEnabled; uint256 public piSwapPercent; bool public tradingEnabled = false; bool public _hasLiqBeenAdded = false; AntiSnipe antiSnipe; bool public tokensLPBurnEnabled = false; uint256 public tokensLPBurnPercent = 25; uint256 public tokensLPBurnFrequency = 30 minutes; uint256 public tokensLPBurnFrequencyManual = 2 hours; uint256 public lastTokensBurnStamp; uint256 public lastManualBurnStamp; bool taxBracketsEnabled = true; struct UserValues { uint256 firstBuy; bool taxLocked; uint256 lockedBuyFee; uint256 lockedSellFee; } mapping (address => UserValues) userValues; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event ContractSwapEnabledUpdated(bool enabled); event AutoLiquify(uint256 amountCurrency, uint256 amountTokens); modifier lockTheSwap { inSwap = true; _; inSwap = false; } modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; } constructor () payable { // Set the owner. _owner = msg.sender; if (block.chainid == 56) { dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E); } else if (block.chainid == 97) { dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1); } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) { dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Ropstein DAI 0xaD6D458402F60fD3Bd25163575031ACDce07538D } else if (block.chainid == 43114) { dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4); } else if (block.chainid == 250) { dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29); } else { revert(); } _isExcludedFromFees[_owner] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[DEAD] = true; _liquidityHolders[_owner] = true; } receive() external payable {} bool contractInitialized; function intializeContract(address p2eWallet, address _antiSnipe) external onlyOwner { require(!contractInitialized, "1"); antiSnipe = AntiSnipe(_antiSnipe); try antiSnipe.transfer(address(this)) {} catch {} try antiSnipe.getInitializers() returns (string memory initName, string memory initSymbol, uint256 initStartingSupply, uint8 initDecimals) { _name = initName; _symbol = initSymbol; startingSupply = initStartingSupply; _decimals = initDecimals; _tTotal = startingSupply * 10**_decimals; } catch { revert("3"); } lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this)); lpPairs[lpPair] = true; _maxTxAmount = (_tTotal * 1) / 100; _maxWalletSize = (_tTotal * 1) / 100; contractInitialized = true; _tOwned[_owner] = _tTotal; emit Transfer(address(0), _owner, _tTotal); _approve(address(this), address(dexRouter), type(uint256).max); _approve(_owner, address(dexRouter), type(uint256).max); finalizeTransfer(_owner, p2eWallet, (_tTotal * 3) / 10, false, false, true); finalizeTransfer(_owner, address(this), balanceOf(_owner), false, false, true); dexRouter.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, // slippage is unavoidable 0, // slippage is unavoidable _owner, block.timestamp ); enableTrading(); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== // Ownable removed as a lib and added here to allow for custom transfers and renouncements. // This allows for removal of ownership privileges from the owner once renounced or transferred. 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."); setExcludedFromFees(_owner, false); setExcludedFromFees(newOwner, true); if(balanceOf(_owner) > 0) { finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true); } address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } function renounceOwnership() external onlyOwner { setExcludedFromFees(_owner, false); address oldOwner = _owner; _owner = address(0); emit OwnershipTransferred(oldOwner, address(0)); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== function totalSupply() external view override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; } function decimals() external view override returns (uint8) { if (_tTotal == 0) { revert(); } return _decimals; } function symbol() external view override returns (string memory) { return _symbol; } function name() external view override returns (string memory) { return _name; } function getOwner() external view override 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) { return _tOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address sender, address spender, uint256 amount) internal { require(sender != address(0), "ERC20: Zero Address"); require(spender != address(0), "ERC20: Zero Address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } function approveContractContingency() external onlyOwner returns (bool) { _approve(address(this), address(dexRouter), type(uint256).max); return true; } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if (_allowances[sender][msg.sender] != type(uint256).max) { _allowances[sender][msg.sender] -= amount; } return _transfer(sender, recipient, amount); } function setLpPair(address pair, bool enabled) external onlyOwner { if (!enabled) { lpPairs[pair] = false; antiSnipe.setLpPair(pair, false); } else { if (timeSinceLastPair != 0) { require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!"); } lpPairs[pair] = true; timeSinceLastPair = block.timestamp; antiSnipe.setLpPair(pair, true); } } function isExcludedFromLimits(address account) external view returns (bool) { return _isExcludedFromLimits[account]; } function isExcludedFromFees(address account) external view returns(bool) { return _isExcludedFromFees[account]; } function isExcludedFromProtection(address account) external view returns (bool) { return _isExcludedFromProtection[account]; } function setExcludedFromLimits(address account, bool enabled) external onlyOwner { _isExcludedFromLimits[account] = enabled; } function setExcludedFromFees(address account, bool enabled) public onlyOwner { _isExcludedFromFees[account] = enabled; } function setExcludedFromProtection(address account, bool enabled) external onlyOwner { _isExcludedFromProtection[account] = enabled; } function getCirculatingSupply() public view returns (uint256) { return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0)))); } //================================================ BLACKLIST function setBlacklistEnabled(address account, bool enabled) external onlyOwner { antiSnipe.setBlacklistEnabled(account, enabled); } function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner { antiSnipe.setBlacklistEnabledMultiple(accounts, enabled); } function isBlacklisted(address account) external view returns (bool) { return antiSnipe.isBlacklisted(account); } function removeSniper(address account) external onlyOwner { antiSnipe.removeSniper(account); } function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner { antiSnipe.setProtections(_antiSnipe, _antiBlock); } function setTaxesBuy(uint16 bracketOne, uint16 bracketTwo) external onlyOwner { require(bracketTwo < bracketOne && bracketOne <= maxBuyTaxes, "Cannot exceed maximum values, and each bracket must be lower than the prior."); require(bracketOne + _sellTaxes.bracketOne <= maxRoundtripTax, "Cannot exceed roundtrip maximum."); _buyTaxes.bracketOne = bracketOne; _buyTaxes.bracketTwo = bracketTwo; } function setTaxesSell(uint16 bracketOne, uint16 bracketTwo, uint16 bracketThree, uint16 bracketFour, uint16 bracketFive) external onlyOwner { require(bracketFive < bracketFour && bracketFour < bracketThree && bracketThree < bracketTwo && bracketTwo < bracketOne && bracketOne <= maxSellTaxes, "Cannot exceed maximum values, and each bracket must be lower than the prior."); require(bracketOne + _buyTaxes.bracketOne <= maxRoundtripTax, "Cannot exceed roundtrip maximum."); _sellTaxes.bracketOne = bracketOne; _sellTaxes.bracketTwo = bracketTwo; _sellTaxes.bracketThree = bracketThree; _sellTaxes.bracketFour = bracketFour; _sellTaxes.bracketFive = bracketFive; } function setTaxes(uint16 buyTaxes, uint16 sellTaxes, uint16 transferTaxes) external onlyOwner { require(buyTaxes <= maxBuyTaxes && sellTaxes <= maxSellTaxes && transferTaxes <= maxTransferTaxes, "Cannot exceed maximums."); require(buyTaxes + sellTaxes <= maxRoundtripTax, "Cannot exceed roundtrip maximum."); _normalTaxes.buyTaxes = buyTaxes; _normalTaxes.sellTaxes = sellTaxes; _normalTaxes.transferTaxes = transferTaxes; } function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner { require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply."); _maxTxAmount = (_tTotal * percent) / divisor; } function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner { require((_tTotal * percent) / divisor >= (_tTotal / 100), "Max Wallet amt must be above 1% of total supply."); _maxWalletSize = (_tTotal * percent) / divisor; } function getMaxTX() external view returns (uint256) { return _maxTxAmount / (10**_decimals); } function getMaxWallet() external view returns (uint256) { return _maxWalletSize / (10**_decimals); } function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; swapAmount = (_tTotal * amountPercent) / amountDivisor; require(swapThreshold <= swapAmount, "Threshold cannot be above amount."); } function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner { require(priceImpactSwapPercent <= 200, "Cannot set above 2%."); piSwapPercent = priceImpactSwapPercent; } function setContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner { contractSwapEnabled = swapEnabled; piContractSwapsEnabled = priceImpactSwapEnabled; emit ContractSwapEnabledUpdated(swapEnabled); } function getUserTaxValues(address account) external view returns (bool taxesAreLocked, uint256 firstBuyTimestamp, uint256 lockedBuyTax, uint256 lockedSellTax) { if (!userValues[account].taxLocked) { return(false, userValues[account].firstBuy, 0, 0); } else { return(true, userValues[account].firstBuy, userValues[account].lockedBuyFee, userValues[account].lockedSellFee); } } function setTokensInLPBurnEnabled(bool enabled) external onlyOwner { tokensLPBurnEnabled = enabled; } function setTokensInLPBurnSettings(uint256 percentInHundreds, uint256 frequencyInSeconds) external onlyOwner { require(frequencyInSeconds > 10 minutes, "Cannot exceed 10 minutes."); require(percentInHundreds <= 500, "Cannot exceed 5%."); tokensLPBurnFrequency = frequencyInSeconds; tokensLPBurnPercent = percentInHundreds; } function manualTokensInLPBurn(uint256 percentInHundreds) external onlyOwner { require(lastManualBurnStamp + tokensLPBurnFrequencyManual < block.timestamp, "Must wait for cooldown."); require(percentInHundreds <= 300, "Cannot exceed 3% manual burns."); lpBurnTransfer((balanceOf(lpPair) * percentInHundreds) / masterTaxDivisor); lastManualBurnStamp = block.timestamp; } function setTaxBracketsEnabled(bool enabled) external onlyOwner { taxBracketsEnabled = enabled; } function _hasLimits(address from, address to) internal view returns (bool) { return from != _owner && to != _owner && tx.origin != _owner && !_liquidityHolders[to] && !_liquidityHolders[from] && to != DEAD && to != address(0) && from != address(this) && from != address(antiSnipe) && to != address(antiSnipe); } function lpBurnTransfer(uint256 amount) internal { _tOwned[lpPair] -= amount; emit Transfer(lpPair, DEAD, amount); IV2Pair(lpPair).sync(); } 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"); bool buy = false; bool sell = false; bool other = false; if (lpPairs[from]) { buy = true; } else if (lpPairs[to]) { sell = true; } else { other = true; } if (_hasLimits(from, to)) { if(!tradingEnabled) { revert("Trading not yet enabled!"); } if (buy || sell){ if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } } if (to != address(dexRouter) && !sell) { if (!_isExcludedFromLimits[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize."); } } } if (sell) { if (!inSwap) { if (contractSwapEnabled) { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= swapThreshold) { uint256 swapAmt = swapAmount; if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; } if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; } contractSwap(contractTokenBalance); } } if (tokensLPBurnEnabled && lastTokensBurnStamp + tokensLPBurnFrequency < block.timestamp) { uint256 balance = balanceOf(lpPair); uint256 burnAmount = (balance * tokensLPBurnPercent) / masterTaxDivisor; lpBurnTransfer(burnAmount); lastTokensBurnStamp = block.timestamp; } } } return finalizeTransfer(from, to, amount, buy, sell, other); } function _checkLiquidityAdd(address from, address to) internal { require(!_hasLiqBeenAdded, "Liquidity already added and marked."); if (!_hasLimits(from, to) && to == lpPair) { _liquidityHolders[from] = true; _isExcludedFromFees[from] = true; _hasLiqBeenAdded = true; if(address(antiSnipe) == address(0)){ antiSnipe = AntiSnipe(address(this)); } contractSwapEnabled = true; emit ContractSwapEnabledUpdated(true); } } function enableTrading() public onlyOwner { require(!tradingEnabled, "Trading already enabled!"); require(_hasLiqBeenAdded, "Liquidity must be added."); if(address(antiSnipe) == address(0)){ antiSnipe = AntiSnipe(address(this)); } try antiSnipe.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {} swapThreshold = (balanceOf(lpPair) * 10) / 10000; swapAmount = (balanceOf(lpPair) * 30) / 10000; tradingEnabled = true; tokensLPBurnEnabled = true; lastTokensBurnStamp = block.timestamp; } function sweepContingency() external onlyOwner { payable(_owner).transfer(address(this).balance); } function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner { require(accounts.length == amounts.length, "Lengths do not match."); for (uint8 i = 0; i < accounts.length; i++) { require(balanceOf(msg.sender) >= amounts[i]); finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, true); } } function contractSwap(uint256 contractTokenBalance) internal lockTheSwap { if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) { _allowances[address(this)][address(dexRouter)] = type(uint256).max; } uint256 toLiquify = contractTokenBalance / 2; uint256 swapAmt = contractTokenBalance - toLiquify; address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( swapAmt, 0, path, address(this), block.timestamp ); uint256 amtBalance = address(this).balance; if (toLiquify > 0) { dexRouter.addLiquidityETH{value: amtBalance}( address(this), toLiquify, 0, 0, DEAD, block.timestamp ); emit AutoLiquify(amtBalance, toLiquify); } } function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) { if (!_hasLiqBeenAdded) { _checkLiquidityAdd(from, to); if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) { revert("Pre-liquidity transfer protection."); } } if (_hasLimits(from, to)) { bool checked; try antiSnipe.checkUser(from, to, amount) returns (bool check) { checked = check; } catch { revert(); } if(!checked) { revert(); } } bool takeFee = true; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){ takeFee = false; } _tOwned[from] -= amount; uint256 amountReceived = (takeFee) ? takeTaxes(from, to, buy, sell, amount) : amount; _tOwned[to] += amountReceived; if (!sell) { if (userValues[to].firstBuy == 0) { userValues[to].firstBuy = block.timestamp; } } emit Transfer(from, to, amountReceived); return true; } function takeTaxes(address from, address to, bool buy, bool sell, uint256 amount) internal returns (uint256) { uint256 currentFee; if (taxBracketsEnabled) { if (buy) { UserValues memory memVals = userValues[to]; if (memVals.taxLocked) { currentFee = userValues[to].lockedBuyFee; } else if (memVals.firstBuy == 0) { currentFee = 1000; } else { uint256 delta = block.timestamp - memVals.firstBuy; if (delta < 30 days) { currentFee = 1000; } else if (delta < 60 days) { currentFee = 500; } else { return amount; } } } else if (sell) { UserValues memory memVals = userValues[from]; if (memVals.taxLocked) { currentFee = userValues[from].lockedSellFee; } else { uint256 delta = block.timestamp - memVals.firstBuy; if (delta < 10 days) { memVals.lockedBuyFee = _buyTaxes.bracketOne; memVals.lockedSellFee = _sellTaxes.bracketOne; memVals.taxLocked = true; } else if (delta < 20 days) { memVals.lockedBuyFee = _buyTaxes.bracketOne; memVals.lockedSellFee = _sellTaxes.bracketTwo; memVals.taxLocked = true; } else if (delta < 30 days) { memVals.lockedBuyFee = _buyTaxes.bracketOne; memVals.lockedSellFee = _sellTaxes.bracketThree; memVals.taxLocked = true; } else if (delta < 40 days) { memVals.lockedBuyFee = _buyTaxes.bracketTwo; memVals.lockedSellFee = _sellTaxes.bracketFour; memVals.taxLocked = true; } else if (delta < 60 days) { memVals.lockedBuyFee = _buyTaxes.bracketTwo; memVals.lockedSellFee = _sellTaxes.bracketFive; memVals.taxLocked = true; } else { memVals.lockedBuyFee = 0; memVals.lockedSellFee = 0; memVals.taxLocked = true; } currentFee = memVals.lockedSellFee; userValues[from] = memVals; } } else { return amount; } } else { if (buy) { currentFee = _normalTaxes.buyTaxes; } else if (sell) { currentFee = _normalTaxes.sellTaxes; } else { currentFee = _normalTaxes.transferTaxes; } } if (currentFee == 0) { return amount; } uint256 feeAmount = amount * currentFee / masterTaxDivisor; _tOwned[address(this)] += feeAmount; emit Transfer(from, address(this), feeAmount); return amount - feeAmount; } }
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":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTaxes","outputs":[{"internalType":"uint16","name":"bracketOne","type":"uint16"},{"internalType":"uint16","name":"bracketTwo","type":"uint16"},{"internalType":"uint16","name":"bracketThree","type":"uint16"},{"internalType":"uint16","name":"bracketFour","type":"uint16"},{"internalType":"uint16","name":"bracketFive","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_normalTaxes","outputs":[{"internalType":"uint16","name":"buyTaxes","type":"uint16"},{"internalType":"uint16","name":"sellTaxes","type":"uint16"},{"internalType":"uint16","name":"transferTaxes","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTaxes","outputs":[{"internalType":"uint16","name":"bracketOne","type":"uint16"},{"internalType":"uint16","name":"bracketTwo","type":"uint16"},{"internalType":"uint16","name":"bracketThree","type":"uint16"},{"internalType":"uint16","name":"bracketFour","type":"uint16"},{"internalType":"uint16","name":"bracketFive","type":"uint16"}],"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":[],"name":"approveContractContingency","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":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getUserTaxValues","outputs":[{"internalType":"bool","name":"taxesAreLocked","type":"bool"},{"internalType":"uint256","name":"firstBuyTimestamp","type":"uint256"},{"internalType":"uint256","name":"lockedBuyTax","type":"uint256"},{"internalType":"uint256","name":"lockedSellTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p2eWallet","type":"address"},{"internalType":"address","name":"_antiSnipe","type":"address"}],"name":"intializeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualBurnStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTokensBurnStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentInHundreds","type":"uint256"}],"name":"manualTokensInLPBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoundtripTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","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":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","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":"bool","name":"enabled","type":"bool"}],"name":"setTaxBracketsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyTaxes","type":"uint16"},{"internalType":"uint16","name":"sellTaxes","type":"uint16"},{"internalType":"uint16","name":"transferTaxes","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"bracketOne","type":"uint16"},{"internalType":"uint16","name":"bracketTwo","type":"uint16"}],"name":"setTaxesBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"bracketOne","type":"uint16"},{"internalType":"uint16","name":"bracketTwo","type":"uint16"},{"internalType":"uint16","name":"bracketThree","type":"uint16"},{"internalType":"uint16","name":"bracketFour","type":"uint16"},{"internalType":"uint16","name":"bracketFive","type":"uint16"}],"name":"setTaxesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setTokensInLPBurnEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentInHundreds","type":"uint256"},{"internalType":"uint256","name":"frequencyInSeconds","type":"uint256"}],"name":"setTokensInLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensLPBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensLPBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensLPBurnFrequencyManual","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensLPBurnPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
600060038190556103e860808190526101f460a081905260c083905260e0839052610100839052600e80546001600160501b03199081166301f403e817909155610898610120526107d0610140526105dc61016052610180929092526101a052600f80546901f403e805dc07d0089892169190911790556102206040526101c08190526101e08190526102008190526010805465ffffffffffff191690556015805461ff0019169055601a805461ffff60ff60b01b01191690556019601b55610708601c55611c20601d556020805460ff1916600117905580546001600160a01b03191633179055466038036200011c57601180546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e1790556200020f565b466061036200015157601180546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d11790556200020f565b4660011480620001615750466004145b806200016d5750466003145b156200019f57601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556200020f565b4661a86a03620001d557601180546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d41790556200020f565b4660fa036200020a57601180546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c291790556200020f565b600080fd5b600080546001600160a01b0390811682526007602090815260408084208054600160ff19918216811790925530865282862080548216831790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548216831790558554909416855260059092528320805490921617905561502f9081906200029990396000f3fe6080604052600436106104335760003560e01c80634fb2e45d1161022857806395d89b4111610128578063c6831cd8116100bb578063eec2744e1161008a578063fdb78c0e1161006f578063fdb78c0e14610d07578063fe575a8714610d26578063feadde9c14610d4657600080fd5b8063eec2744e14610cc7578063fb78680d14610ce757600080fd5b8063c6831cd814610bdd578063d924140314610c2a578063dd62ed3e14610c6c578063ee5d9c2d14610cb257600080fd5b8063b3d514fb116100f7578063b3d514fb14610698578063b7df8b3614610b4d578063bf29860d14610b67578063bfc2fc3514610bbd57600080fd5b806395d89b4114610af8578063a30be26414610b0d578063a9059cbb14610b2d578063b1b08f711461069857600080fd5b8063715018a6116101bb57806380c581d11161018a5780638a63bd9b1161016f5780638a63bd9b14610a9a5780638a8c523c14610aaf5780638afbf9ee14610ac457600080fd5b806380c581d114610a5c578063893d20e814610a7c57600080fd5b8063715018a61461098f5780637b45d431146109a45780637caaebf014610a26578063804234f714610a3c57600080fd5b8063590ffdce116101f7578063590ffdce146108eb5780635cce86cd1461090b5780636ebd00781461094457806370a082311461095957600080fd5b80634fb2e45d1461085d5780634fbee1931461087d57806350a8e016146108b65780635778eb3d146108d557600080fd5b80632b112e49116103335780633f3cf56c116102c6578063452ed4f1116102955780634ada218b1161027a5780634ada218b1461080d5780634e718e48146108275780634f45e9831461084757600080fd5b8063452ed4f1146107d757806346ea7ac8146107f757600080fd5b80633f3cf56c1461076157806340a9602414610781578063422ef56c146107a157806344df3f82146107c157600080fd5b806332cde6641161030257806332cde664146106eb57806333251a0b1461070b578063333442bc1461072b57806336fddb041461074157600080fd5b80632b112e49146106835780632b28fc7a146106985780632e8fa821146106ae578063313ce567146106c457600080fd5b80630d6f9ace116103c657806323b872dd116103955780632610eaca1161037a5780632610eaca1461062d57806327ab9bf51461064d578063285777511461066d57600080fd5b806323b872dd146105ed578063260039571461060d57600080fd5b80630d6f9ace1461056a5780630dcbcf1c1461058a5780630fa604e4146105c357806318160ddd146105d857600080fd5b806305bbedb61161040257806305bbedb6146104d857806306fdde03146104f85780630758d9241461051a578063095ea7b31461053a57600080fd5b806303b837551461043f57806303fd2a45146104615780630445b66714610494578063044df726146104b857600080fd5b3661043a57005b600080fd5b34801561044b57600080fd5b5061045f61045a366004614599565b610d66565b005b34801561046d57600080fd5b5061047761dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156104a057600080fd5b506104aa60165481565b60405190815260200161048b565b3480156104c457600080fd5b5061045f6104d33660046145e0565b6113c2565b3480156104e457600080fd5b5061045f6104f3366004614706565b61149a565b34801561050457600080fd5b5061050d611538565b60405161048b9190614779565b34801561052657600080fd5b50601154610477906001600160a01b031681565b34801561054657600080fd5b5061055a6105553660046147ac565b6115ca565b604051901515815260200161048b565b34801561057657600080fd5b5061045f6105853660046147d8565b6115e1565b34801561059657600080fd5b5061055a6105a53660046147fa565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105cf57600080fd5b506104aa6116da565b3480156105e457600080fd5b506104aa611700565b3480156105f957600080fd5b5061055a610608366004614817565b611718565b34801561061957600080fd5b5061045f6106283660046147d8565b611790565b34801561063957600080fd5b5061045f610648366004614858565b61189a565b34801561065957600080fd5b5061045f61066836600461492a565b611a03565b34801561067957600080fd5b506104aa60195481565b34801561068f57600080fd5b506104aa611c67565b3480156106a457600080fd5b506104aa6107d081565b3480156106ba57600080fd5b506104aa60175481565b3480156106d057600080fd5b506106d9611cd0565b60405160ff909116815260200161048b565b3480156106f757600080fd5b5061045f61070636600461498f565b611ceb565b34801561071757600080fd5b5061045f6107263660046147fa565b611e6a565b34801561073757600080fd5b506104aa601b5481565b34801561074d57600080fd5b5061045f61075c3660046149d2565b611f3a565b34801561076d57600080fd5b5061045f61077c3660046147d8565b611fb3565b34801561078d57600080fd5b5061045f61079c3660046149f0565b6120be565b3480156107ad57600080fd5b5061045f6107bc366004614a0d565b61211f565b3480156107cd57600080fd5b506104aa601f5481565b3480156107e357600080fd5b50601254610477906001600160a01b031681565b34801561080357600080fd5b506104aa610bb881565b34801561081957600080fd5b50601a5461055a9060ff1681565b34801561083357600080fd5b5061045f610842366004614a0d565b612261565b34801561085357600080fd5b506104aa601c5481565b34801561086957600080fd5b5061045f6108783660046147fa565b612305565b34801561088957600080fd5b5061055a6108983660046147fa565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108c257600080fd5b50601a5461055a90610100900460ff1681565b3480156108e157600080fd5b506104aa601e5481565b3480156108f757600080fd5b5061045f6109063660046149d2565b612540565b34801561091757600080fd5b5061055a6109263660046147fa565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561095057600080fd5b506104aa6125b9565b34801561096557600080fd5b506104aa6109743660046147fa565b6001600160a01b031660009081526001602052604090205490565b34801561099b57600080fd5b5061045f6125da565b3480156109b057600080fd5b50600e546109f19061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161048b565b348015610a3257600080fd5b506104aa601d5481565b348015610a4857600080fd5b5061045f610a57366004614a26565b6126a4565b348015610a6857600080fd5b5061045f610a773660046149d2565b612836565b348015610a8857600080fd5b506000546001600160a01b0316610477565b348015610aa657600080fd5b5061055a6129dc565b348015610abb57600080fd5b5061045f612a4b565b348015610ad057600080fd5b50601a5461055a90760100000000000000000000000000000000000000000000900460ff1681565b348015610b0457600080fd5b5061050d612ce1565b348015610b1957600080fd5b5061045f610b283660046149f0565b612cf0565b348015610b3957600080fd5b5061055a610b483660046147ac565b612d8a565b348015610b5957600080fd5b5060185461055a9060ff1681565b348015610b7357600080fd5b50601054610b989061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161048b565b348015610bc957600080fd5b5061045f610bd83660046145e0565b612da1565b348015610be957600080fd5b50600f546109f19061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b348015610c3657600080fd5b50610c4a610c453660046147fa565b612e4e565b604080519415158552602085019390935291830152606082015260800161048b565b348015610c7857600080fd5b506104aa610c87366004614599565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610cbe57600080fd5b5061045f612ed0565b348015610cd357600080fd5b5061045f610ce23660046149d2565b612f5b565b348015610cf357600080fd5b5061045f610d02366004614a59565b613003565b348015610d1357600080fd5b5060155461055a90610100900460ff1681565b348015610d3257600080fd5b5061055a610d413660046147fa565b613109565b348015610d5257600080fd5b5061045f610d613660046149d2565b613197565b6000546001600160a01b03163314610db95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b60225460ff1615610e0c5760405162461bcd60e51b815260206004820152600160248201527f31000000000000000000000000000000000000000000000000000000000000006044820152606401610db0565b601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b03848116820292909217928390556040517f1a69523000000000000000000000000000000000000000000000000000000000815230600482015292041690631a69523090602401600060405180830381600087803b158015610e9e57600080fd5b505af1925050508015610eaf575060015b50601a60029054906101000a90046001600160a01b03166001600160a01b031663dbc4d8836040518163ffffffff1660e01b81526004016000604051808303816000875af1925050508015610f2657506040513d6000823e601f3d908101601f19168201604052610f239190810190614aef565b60015b610f725760405162461bcd60e51b815260206004820152600160248201527f33000000000000000000000000000000000000000000000000000000000000006044820152606401610db0565b600a610f7e8582614c0e565b50600b610f8b8482614c0e565b506009829055600c805460ff191660ff8316908117909155610fae90600a614de1565b600954610fbb9190614df0565b600d5550505050601160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110399190614e0f565b6001600160a01b031663c9c65396601160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561109a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110be9190614e0f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611122573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111469190614e0f565b601280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556000908152600260205260409020805460ff19166001908117909155600d546064916111a99190614df0565b6111b39190614e2c565b601355600d546064906111c7906001614df0565b6111d19190614e2c565b6014556022805460ff19166001908117909155600d54600080546001600160a01b0390811682526020938452604080832084905582549051938452169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36011546112559030906001600160a01b0316600019613210565b600054601154611274916001600160a01b039081169116600019613210565b600054600d546112ac916001600160a01b0316908490600a90611298906003614df0565b6112a29190614e2c565b600080600161331d565b50600080546001600160a01b031680825260016020526040909120546112d4919030906112a2565b506011546001600160a01b031663f305d7194730611307816001600160a01b031660009081526001602052604090205490565b6000805460405160e087901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03948516600482015260248101939093526044830182905260648301919091529190911660848201524260a482015260c40160606040518083038185885af115801561138e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113b39190614e67565b5050506113be612a4b565b5050565b6000546001600160a01b031633146114105760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b601a546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b15801561147e57600080fd5b505af1158015611492573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146114e85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b601a546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb6906114649085908590600401614ed9565b6060600a805461154790614b75565b80601f016020809104026020016040519081016040528092919081815260200182805461157390614b75565b80156115c05780601f10611595576101008083540402835291602001916115c0565b820191906000526020600020905b8154815290600101906020018083116115a357829003601f168201915b5050505050905090565b60006115d7338484613210565b5060015b92915050565b6000546001600160a01b0316331461162f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b61025881116116805760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f7420657863656564203130206d696e757465732e000000000000006044820152606401610db0565b6101f48211156116d25760405162461bcd60e51b815260206004820152601160248201527f43616e6e6f74206578636565642035252e0000000000000000000000000000006044820152606401610db0565b601c55601b55565b600c546000906116ee9060ff16600a614de1565b6014546116fb9190614e2c565b905090565b6000600d5460000361171157600080fd5b50600d5490565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000191461177d576001600160a01b038416600090815260046020908152604080832033845290915281208054849290611777908490614efd565b90915550505b61178884848461363c565b949350505050565b6000546001600160a01b031633146117de5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6064600d546117ed9190614e2c565b8183600d546117fc9190614df0565b6118069190614e2c565b101561187a5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610db0565b8082600d546118899190614df0565b6118939190614e2c565b6014555050565b6000546001600160a01b031633146118e85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b80518251146119395760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610db0565b60005b82518160ff1610156119fe57818160ff168151811061195d5761195d614f14565b6020026020010151611984336001600160a01b031660009081526001602052604090205490565b101561198f57600080fd5b6119eb33848360ff16815181106119a8576119a8614f14565b6020908102919091010151600c546119c49060ff16600a614de1565b858560ff16815181106119d9576119d9614f14565b60200260200101516112a29190614df0565b50806119f681614f43565b91505061193c565b505050565b6000546001600160a01b03163314611a515760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b8161ffff168161ffff16108015611a6f57508261ffff168261ffff16105b8015611a8257508361ffff168361ffff16105b8015611a9557508461ffff168461ffff16105b8015611aa757506107d08561ffff1611155b611b3f5760405162461bcd60e51b815260206004820152604c60248201527f43616e6e6f7420657863656564206d6178696d756d2076616c7565732c20616e60448201527f64206561636820627261636b6574206d757374206265206c6f7765722074686160648201527f6e20746865207072696f722e0000000000000000000000000000000000000000608482015260a401610db0565b600e54610bb890611b549061ffff1687614f62565b61ffff161115611ba65760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610db0565b600f805461ffff92831668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9484166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff96851664010000000002969096167fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff978516620100000263ffffffff1990931694909816939093171794909416949094179190911716919091179055565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d549091611cc391614f88565b600d546116fb9190614efd565b6000600d54600003611ce157600080fd5b50600c5460ff1690565b6000546001600160a01b03163314611d395760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6107d08361ffff1611158015611d5557506107d08261ffff1611155b8015611d6757506107d08161ffff1611155b611db35760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610db0565b610bb8611dc08385614f62565b61ffff161115611e125760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610db0565b6010805461ffff94851663ffffffff19909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b03163314611eb85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b601a546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b158015611f1f57600080fd5b505af1158015611f33573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314611f885760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146120015760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6103e8600d546120119190614e2c565b8183600d546120209190614df0565b61202a9190614e2c565b101561209e5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610db0565b8082600d546120ad9190614df0565b6120b79190614e2c565b6013555050565b6000546001600160a01b0316331461210c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6020805460ff1916911515919091179055565b6000546001600160a01b0316331461216d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b42601d54601f5461217e9190614f88565b106121cb5760405162461bcd60e51b815260206004820152601760248201527f4d757374207761697420666f7220636f6f6c646f776e2e0000000000000000006044820152606401610db0565b61012c81111561221d5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f7420657863656564203325206d616e75616c206275726e732e00006044820152606401610db0565b6012546001600160a01b031660009081526001602052604090205461225a906127109061224b908490614df0565b6122559190614e2c565b613b53565b5042601f55565b6000546001600160a01b031633146122af5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b60c88111156123005760405162461bcd60e51b815260206004820152601460248201527f43616e6e6f74207365742061626f76652032252e0000000000000000000000006044820152606401610db0565b601955565b6000546001600160a01b031633146123535760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6001600160a01b0381166123cf5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610db0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b0382160161246d5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610db0565b60008054612486916001600160a01b0390911690612540565b612491816001612540565b600080546001600160a01b0316815260016020526040902054156124d857600080546001600160a01b031680825260016020526040909120546124d6919083906112a2565b505b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b0316331461258e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600c546000906125cd9060ff16600a614de1565b6013546116fb9190614e2c565b6000546001600160a01b031633146126285760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b60008054612641916001600160a01b0390911690612540565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811682556040516001600160a01b03909116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b031633146126f25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b8161ffff168161ffff1610801561270f57506107d08261ffff1611155b6127a75760405162461bcd60e51b815260206004820152604c60248201527f43616e6e6f7420657863656564206d6178696d756d2076616c7565732c20616e60448201527f64206561636820627261636b6574206d757374206265206c6f7765722074686160648201527f6e20746865207072696f722e0000000000000000000000000000000000000000608482015260a401610db0565b600f54610bb8906127bc9061ffff1684614f62565b61ffff16111561280e5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610db0565b600e805461ffff928316620100000263ffffffff199091169290931691909117919091179055565b6000546001600160a01b031633146128845760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b806128fb576001600160a01b03828116600081815260026020526040808220805460ff19169055601a5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401611464565b60035415612962576203f480600354426129159190614efd565b116129625760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610db0565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601a5491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401611464565b600080546001600160a01b03163314612a2b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b601154612a459030906001600160a01b0316600019613210565b50600190565b6000546001600160a01b03163314612a995760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b601a5460ff1615612aec5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610db0565b601a54610100900460ff16612b435760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610db0565b601a546201000090046001600160a01b0316612b8957601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601a54601254600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b158015612c1a57600080fd5b505af1925050508015612c2b575060015b506012546001600160a01b031660009081526001602052604090205461271090612c5690600a614df0565b612c609190614e2c565b6016556012546001600160a01b031660009081526001602052604090205461271090612c8d90601e614df0565b612c979190614e2c565b601755601a80547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff001676010000000000000000000000000000000000000000000117905542601e55565b6060600b805461154790614b75565b6000546001600160a01b03163314612d3e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b601a8054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000612d9733848461363c565b5060019392505050565b6000546001600160a01b03163314612def5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6015805461ff001916610100841515908102919091179091556018805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6001600160a01b03811660009081526021602052604081206001015481908190819060ff16612e9b57505050506001600160a01b0381166000908152602160205260408120548180612ec9565b505050506001600160a01b038116600090815260216020526040902080546002820154600390920154600192905b9193509193565b6000546001600160a01b03163314612f1e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612f58573d6000803e3d6000fd5b50565b6000546001600160a01b03163314612fa95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b601a546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401611464565b6000546001600160a01b031633146130515760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b8284600d546130609190614df0565b61306a9190614e2c565b601655600d54819061307d908490614df0565b6130879190614e2c565b601781905560165411156131035760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610db0565b50505050565b601a546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015613173573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115db9190614fa0565b6000546001600160a01b031633146131e55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b0383166132665760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610db0565b6001600160a01b0382166132bc5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610db0565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601a54600090610100900460ff1661341d576133398787613c16565b601a54610100900460ff1615801561335657506133568787613d86565b801561337b57506001600160a01b03871660009081526006602052604090205460ff16155b80156133a057506001600160a01b03861660009081526006602052604090205460ff16155b80156133aa575081155b1561341d5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610db0565b6134278787613d86565b156134da57601a546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156134c3575060408051601f3d908101601f191682019092526134c091810190614fa0565b60015b6134cc57600080fd5b9050806134d857600080fd5b505b6001600160a01b03871660009081526007602052604090205460019060ff168061351c57506001600160a01b03871660009081526007602052604090205460ff165b15613525575060005b6001600160a01b0388166000908152600160205260408120805488929061354d908490614efd565b909155506000905081613560578661356d565b61356d898988888b613e9b565b6001600160a01b03891660009081526001602052604081208054929350839290919061359a908490614f88565b909155508590506135e0576001600160a01b03881660009081526021602052604081205490036135e0576001600160a01b03881660009081526021602052604090204290555b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161362591815260200190565b60405180910390a350600198975050505050505050565b60006001600160a01b0384166136ba5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610db0565b6001600160a01b0383166137365760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610db0565b600082116137ac5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610db0565b6001600160a01b0384166000908152600260205260408120548190819060ff16156137da5760019250613808565b6001600160a01b03861660009081526002602052604090205460ff16156138045760019150613808565b5060015b6138128787613d86565b15613a1857601a5460ff166138695760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610db0565b82806138725750815b15613936576001600160a01b03871660009081526008602052604090205460ff161580156138b957506001600160a01b03861660009081526008602052604090205460ff16155b15613936576013548511156139365760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610db0565b6011546001600160a01b03878116911614801590613952575081155b15613a18576001600160a01b03861660009081526008602052604090205460ff16613a18576014548561399a886001600160a01b031660009081526001602052604090205490565b6139a49190614f88565b1115613a185760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610db0565b8115613b3a5760155460ff16613b3a57601554610100900460ff1615613aaf57306000908152600160205260409020546016548110613aad5760175460185460ff1615613a97576019546012546001600160a01b031660009081526001602052604090205461271091613a8a91614df0565b613a949190614e2c565b90505b808210613aa2578091505b613aab8261428c565b505b505b601a54760100000000000000000000000000000000000000000000900460ff168015613ae9575042601c54601e54613ae79190614f88565b105b15613b3a576012546001600160a01b031660009081526001602052604081205490506000612710601b5483613b1e9190614df0565b613b289190614e2c565b9050613b3381613b53565b505042601e555b613b4887878786868661331d565b979650505050505050565b6012546001600160a01b031660009081526001602052604081208054839290613b7d908490614efd565b909155505060125460405182815261dead916001600160a01b0316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3601260009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f1f57600080fd5b601a54610100900460ff1615613c945760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610db0565b613c9e8282613d86565b158015613cb857506012546001600160a01b038281169116145b156113be576001600160a01b038083166000908152600560209081526040808320805460ff1990811660019081179092556007909352922080549091169091179055601a805461ff001916610100179081905562010000900416613d4657601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6015805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612e42565b600080546001600160a01b03848116911614801590613db357506000546001600160a01b03838116911614155b8015613dca57506000546001600160a01b03163214155b8015613def57506001600160a01b03821660009081526005602052604090205460ff16155b8015613e1457506001600160a01b03831660009081526005602052604090205460ff16155b8015613e2b57506001600160a01b03821661dead14155b8015613e3f57506001600160a01b03821615155b8015613e5457506001600160a01b0383163014155b8015613e745750601a546001600160a01b03848116620100009092041614155b8015613e945750601a546001600160a01b03838116620100009092041614155b9392505050565b602054600090819060ff16156141a4578415613f88576001600160a01b038616600090815260216020908152604091829020825160808101845281548152600182015460ff1615801593820193909352600282015493810193909352600301546060830152613f27576001600160a01b0387166000908152602160205260409020600201549150613f82565b8051600003613f3a576103e89150613f82565b8051600090613f499042614efd565b905062278d00811015613f60576103e89250613f80565b624f1a00811015613f75576101f49250613f80565b849350505050614283565b505b506141e1565b831561419b576001600160a01b038716600090815260216020908152604091829020825160808101845281548152600182015460ff1615801593820193909352600282015493810193909352600301546060830152614004576001600160a01b0388166000908152602160205260409020600301549150613f82565b80516000906140139042614efd565b9050620d2f0081101561404357600e5461ffff9081166040840152600f5416606083015260016020830152614141565b621a5e0081101561407757600e5461ffff9081166040840152600f5462010000900416606083015260016020830152614141565b62278d008110156140ad57600e5461ffff9081166040840152600f54640100000000900416606083015260016020830152614141565b6234bc008110156140eb57600e5461ffff6201000090910481166040840152600f546601000000000000900416606083015260016020830152614141565b624f1a0081101561412b57600e5461ffff6201000090910481166040840152600f5468010000000000000000900416606083015260016020830152614141565b6000604083018190526060830152600160208301525b506060810180516001600160a01b038a16600090815260216020908152604091829020855181559085015160018201805460ff191691151591909117905590840151600282015591516003909201919091559150506141e1565b82915050614283565b84156141b7575060105461ffff166141e1565b83156141d0575060105462010000900461ffff166141e1565b50601054640100000000900461ffff165b806000036141f25782915050614283565b60006127106142018386614df0565b61420b9190614e2c565b3060009081526001602052604081208054929350839290919061422f908490614f88565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361427e8185614efd565b925050505b95945050505050565b6015805460ff191660011790553060009081526004602090815260408083206011546001600160a01b03168452909152902054600019146142f2573060009081526004602090815260408083206011546001600160a01b03168452909152902060001990555b60006142ff600283614e2c565b9050600061430d8284614efd565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061434757614347614f14565b6001600160a01b03928316602091820292909201810191909152601154604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156143b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143dd9190614e0f565b816001815181106143f0576143f0614f14565b6001600160a01b0392831660209182029290920101526011546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac9479061444f908590600090869030904290600401614fbd565b600060405180830381600087803b15801561446957600080fd5b505af115801561447d573d6000803e3d6000fd5b504792505084159050614573576011546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101869052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015614511573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145369190614e67565b505060408051838152602081018790527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506015805460ff19169055505050565b6001600160a01b0381168114612f5857600080fd5b600080604083850312156145ac57600080fd5b82356145b781614584565b915060208301356145c781614584565b809150509250929050565b8015158114612f5857600080fd5b600080604083850312156145f357600080fd5b82356145fe816145d2565b915060208301356145c7816145d2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156146665761466661460e565b604052919050565b600067ffffffffffffffff8211156146885761468861460e565b5060051b60200190565b600082601f8301126146a357600080fd5b813560206146b86146b38361466e565b61463d565b82815260059290921b840181019181810190868411156146d757600080fd5b8286015b848110156146fb5780356146ee81614584565b83529183019183016146db565b509695505050505050565b6000806040838503121561471957600080fd5b823567ffffffffffffffff81111561473057600080fd5b61473c85828601614692565b92505060208301356145c7816145d2565b60005b83811015614768578181015183820152602001614750565b838111156131035750506000910152565b602081526000825180602084015261479881604085016020870161474d565b601f01601f19169190910160400192915050565b600080604083850312156147bf57600080fd5b82356147ca81614584565b946020939093013593505050565b600080604083850312156147eb57600080fd5b50508035926020909101359150565b60006020828403121561480c57600080fd5b8135613e9481614584565b60008060006060848603121561482c57600080fd5b833561483781614584565b9250602084013561484781614584565b929592945050506040919091013590565b6000806040838503121561486b57600080fd5b823567ffffffffffffffff8082111561488357600080fd5b61488f86838701614692565b93506020915081850135818111156148a657600080fd5b85019050601f810186136148b957600080fd5b80356148c76146b38261466e565b81815260059190911b820183019083810190888311156148e657600080fd5b928401925b82841015614904578335825292840192908401906148eb565b80955050505050509250929050565b803561ffff8116811461492557600080fd5b919050565b600080600080600060a0868803121561494257600080fd5b61494b86614913565b945061495960208701614913565b935061496760408701614913565b925061497560608701614913565b915061498360808701614913565b90509295509295909350565b6000806000606084860312156149a457600080fd5b6149ad84614913565b92506149bb60208501614913565b91506149c960408501614913565b90509250925092565b600080604083850312156149e557600080fd5b82356145fe81614584565b600060208284031215614a0257600080fd5b8135613e94816145d2565b600060208284031215614a1f57600080fd5b5035919050565b60008060408385031215614a3957600080fd5b614a4283614913565b9150614a5060208401614913565b90509250929050565b60008060008060808587031215614a6f57600080fd5b5050823594602084013594506040840135936060013592509050565b600082601f830112614a9c57600080fd5b815167ffffffffffffffff811115614ab657614ab661460e565b614ac96020601f19601f8401160161463d565b818152846020838601011115614ade57600080fd5b61178882602083016020870161474d565b60008060008060808587031215614b0557600080fd5b845167ffffffffffffffff80821115614b1d57600080fd5b614b2988838901614a8b565b95506020870151915080821115614b3f57600080fd5b50614b4c87828801614a8b565b93505060408501519150606085015160ff81168114614b6a57600080fd5b939692955090935050565b600181811c90821680614b8957607f821691505b602082108103614bc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156119fe57600081815260208120601f850160051c81016020861015614bef5750805b601f850160051c820191505b8181101561149257828155600101614bfb565b815167ffffffffffffffff811115614c2857614c2861460e565b614c3c81614c368454614b75565b84614bc8565b602080601f831160018114614c715760008415614c595750858301515b600019600386901b1c1916600185901b178555611492565b600085815260208120601f198616915b82811015614ca057888601518255948401946001909101908401614c81565b5085821015614cbe5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115614d38578160001904821115614d1e57614d1e614cce565b80851615614d2b57918102915b93841c9390800290614d02565b509250929050565b600082614d4f575060016115db565b81614d5c575060006115db565b8160018114614d725760028114614d7c57614d98565b60019150506115db565b60ff841115614d8d57614d8d614cce565b50506001821b6115db565b5060208310610133831016604e8410600b8410161715614dbb575081810a6115db565b614dc58383614cfd565b8060001904821115614dd957614dd9614cce565b029392505050565b6000613e9460ff841683614d40565b6000816000190483118215151615614e0a57614e0a614cce565b500290565b600060208284031215614e2157600080fd5b8151613e9481614584565b600082614e62577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600080600060608486031215614e7c57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015614ece5781516001600160a01b031687529582019590820190600101614ea9565b509495945050505050565b604081526000614eec6040830185614e95565b905082151560208301529392505050565b600082821015614f0f57614f0f614cce565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff8103614f5957614f59614cce565b60010192915050565b600061ffff808316818516808303821115614f7f57614f7f614cce565b01949350505050565b60008219821115614f9b57614f9b614cce565b500190565b600060208284031215614fb257600080fd5b8151613e94816145d2565b85815284602082015260a060408201526000614fdc60a0830186614e95565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220992dc36c12b9e46716f83eb88eddb3da770dbc365159e3094ddd7879d905c4e864736f6c634300080f0033
Deployed Bytecode
0x6080604052600436106104335760003560e01c80634fb2e45d1161022857806395d89b4111610128578063c6831cd8116100bb578063eec2744e1161008a578063fdb78c0e1161006f578063fdb78c0e14610d07578063fe575a8714610d26578063feadde9c14610d4657600080fd5b8063eec2744e14610cc7578063fb78680d14610ce757600080fd5b8063c6831cd814610bdd578063d924140314610c2a578063dd62ed3e14610c6c578063ee5d9c2d14610cb257600080fd5b8063b3d514fb116100f7578063b3d514fb14610698578063b7df8b3614610b4d578063bf29860d14610b67578063bfc2fc3514610bbd57600080fd5b806395d89b4114610af8578063a30be26414610b0d578063a9059cbb14610b2d578063b1b08f711461069857600080fd5b8063715018a6116101bb57806380c581d11161018a5780638a63bd9b1161016f5780638a63bd9b14610a9a5780638a8c523c14610aaf5780638afbf9ee14610ac457600080fd5b806380c581d114610a5c578063893d20e814610a7c57600080fd5b8063715018a61461098f5780637b45d431146109a45780637caaebf014610a26578063804234f714610a3c57600080fd5b8063590ffdce116101f7578063590ffdce146108eb5780635cce86cd1461090b5780636ebd00781461094457806370a082311461095957600080fd5b80634fb2e45d1461085d5780634fbee1931461087d57806350a8e016146108b65780635778eb3d146108d557600080fd5b80632b112e49116103335780633f3cf56c116102c6578063452ed4f1116102955780634ada218b1161027a5780634ada218b1461080d5780634e718e48146108275780634f45e9831461084757600080fd5b8063452ed4f1146107d757806346ea7ac8146107f757600080fd5b80633f3cf56c1461076157806340a9602414610781578063422ef56c146107a157806344df3f82146107c157600080fd5b806332cde6641161030257806332cde664146106eb57806333251a0b1461070b578063333442bc1461072b57806336fddb041461074157600080fd5b80632b112e49146106835780632b28fc7a146106985780632e8fa821146106ae578063313ce567146106c457600080fd5b80630d6f9ace116103c657806323b872dd116103955780632610eaca1161037a5780632610eaca1461062d57806327ab9bf51461064d578063285777511461066d57600080fd5b806323b872dd146105ed578063260039571461060d57600080fd5b80630d6f9ace1461056a5780630dcbcf1c1461058a5780630fa604e4146105c357806318160ddd146105d857600080fd5b806305bbedb61161040257806305bbedb6146104d857806306fdde03146104f85780630758d9241461051a578063095ea7b31461053a57600080fd5b806303b837551461043f57806303fd2a45146104615780630445b66714610494578063044df726146104b857600080fd5b3661043a57005b600080fd5b34801561044b57600080fd5b5061045f61045a366004614599565b610d66565b005b34801561046d57600080fd5b5061047761dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156104a057600080fd5b506104aa60165481565b60405190815260200161048b565b3480156104c457600080fd5b5061045f6104d33660046145e0565b6113c2565b3480156104e457600080fd5b5061045f6104f3366004614706565b61149a565b34801561050457600080fd5b5061050d611538565b60405161048b9190614779565b34801561052657600080fd5b50601154610477906001600160a01b031681565b34801561054657600080fd5b5061055a6105553660046147ac565b6115ca565b604051901515815260200161048b565b34801561057657600080fd5b5061045f6105853660046147d8565b6115e1565b34801561059657600080fd5b5061055a6105a53660046147fa565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105cf57600080fd5b506104aa6116da565b3480156105e457600080fd5b506104aa611700565b3480156105f957600080fd5b5061055a610608366004614817565b611718565b34801561061957600080fd5b5061045f6106283660046147d8565b611790565b34801561063957600080fd5b5061045f610648366004614858565b61189a565b34801561065957600080fd5b5061045f61066836600461492a565b611a03565b34801561067957600080fd5b506104aa60195481565b34801561068f57600080fd5b506104aa611c67565b3480156106a457600080fd5b506104aa6107d081565b3480156106ba57600080fd5b506104aa60175481565b3480156106d057600080fd5b506106d9611cd0565b60405160ff909116815260200161048b565b3480156106f757600080fd5b5061045f61070636600461498f565b611ceb565b34801561071757600080fd5b5061045f6107263660046147fa565b611e6a565b34801561073757600080fd5b506104aa601b5481565b34801561074d57600080fd5b5061045f61075c3660046149d2565b611f3a565b34801561076d57600080fd5b5061045f61077c3660046147d8565b611fb3565b34801561078d57600080fd5b5061045f61079c3660046149f0565b6120be565b3480156107ad57600080fd5b5061045f6107bc366004614a0d565b61211f565b3480156107cd57600080fd5b506104aa601f5481565b3480156107e357600080fd5b50601254610477906001600160a01b031681565b34801561080357600080fd5b506104aa610bb881565b34801561081957600080fd5b50601a5461055a9060ff1681565b34801561083357600080fd5b5061045f610842366004614a0d565b612261565b34801561085357600080fd5b506104aa601c5481565b34801561086957600080fd5b5061045f6108783660046147fa565b612305565b34801561088957600080fd5b5061055a6108983660046147fa565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108c257600080fd5b50601a5461055a90610100900460ff1681565b3480156108e157600080fd5b506104aa601e5481565b3480156108f757600080fd5b5061045f6109063660046149d2565b612540565b34801561091757600080fd5b5061055a6109263660046147fa565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561095057600080fd5b506104aa6125b9565b34801561096557600080fd5b506104aa6109743660046147fa565b6001600160a01b031660009081526001602052604090205490565b34801561099b57600080fd5b5061045f6125da565b3480156109b057600080fd5b50600e546109f19061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161048b565b348015610a3257600080fd5b506104aa601d5481565b348015610a4857600080fd5b5061045f610a57366004614a26565b6126a4565b348015610a6857600080fd5b5061045f610a773660046149d2565b612836565b348015610a8857600080fd5b506000546001600160a01b0316610477565b348015610aa657600080fd5b5061055a6129dc565b348015610abb57600080fd5b5061045f612a4b565b348015610ad057600080fd5b50601a5461055a90760100000000000000000000000000000000000000000000900460ff1681565b348015610b0457600080fd5b5061050d612ce1565b348015610b1957600080fd5b5061045f610b283660046149f0565b612cf0565b348015610b3957600080fd5b5061055a610b483660046147ac565b612d8a565b348015610b5957600080fd5b5060185461055a9060ff1681565b348015610b7357600080fd5b50601054610b989061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161048b565b348015610bc957600080fd5b5061045f610bd83660046145e0565b612da1565b348015610be957600080fd5b50600f546109f19061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b348015610c3657600080fd5b50610c4a610c453660046147fa565b612e4e565b604080519415158552602085019390935291830152606082015260800161048b565b348015610c7857600080fd5b506104aa610c87366004614599565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610cbe57600080fd5b5061045f612ed0565b348015610cd357600080fd5b5061045f610ce23660046149d2565b612f5b565b348015610cf357600080fd5b5061045f610d02366004614a59565b613003565b348015610d1357600080fd5b5060155461055a90610100900460ff1681565b348015610d3257600080fd5b5061055a610d413660046147fa565b613109565b348015610d5257600080fd5b5061045f610d613660046149d2565b613197565b6000546001600160a01b03163314610db95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b60225460ff1615610e0c5760405162461bcd60e51b815260206004820152600160248201527f31000000000000000000000000000000000000000000000000000000000000006044820152606401610db0565b601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b03848116820292909217928390556040517f1a69523000000000000000000000000000000000000000000000000000000000815230600482015292041690631a69523090602401600060405180830381600087803b158015610e9e57600080fd5b505af1925050508015610eaf575060015b50601a60029054906101000a90046001600160a01b03166001600160a01b031663dbc4d8836040518163ffffffff1660e01b81526004016000604051808303816000875af1925050508015610f2657506040513d6000823e601f3d908101601f19168201604052610f239190810190614aef565b60015b610f725760405162461bcd60e51b815260206004820152600160248201527f33000000000000000000000000000000000000000000000000000000000000006044820152606401610db0565b600a610f7e8582614c0e565b50600b610f8b8482614c0e565b506009829055600c805460ff191660ff8316908117909155610fae90600a614de1565b600954610fbb9190614df0565b600d5550505050601160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110399190614e0f565b6001600160a01b031663c9c65396601160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561109a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110be9190614e0f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611122573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111469190614e0f565b601280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556000908152600260205260409020805460ff19166001908117909155600d546064916111a99190614df0565b6111b39190614e2c565b601355600d546064906111c7906001614df0565b6111d19190614e2c565b6014556022805460ff19166001908117909155600d54600080546001600160a01b0390811682526020938452604080832084905582549051938452169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36011546112559030906001600160a01b0316600019613210565b600054601154611274916001600160a01b039081169116600019613210565b600054600d546112ac916001600160a01b0316908490600a90611298906003614df0565b6112a29190614e2c565b600080600161331d565b50600080546001600160a01b031680825260016020526040909120546112d4919030906112a2565b506011546001600160a01b031663f305d7194730611307816001600160a01b031660009081526001602052604090205490565b6000805460405160e087901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03948516600482015260248101939093526044830182905260648301919091529190911660848201524260a482015260c40160606040518083038185885af115801561138e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113b39190614e67565b5050506113be612a4b565b5050565b6000546001600160a01b031633146114105760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b601a546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b15801561147e57600080fd5b505af1158015611492573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146114e85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b601a546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb6906114649085908590600401614ed9565b6060600a805461154790614b75565b80601f016020809104026020016040519081016040528092919081815260200182805461157390614b75565b80156115c05780601f10611595576101008083540402835291602001916115c0565b820191906000526020600020905b8154815290600101906020018083116115a357829003601f168201915b5050505050905090565b60006115d7338484613210565b5060015b92915050565b6000546001600160a01b0316331461162f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b61025881116116805760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f7420657863656564203130206d696e757465732e000000000000006044820152606401610db0565b6101f48211156116d25760405162461bcd60e51b815260206004820152601160248201527f43616e6e6f74206578636565642035252e0000000000000000000000000000006044820152606401610db0565b601c55601b55565b600c546000906116ee9060ff16600a614de1565b6014546116fb9190614e2c565b905090565b6000600d5460000361171157600080fd5b50600d5490565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000191461177d576001600160a01b038416600090815260046020908152604080832033845290915281208054849290611777908490614efd565b90915550505b61178884848461363c565b949350505050565b6000546001600160a01b031633146117de5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6064600d546117ed9190614e2c565b8183600d546117fc9190614df0565b6118069190614e2c565b101561187a5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610db0565b8082600d546118899190614df0565b6118939190614e2c565b6014555050565b6000546001600160a01b031633146118e85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b80518251146119395760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610db0565b60005b82518160ff1610156119fe57818160ff168151811061195d5761195d614f14565b6020026020010151611984336001600160a01b031660009081526001602052604090205490565b101561198f57600080fd5b6119eb33848360ff16815181106119a8576119a8614f14565b6020908102919091010151600c546119c49060ff16600a614de1565b858560ff16815181106119d9576119d9614f14565b60200260200101516112a29190614df0565b50806119f681614f43565b91505061193c565b505050565b6000546001600160a01b03163314611a515760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b8161ffff168161ffff16108015611a6f57508261ffff168261ffff16105b8015611a8257508361ffff168361ffff16105b8015611a9557508461ffff168461ffff16105b8015611aa757506107d08561ffff1611155b611b3f5760405162461bcd60e51b815260206004820152604c60248201527f43616e6e6f7420657863656564206d6178696d756d2076616c7565732c20616e60448201527f64206561636820627261636b6574206d757374206265206c6f7765722074686160648201527f6e20746865207072696f722e0000000000000000000000000000000000000000608482015260a401610db0565b600e54610bb890611b549061ffff1687614f62565b61ffff161115611ba65760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610db0565b600f805461ffff92831668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9484166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff96851664010000000002969096167fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff978516620100000263ffffffff1990931694909816939093171794909416949094179190911716919091179055565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d549091611cc391614f88565b600d546116fb9190614efd565b6000600d54600003611ce157600080fd5b50600c5460ff1690565b6000546001600160a01b03163314611d395760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6107d08361ffff1611158015611d5557506107d08261ffff1611155b8015611d6757506107d08161ffff1611155b611db35760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610db0565b610bb8611dc08385614f62565b61ffff161115611e125760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610db0565b6010805461ffff94851663ffffffff19909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b03163314611eb85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b601a546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b158015611f1f57600080fd5b505af1158015611f33573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314611f885760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146120015760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6103e8600d546120119190614e2c565b8183600d546120209190614df0565b61202a9190614e2c565b101561209e5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610db0565b8082600d546120ad9190614df0565b6120b79190614e2c565b6013555050565b6000546001600160a01b0316331461210c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6020805460ff1916911515919091179055565b6000546001600160a01b0316331461216d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b42601d54601f5461217e9190614f88565b106121cb5760405162461bcd60e51b815260206004820152601760248201527f4d757374207761697420666f7220636f6f6c646f776e2e0000000000000000006044820152606401610db0565b61012c81111561221d5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f7420657863656564203325206d616e75616c206275726e732e00006044820152606401610db0565b6012546001600160a01b031660009081526001602052604090205461225a906127109061224b908490614df0565b6122559190614e2c565b613b53565b5042601f55565b6000546001600160a01b031633146122af5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b60c88111156123005760405162461bcd60e51b815260206004820152601460248201527f43616e6e6f74207365742061626f76652032252e0000000000000000000000006044820152606401610db0565b601955565b6000546001600160a01b031633146123535760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6001600160a01b0381166123cf5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610db0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b0382160161246d5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610db0565b60008054612486916001600160a01b0390911690612540565b612491816001612540565b600080546001600160a01b0316815260016020526040902054156124d857600080546001600160a01b031680825260016020526040909120546124d6919083906112a2565b505b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b0316331461258e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600c546000906125cd9060ff16600a614de1565b6013546116fb9190614e2c565b6000546001600160a01b031633146126285760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b60008054612641916001600160a01b0390911690612540565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811682556040516001600160a01b03909116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b031633146126f25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b8161ffff168161ffff1610801561270f57506107d08261ffff1611155b6127a75760405162461bcd60e51b815260206004820152604c60248201527f43616e6e6f7420657863656564206d6178696d756d2076616c7565732c20616e60448201527f64206561636820627261636b6574206d757374206265206c6f7765722074686160648201527f6e20746865207072696f722e0000000000000000000000000000000000000000608482015260a401610db0565b600f54610bb8906127bc9061ffff1684614f62565b61ffff16111561280e5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610db0565b600e805461ffff928316620100000263ffffffff199091169290931691909117919091179055565b6000546001600160a01b031633146128845760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b806128fb576001600160a01b03828116600081815260026020526040808220805460ff19169055601a5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401611464565b60035415612962576203f480600354426129159190614efd565b116129625760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610db0565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601a5491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401611464565b600080546001600160a01b03163314612a2b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b601154612a459030906001600160a01b0316600019613210565b50600190565b6000546001600160a01b03163314612a995760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b601a5460ff1615612aec5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610db0565b601a54610100900460ff16612b435760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610db0565b601a546201000090046001600160a01b0316612b8957601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601a54601254600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b158015612c1a57600080fd5b505af1925050508015612c2b575060015b506012546001600160a01b031660009081526001602052604090205461271090612c5690600a614df0565b612c609190614e2c565b6016556012546001600160a01b031660009081526001602052604090205461271090612c8d90601e614df0565b612c979190614e2c565b601755601a80547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff001676010000000000000000000000000000000000000000000117905542601e55565b6060600b805461154790614b75565b6000546001600160a01b03163314612d3e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b601a8054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000612d9733848461363c565b5060019392505050565b6000546001600160a01b03163314612def5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6015805461ff001916610100841515908102919091179091556018805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6001600160a01b03811660009081526021602052604081206001015481908190819060ff16612e9b57505050506001600160a01b0381166000908152602160205260408120548180612ec9565b505050506001600160a01b038116600090815260216020526040902080546002820154600390920154600192905b9193509193565b6000546001600160a01b03163314612f1e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612f58573d6000803e3d6000fd5b50565b6000546001600160a01b03163314612fa95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b601a546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401611464565b6000546001600160a01b031633146130515760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b8284600d546130609190614df0565b61306a9190614e2c565b601655600d54819061307d908490614df0565b6130879190614e2c565b601781905560165411156131035760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610db0565b50505050565b601a546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015613173573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115db9190614fa0565b6000546001600160a01b031633146131e55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610db0565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b0383166132665760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610db0565b6001600160a01b0382166132bc5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610db0565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601a54600090610100900460ff1661341d576133398787613c16565b601a54610100900460ff1615801561335657506133568787613d86565b801561337b57506001600160a01b03871660009081526006602052604090205460ff16155b80156133a057506001600160a01b03861660009081526006602052604090205460ff16155b80156133aa575081155b1561341d5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610db0565b6134278787613d86565b156134da57601a546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156134c3575060408051601f3d908101601f191682019092526134c091810190614fa0565b60015b6134cc57600080fd5b9050806134d857600080fd5b505b6001600160a01b03871660009081526007602052604090205460019060ff168061351c57506001600160a01b03871660009081526007602052604090205460ff165b15613525575060005b6001600160a01b0388166000908152600160205260408120805488929061354d908490614efd565b909155506000905081613560578661356d565b61356d898988888b613e9b565b6001600160a01b03891660009081526001602052604081208054929350839290919061359a908490614f88565b909155508590506135e0576001600160a01b03881660009081526021602052604081205490036135e0576001600160a01b03881660009081526021602052604090204290555b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161362591815260200190565b60405180910390a350600198975050505050505050565b60006001600160a01b0384166136ba5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610db0565b6001600160a01b0383166137365760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610db0565b600082116137ac5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610db0565b6001600160a01b0384166000908152600260205260408120548190819060ff16156137da5760019250613808565b6001600160a01b03861660009081526002602052604090205460ff16156138045760019150613808565b5060015b6138128787613d86565b15613a1857601a5460ff166138695760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610db0565b82806138725750815b15613936576001600160a01b03871660009081526008602052604090205460ff161580156138b957506001600160a01b03861660009081526008602052604090205460ff16155b15613936576013548511156139365760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610db0565b6011546001600160a01b03878116911614801590613952575081155b15613a18576001600160a01b03861660009081526008602052604090205460ff16613a18576014548561399a886001600160a01b031660009081526001602052604090205490565b6139a49190614f88565b1115613a185760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610db0565b8115613b3a5760155460ff16613b3a57601554610100900460ff1615613aaf57306000908152600160205260409020546016548110613aad5760175460185460ff1615613a97576019546012546001600160a01b031660009081526001602052604090205461271091613a8a91614df0565b613a949190614e2c565b90505b808210613aa2578091505b613aab8261428c565b505b505b601a54760100000000000000000000000000000000000000000000900460ff168015613ae9575042601c54601e54613ae79190614f88565b105b15613b3a576012546001600160a01b031660009081526001602052604081205490506000612710601b5483613b1e9190614df0565b613b289190614e2c565b9050613b3381613b53565b505042601e555b613b4887878786868661331d565b979650505050505050565b6012546001600160a01b031660009081526001602052604081208054839290613b7d908490614efd565b909155505060125460405182815261dead916001600160a01b0316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3601260009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f1f57600080fd5b601a54610100900460ff1615613c945760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610db0565b613c9e8282613d86565b158015613cb857506012546001600160a01b038281169116145b156113be576001600160a01b038083166000908152600560209081526040808320805460ff1990811660019081179092556007909352922080549091169091179055601a805461ff001916610100179081905562010000900416613d4657601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6015805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612e42565b600080546001600160a01b03848116911614801590613db357506000546001600160a01b03838116911614155b8015613dca57506000546001600160a01b03163214155b8015613def57506001600160a01b03821660009081526005602052604090205460ff16155b8015613e1457506001600160a01b03831660009081526005602052604090205460ff16155b8015613e2b57506001600160a01b03821661dead14155b8015613e3f57506001600160a01b03821615155b8015613e5457506001600160a01b0383163014155b8015613e745750601a546001600160a01b03848116620100009092041614155b8015613e945750601a546001600160a01b03838116620100009092041614155b9392505050565b602054600090819060ff16156141a4578415613f88576001600160a01b038616600090815260216020908152604091829020825160808101845281548152600182015460ff1615801593820193909352600282015493810193909352600301546060830152613f27576001600160a01b0387166000908152602160205260409020600201549150613f82565b8051600003613f3a576103e89150613f82565b8051600090613f499042614efd565b905062278d00811015613f60576103e89250613f80565b624f1a00811015613f75576101f49250613f80565b849350505050614283565b505b506141e1565b831561419b576001600160a01b038716600090815260216020908152604091829020825160808101845281548152600182015460ff1615801593820193909352600282015493810193909352600301546060830152614004576001600160a01b0388166000908152602160205260409020600301549150613f82565b80516000906140139042614efd565b9050620d2f0081101561404357600e5461ffff9081166040840152600f5416606083015260016020830152614141565b621a5e0081101561407757600e5461ffff9081166040840152600f5462010000900416606083015260016020830152614141565b62278d008110156140ad57600e5461ffff9081166040840152600f54640100000000900416606083015260016020830152614141565b6234bc008110156140eb57600e5461ffff6201000090910481166040840152600f546601000000000000900416606083015260016020830152614141565b624f1a0081101561412b57600e5461ffff6201000090910481166040840152600f5468010000000000000000900416606083015260016020830152614141565b6000604083018190526060830152600160208301525b506060810180516001600160a01b038a16600090815260216020908152604091829020855181559085015160018201805460ff191691151591909117905590840151600282015591516003909201919091559150506141e1565b82915050614283565b84156141b7575060105461ffff166141e1565b83156141d0575060105462010000900461ffff166141e1565b50601054640100000000900461ffff165b806000036141f25782915050614283565b60006127106142018386614df0565b61420b9190614e2c565b3060009081526001602052604081208054929350839290919061422f908490614f88565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361427e8185614efd565b925050505b95945050505050565b6015805460ff191660011790553060009081526004602090815260408083206011546001600160a01b03168452909152902054600019146142f2573060009081526004602090815260408083206011546001600160a01b03168452909152902060001990555b60006142ff600283614e2c565b9050600061430d8284614efd565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061434757614347614f14565b6001600160a01b03928316602091820292909201810191909152601154604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156143b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143dd9190614e0f565b816001815181106143f0576143f0614f14565b6001600160a01b0392831660209182029290920101526011546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac9479061444f908590600090869030904290600401614fbd565b600060405180830381600087803b15801561446957600080fd5b505af115801561447d573d6000803e3d6000fd5b504792505084159050614573576011546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101869052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015614511573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145369190614e67565b505060408051838152602081018790527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506015805460ff19169055505050565b6001600160a01b0381168114612f5857600080fd5b600080604083850312156145ac57600080fd5b82356145b781614584565b915060208301356145c781614584565b809150509250929050565b8015158114612f5857600080fd5b600080604083850312156145f357600080fd5b82356145fe816145d2565b915060208301356145c7816145d2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156146665761466661460e565b604052919050565b600067ffffffffffffffff8211156146885761468861460e565b5060051b60200190565b600082601f8301126146a357600080fd5b813560206146b86146b38361466e565b61463d565b82815260059290921b840181019181810190868411156146d757600080fd5b8286015b848110156146fb5780356146ee81614584565b83529183019183016146db565b509695505050505050565b6000806040838503121561471957600080fd5b823567ffffffffffffffff81111561473057600080fd5b61473c85828601614692565b92505060208301356145c7816145d2565b60005b83811015614768578181015183820152602001614750565b838111156131035750506000910152565b602081526000825180602084015261479881604085016020870161474d565b601f01601f19169190910160400192915050565b600080604083850312156147bf57600080fd5b82356147ca81614584565b946020939093013593505050565b600080604083850312156147eb57600080fd5b50508035926020909101359150565b60006020828403121561480c57600080fd5b8135613e9481614584565b60008060006060848603121561482c57600080fd5b833561483781614584565b9250602084013561484781614584565b929592945050506040919091013590565b6000806040838503121561486b57600080fd5b823567ffffffffffffffff8082111561488357600080fd5b61488f86838701614692565b93506020915081850135818111156148a657600080fd5b85019050601f810186136148b957600080fd5b80356148c76146b38261466e565b81815260059190911b820183019083810190888311156148e657600080fd5b928401925b82841015614904578335825292840192908401906148eb565b80955050505050509250929050565b803561ffff8116811461492557600080fd5b919050565b600080600080600060a0868803121561494257600080fd5b61494b86614913565b945061495960208701614913565b935061496760408701614913565b925061497560608701614913565b915061498360808701614913565b90509295509295909350565b6000806000606084860312156149a457600080fd5b6149ad84614913565b92506149bb60208501614913565b91506149c960408501614913565b90509250925092565b600080604083850312156149e557600080fd5b82356145fe81614584565b600060208284031215614a0257600080fd5b8135613e94816145d2565b600060208284031215614a1f57600080fd5b5035919050565b60008060408385031215614a3957600080fd5b614a4283614913565b9150614a5060208401614913565b90509250929050565b60008060008060808587031215614a6f57600080fd5b5050823594602084013594506040840135936060013592509050565b600082601f830112614a9c57600080fd5b815167ffffffffffffffff811115614ab657614ab661460e565b614ac96020601f19601f8401160161463d565b818152846020838601011115614ade57600080fd5b61178882602083016020870161474d565b60008060008060808587031215614b0557600080fd5b845167ffffffffffffffff80821115614b1d57600080fd5b614b2988838901614a8b565b95506020870151915080821115614b3f57600080fd5b50614b4c87828801614a8b565b93505060408501519150606085015160ff81168114614b6a57600080fd5b939692955090935050565b600181811c90821680614b8957607f821691505b602082108103614bc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156119fe57600081815260208120601f850160051c81016020861015614bef5750805b601f850160051c820191505b8181101561149257828155600101614bfb565b815167ffffffffffffffff811115614c2857614c2861460e565b614c3c81614c368454614b75565b84614bc8565b602080601f831160018114614c715760008415614c595750858301515b600019600386901b1c1916600185901b178555611492565b600085815260208120601f198616915b82811015614ca057888601518255948401946001909101908401614c81565b5085821015614cbe5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115614d38578160001904821115614d1e57614d1e614cce565b80851615614d2b57918102915b93841c9390800290614d02565b509250929050565b600082614d4f575060016115db565b81614d5c575060006115db565b8160018114614d725760028114614d7c57614d98565b60019150506115db565b60ff841115614d8d57614d8d614cce565b50506001821b6115db565b5060208310610133831016604e8410600b8410161715614dbb575081810a6115db565b614dc58383614cfd565b8060001904821115614dd957614dd9614cce565b029392505050565b6000613e9460ff841683614d40565b6000816000190483118215151615614e0a57614e0a614cce565b500290565b600060208284031215614e2157600080fd5b8151613e9481614584565b600082614e62577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600080600060608486031215614e7c57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015614ece5781516001600160a01b031687529582019590820190600101614ea9565b509495945050505050565b604081526000614eec6040830185614e95565b905082151560208301529392505050565b600082821015614f0f57614f0f614cce565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff8103614f5957614f59614cce565b60010192915050565b600061ffff808316818516808303821115614f7f57614f7f614cce565b01949350505050565b60008219821115614f9b57614f9b614cce565b500190565b600060208284031215614fb257600080fd5b8151613e94816145d2565b85815284602082015260a060408201526000614fdc60a0830186614e95565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220992dc36c12b9e46716f83eb88eddb3da770dbc365159e3094ddd7879d905c4e864736f6c634300080f0033
Deployed Bytecode Sourcemap
5557:27559:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9977:1637;;;;;;;;;;-1:-1:-1;9977:1637:0;;;;;:::i;:::-;;:::i;:::-;;7412:73;;;;;;;;;;;;7443:42;7412:73;;;;;-1:-1:-1;;;;;730:55:1;;;712:74;;700:2;685:18;7412:73:0;;;;;;;;7636:28;;;;;;;;;;;;;;;;;;;943:25:1;;;931:2;916:18;7636:28:0;797:177:1;17496:151:0;;;;;;;;;;-1:-1:-1;17496:151:0;;;;;:::i;:::-;;:::i;17063:172::-;;;;;;;;;;-1:-1:-1;17063:172:0;;;;;:::i;:::-;;:::i;13734:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7351:26::-;;;;;;;;;;-1:-1:-1;7351:26:0;;;;-1:-1:-1;;;;;7351:26:0;;;14344:161;;;;;;;;;;-1:-1:-1;14344:161:0;;;;;:::i;:::-;;:::i;:::-;;;4866:14:1;;4859:22;4841:41;;4829:2;4814:18;14344:161:0;4701:187:1;21720:365:0;;;;;;;;;;-1:-1:-1;21720:365:0;;;;;:::i;:::-;;:::i;16103:140::-;;;;;;;;;;-1:-1:-1;16103:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;16201:34:0;16177:4;16201:34;;;:25;:34;;;;;;;;;16103:140;20159:114;;;;;;;;;;;;;:::i;13405:115::-;;;;;;;;;;;;;:::i;15014:306::-;;;;;;;;;;-1:-1:-1;15014:306:0;;;;;:::i;:::-;;:::i;19769:264::-;;;;;;;;;;-1:-1:-1;19769:264:0;;;;;:::i;:::-;;:::i;26925:410::-;;;;;;;;;;-1:-1:-1;26925:410:0;;;;;:::i;:::-;;:::i;18132:815::-;;;;;;;;;;-1:-1:-1;18132:815:0;;;;;:::i;:::-;;:::i;7744:28::-;;;;;;;;;;;;;;;;16697:141;;;;;;;;;;;;;:::i;7095:42::-;;;;;;;;;;;;7133:4;7095:42;;7671:25;;;;;;;;;;;;;;;;13526:112;;;;;;;;;;;;;:::i;:::-;;;7817:4:1;7805:17;;;7787:36;;7775:2;7760:18;13526:112:0;7645:184:1;18955:525:0;;;;;;;;;;-1:-1:-1;18955:525:0;;;;;:::i;:::-;;:::i;17380:108::-;;;;;;;;;;-1:-1:-1;17380:108:0;;;;;:::i;:::-;;:::i;7939:39::-;;;;;;;;;;;;;;;;16251:140;;;;;;;;;;-1:-1:-1;16251:140:0;;;;;:::i;:::-;;:::i;19490:269::-;;;;;;;;;;-1:-1:-1;19490:269:0;;;;;:::i;:::-;;:::i;22510:111::-;;;;;;;;;;-1:-1:-1;22510:111:0;;;;;:::i;:::-;;:::i;22093:409::-;;;;;;;;;;-1:-1:-1;22093:409:0;;;;;:::i;:::-;;:::i;8141:34::-;;;;;;;;;;;;;;;;7384:21;;;;;;;;;;-1:-1:-1;7384:21:0;;;;-1:-1:-1;;;;;7384:21:0;;;7248:46;;;;;;;;;;;;7290:4;7248:46;;7781:34;;;;;;;;;;-1:-1:-1;7781:34:0;;;;;;;;20662:215;;;;;;;;;;-1:-1:-1;20662:215:0;;;;;:::i;:::-;;:::i;7985:49::-;;;;;;;;;;;;;;;;12166:653;;;;;;;;;;-1:-1:-1;12166:653:0;;;;;:::i;:::-;;:::i;15968:127::-;;;;;;;;;;-1:-1:-1;15968:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;16059:28:0;16035:4;16059:28;;;:19;:28;;;;;;;;;15968:127;7822:36;;;;;;;;;;-1:-1:-1;7822:36:0;;;;;;;;;;;8100:34;;;;;;;;;;;;;;;;16399:134;;;;;;;;;;-1:-1:-1;16399:134:0;;;;;:::i;:::-;;:::i;15828:132::-;;;;;;;;;;-1:-1:-1;15828:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;15922:30:0;15898:4;15922:30;;;:21;:30;;;;;;;;;15828:132;20043:108;;;;;;;;;;;;;:::i;14046:117::-;;;;;;;;;;-1:-1:-1;14046:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;14139:16:0;14112:7;14139:16;;;:7;:16;;;;;;;14046:117;12827:225;;;;;;;;;;;;;:::i;6600:166::-;;;;;;;;;;-1:-1:-1;6600:166:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9244:6:1;9277:15;;;9259:34;;9329:15;;;9324:2;9309:18;;9302:43;9381:15;;;9361:18;;;9354:43;;;;9433:15;;9428:2;9413:18;;9406:43;9486:15;;;9480:3;9465:19;;9458:44;9221:3;9206:19;6600:166:0;8985:523:1;8041:52:0;;;;;;;;;;;;;;;;17655:469;;;;;;;;;;-1:-1:-1;17655:469:0;;;;;:::i;:::-;;:::i;15328:492::-;;;;;;;;;;-1:-1:-1;15328:492:0;;;;;:::i;:::-;;:::i;13820:79::-;;;;;;;;;;-1:-1:-1;13872:7:0;13890:6;-1:-1:-1;;;;;13890:6:0;13820:79;;14831:175;;;;;;;;;;;;;:::i;26167:629::-;;;;;;;;;;;;;:::i;7893:39::-;;;;;;;;;;-1:-1:-1;7893:39:0;;;;;;;;;;;13644:84;;;;;;;;;;;;;:::i;21597:115::-;;;;;;;;;;-1:-1:-1;21597:115:0;;;;;:::i;:::-;;:::i;14171:165::-;;;;;;;;;;-1:-1:-1;14171:165:0;;;;;:::i;:::-;;:::i;7703:34::-;;;;;;;;;;-1:-1:-1;7703:34:0;;;;;;;;6960:126;;;;;;;;;;-1:-1:-1;6960:126:0;;;;;;;;;;;;;;;;;;;;;;;;;;9980:6:1;10013:15;;;9995:34;;10065:15;;;10060:2;10045:18;;10038:43;10117:15;;10097:18;;;10090:43;;;;9958:2;9943:18;6960:126:0;9774:365:1;20885:263:0;;;;;;;;;;-1:-1:-1;20885:263:0;;;;;:::i;:::-;;:::i;6775:176::-;;;;;;;;;;-1:-1:-1;6775:176:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21156:433;;;;;;;;;;-1:-1:-1;21156:433:0;;;;;:::i;:::-;;:::i;:::-;;;;10394:14:1;;10387:22;10369:41;;10441:2;10426:18;;10419:34;;;;10469:18;;;10462:34;10527:2;10512:18;;10505:34;10356:3;10341:19;21156:433:0;10144:401:1;13905:133:0;;;;;;;;;;-1:-1:-1;13905:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;14007:19:0;;;13989:7;14007:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;13905:133;26804:113;;;;;;;;;;;;;:::i;16910:145::-;;;;;;;;;;-1:-1:-1;16910:145:0;;;;;:::i;:::-;;:::i;20281:373::-;;;;;;;;;;-1:-1:-1;20281:373:0;;;;;:::i;:::-;;:::i;7590:39::-;;;;;;;;;;-1:-1:-1;7590:39:0;;;;;;;;;;;17245:127;;;;;;;;;;-1:-1:-1;17245:127:0;;;;;:::i;:::-;;:::i;16541:148::-;;;;;;;;;;-1:-1:-1;16541:148:0;;;;;:::i;:::-;;:::i;9977:1637::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;;;;;;;;;10082:19:::1;::::0;::::1;;10081:20;10073:34;;;::::0;-1:-1:-1;;;10073:34:0;;11488:2:1;10073:34:0::1;::::0;::::1;11470:21:1::0;11527:1;11507:18;;;11500:29;11565:3;11545:18;;;11538:31;11586:18;;10073:34:0::1;11286:324:1::0;10073:34:0::1;10118:9;:33:::0;;;::::1;::::0;-1:-1:-1;;;;;10118:33:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;10166::::1;::::0;;;;10193:4:::1;10166:33;::::0;::::1;712:74:1::0;10166:9:0;::::1;;::::0;:18:::1;::::0;685::1;;10166:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;10162:49:::0;10225:9:::1;;;;;;;;;-1:-1:-1::0;;;;;10225:9:0::1;-1:-1:-1::0;;;;;10225:25:0::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;10225:27:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;;;10221:406;;10604:11;::::0;-1:-1:-1;;;10604:11:0;;13157:2:1;10604:11:0::1;::::0;::::1;13139:21:1::0;13196:1;13176:18;;;13169:29;13234:3;13214:18;;;13207:31;13255:18;;10604:11:0::1;12955:324:1::0;10221:406:0::1;10375:5;:16;10383:8:::0;10375:5;:16:::1;:::i;:::-;-1:-1:-1::0;10406:7:0::1;:20;10416:10:::0;10406:7;:20:::1;:::i;:::-;-1:-1:-1::0;10441:14:0::1;:35:::0;;;10491:9:::1;:24:::0;;-1:-1:-1;;10491:24:0::1;;::::0;::::1;::::0;;::::1;::::0;;;10557:13:::1;::::0;:2:::1;:13;:::i;:::-;10540:14;;:30;;;;:::i;:::-;10530:7;:40:::0;-1:-1:-1;;;;10657:9:0::1;;;;;;;;;-1:-1:-1::0;;;;;10657:9:0::1;-1:-1:-1::0;;;;;10657:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10646:42:0::1;;10689:9;;;;;;;;;-1:-1:-1::0;;;;;10689:9:0::1;-1:-1:-1::0;;;;;10689:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10646:75;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;18543:15:1;;;10646:75:0::1;::::0;::::1;18525:34:1::0;10715:4:0::1;18575:18:1::0;;;18568:43;18437:18;;10646:75:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10637:6;:84:::0;;;::::1;-1:-1:-1::0;;;;;10637:84:0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;10732:15:0;;;:7:::1;:15;::::0;;;;:22;;-1:-1:-1;;10732:22:0::1;-1:-1:-1::0;10732:22:0;;::::1;::::0;;;10781:7:::1;::::0;10796:3:::1;::::0;10781:11:::1;::::0;:7;:11:::1;:::i;:::-;10780:19;;;;:::i;:::-;10765:12;:34:::0;10828:7:::1;::::0;10843:3:::1;::::0;10828:11:::1;::::0;10838:1:::1;10828:11;:::i;:::-;10827:19;;;;:::i;:::-;10810:14;:36:::0;10857:19:::1;:26:::0;;-1:-1:-1;;10857:26:0::1;10879:4;10857:26:::0;;::::1;::::0;;;10917:7:::1;::::0;-1:-1:-1;10907:6:0;;-1:-1:-1;;;;;10907:6:0;;::::1;10899:15:::0;;::::1;::::0;;;;;;;:25;;;10961:6;;10940:37;;943:25:1;;;10961:6:0::1;::::0;-1:-1:-1;;10940:37:0::1;::::0;916:18:1;10940:37:0::1;;;;;;;11022:9;::::0;10990:62:::1;::::0;11007:4:::1;::::0;-1:-1:-1;;;;;11022:9:0::1;-1:-1:-1::0;;10990:8:0::1;:62::i;:::-;11072:6;::::0;11088:9:::1;::::0;11063:55:::1;::::0;-1:-1:-1;;;;;11072:6:0;;::::1;::::0;11088:9:::1;-1:-1:-1::0;;11063:8:0::1;:55::i;:::-;11148:6;::::0;11168:7:::1;::::0;11131:75:::1;::::0;-1:-1:-1;;;;;11148:6:0::1;::::0;11156:9;;11183:2:::1;::::0;11168:11:::1;::::0;11178:1:::1;11168:11;:::i;:::-;11167:18;;;;:::i;:::-;11187:5;11194::::0;11201:4:::1;11131:16;:75::i;:::-;-1:-1:-1::0;11234:6:0::1;::::0;;-1:-1:-1;;;;;11234:6:0::1;14139:16:::0;;;:7;:16;;;;;;;11217:78:::1;::::0;11234:6;11250:4:::1;::::0;11257:17:::1;14046:117:::0;11217:78:::1;-1:-1:-1::0;11308:9:0::1;::::0;-1:-1:-1;;;;;11308:9:0::1;:25;11341:21;11386:4;11406:24;11386:4:::0;-1:-1:-1;;;;;14139:16:0;14112:7;14139:16;;;:7;:16;;;;;;;14046:117;11406:24:::1;11445:1;11531:6:::0;;11308:270:::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;19283:15:1;;;11308:270:0::1;::::0;::::1;19265:34:1::0;19315:18;;;19308:34;;;;19358:18;;;19351:34;;;19401:18;;;19394:34;;;;11531:6:0;;;::::1;19444:19:1::0;;;19437:44;11552:15:0::1;19497:19:1::0;;;19490:35;19176:19;;11308:270:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11591:15;:13;:15::i;:::-;9977:1637:::0;;:::o;17496:151::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;17591:9:::1;::::0;:48:::1;::::0;;;;20034:14:1;;20027:22;17591:48:0::1;::::0;::::1;20009:41:1::0;20093:14;;20086:22;20066:18;;;20059:50;17591:9:0;;;::::1;-1:-1:-1::0;;;;;17591:9:0::1;::::0;:24:::1;::::0;19982:18:1;;17591:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17496:151:::0;;:::o;17063:172::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;17171:9:::1;::::0;:56:::1;::::0;;;;:9;;;::::1;-1:-1:-1::0;;;;;17171:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;17209:8;;17219:7;;17171:56:::1;;;:::i;13734:80::-:0;13782:13;13806:5;13799:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13734:80;:::o;14344:161::-;14421:4;14438:37;14447:10;14459:7;14468:6;14438:8;:37::i;:::-;-1:-1:-1;14493:4:0;14344:161;;;;;:::o;21720:365::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;21869:10:::1;21848:18;:31;21840:69;;;::::0;-1:-1:-1;;;21840:69:0;;21158:2:1;21840:69:0::1;::::0;::::1;21140:21:1::0;21197:2;21177:18;;;21170:30;21236:27;21216:18;;;21209:55;21281:18;;21840:69:0::1;20956:349:1::0;21840:69:0::1;21949:3;21928:17;:24;;21920:54;;;::::0;-1:-1:-1;;;21920:54:0;;21512:2:1;21920:54:0::1;::::0;::::1;21494:21:1::0;21551:2;21531:18;;;21524:30;21590:19;21570:18;;;21563:47;21627:18;;21920:54:0::1;21310:341:1::0;21920:54:0::1;21985:21;:42:::0;22038:19:::1;:39:::0;21720:365::o;20159:114::-;20255:9;;20206:7;;20251:13;;20255:9;;20251:2;:13;:::i;:::-;20233:14;;:32;;;;:::i;:::-;20226:39;;20159:114;:::o;13405:115::-;13460:7;13475;;13486:1;13475:12;13471:31;;13491:8;;;13471:31;-1:-1:-1;13510:7:0;;;13405:115::o;15014:306::-;-1:-1:-1;;;;;15135:19:0;;15114:4;15135:19;;;:11;:19;;;;;;;;15155:10;15135:31;;;;;;;;-1:-1:-1;;15135:52:0;15131:126;;-1:-1:-1;;;;;15204:19:0;;;;;;:11;:19;;;;;;;;15224:10;15204:31;;;;;;;:41;;15239:6;;15204:19;:41;;15239:6;;15204:41;:::i;:::-;;;;-1:-1:-1;;15131:126:0;15276:36;15286:6;15294:9;15305:6;15276:9;:36::i;:::-;15269:43;15014:306;-1:-1:-1;;;;15014:306:0:o;19769:264::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;19911:3:::1;19901:7;;:13;;;;:::i;:::-;19889:7;19878;19868;;:17;;;;:::i;:::-;19867:29;;;;:::i;:::-;:48;;19859:109;;;::::0;-1:-1:-1;;;19859:109:0;;21988:2:1;19859:109:0::1;::::0;::::1;21970:21:1::0;22027:2;22007:18;;;22000:30;22066:34;22046:18;;;22039:62;22137:18;22117;;;22110:46;22173:19;;19859:109:0::1;21786:412:1::0;19859:109:0::1;20018:7;20007;19997;;:17;;;;:::i;:::-;19996:29;;;;:::i;:::-;19979:14;:46:::0;-1:-1:-1;;19769:264:0:o;26925:410::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;27060:7:::1;:14;27041:8;:15;:33;27033:67;;;::::0;-1:-1:-1;;;27033:67:0;;22405:2:1;27033:67:0::1;::::0;::::1;22387:21:1::0;22444:2;22424:18;;;22417:30;22483:23;22463:18;;;22456:51;22524:18;;27033:67:0::1;22203:345:1::0;27033:67:0::1;27116:7;27111:217;27133:8;:15;27129:1;:19;;;27111:217;;;27203:7;27211:1;27203:10;;;;;;;;;;:::i;:::-;;;;;;;27178:21;27188:10;-1:-1:-1::0;;;;;14139:16:0;14112:7;14139:16;;;:7;:16;;;;;;;14046:117;27178:21:::1;:35;;27170:44;;;::::0;::::1;;27229:87;27246:10;27258:8;27267:1;27258:11;;;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;27286:9:::1;::::0;27282:13:::1;::::0;27286:9:::1;;27282:2;:13;:::i;:::-;27271:7;27279:1;27271:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;27229:87::-;-1:-1:-1::0;27150:3:0;::::1;::::0;::::1;:::i;:::-;;;;27111:217;;;;26925:410:::0;;:::o;18132:815::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;18305:11:::1;18291:25;;:11;:25;;;:72;;;;;18351:12;18337:26;;:11;:26;;;18291:72;:118;;;;;18399:10;18384:25;;:12;:25;;;18291:118;:162;;;;;18443:10;18430:23;;:10;:23;;;18291:162;:209;;;;;7183:4;18474:10;:26;;;;18291:209;18283:315;;;::::0;-1:-1:-1;;;18283:315:0;;23124:2:1;18283:315:0::1;::::0;::::1;23106:21:1::0;23163:2;23143:18;;;23136:30;23202:34;23182:18;;;23175:62;23273:34;23253:18;;;23246:62;23345:14;23324:19;;;23317:43;23377:19;;18283:315:0::1;22922:480:1::0;18283:315:0::1;18630:9;:20:::0;7290:4:::1;::::0;18617:33:::1;::::0;18630:20:::1;;18617:10:::0;:33:::1;:::i;:::-;:52;;;;18609:97;;;::::0;-1:-1:-1;;;18609:97:0;;23838:2:1;18609:97:0::1;::::0;::::1;23820:21:1::0;;;23857:18;;;23850:30;23916:34;23896:18;;;23889:62;23968:18;;18609:97:0::1;23636:356:1::0;18609:97:0::1;18717:10;:34:::0;;::::1;18903:36:::0;;::::1;::::0;::::1;::::0;18856;;::::1;::::0;::::1;::::0;18807:38;;::::1;::::0;::::1;18856:36:::0;;;;;18762:34;;::::1;::::0;::::1;-1:-1:-1::0;;18762:34:0;;;18717;;;::::1;18762::::0;;;;::::1;18856:36:::0;;;;;;;;;;;::::1;18903;::::0;;;::::1;::::0;;18132:815::o;16697:141::-;14139:7;:16;;;;7443:42;16750:7;14139:16;;;;;16750:7;;16789:39;;;:::i;:::-;16778:7;;:51;;;;:::i;13526:112::-;13578:5;13591:7;;13602:1;13591:12;13587:31;;13607:8;;;13587:31;-1:-1:-1;13626:9:0;;;;;13526:112::o;18955:525::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;7133:4:::1;19068:8;:23;;;;:69;;;;;7183:4;19112:9;:25;;;;19068:69;:123;;;;;7237:4;19158:13;:33;;;;19068:123;19060:176;;;::::0;-1:-1:-1;;;19060:176:0;;24332:2:1;19060:176:0::1;::::0;::::1;24314:21:1::0;24371:2;24351:18;;;24344:30;24410:25;24390:18;;;24383:53;24453:18;;19060:176:0::1;24130:347:1::0;19060:176:0::1;7290:4;19255:20;19266:9:::0;19255:8;:20:::1;:::i;:::-;:39;;;;19247:84;;;::::0;-1:-1:-1;;;19247:84:0;;23838:2:1;19247:84:0::1;::::0;::::1;23820:21:1::0;;;23857:18;;;23850:30;23916:34;23896:18;;;23889:62;23968:18;;19247:84:0::1;23636:356:1::0;19247:84:0::1;19342:12;:32:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;19385:34:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;19430:42:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;18955:525::o;17380:108::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;17449:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;730:55:1;;;17449:31:0::1;::::0;::::1;712:74:1::0;17449:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;685:18:1;;17449:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17380:108:::0;:::o;16251:140::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;-1:-1:-1;;;;;16343:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;16343:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16251:140::o;19490:269::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;19631:4:::1;19621:7;;:14;;;;:::i;:::-;19609:7;19598;19588;;:17;;;;:::i;:::-;19587:29;;;;:::i;:::-;:49;;19579:117;;;::::0;-1:-1:-1;;;19579:117:0;;24684:2:1;19579:117:0::1;::::0;::::1;24666:21:1::0;24723:2;24703:18;;;24696:30;24762:34;24742:18;;;24735:62;24833:25;24813:18;;;24806:53;24876:19;;19579:117:0::1;24482:419:1::0;19579:117:0::1;19744:7;19733;19723;;:17;;;;:::i;:::-;19722:29;;;;:::i;:::-;19707:12;:44:::0;-1:-1:-1;;19490:269:0:o;22510:111::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;22585:18:::1;:28:::0;;-1:-1:-1;;22585:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22510:111::o;22093:409::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;22240:15:::1;22210:27;;22188:19;;:49;;;;:::i;:::-;:67;22180:103;;;::::0;-1:-1:-1;;;22180:103:0;;25108:2:1;22180:103:0::1;::::0;::::1;25090:21:1::0;25147:2;25127:18;;;25120:30;25186:25;25166:18;;;25159:53;25229:18;;22180:103:0::1;24906:347:1::0;22180:103:0::1;22323:3;22302:17;:24;;22294:67;;;::::0;-1:-1:-1;;;22294:67:0;;25460:2:1;22294:67:0::1;::::0;::::1;25442:21:1::0;25499:2;25479:18;;;25472:30;25538:32;25518:18;;;25511:60;25588:18;;22294:67:0::1;25258:354:1::0;22294:67:0::1;22398:6;::::0;-1:-1:-1;;;;;22398:6:0::1;14112:7:::0;14139:16;;;:7;:16;;;;;;22372:74:::1;::::0;7337:5:::1;::::0;22388:37:::1;::::0;22408:17;;22388:37:::1;:::i;:::-;22387:58;;;;:::i;:::-;22372:14;:74::i;:::-;-1:-1:-1::0;22479:15:0::1;22457:19;:37:::0;22093:409::o;20662:215::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;20792:3:::1;20766:22;:29;;20758:62;;;::::0;-1:-1:-1;;;20758:62:0;;25819:2:1;20758:62:0::1;::::0;::::1;25801:21:1::0;25858:2;25838:18;;;25831:30;25897:22;25877:18;;;25870:50;25937:18;;20758:62:0::1;25617:344:1::0;20758:62:0::1;20831:13;:38:::0;20662:215::o;12166:653::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;-1:-1:-1;;;;;12245:22:0;::::1;12237:96;;;::::0;-1:-1:-1;;;12237:96:0;;26168:2:1;12237:96:0::1;::::0;::::1;26150:21:1::0;26207:2;26187:18;;;26180:30;26246:34;26226:18;;;26219:62;26317:31;26297:18;;;26290:59;26366:19;;12237:96:0::1;25966:425:1::0;12237:96:0::1;12352:16:::0;-1:-1:-1;;;;;12352:16:0;::::1;::::0;12344:90:::1;;;::::0;-1:-1:-1;;;12344:90:0;;26168:2:1;12344:90:0::1;::::0;::::1;26150:21:1::0;26207:2;26187:18;;;26180:30;26246:34;26226:18;;;26219:62;26317:31;26297:18;;;26290:59;26366:19;;12344:90:0::1;25966:425:1::0;12344:90:0::1;12465:6;::::0;;12445:34:::1;::::0;-1:-1:-1;;;;;12465:6:0;;::::1;::::0;12445:19:::1;:34::i;:::-;12490:35;12510:8;12520:4;12490:19;:35::i;:::-;12569:1;12559:6:::0;;-1:-1:-1;;;;;12559:6:0::1;14139:16:::0;;:7;:16;;;;;;12549:21;12546:126:::1;;12604:6;::::0;;-1:-1:-1;;;;;12604:6:0::1;14139:16:::0;;;:7;:16;;;;;;;12587:73:::1;::::0;12604:6;12612:8;;12622:17:::1;14046:117:::0;12587:73:::1;;12546:126;12692:16;12711:6:::0;;-1:-1:-1;;;;;12728:17:0;;::::1;::::0;;::::1;::::0;::::1;::::0;;12761:40:::1;::::0;12711:6;;;::::1;::::0;;;12761:40:::1;::::0;12692:16;12761:40:::1;12226:593;12166:653:::0;:::o;16399:134::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;-1:-1:-1;;;;;16487:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;16487:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16399:134::o;20043:108::-;20133:9;;20086:7;;20129:13;;20133:9;;20129:2;:13;:::i;:::-;20113:12;;:30;;;;:::i;12827:225::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;12906:6:::1;::::0;;12886:34:::1;::::0;-1:-1:-1;;;;;12906:6:0;;::::1;::::0;12886:19:::1;:34::i;:::-;12931:16;12950:6:::0;;12967:19;;::::1;::::0;;13002:42:::1;::::0;-1:-1:-1;;;;;12950:6:0;;::::1;::::0;12931:16;12950:6;;13002:42:::1;::::0;12931:16;;13002:42:::1;12875:177;12827:225::o:0;17655:469::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;17765:10:::1;17752:23;;:10;:23;;;:69;;;;;7133:4;17796:10;:25;;;;17752:69;17744:175;;;::::0;-1:-1:-1;;;17744:175:0;;23124:2:1;17744:175:0::1;::::0;::::1;23106:21:1::0;23163:2;23143:18;;;23136:30;23202:34;23182:18;;;23175:62;23273:34;23253:18;;;23246:62;23345:14;23324:19;;;23317:43;23377:19;;17744:175:0::1;22922:480:1::0;17744:175:0::1;17951:10;:21:::0;7290:4:::1;::::0;17938:34:::1;::::0;17951:21:::1;;17938:10:::0;:34:::1;:::i;:::-;:53;;;;17930:98;;;::::0;-1:-1:-1;;;17930:98:0;;23838:2:1;17930:98:0::1;::::0;::::1;23820:21:1::0;;;23857:18;;;23850:30;23916:34;23896:18;;;23889:62;23968:18;;17930:98:0::1;23636:356:1::0;17930:98:0::1;18039:9;:33:::0;;::::1;18083::::0;;::::1;::::0;::::1;-1:-1:-1::0;;18083:33:0;;;18039;;;::::1;18083::::0;;;;;;;::::1;::::0;;17655:469::o;15328:492::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;15410:7:::1;15405:408;;-1:-1:-1::0;;;;;15434:13:0;;::::1;15450:5;15434:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;15434:21:0::1;::::0;;15470:9:::1;::::0;:32;;;;;::::1;::::0;::::1;26564:74:1::0;;;;26654:18;;;26647:50;;;;15470:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;26537:18:1;;15470:32:0::1;26396:307:1::0;15405:408:0::1;15539:17;::::0;:22;15535:136:::1;;15628:6;15608:17;;15590:15;:35;;;;:::i;:::-;:44;15582:73;;;::::0;-1:-1:-1;;;15582:73:0;;26910:2:1;15582:73:0::1;::::0;::::1;26892:21:1::0;26949:2;26929:18;;;26922:30;26988:18;26968;;;26961:46;27024:18;;15582:73:0::1;26708:340:1::0;15582:73:0::1;-1:-1:-1::0;;;;;15685:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;15685:20:0::1;15701:4;15685:20:::0;;::::1;::::0;;;15740:15:::1;15720:17;:35:::0;15770:9:::1;::::0;:31;;;;;::::1;::::0;::::1;26564:74:1::0;;;;26654:18;;;26647:50;15770:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;26537:18:1;;15770:31:0::1;26396:307:1::0;14831:175:0;14897:4;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;14946:9:::1;::::0;14914:62:::1;::::0;14931:4:::1;::::0;-1:-1:-1;;;;;14946:9:0::1;-1:-1:-1::0;;14914:8:0::1;:62::i;:::-;-1:-1:-1::0;14994:4:0::1;14831:175:::0;:::o;26167:629::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;26229:14:::1;::::0;::::1;;26228:15;26220:52;;;::::0;-1:-1:-1;;;26220:52:0;;27255:2:1;26220:52:0::1;::::0;::::1;27237:21:1::0;27294:2;27274:18;;;27267:30;27333:26;27313:18;;;27306:54;27377:18;;26220:52:0::1;27053:348:1::0;26220:52:0::1;26291:16;::::0;::::1;::::0;::::1;;;26283:53;;;::::0;-1:-1:-1;;;26283:53:0;;27608:2:1;26283:53:0::1;::::0;::::1;27590:21:1::0;27647:2;27627:18;;;27620:30;27686:26;27666:18;;;27659:54;27730:18;;26283:53:0::1;27406:348:1::0;26283:53:0::1;26358:9;::::0;;;::::1;-1:-1:-1::0;;;;;26358:9:0::1;26347:99;;26398:9;:36:::0;;;::::1;26428:4;26398:36:::0;::::1;;::::0;;26347:99:::1;26460:9;::::0;26480:6:::1;::::0;26535:9:::1;::::0;26460:85:::1;::::0;;;;-1:-1:-1;;;;;26480:6:0;;::::1;26460:85;::::0;::::1;27982:74:1::0;28104:10;26495:12:0::1;28092:23:1::0;28072:18;;;28065:51;28164:18;26517:15:0::1;28152:31:1::0;28132:18;;;28125:59;26535:9:0::1;::::0;;::::1;28200:18:1::0;;;28193:45;26460:9:0;;;::::1;;::::0;:19:::1;::::0;27954::1;;26460:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;26456:101:::0;26594:6:::1;::::0;-1:-1:-1;;;;;26594:6:0::1;14112:7:::0;14139:16;;;:7;:16;;;;;;26610:5:::1;::::0;26584:22:::1;::::0;26604:2:::1;26584:22;:::i;:::-;26583:32;;;;:::i;:::-;26567:13;:48:::0;26650:6:::1;::::0;-1:-1:-1;;;;;26650:6:0::1;14112:7:::0;14139:16;;;:7;:16;;;;;;26666:5:::1;::::0;26640:22:::1;::::0;26660:2:::1;26640:22;:::i;:::-;26639:32;;;;:::i;:::-;26626:10;:45:::0;26682:14:::1;:21:::0;;26714:26;;;;;;26773:15:::1;26751:19;:37:::0;26167:629::o;13644:84::-;13694:13;13718:7;13711:14;;;;;:::i;21597:115::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;21675:19:::1;:29:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;21597:115::o;14171:165::-;14249:4;14266:40;14276:10;14288:9;14299:6;14266:9;:40::i;:::-;-1:-1:-1;14324:4:0;;14171:165;-1:-1:-1;;;14171:165:0:o;20885:263::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;20994:19:::1;:33:::0;;-1:-1:-1;;20994:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;21038:22:::1;:47:::0;;-1:-1:-1;;21038:47:0::1;::::0;::::1;;;::::0;;21101:39:::1;::::0;4841:41:1;;;21101:39:0::1;::::0;4829:2:1;4814:18;21101:39:0::1;;;;;;;;20885:263:::0;;:::o;21156:433::-;-1:-1:-1;;;;;21331:19:0;;21222;21331;;;:10;:19;;;;;:29;;;21222:19;;;;;;21331:29;;21326:256;;-1:-1:-1;;;;;;;;;21391:19:0;;21384:5;21391:19;;;:10;:19;;;;;:28;21384:5;;21377:49;;21326:256;-1:-1:-1;;;;;;;;;21472:19:0;;;;;;:10;:19;;;;;:28;;21502:32;;;;21536:33;;;;;21466:4;;21502:32;21326:256;21156:433;;;;;:::o;26804:113::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;26870:6:::1;::::0;;26862:47:::1;::::0;-1:-1:-1;;;;;26870:6:0;;::::1;::::0;26887:21:::1;26862:47:::0;::::1;;;::::0;26887:21;;26862:47;26870:6;26862:47;26887:21;26870:6;26862:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;26804:113::o:0;16910:145::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;17000:9:::1;::::0;:47:::1;::::0;;;;-1:-1:-1;;;;;26582:55:1;;;17000:47:0::1;::::0;::::1;26564:74:1::0;26681:14;;26674:22;26654:18;;;26647:50;17000:9:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;26537:18:1;;17000:47:0::1;26396:307:1::0;20281:373:0;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;20481:16:::1;20461;20451:7;;:26;;;;:::i;:::-;20450:47;;;;:::i;:::-;20434:13;:63:::0;20522:7:::1;::::0;20549:13;;20522:23:::1;::::0;20532:13;;20522:23:::1;:::i;:::-;20521:41;;;;:::i;:::-;20508:10;:54:::0;;;20581:13:::1;::::0;:27:::1;;20573:73;;;::::0;-1:-1:-1;;;20573:73:0;;28451:2:1;20573:73:0::1;::::0;::::1;28433:21:1::0;28490:2;28470:18;;;28463:30;28529:34;28509:18;;;28502:62;28600:3;28580:18;;;28573:31;28621:19;;20573:73:0::1;28249:397:1::0;20573:73:0::1;20281:373:::0;;;;:::o;17245:127::-;17332:9;;:32;;;;;-1:-1:-1;;;;;730:55:1;;;17332:32:0;;;712:74:1;17308:4:0;;17332:9;;;;;:23;;685:18:1;;17332:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16541:148::-;8776:6;;-1:-1:-1;;;;;8776:6:0;8786:10;8776:20;8768:50;;;;-1:-1:-1;;;8768:50:0;;11142:2:1;8768:50:0;;;11124:21:1;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11200:18:1;;;11193:47;11257:18;;8768:50:0;10940:341:1;8768:50:0;-1:-1:-1;;;;;16637:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;16637:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16541:148::o;14513:310::-;-1:-1:-1;;;;;14608:20:0;;14600:52;;;;-1:-1:-1;;;14600:52:0;;29103:2:1;14600:52:0;;;29085:21:1;29142:2;29122:18;;;29115:30;29181:21;29161:18;;;29154:49;29220:18;;14600:52:0;28901:343:1;14600:52:0;-1:-1:-1;;;;;14671:21:0;;14663:53;;;;-1:-1:-1;;;14663:53:0;;29103:2:1;14663:53:0;;;29085:21:1;29142:2;29122:18;;;29115:30;29181:21;29161:18;;;29154:49;29220:18;;14663:53:0;28901:343:1;14663:53:0;-1:-1:-1;;;;;14729:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;14782:33;;943:25:1;;;14782:33:0;;916:18:1;14782:33:0;;;;;;;14513:310;;;:::o;28440:1311::-;28581:16;;28559:4;;28581:16;;;;;28576:298;;28614:28;28633:4;28639:2;28614:18;:28::i;:::-;28662:16;;;;;;;28661:17;:41;;;;;28682:20;28693:4;28699:2;28682:10;:20::i;:::-;28661:77;;;;-1:-1:-1;;;;;;28707:31:0;;;;;;:25;:31;;;;;;;;28706:32;28661:77;:111;;;;-1:-1:-1;;;;;;28743:29:0;;;;;;:25;:29;;;;;;;;28742:30;28661:111;:121;;;;;28777:5;28776:6;28661:121;28657:206;;;28803:44;;-1:-1:-1;;;28803:44:0;;29451:2:1;28803:44:0;;;29433:21:1;29490:2;29470:18;;;29463:30;29529:34;29509:18;;;29502:62;29600:4;29580:18;;;29573:32;29622:19;;28803:44:0;29249:398:1;28657:206:0;28890:20;28901:4;28907:2;28890:10;:20::i;:::-;28886:314;;;28958:9;;:37;;;;;-1:-1:-1;;;;;29933:15:1;;;28958:37:0;;;29915:34:1;29985:15;;;29965:18;;;29958:43;30017:18;;;30010:34;;;28927:12:0;;28958:9;;;;;:19;;29827:18:1;;28958:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;28958:37:0;;;;;;;;-1:-1:-1;;28958:37:0;;;;;;;;;;;;:::i;:::-;;;28954:163;;29093:8;;;28954:163;29046:5;-1:-1:-1;29137:7:0;29133:56;;29165:8;;;29133:56;28912:288;28886:314;-1:-1:-1;;;;;29245:25:0;;29212:12;29245:25;;;:19;:25;;;;;;29227:4;;29245:25;;;:52;;-1:-1:-1;;;;;;29274:23:0;;;;;;:19;:23;;;;;;;;29245:52;29242:98;;;-1:-1:-1;29323:5:0;29242:98;-1:-1:-1;;;;;29352:13:0;;;;;;:7;:13;;;;;:23;;29369:6;;29352:13;:23;;29369:6;;29352:23;:::i;:::-;;;;-1:-1:-1;29386:22:0;;-1:-1:-1;29412:7:0;29411:59;;29464:6;29411:59;;;29423:38;29433:4;29439:2;29443:3;29448:4;29454:6;29423:9;:38::i;:::-;-1:-1:-1;;;;;29481:11:0;;;;;;:7;:11;;;;;:29;;29386:84;;-1:-1:-1;29386:84:0;;29481:11;;;:29;;29386:84;;29481:29;:::i;:::-;;;;-1:-1:-1;29528:4:0;;-1:-1:-1;29523:147:0;;-1:-1:-1;;;;;29553:14:0;;;;;;:10;:14;;;;;:23;:28;;29549:110;;-1:-1:-1;;;;;29602:14:0;;;;;;:10;:14;;;;;29628:15;29602:41;;29549:110;29702:2;-1:-1:-1;;;;;29687:34:0;29696:4;-1:-1:-1;;;;;29687:34:0;;29706:14;29687:34;;;;943:25:1;;931:2;916:18;;797:177;29687:34:0;;;;;;;;-1:-1:-1;29739:4:0;;28440:1311;-1:-1:-1;;;;;;;;28440:1311:0:o;23259:2336::-;23338:4;-1:-1:-1;;;;;23363:18:0;;23355:68;;;;-1:-1:-1;;;23355:68:0;;30257:2:1;23355:68:0;;;30239:21:1;30296:2;30276:18;;;30269:30;30335:34;30315:18;;;30308:62;30406:7;30386:18;;;30379:35;30431:19;;23355:68:0;30055:401:1;23355:68:0;-1:-1:-1;;;;;23442:16:0;;23434:64;;;;-1:-1:-1;;;23434:64:0;;30663:2:1;23434:64:0;;;30645:21:1;30702:2;30682:18;;;30675:30;30741:34;30721:18;;;30714:62;30812:5;30792:18;;;30785:33;30835:19;;23434:64:0;30461:399:1;23434:64:0;23526:1;23517:6;:10;23509:64;;;;-1:-1:-1;;;23509:64:0;;31067:2:1;23509:64:0;;;31049:21:1;31106:2;31086:18;;;31079:30;31145:34;31125:18;;;31118:62;31216:11;31196:18;;;31189:39;31245:19;;23509:64:0;30865:405:1;23509:64:0;-1:-1:-1;;;;;23672:13:0;;23584:8;23672:13;;;:7;:13;;;;;;23584:8;;;;23672:13;;23668:162;;;23708:4;23702:10;;23668:162;;;-1:-1:-1;;;;;23734:11:0;;;;;;:7;:11;;;;;;;;23730:100;;;23769:4;23762:11;;23730:100;;;-1:-1:-1;23814:4:0;23730:100;23844:20;23855:4;23861:2;23844:10;:20::i;:::-;23840:644;;;23885:14;;;;23881:89;;23920:34;;-1:-1:-1;;;23920:34:0;;31477:2:1;23920:34:0;;;31459:21:1;31516:2;31496:18;;;31489:30;31555:26;31535:18;;;31528:54;31599:18;;23920:34:0;31275:348:1;23881:89:0;23988:3;:11;;;;23995:4;23988:11;23984:232;;;-1:-1:-1;;;;;24024:27:0;;;;;;:21;:27;;;;;;;;24023:28;:58;;;;-1:-1:-1;;;;;;24056:25:0;;;;;;:21;:25;;;;;;;;24055:26;24023:58;24019:182;;;24124:12;;24114:6;:22;;24106:75;;;;-1:-1:-1;;;24106:75:0;;31830:2:1;24106:75:0;;;31812:21:1;31869:2;31849:18;;;31842:30;31908:34;31888:18;;;31881:62;31979:10;31959:18;;;31952:38;32007:19;;24106:75:0;31628:404:1;24106:75:0;24248:9;;-1:-1:-1;;;;;24234:24:0;;;24248:9;;24234:24;;;;:33;;;24263:4;24262:5;24234:33;24230:243;;;-1:-1:-1;;;;;24293:25:0;;;;;;:21;:25;;;;;;;;24288:170;;24377:14;;24367:6;24351:13;24361:2;-1:-1:-1;;;;;14139:16:0;14112:7;14139:16;;;:7;:16;;;;;;;14046:117;24351:13;:22;;;;:::i;:::-;:40;;24343:95;;;;-1:-1:-1;;;24343:95:0;;32239:2:1;24343:95:0;;;32221:21:1;32278:2;32258:18;;;32251:30;32317:34;32297:18;;;32290:62;32388:12;32368:18;;;32361:40;32418:19;;24343:95:0;32037:406:1;24343:95:0;24500:4;24496:1021;;;24526:6;;;;24521:985;;24557:19;;;;;;;24553:549;;;24650:4;24601:28;14139:16;;;:7;:16;;;;;;24707:13;;24683:37;;24679:404;;24767:10;;24808:22;;;;24804:97;;;24865:13;;24855:6;;-1:-1:-1;;;;;24855:6:0;14112:7;14139:16;;;:7;:16;;;;;;7337:5;;24845:33;;;:::i;:::-;24844:54;;;;:::i;:::-;24834:64;;24804:97;24955:7;24931:20;:31;24927:72;;24989:7;24966:30;;24927:72;25025:34;25038:20;25025:12;:34::i;:::-;24722:361;24679:404;24578:524;24553:549;25124:19;;;;;;;:84;;;;;25193:15;25169:21;;25147:19;;:43;;;;:::i;:::-;:61;25124:84;25120:371;;;25261:6;;-1:-1:-1;;;;;25261:6:0;25233:15;14139:16;;;:7;:16;;;;;;25233:35;;25291:18;7337:5;25323:19;;25313:7;:29;;;;:::i;:::-;25312:50;;;;:::i;:::-;25291:71;;25385:26;25400:10;25385:14;:26::i;:::-;-1:-1:-1;;25456:15:0;25434:19;:37;25120:371;25535:52;25552:4;25558:2;25562:6;25570:3;25575:4;25581:5;25535:16;:52::i;:::-;25528:59;23259:2336;-1:-1:-1;;;;;;;23259:2336:0:o;23079:172::-;23147:6;;-1:-1:-1;;;;;23147:6:0;23139:15;;;;:7;:15;;;;;:25;;23158:6;;23139:15;:25;;23158:6;;23139:25;:::i;:::-;;;;-1:-1:-1;;23189:6:0;;23180:30;;943:25:1;;;7443:42:0;;-1:-1:-1;;;;;23189:6:0;;23180:30;;931:2:1;916:18;23180:30:0;;;;;;;23229:6;;;;;;;;;-1:-1:-1;;;;;23229:6:0;-1:-1:-1;;;;;23221:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25603:556;25686:16;;;;;;;25685:17;25677:65;;;;-1:-1:-1;;;25677:65:0;;32650:2:1;25677:65:0;;;32632:21:1;32689:2;32669:18;;;32662:30;32728:34;32708:18;;;32701:62;32799:5;32779:18;;;32772:33;32822:19;;25677:65:0;32448:399:1;25677:65:0;25758:20;25769:4;25775:2;25758:10;:20::i;:::-;25757:21;:37;;;;-1:-1:-1;25788:6:0;;-1:-1:-1;;;;;25782:12:0;;;25788:6;;25782:12;25757:37;25753:399;;;-1:-1:-1;;;;;25811:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;25811:30:0;;;25837:4;25811:30;;;;;;25856:19;:25;;;;;:32;;;;;;;;;;25903:16;:23;;-1:-1:-1;;25903:23:0;25811:30;25903:23;;;;;25952:9;;;;25941:107;;25996:9;:36;;;;26026:4;25996:36;;;;;25941:107;26062:19;:26;;-1:-1:-1;;26062:26:0;;;;;26108:32;;-1:-1:-1;4841:41:1;;26108:32:0;;4829:2:1;4814:18;26108:32:0;4701:187:1;22629:442:0;22698:4;22730:6;;-1:-1:-1;;;;;22722:14:0;;;22730:6;;22722:14;;;;:43;;-1:-1:-1;22759:6:0;;-1:-1:-1;;;;;22753:12:0;;;22759:6;;22753:12;;22722:43;:79;;;;-1:-1:-1;22795:6:0;;-1:-1:-1;;;;;22795:6:0;22782:9;:19;;22722:79;:118;;;;-1:-1:-1;;;;;;22819:21:0;;;;;;:17;:21;;;;;;;;22818:22;22722:118;:159;;;;-1:-1:-1;;;;;;22858:23:0;;;;;;:17;:23;;;;;;;;22857:24;22722:159;:186;;;;-1:-1:-1;;;;;;22898:10:0;;7443:42;22898:10;;22722:186;:219;;;;-1:-1:-1;;;;;;22925:16:0;;;;22722:219;:257;;;;-1:-1:-1;;;;;;22958:21:0;;22974:4;22958:21;;22722:257;:300;;;;-1:-1:-1;23012:9:0;;-1:-1:-1;;;;;22996:26:0;;;23012:9;;;;;22996:26;;22722:300;:341;;;;-1:-1:-1;23053:9:0;;-1:-1:-1;;;;;23039:24:0;;;23053:9;;;;;23039:24;;22722:341;22715:348;22629:442;-1:-1:-1;;;22629:442:0:o;29763:3350::-;29916:18;;29863:7;;;;29916:18;;29912:2908;;;29955:3;29951:2582;;;-1:-1:-1;;;;;30007:14:0;;29979:25;30007:14;;;:10;:14;;;;;;;;;29979:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30040:573;;-1:-1:-1;;;;;30099:14:0;;;;;;:10;:14;;;;;:27;;;;-1:-1:-1;30040:573:0;;;30156:16;;;:21;30152:461;;30215:4;30202:17;;30152:461;;;30302:16;;30268:13;;30284:34;;:15;:34;:::i;:::-;30268:50;;30353:7;30345:5;:15;30341:253;;;30402:4;30389:17;;30341:253;;;30448:7;30440:5;:15;30436:158;;;30497:3;30484:16;;30436:158;;;30564:6;30557:13;;;;;;;30436:158;30245:368;30152:461;29960:668;29912:2908;;29951:2582;30638:4;30634:1899;;;-1:-1:-1;;;;;30691:16:0;;30663:25;30691:16;;;:10;:16;;;;;;;;;30663:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30726:1738;;-1:-1:-1;;;;;30785:16:0;;;;;;:10;:16;;;;;:30;;;;-1:-1:-1;30726:1738:0;;;30898:16;;30864:13;;30880:34;;:15;:34;:::i;:::-;30864:50;;30949:7;30941:5;:15;30937:1402;;;31008:9;:20;;;;;30985;;;:43;31079:10;:21;;31055;;;:45;31008:20;31127:17;;;:24;30937:1402;;;31193:7;31185:5;:15;31181:1158;;;31252:9;:20;;;;;31229;;;:43;31323:10;:21;;;;;31299;;;:45;31252:20;31371:17;;;:24;31181:1158;;;31437:7;31429:5;:15;31425:914;;;31496:9;:20;;;;;31473;;;:43;31567:10;:23;;;;;31543:21;;;:47;31496:20;31617:17;;;:24;31425:914;;;31683:7;31675:5;:15;31671:668;;;31742:9;:20;;;;;;;;31719;;;:43;31813:10;:22;;;;;31789:21;;;:46;31882:4;31862:17;;;:24;31671:668;;;31928:7;31920:5;:15;31916:423;;;31987:9;:20;;;;;;;;31964;;;:43;32058:10;:22;;;;;32034:21;;;:46;32127:4;32107:17;;;:24;31916:423;;;32211:1;32188:20;;;:24;;;32239:21;;;:25;32311:4;32291:17;;;:24;31916:423;-1:-1:-1;32374:21:0;;;;;-1:-1:-1;;;;;32418:16:0;;;;;;:10;:16;;;;;;;;;:26;;;;;;;;;;;;;-1:-1:-1;;32418:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;32374:21;-1:-1:-1;30644:1835:0;29912:2908;;30634:1899;32511:6;32504:13;;;;;29912:2908;32569:3;32565:244;;;-1:-1:-1;32606:12:0;:21;;;32565:244;;;32653:4;32649:160;;;-1:-1:-1;32691:12:0;:22;;;;;;32649:160;;;-1:-1:-1;32767:12:0;:26;;;;;;32649:160;32836:10;32850:1;32836:15;32832:61;;32875:6;32868:13;;;;;32832:61;32905:17;7337:5;32925:19;32934:10;32925:6;:19;:::i;:::-;:38;;;;:::i;:::-;32992:4;32976:22;;;;:7;:22;;;;;:35;;32905:58;;-1:-1:-1;32905:58:0;;32976:22;;;:35;;32905:58;;32976:35;:::i;:::-;;;;-1:-1:-1;;33027:40:0;;943:25:1;;;33050:4:0;;-1:-1:-1;;;;;33027:40:0;;;;;931:2:1;916:18;33027:40:0;;;;;;;33087:18;33096:9;33087:6;:18;:::i;:::-;33080:25;;;;29763:3350;;;;;;;;:::o;27343:1089::-;8670:6;:13;;-1:-1:-1;;8670:13:0;8679:4;8670:13;;;27451:4:::1;8670:6:::0;27431:26;;;:11:::1;:26;::::0;;;;;;;27466:9:::1;::::0;-1:-1:-1;;;;;27466:9:0::1;27431:46:::0;;;;;;;;-1:-1:-1;;27431:67:0::1;27427:166;;27535:4;27515:26;::::0;;;:11:::1;:26;::::0;;;;;;;27550:9:::1;::::0;-1:-1:-1;;;;;27550:9:0::1;27515:46:::0;;;;;;;-1:-1:-1;;27515:66:0;;27427:166:::1;27605:17;27625:24;27648:1;27625:20:::0;:24:::1;:::i;:::-;27605:44:::0;-1:-1:-1;27660:15:0::1;27678:32;27605:44:::0;27678:20;:32:::1;:::i;:::-;27755:16;::::0;;27769:1:::1;27755:16:::0;;;;;::::1;::::0;;27660:50;;-1:-1:-1;27731:21:0::1;::::0;27755:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;27755:16:0::1;27731:40;;27800:4;27782;27787:1;27782:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27782:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;27826:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;27782:7;;27826:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27816:4;27821:1;27816:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27816:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;27855:9:::1;::::0;:186:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:186:::1;::::0;27930:7;;27855:9:::1;::::0;27968:4;;27995::::1;::::0;28015:15:::1;::::0;27855:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;28075:21:0::1;::::0;-1:-1:-1;;28113:13:0;;;-1:-1:-1;28109:316:0::1;;28143:9;::::0;:216:::1;::::0;;;;28214:4:::1;28143:216;::::0;::::1;19265:34:1::0;19315:18;;;19308:34;;;28143:9:0::1;19358:18:1::0;;;19351:34;;;19401:18;;;19394:34;7443:42:0::1;19444:19:1::0;;;19437:44;28329:15:0::1;19497:19:1::0;;;19490:35;-1:-1:-1;;;;;28143:9:0;;::::1;::::0;:25:::1;::::0;28176:10;;19176:19:1;;28143:216:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;28379:34:0::1;::::0;;33636:25:1;;;33692:2;33677:18;;33670:34;;;28379::0::1;::::0;-1:-1:-1;33609:18:1;28379:34:0::1;;;;;;;28109:316;-1:-1:-1::0;;8706:6:0;:14;;-1:-1:-1;;8706:14:0;;;-1:-1:-1;;;27343:1089:0:o;14:154:1:-;-1:-1:-1;;;;;93:5:1;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:388;241:6;249;302:2;290:9;281:7;277:23;273:32;270:52;;;318:1;315;308:12;270:52;357:9;344:23;376:31;401:5;376:31;:::i;:::-;426:5;-1:-1:-1;483:2:1;468:18;;455:32;496:33;455:32;496:33;:::i;:::-;548:7;538:17;;;173:388;;;;;:::o;979:118::-;1065:5;1058:13;1051:21;1044:5;1041:32;1031:60;;1087:1;1084;1077:12;1102:376;1164:6;1172;1225:2;1213:9;1204:7;1200:23;1196:32;1193:52;;;1241:1;1238;1231:12;1193:52;1280:9;1267:23;1299:28;1321:5;1299:28;:::i;:::-;1346:5;-1:-1:-1;1403:2:1;1388:18;;1375:32;1416:30;1375:32;1416:30;:::i;1483:184::-;1535:77;1532:1;1525:88;1632:4;1629:1;1622:15;1656:4;1653:1;1646:15;1672:334;1743:2;1737:9;1799:2;1789:13;;-1:-1:-1;;1785:86:1;1773:99;;1902:18;1887:34;;1923:22;;;1884:62;1881:88;;;1949:18;;:::i;:::-;1985:2;1978:22;1672:334;;-1:-1:-1;1672:334:1:o;2011:183::-;2071:4;2104:18;2096:6;2093:30;2090:56;;;2126:18;;:::i;:::-;-1:-1:-1;2171:1:1;2167:14;2183:4;2163:25;;2011:183::o;2199:737::-;2253:5;2306:3;2299:4;2291:6;2287:17;2283:27;2273:55;;2324:1;2321;2314:12;2273:55;2360:6;2347:20;2386:4;2410:60;2426:43;2466:2;2426:43;:::i;:::-;2410:60;:::i;:::-;2504:15;;;2590:1;2586:10;;;;2574:23;;2570:32;;;2535:12;;;;2614:15;;;2611:35;;;2642:1;2639;2632:12;2611:35;2678:2;2670:6;2666:15;2690:217;2706:6;2701:3;2698:15;2690:217;;;2786:3;2773:17;2803:31;2828:5;2803:31;:::i;:::-;2847:18;;2885:12;;;;2723;;2690:217;;;-1:-1:-1;2925:5:1;2199:737;-1:-1:-1;;;;;;2199:737:1:o;2941:477::-;3031:6;3039;3092:2;3080:9;3071:7;3067:23;3063:32;3060:52;;;3108:1;3105;3098:12;3060:52;3148:9;3135:23;3181:18;3173:6;3170:30;3167:50;;;3213:1;3210;3203:12;3167:50;3236:61;3289:7;3280:6;3269:9;3265:22;3236:61;:::i;:::-;3226:71;;;3347:2;3336:9;3332:18;3319:32;3360:28;3382:5;3360:28;:::i;3423:258::-;3495:1;3505:113;3519:6;3516:1;3513:13;3505:113;;;3595:11;;;3589:18;3576:11;;;3569:39;3541:2;3534:10;3505:113;;;3636:6;3633:1;3630:13;3627:48;;;-1:-1:-1;;3671:1:1;3653:16;;3646:27;3423:258::o;3686:442::-;3835:2;3824:9;3817:21;3798:4;3867:6;3861:13;3910:6;3905:2;3894:9;3890:18;3883:34;3926:66;3985:6;3980:2;3969:9;3965:18;3960:2;3952:6;3948:15;3926:66;:::i;:::-;4044:2;4032:15;-1:-1:-1;;4028:88:1;4013:104;;;;4119:2;4009:113;;3686:442;-1:-1:-1;;3686:442:1:o;4381:315::-;4449:6;4457;4510:2;4498:9;4489:7;4485:23;4481:32;4478:52;;;4526:1;4523;4516:12;4478:52;4565:9;4552:23;4584:31;4609:5;4584:31;:::i;:::-;4634:5;4686:2;4671:18;;;;4658:32;;-1:-1:-1;;;4381:315:1:o;4893:248::-;4961:6;4969;5022:2;5010:9;5001:7;4997:23;4993:32;4990:52;;;5038:1;5035;5028:12;4990:52;-1:-1:-1;;5061:23:1;;;5131:2;5116:18;;;5103:32;;-1:-1:-1;4893:248:1:o;5146:247::-;5205:6;5258:2;5246:9;5237:7;5233:23;5229:32;5226:52;;;5274:1;5271;5264:12;5226:52;5313:9;5300:23;5332:31;5357:5;5332:31;:::i;5398:456::-;5475:6;5483;5491;5544:2;5532:9;5523:7;5519:23;5515:32;5512:52;;;5560:1;5557;5550:12;5512:52;5599:9;5586:23;5618:31;5643:5;5618:31;:::i;:::-;5668:5;-1:-1:-1;5725:2:1;5710:18;;5697:32;5738:33;5697:32;5738:33;:::i;:::-;5398:456;;5790:7;;-1:-1:-1;;;5844:2:1;5829:18;;;;5816:32;;5398:456::o;5859:1138::-;5977:6;5985;6038:2;6026:9;6017:7;6013:23;6009:32;6006:52;;;6054:1;6051;6044:12;6006:52;6094:9;6081:23;6123:18;6164:2;6156:6;6153:14;6150:34;;;6180:1;6177;6170:12;6150:34;6203:61;6256:7;6247:6;6236:9;6232:22;6203:61;:::i;:::-;6193:71;;6283:2;6273:12;;6338:2;6327:9;6323:18;6310:32;6367:2;6357:8;6354:16;6351:36;;;6383:1;6380;6373:12;6351:36;6406:24;;;-1:-1:-1;6461:4:1;6453:13;;6449:27;-1:-1:-1;6439:55:1;;6490:1;6487;6480:12;6439:55;6526:2;6513:16;6549:60;6565:43;6605:2;6565:43;:::i;6549:60::-;6643:15;;;6725:1;6721:10;;;;6713:19;;6709:28;;;6674:12;;;;6749:19;;;6746:39;;;6781:1;6778;6771:12;6746:39;6805:11;;;;6825:142;6841:6;6836:3;6833:15;6825:142;;;6907:17;;6895:30;;6858:12;;;;6945;;;;6825:142;;;6986:5;6976:15;;;;;;;5859:1138;;;;;:::o;7002:159::-;7069:20;;7129:6;7118:18;;7108:29;;7098:57;;7151:1;7148;7141:12;7098:57;7002:159;;;:::o;7166:474::-;7256:6;7264;7272;7280;7288;7341:3;7329:9;7320:7;7316:23;7312:33;7309:53;;;7358:1;7355;7348:12;7309:53;7381:28;7399:9;7381:28;:::i;:::-;7371:38;;7428:37;7461:2;7450:9;7446:18;7428:37;:::i;:::-;7418:47;;7484:37;7517:2;7506:9;7502:18;7484:37;:::i;:::-;7474:47;;7540:37;7573:2;7562:9;7558:18;7540:37;:::i;:::-;7530:47;;7596:38;7629:3;7618:9;7614:19;7596:38;:::i;:::-;7586:48;;7166:474;;;;;;;;:::o;7834:328::-;7908:6;7916;7924;7977:2;7965:9;7956:7;7952:23;7948:32;7945:52;;;7993:1;7990;7983:12;7945:52;8016:28;8034:9;8016:28;:::i;:::-;8006:38;;8063:37;8096:2;8085:9;8081:18;8063:37;:::i;:::-;8053:47;;8119:37;8152:2;8141:9;8137:18;8119:37;:::i;:::-;8109:47;;7834:328;;;;;:::o;8167:382::-;8232:6;8240;8293:2;8281:9;8272:7;8268:23;8264:32;8261:52;;;8309:1;8306;8299:12;8261:52;8348:9;8335:23;8367:31;8392:5;8367:31;:::i;8554:241::-;8610:6;8663:2;8651:9;8642:7;8638:23;8634:32;8631:52;;;8679:1;8676;8669:12;8631:52;8718:9;8705:23;8737:28;8759:5;8737:28;:::i;8800:180::-;8859:6;8912:2;8900:9;8891:7;8887:23;8883:32;8880:52;;;8928:1;8925;8918:12;8880:52;-1:-1:-1;8951:23:1;;8800:180;-1:-1:-1;8800:180:1:o;9513:256::-;9579:6;9587;9640:2;9628:9;9619:7;9615:23;9611:32;9608:52;;;9656:1;9653;9646:12;9608:52;9679:28;9697:9;9679:28;:::i;:::-;9669:38;;9726:37;9759:2;9748:9;9744:18;9726:37;:::i;:::-;9716:47;;9513:256;;;;;:::o;10550:385::-;10636:6;10644;10652;10660;10713:3;10701:9;10692:7;10688:23;10684:33;10681:53;;;10730:1;10727;10720:12;10681:53;-1:-1:-1;;10753:23:1;;;10823:2;10808:18;;10795:32;;-1:-1:-1;10874:2:1;10859:18;;10846:32;;10925:2;10910:18;10897:32;;-1:-1:-1;10550:385:1;-1:-1:-1;10550:385:1:o;11615:556::-;11669:5;11722:3;11715:4;11707:6;11703:17;11699:27;11689:55;;11740:1;11737;11730:12;11689:55;11769:6;11763:13;11795:18;11791:2;11788:26;11785:52;;;11817:18;;:::i;:::-;11861:114;11969:4;-1:-1:-1;;11893:4:1;11889:2;11885:13;11881:86;11877:97;11861:114;:::i;:::-;12000:2;11991:7;11984:19;12046:3;12039:4;12034:2;12026:6;12022:15;12018:26;12015:35;12012:55;;;12063:1;12060;12053:12;12012:55;12076:64;12137:2;12130:4;12121:7;12117:18;12110:4;12102:6;12098:17;12076:64;:::i;12176:774::-;12291:6;12299;12307;12315;12368:3;12356:9;12347:7;12343:23;12339:33;12336:53;;;12385:1;12382;12375:12;12336:53;12418:9;12412:16;12447:18;12488:2;12480:6;12477:14;12474:34;;;12504:1;12501;12494:12;12474:34;12527:61;12580:7;12571:6;12560:9;12556:22;12527:61;:::i;:::-;12517:71;;12634:2;12623:9;12619:18;12613:25;12597:41;;12663:2;12653:8;12650:16;12647:36;;;12679:1;12676;12669:12;12647:36;;12702:63;12757:7;12746:8;12735:9;12731:24;12702:63;:::i;:::-;12692:73;;;12805:2;12794:9;12790:18;12784:25;12774:35;;12852:2;12841:9;12837:18;12831:25;12896:4;12889:5;12885:16;12878:5;12875:27;12865:55;;12916:1;12913;12906:12;12865:55;12176:774;;;;-1:-1:-1;12176:774:1;;-1:-1:-1;;12176:774:1:o;13284:437::-;13363:1;13359:12;;;;13406;;;13427:61;;13481:4;13473:6;13469:17;13459:27;;13427:61;13534:2;13526:6;13523:14;13503:18;13500:38;13497:218;;13571:77;13568:1;13561:88;13672:4;13669:1;13662:15;13700:4;13697:1;13690:15;13497:218;;13284:437;;;:::o;13852:545::-;13954:2;13949:3;13946:11;13943:448;;;13990:1;14015:5;14011:2;14004:17;14060:4;14056:2;14046:19;14130:2;14118:10;14114:19;14111:1;14107:27;14101:4;14097:38;14166:4;14154:10;14151:20;14148:47;;;-1:-1:-1;14189:4:1;14148:47;14244:2;14239:3;14235:12;14232:1;14228:20;14222:4;14218:31;14208:41;;14299:82;14317:2;14310:5;14307:13;14299:82;;;14362:17;;;14343:1;14332:13;14299:82;;14633:1471;14759:3;14753:10;14786:18;14778:6;14775:30;14772:56;;;14808:18;;:::i;:::-;14837:97;14927:6;14887:38;14919:4;14913:11;14887:38;:::i;:::-;14881:4;14837:97;:::i;:::-;14989:4;;15053:2;15042:14;;15070:1;15065:782;;;;15891:1;15908:6;15905:89;;;-1:-1:-1;15960:19:1;;;15954:26;15905:89;-1:-1:-1;;14530:1:1;14526:11;;;14522:84;14518:89;14508:100;14614:1;14610:11;;;14505:117;16007:81;;15035:1063;;15065:782;13799:1;13792:14;;;13836:4;13823:18;;-1:-1:-1;;15101:79:1;;;15278:236;15292:7;15289:1;15286:14;15278:236;;;15381:19;;;15375:26;15360:42;;15473:27;;;;15441:1;15429:14;;;;15308:19;;15278:236;;;15282:3;15542:6;15533:7;15530:19;15527:261;;;15603:19;;;15597:26;-1:-1:-1;;15686:1:1;15682:14;;;15698:3;15678:24;15674:97;15670:102;15655:118;15640:134;;15527:261;-1:-1:-1;;;;;15834:1:1;15818:14;;;15814:22;15801:36;;-1:-1:-1;14633:1471:1:o;16109:184::-;16161:77;16158:1;16151:88;16258:4;16255:1;16248:15;16282:4;16279:1;16272:15;16298:482;16387:1;16430:5;16387:1;16444:330;16465:7;16455:8;16452:21;16444:330;;;16584:4;-1:-1:-1;;16512:77:1;16506:4;16503:87;16500:113;;;16593:18;;:::i;:::-;16643:7;16633:8;16629:22;16626:55;;;16663:16;;;;16626:55;16742:22;;;;16702:15;;;;16444:330;;;16448:3;16298:482;;;;;:::o;16785:866::-;16834:5;16864:8;16854:80;;-1:-1:-1;16905:1:1;16919:5;;16854:80;16953:4;16943:76;;-1:-1:-1;16990:1:1;17004:5;;16943:76;17035:4;17053:1;17048:59;;;;17121:1;17116:130;;;;17028:218;;17048:59;17078:1;17069:10;;17092:5;;;17116:130;17153:3;17143:8;17140:17;17137:43;;;17160:18;;:::i;:::-;-1:-1:-1;;17216:1:1;17202:16;;17231:5;;17028:218;;17330:2;17320:8;17317:16;17311:3;17305:4;17302:13;17298:36;17292:2;17282:8;17279:16;17274:2;17268:4;17265:12;17261:35;17258:77;17255:159;;;-1:-1:-1;17367:19:1;;;17399:5;;17255:159;17446:34;17471:8;17465:4;17446:34;:::i;:::-;17576:6;-1:-1:-1;;17504:79:1;17495:7;17492:92;17489:118;;;17587:18;;:::i;:::-;17625:20;;16785:866;-1:-1:-1;;;16785:866:1:o;17656:140::-;17714:5;17743:47;17784:4;17774:8;17770:19;17764:4;17743:47;:::i;17801:228::-;17841:7;17967:1;-1:-1:-1;;17895:74:1;17892:1;17889:81;17884:1;17877:9;17870:17;17866:105;17863:131;;;17974:18;;:::i;:::-;-1:-1:-1;18014:9:1;;17801:228::o;18034:251::-;18104:6;18157:2;18145:9;18136:7;18132:23;18128:32;18125:52;;;18173:1;18170;18163:12;18125:52;18205:9;18199:16;18224:31;18249:5;18224:31;:::i;18622:274::-;18662:1;18688;18678:189;;18723:77;18720:1;18713:88;18824:4;18821:1;18814:15;18852:4;18849:1;18842:15;18678:189;-1:-1:-1;18881:9:1;;18622:274::o;19536:306::-;19624:6;19632;19640;19693:2;19681:9;19672:7;19668:23;19664:32;19661:52;;;19709:1;19706;19699:12;19661:52;19738:9;19732:16;19722:26;;19788:2;19777:9;19773:18;19767:25;19757:35;;19832:2;19821:9;19817:18;19811:25;19801:35;;19536:306;;;;;:::o;20120:484::-;20173:3;20211:5;20205:12;20238:6;20233:3;20226:19;20264:4;20293:2;20288:3;20284:12;20277:19;;20330:2;20323:5;20319:14;20351:1;20361:218;20375:6;20372:1;20369:13;20361:218;;;20440:13;;-1:-1:-1;;;;;20436:62:1;20424:75;;20519:12;;;;20554:15;;;;20397:1;20390:9;20361:218;;;-1:-1:-1;20595:3:1;;20120:484;-1:-1:-1;;;;;20120:484:1:o;20609:342::-;20810:2;20799:9;20792:21;20773:4;20830:56;20882:2;20871:9;20867:18;20859:6;20830:56;:::i;:::-;20822:64;;20936:6;20929:14;20922:22;20917:2;20906:9;20902:18;20895:50;20609:342;;;;;:::o;21656:125::-;21696:4;21724:1;21721;21718:8;21715:34;;;21729:18;;:::i;:::-;-1:-1:-1;21766:9:1;;21656:125::o;22553:184::-;22605:77;22602:1;22595:88;22702:4;22699:1;22692:15;22726:4;22723:1;22716:15;22742:175;22779:3;22823:4;22816:5;22812:16;22852:4;22843:7;22840:17;22837:43;;22860:18;;:::i;:::-;22909:1;22896:15;;22742:175;-1:-1:-1;;22742:175:1:o;23407:224::-;23446:3;23474:6;23507:2;23504:1;23500:10;23537:2;23534:1;23530:10;23568:3;23564:2;23560:12;23555:3;23552:21;23549:47;;;23576:18;;:::i;:::-;23612:13;;23407:224;-1:-1:-1;;;;23407:224:1:o;23997:128::-;24037:3;24068:1;24064:6;24061:1;24058:13;24055:39;;;24074:18;;:::i;:::-;-1:-1:-1;24110:9:1;;23997:128::o;28651:245::-;28718:6;28771:2;28759:9;28750:7;28746:23;28742:32;28739:52;;;28787:1;28784;28777:12;28739:52;28819:9;28813:16;28838:28;28860:5;28838:28;:::i;32852:605::-;33151:6;33140:9;33133:25;33194:6;33189:2;33178:9;33174:18;33167:34;33237:3;33232:2;33221:9;33217:18;33210:31;33114:4;33258:57;33310:3;33299:9;33295:19;33287:6;33258:57;:::i;:::-;-1:-1:-1;;;;;33351:55:1;;;;33346:2;33331:18;;33324:83;-1:-1:-1;33438:3:1;33423:19;33416:35;33250:65;32852:605;-1:-1:-1;;;32852:605:1:o
Swarm Source
ipfs://992dc36c12b9e46716f83eb88eddb3da770dbc365159e3094ddd7879d905c4e8
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,271.06 | 0.00071979 | $2.35 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.